1 名前:名前は開発中のものです。 [03/07/31 21:37 ID:L/7S/kPx] ノベルゲームツールを制作中の人達が集うスレです。 新たなノベルツールを作ってやるというチャレンジャー歓迎。 前スレ ▼ノベルゲームツールを作っちゃうぞ!Ver2.0 pc2.2ch.net/test/read.cgi/gamedev/1040118471/ 前々スレ ▼ノベルゲームツール作っちゃうぞ! pc2.2ch.net/test/read.cgi/gamedev/1013170036/
728 名前:691 mailto:sage [2006/10/01(日) 05:03:16 ID:dnondVMz] >>726 ウヘヘ QDいろいろ書き換えてますよ デフォルトだと起動時に自動的にウィンドウモードで起動してしまい、 その後、再度適正なサイズでフォームを初期化しなおさなければならないのでフォームがちらつくんですよね それがイヤなんで、強制初期化をしないようにしてあります ともあれライブラリ無しじゃおれのような日曜プログラマがゲーム作るなんて考えられませんね こんなものがタダで手に入るんですからスバらしい世の中になったものです(しみじみ
729 名前:名前は開発中のものです。 mailto:sage [2006/10/02(月) 01:29:09 ID:UlsNOh/C] 00013: TConfiguration を作成します 00014: ■ TConfiguration が TTitle に割り込みました ■ 00015: 環境設定背景テクスチャ をパターンNo.7に登録しました 00016: 文字属性をセットしました 00017: 数字用のをテクスチャを作成しました (256, 32) 00018: 文字0の描画を行います 00019: LockedRect(6, 0, 19, 23) 00020: 文字0の描画が終わりました 00021: 数字テクスチャ をパターンNo.8に登録しました (略 00056: 文字9の描画が終わりました 00057: 数字テクスチャ をパターンNo.17に登録しました 00058: ボタン ■ゲームに戻る をセットしました 00059: ■タイトルに戻るテクスチャを作成しました (256, 32) 00060: TTitle を削除しました 00061: TConfiguration を削除しました 00062: ■■■ アプリケーションは正常に終了しました ■■■
730 名前:691 mailto:sage [2006/10/02(月) 06:52:30 ID:SjsAmGkd] >>729 うおおおおおお 超ありがとう おかげで原因を特定できたと思う!! 選択肢も実装できたんで今夜にでもあぷするね
731 名前:691 mailto:sage [2006/10/03(火) 06:32:43 ID:VF5p6dxQ] ohayo- members3.jcom.home.ne.jp/jellyjam/p/novel9.zip ・リターンキーの押しっぱなしを禁止にした ・スキップはコントロールキーで行うようにした ・選択肢を作れるようにした ・ファイル間のラベルジャンプを可能にした ・フレームレートを60に戻した(描画処理は2フレームに一回) ・ゲーム中にF2を押すとタイトルに戻れるようにした ・文字のオーバーサンプリング品質を2x2から4x4にした 強制終了の原因は文字描画じゃなくて、テクスチャをクリアする部分だった そこで範囲エラーが出てたみたい 見当違いのところを見直してたんだから見つからないわけだ(´Д`;) これで駄目だったらおれは首を吊ってお詫びするしかないだぜ?
732 名前:名前は開発中のものです。 mailto:sage [2006/10/03(火) 23:33:39 ID:o1GE8YJf] >731 ソフトウェアクリアにチェックが入っていると、 ロゴからタイトル、タイトルからスタート、の画面切り替わりの一瞬、ピンク(or緑)が出る。 チェックを外してあると問題ない。
733 名前:691 mailto:sage [2006/10/04(水) 23:14:32 ID:kQAZxApl] >>732 おk、サクッと直したぜ つか>>722 で教えてもらったClearがしっかり機能してるみたいだから、 もうソフトウェアクリアは要らないな バックログ用のスクロールバーを作ってるんだけど、 ログのページ数によってツマミの大きさが変化するようにしたいなぁ そうすると、ただツマミの画像を用意するだけじゃ駄目だから、結構骨が折れる・・・ ちょっと商用ゲームの体験版行脚してくる ≡┌| ∵|┘
734 名前:167 mailto:sage [2006/10/05(木) 00:48:01 ID:GiAiv8xj] >691 進んでいるようで羨ましい限りです、頑張って下さい(´Д`) こっちは、string→char[]→mystr(自作文字列コンテナ)………全然、進んでる気がしませんorz STLがDLL←→EXE間で使えればこんな苦労もせずに済むのですがorz
735 名前:名前は開発中のものです。 mailto:sage [2006/10/05(木) 01:09:37 ID:Rdmm7845] 自作文字列コンテナとか作ってないでDLL、EXE間は普通にchar*で受け渡しすればいいんじゃないの?
736 名前:167 mailto:sage [2006/10/05(木) 08:08:52 ID:GiAiv8xj] >735 関数間のやりとりは勿論それで構わないのですが、 問題は構造体としてデータをやりとりする時なのです(´Д`) そういう時にはchar[]では足りず、とはいえ互換性やメモリ関係でSTLは使えずorz という事で、急遽stringと関数名で互換性を持つ自作文字コンテナを作っていたりします。 (c_strとsize、コピーコンストラクタと代入演算子程度なので難しくはありませんが) で、その変更に伴ってコードのあちこちを弄繰り回しているワケで…どちらかというと、そっちの方に時間がかかっているワケです。
737 名前:名前は開発中のものです。 mailto:sage [2006/10/05(木) 10:10:15 ID:XYVQ+Y1d] えーと、それはコンパイラが替わるとすぐ使えなくなる糞プラグイン仕様ですか?
738 名前:167 mailto:sage [2006/10/05(木) 18:00:25 ID:GiAiv8xj] >737 どうでしょう、あるいはそうかもしれません(´Д`) 現状ではSTLをDLL←→EXE間で使わず、データの受け渡しは関数あるいは構造体で行うようにしています。 そしてその構造体は私が定義したもの以外はほとんど使っていません(今調べてみたら、HWNDとRECT位です) また、アラインメントもソースコード側で設定するようにしています。 しかし、クラスや構造体のメモリ配置が異なるコンパイラ間で一致しているという保証は無いっぽいです。 よって、現状では異なるコンパイラでプラグインが作成できるという保証はありません(´Д`) (ただ、COMとかの事を考えるとWindowsの標準的なコンパイラ(VC、BCC)はメモリ配置が一致してるっぽいです) (実際のところ、テストしてみなければ真偽は分からないのですが) つまるところ、あらゆるコンパイラに対応といった形式は取らない可能性が高いです。 BCCとVCだけに対応してたら良いかな〜、といういい加減かつお気楽思考で。 というか、構造体のメモリ配置すら一致していなければハンドルの受け渡しも出来ないんですが…。 という事で、現状は糞一歩手前プラグイン仕様(仮)です(´Д`)
739 名前:名前は開発中のものです。 mailto:sage [2006/10/05(木) 18:31:29 ID:WFfOZN/r] 吉里吉里のプラグイン機構がなかなか無理矢理で参考になるかもしれない
740 名前:167 mailto:sage [2006/10/05(木) 19:02:45 ID:GiAiv8xj] >739 めっちゃソースコード多いですね、全部読んでたら人生終わりそうです(´Д`) とりあえず、プラグイン関係を見させてもらいます。情報提供、ありがとうです(´Д`)
741 名前:691 mailto:sage [2006/10/07(土) 08:59:03 ID:wJ08v4YK] members3.jcom.home.ne.jp/jellyjam/p/novel10.zip ・バックログできたかも(詳しくはRead Me参照 ・文字表示速度がいんちき臭かったので見直した ・ソフトウェアクリア廃止 ・一部のシステム用画像を常に保持するようにした というわけで以前に比べてメモリ喰います。 といってもビビるほど占有したりしないですが・・・。 バックログの文字描画スピードが気がかりだったんだけど、 最適化を繰り返したおかげか、何とか実用に耐えるぐらいにはなってると思ふ。 CPUパワーによっては重く感じるかもしれないんで、ちょっと試してみてくれませんか。
742 名前:名前は開発中のものです。 mailto:sage [2006/10/10(火) 01:14:00 ID:VVRIseRt] Youその調子でスクリプトじゃなくてGUI化汁!
743 名前:691 mailto:sage [2006/10/11(水) 00:29:21 ID:szAi/qJj] ---------ここからチラ裏 現状報告および開発メモとか愚痴とか 1:ずっと気になっていた文字列の左端が切れる原因がわかった! 縁の幅を考慮してなかったからみたいだぜ members3.jcom.home.ne.jp/jellyjam/img/text.png 2:MMXによるピクセル操作について 8バイトづつ処理しようとしたらループ内の命令が多くなって逆に遅くなった(´Д`;) 3:LockRect市ね 今までテクスチャ全体をロックしてたんだけど、それよりも必要な矩形だけを ロックしたほうが速くなるんじゃなかろうかと考えて実践してみた つまりちょっとした描画ついてもその都度LockRectを呼ぶ事になるわけだが、これがまた逆に重い… なるべくLockRectを呼ぶ回数を減らすようにしたほうが速いのかも 4:ビットマップのパレットがわかんないんです(><) ここまでチラ裏-------------- >>742 すみませんよくわかんないです(><)
744 名前:167 mailto:sage [2006/10/11(水) 12:58:19 ID:v5NKuri3] abyss-21.hp.infoseek.co.jp/Release.zip アップデートしました、し か し 変 更 点 は あ り ま せ ん ( ; ´ Д ` ) 内部仕様を大幅に変更しただけです、しかしこの変更のおかげでプラグインが実装できたかも? 二三日以内に、サンプルのプラグインを作成してうp出来るかもしれません(´・ω・`)
745 名前:167 mailto:sage [2006/10/11(水) 13:04:40 ID:v5NKuri3] 追記 >743 GUI化は専用のエディタを作らなければなりなせんよ、よってスクリプトを先に作るべきかと。 たとえば、Text "発言者名", "内容";という命令があった場合、 Text→発言者名と内容を入力→スクリプトをアプリケーション側が記述といった感じでしょうか。 簡単に言えばホームページ作成ソフトと同じですね、HTMLを弄らなくてもノベルゲームが作れるというか。
746 名前:名前は開発中のものです。 mailto:sage [2006/10/11(水) 13:09:20 ID:9Q/4jY+z] 高機能版Yuuki!を目指しちゃいなYO!
747 名前:691 mailto:sage [2006/10/12(木) 00:23:32 ID:m2DwlIiA] members3.jcom.home.ne.jp/jellyjam/p/novel11.zip (音なし) ・文字色・フチ色を自由に変更できるようにした ・ホイールの回転で読み進められるようにした ・文字キャッシュの検索方法を変更して高速化? 速度アップのためにいろいろやってみたけど、速くなったんだかなってないんだか・・・ 特にメッセージスキップはもっと速くなって欲すぃなぁ 現状を文字で表すなら「ぅおおおおおお・・・・!」だとして、 希望としては「ぅふぬぉおおおおおぉぉぉぉぉお・・・・・!!」ぐらいにはなって欲しい >>745 エディタかぁ ゲームよりそういうのを作るほうが好き( ´,_ゝ`) >>746 同じDelphi製ということで、実は密かに目標・・・というか参考にしてたりして エディタがユニークだと思う
748 名前:691 mailto:sage [2006/10/12(木) 04:29:15 ID:m2DwlIiA] members3.jcom.home.ne.jp/jellyjam/p/novel12.zip すまん、高速化のいい方法を思いついたので上げなおしだ メッセージスキップがスーパー速くなったかも試練 あと句読点ウェイト入れてみたよ つーか寝てねーんだよ! 今日も仕事あqswでrftgyふじこlpあzsxdcf うわあああああああああああああああああああああ
749 名前:名前は開発中のものです。 mailto:sage [2006/10/12(木) 22:55:03 ID:4adqTnrf] 大学生の俺は暇組み、更に学祭中という神イベント発生中。
750 名前:名前は開発中のものです。 mailto:sage [2006/10/12(木) 22:56:06 ID:4adqTnrf] はい日本語おかしいですね orz こんな俺は地方駅弁orzorz
751 名前:名前は開発中のものです。 mailto:sage [2006/10/13(金) 19:50:48 ID:DxADPv/2] 時代は私大だ、国立なんて話にならん。
752 名前:691 mailto:sage [2006/10/13(金) 20:39:29 ID:YV5yxr+U] 流れに逆らってすまんが ゲーム部分に構造的欠陥がみっかったので一部作り直すことにした。 結果として実行速度を落とさず、且つ処理量を大幅に削減することができた。 超すごいぜおれ! こんな感じ members3.jcom.home.ne.jp/jellyjam/img/text_test1.png フチを太くしてみたり members3.jcom.home.ne.jp/jellyjam/img/text_test2.png 文字間隔を変えてみたり members3.jcom.home.ne.jp/jellyjam/img/text_test3.png そんな超すごいおれからみんなに質問があるんだけど・・ 吉里吉里にルール画像を使ったトランジションってあるけど、あれどういうふうにやってるんだろう? ルール画像を参考にして単純にα値を加算していくのかと思ったんだけど、ルール画像を調べてみると RGB(0, 0, 0)のピクセルがあるんだよぅ このピクセルは加算していっても意味ないよねぇ
753 名前:167 mailto:sage [2006/10/13(金) 22:20:01 ID:0R6SaG7C] >691 おめでとうございます!…とも言ってられませんなぁorz 私も頑張りませんと(´・ω・`) 下記の話ですが、私もよく分かりません(´Д`) ただ、トランジションの種類にもよるかと思われます。 ・最終的に、「完全」に入れ替わる場合 ・一部混合された状態が、「完全」である場合 恐らく上がトランジションの効果だと思われますが、その場合は誤魔化しているのではないかと。 具体的には、α(α値)×a(比例定数)+1みたいな。いや、想像なので答えにならないかもしれませんが。
754 名前:名前は開発中のものです。 mailto:sage [2006/10/13(金) 23:36:08 ID:XAQthbNe] ソース見てないから判らないけど alpha = min(max(a + t,0),255) a : ルールアルファ t : -255 → 255 こんな感じじゃないの。 Direct3Dでやるのは難しかったような気がする。
755 名前:名前は開発中のものです。 mailto:sage [2006/10/14(土) 02:49:19 ID:QHMCKQ0j] 普通にPixelshaderかな
756 名前:名前は開発中のものです。 mailto:sage [2006/10/14(土) 08:38:07 ID:wDIV82eQ] >755 ノベルの動作環境にピクセルシェーダを要求なんて、今現在のところギャグじゃね? マルチテクスチャでSetTextureStageStateを弄ればなんとかなりそう? もしくはRenderTargetなテクスチャを使ったマルチパスでも可能なのかな?
757 名前:名前は開発中のものです。 mailto:sage [2006/10/14(土) 09:59:35 ID:Tkny+AqF] www.nhk.or.jp/strl/tvml/japanese/player2/index.html このくらいはやってくれよ
758 名前:691 mailto:sage [2006/10/14(土) 13:23:33 ID:7hCa6/d9] おおーすげーレスついてる >>753-754 > α(α値)×a(比例定数)+1 > alpha = min(max(a + t,0),255) ふーむなるほど こんなのよく思いつくなぁ >>755-756 初めて目にする単語ばかりで頭がクラクラしたけど、最期の力を振り絞って調べてみたよ ピクセルシェーダって、また別にスクリプト書かなくちゃいけないのか・・・ アセンブラみたいだけどこれまた難しそうだなあ あと実行環境に縛りがあるみたいだね マルチテクスチャについては、特にここを読んでみた ttp://platz.jp/~moal/mtexture.html ああ、えーと? 何が書いてあるのかすら分からないんですが日本語の再勉強からはじめた方がいいでしょうか うー、この両者はおれにとってはまだ敷居が高そうです とりあえずPascal+MMXでゴリゴリ書いてみて、それで速度が出ないようなら試してみますー フレーム毎に全画面書き換えするのが怖くもあるけど、操作するのはαだけだから それほどクリティカルな速度遅延にはならないはず、と勝手に楽観してます >>757 ttp://gedo-style.net/g/?v=273092&d=d.jpg
759 名前:名前は開発中のものです。 mailto:sage [2006/10/14(土) 14:31:31 ID:tsJdaQzl] >>754 >Direct3Dでやるのは難しかったような気がする。 これはギャグのつもりか? 普通にalphaテストで出来るよ。
760 名前:691 mailto:sage [2006/10/14(土) 16:47:20 ID:7hCa6/d9] members3.jcom.home.ne.jp/jellyjam/p/novel13.zip うーんできちゃったかもしれん テクスチャのαチャンネルをクリアあるいは$FFにするためにMMX使ったけど、それ以外はPascal直打ちー それでも"そこそこ"速度は出てるみたいだ 最適化したらもう少しだけ速くなるかも? ゲーム中、4回トランジションを行っており、 効果終了までそれぞれ 100, 60, 120, 140 フレームを要するようになってる 命令について詳細は Scenarioフォルダ参照のこと コントロールキーでメッセージスキップさせちゃうと効果もスキップしちゃうので注意だぜ ところでZソートがおかしいらしく、文字の描画順がヘンな事に気付いた まったく、次から次へと問題が見つかるなぁ
761 名前:691 mailto:sage [2006/10/14(土) 17:36:27 ID:7hCa6/d9] ゲェェーッ文字のα値の計算がおかしい! 一日に何回もすまん、ちょっと修正した 上のリンクに上げ直したよ
762 名前:名前は開発中のものです。 mailto:sage [2006/10/14(土) 20:59:33 ID:NApT4IfZ] alphatestじゃ滑らかじゃないからヤダヤダ
763 名前:名前は開発中のものです。 mailto:sage [2006/10/15(日) 00:20:45 ID:H7M4nsmQ] >759 これの一番下こと? ttp://www.platz.or.jp/%7Emoal/colorkey.html アルファテストだと描くか描かないかの二択だから、 クロスフェード的な切り替えは出来ないんじゃ? って意味か>762 書いてて解った。 >760 例によって強制終了。 最初の _BgDraw Transition を _BgDraw CrossFade にかえると、 最初のBGを表示するところまで延命するけど文字が出る前に死。 ついでに環境設定も死。
764 名前:名前は開発中のものです。 mailto:sage [2006/10/15(日) 00:35:43 ID:H7M4nsmQ] >760 ついでに思いつき。 毎回書き換えなくても、 一度ルールアルファを絵に書き込んだのなら、 あとはD3DTSS_ALPHAOPのD3DTOP_ADDとD3DTOP_SUBTRACTで、 頂点カラーの操作だけで出来そうな。
765 名前:691 mailto:sage [2006/10/15(日) 01:06:29 ID:ZmNwMkpc] 一撃死キタ─────(゚皿゚)────────!!!! もしかしたら LockRect の D3DLOCK_DISCARD が悪さをしてるのかもしれん! いやきっとそうに違いない!そうだったらいいな しかし該当する部分で書き換えたのはそこぐらいだものな D3DLOCK_DISCARD フラグを0にしたテスト版です 例によってログを吐きつつ実行しているので、動作がもっさりするかもしれません うごけ〜うごぉけぇえ〜 members3.jcom.home.ne.jp/jellyjam/p/novel_test.zip > D3DTSS_ALPHAOPのD3DTOP_ADDとD3DTOP_SUBTRACT さっそく調べてみます
766 名前:691 mailto:sage [2006/10/15(日) 02:35:05 ID:ZmNwMkpc] >>764 SetTextureStageState(0, d3d8.D3DTSS_ALPHAARG1, Dword(D3DTA_TEXTURE)); SetTextureStageState(0, d3d8.D3DTSS_ALPHAARG2, Dword(D3DTA_DIFFUSE)); SetTextureStageState(0, d3d8.D3DTSS_ALPHAOP, Dword(D3DTOP_ADD)); を設定しつつ頂点色を 0x0〜0xFF へインクリメントしてみた。実行速度は確かに速い! でも最初にルールのα値をそのまま書き込んじゃうと、白いところが最初から白くなっちゃう(´д`;) (当たり前だ!) でもこれ、なんかすごくおしいような気がするぜ もうちょっと研究してみるか
767 名前:名前は開発中のものです。 mailto:sage [2006/10/15(日) 02:37:25 ID:H7M4nsmQ] 環境設定とトラジ未使用で生存。 1: C:\Work\novel_test\imgs\Bg1.bmp を読み込みました 2: ルール画像 C:\Work\novel_test\imgs\左回り.bmp を読み込みました 3: 背景の描画方法はルール画像によるトランジションが選択されました 4: テクスチャのαチャンネルを塗り潰します...
768 名前:名前は開発中のものです。 mailto:sage [2006/10/15(日) 02:41:11 ID:H7M4nsmQ] >766 前半はSUBTRACTの255->0で
769 名前:691 mailto:sage [2006/10/15(日) 03:54:36 ID:ZmNwMkpc] members3.jcom.home.ne.jp/jellyjam/p/novel_test.zip >>768 でけたー!さいこー トランジションは直ったかもしれない ループ内でアンロックしてた・・・ なんでおれのPCはこれで動くんだ? おまえどれだけ頑強なのかと問い詰めたわけだが 環境設定は何がいけないのかわからん・・・ もうちょっと見直しが必要だ
770 名前:691 mailto:sage [2006/10/15(日) 09:18:55 ID:ZmNwMkpc] みんな落ち着いて聞いてほしい おれもだいぶ落ち着いてきた さっき友達からグラボ借りてきてドライバ入れたらWindowsがおかしくなった そしてOS再起動したら 作 業 し て い た H D D が ぶ っ 壊 れ た BIOSでも認識しないし電源を入れるとカラカラ音がしてシュゥウウウ・・・っていう OS入れなおしてみたけどだめだった。なぜかDVD-ROMまで応答しなくなった なんだこれ おれがなにをしたっていうんだよ最悪だ なんでよりによってこのタイミングでこのドライブなんだよ 各種パスワードも2chのログも全部消えたのか 眠くなってきたよパトラッシュ・・・
771 名前:名前は開発中のものです。 mailto:sage [2006/10/15(日) 09:53:53 ID:yU568J+m] 今は、おやすみ
772 名前:名前は開発中のものです。 mailto:sage [2006/10/15(日) 10:19:33 ID:TsWQJW5K] 766,768のやり方は軽くていいんだけどその代わり吉里吉里でいうvague値が使えないから トランジション用のテクスチャをUSAGE_DYNAMICで作って CPUでアルファ値を書き換えるってやり方もそのうち試してみてもいいと思うよ と流れを読まずに下記子
773 名前:名前は開発中のものです。 mailto:sage [2006/10/15(日) 10:51:53 ID:TsWQJW5K] ついでにSUBTRACTは古いグラボで対応してないのがあった気がするんで 機会があったら調べてみるのもいいかもね と流r
774 名前:691 mailto:sage [2006/10/15(日) 13:25:52 ID:ZmNwMkpc] あーもうあったまきた 見てろよこうなったらサーバに残ってたソース使って絶対完成させてやるからな! ただし明日からな! >>773 実はおれもその話が気になってた D3DTSS_ALPHAOPを使ったものと、環境依存のないPascalを使ったものの二種類を用意しておけば問題ないかもな
775 名前:名前は開発中のものです。 mailto:sage [2006/10/15(日) 19:31:36 ID:H7M4nsmQ] ご愁傷様です。 これに懲りずに頑張れ。 ついでに、これに懲りてバックアップ多めに。 >773 SUBTRACTが駄目でも、MODULATEを使えばそれなりに見せられないかな。 >772 これか。 ttp://devdoc.kikyou.info/tvp/docs/kag3doc/contents/Trans.html 確かに今のやり方だとvagueが最大?で固定されてしまうのかな。 うーん思いつかない。
776 名前:691 mailto:sage [2006/10/17(火) 21:43:49 ID:HTib+2UI] おいすー およそ>>760 程度にまで復旧できたぜ! 高速スキップ、トランジション、文字色変更、バックログ、ホイール操作、文字キャッシュ検索高速化など。 つーかカスタマイズしたライブラリまで消えちゃって、これを作り直すのに時間を割いたわけだが(´д`;) まったくおれの集中力と粘り強さには毎度まいど驚嘆させられるよな とはいえメッセージスキップから復帰すると100%落ちる(!)のでまだうpできねーです・・・ 一回作ったんだから何とかなりそうなものだけどなかなかうまくいかないなぁ >>775 そのページ読んでみたけどvagueって面白いパラメータだね αを計算するとき、しきい値を考慮すればできるかな? うーむ、境界がガクガクになりそうな予感・・・
777 名前:691 mailto:sage [2006/10/21(土) 04:53:57 ID:D3IMVVB2] members3.jcom.home.ne.jp/jellyjam/p/novel14.zip ・ウィンドウ位置を保存できるようにした ・トランジションの実行方法をPascalとDirect3Dの二種類から選べるようにした ・ループ内ループをさらに減らして最適化 負荷ちょっとだけ減りました。スキップ速度はこのくらいあればいいよね? あー、次は変数と条件分岐か・・・
778 名前:名前は開発中のものです。 mailto:sage [2006/10/21(土) 08:49:29 ID:5+bS6DmJ] >>691 「指定されたファイルが見つかりません。」ですた……
779 名前:691 mailto:sage [2006/10/21(土) 12:47:23 ID:D3IMVVB2] >>778 (; ・`д・´) 檄スマソ拡張子間違ってた! なんかJ-COM垢の機嫌が悪いみたいであっぷろーどできなくなっちゃたから、 ゲムデブにご協力いただくことにしますた ttp://gamdev.org/up/img/7904.zip ついでといっちゃあなんだが タイトルに戻るとき、音を全部消すようにできてなかったので直しといた
780 名前:167 mailto:sage [2006/10/21(土) 20:24:51 ID:veRCNjBt] 御久し振りで御座います(´Д`) 私は現在、プログラマが死後に堕ちるであろうリファクタリング地獄の三丁目に居りますorz 何時終わるのやら………誰かボスケテ(;´Д`) 一応、次回更新時には ・自動改行 ・Z座標の実装 ・プラグイン仕様の完全実装 を目標に出来たら良いなとか思ってみたりもしないでもないです。
781 名前:名前は開発中のものです。 [2006/10/22(日) 05:29:18 ID:0GnJFT5M] 良スレage
782 名前:名前は開発中のものです。 mailto:sage [2006/10/23(月) 23:15:09 ID:phivSpR5] >>779 いいですな〜。 軽快に動いてます。 トランジションも良い感じ。 作ってみたいという気になりますた。
783 名前:691 mailto:sage [2006/10/24(火) 06:22:55 ID:z/n6rwSL] >>782 おお〜ありがとう 感想をいただけると張り合いが出るなぁ このところ仕事が大変でなかなか進まないけど、今後ともこのスレともどもよろしく願いますよ(←偉そう if文のオペランドのとり方に少し迷ってるよ これまでの命令文の書式を踏まえるなら _if (Hoge=0), *labelname ってな感じだろうけど、分岐でラベルジャンプしかできないのはなんかかっこわるいよな 条件式のあとに好きな命令を複数入れられたらいいんだろうけど… _if (Hoge=0) then _Color $FFFFFF _Goto *labelname _endif; とか。 でもこれじゃパーサかコンパイラ作るのと同じじゃねとか思ったりして あくまで「ノベルツール」の本分を忘れないようにしないといけないよな
784 名前:名前は開発中のものです。 mailto:sage [2006/10/27(金) 10:41:03 ID:c6GTcHI3] どっちが見やすい・理解しやすいかは プログラマーとプログラマーでない人では感覚が全然違うかんね 難しいところだね ガンガレ
785 名前:691 mailto:sage [2006/10/29(日) 21:14:45 ID:uPpqMaj3] あんま進んでねぇーーー members3.jcom.home.ne.jp/jellyjam/p/novel15.zip ・リンカ(選択肢)のの色を動的に変更できるようにした( !LinkerColor !LinkerEdgeColor ) ・タイムウェイト( !TW )の挙動を直した 以前からタイムウェイトの挙動が気になってたんでこの際直しといた ちなみに0〜255までの数値を指定できるぜよ 今回もエラーチェックは甘めなので、添付のソース書き換えるにしても 変な座標とか数値とか指定すると簡単に落ちると思ふ 条件分岐? なにそれ( ´∀`) 条件式で凝ったことやろうと思うとけっこう大変なんだこれが
786 名前:名前は開発中のものです。 mailto:sage [2006/10/31(火) 22:38:08 ID:sRR/DbRF] 空気読まずスマソm(__)m スキャナー選びでもの凄い悩んでんだけどお勧めのスキャナーない?
787 名前:名前は開発中のものです。 mailto:sage [2006/11/01(水) 18:27:31 ID:VwaCyLKm] スキャナはA4までだと辛いよ
788 名前:名前は開発中のものです。 mailto:sage [2006/11/01(水) 18:59:30 ID:hxUT5DqW] ってことは結構高め?
789 名前:名前は開発中のものです。 mailto:sage [2006/11/01(水) 22:07:04 ID:p3enbp+j] >>785 おまえ元クロヒツジもとい元マグロ漁船のぬだろwwwwwwwwwwwwwwwww
790 名前:691 mailto:sage [2006/11/01(水) 22:16:11 ID:xDE8tosI] いまのとこ ・ゲーム中、テキストの表示・非表示を切り替えることができるようにした ・文字列型 と 32bit符号付数値型 、真偽値型の変数を使えるようにした うpはもう少し煮詰めてからにしよう。 変数の宣言・代入について。 現状、代入は即値のみ・オペランドによって変数の型を自動的に判断するようになってる。 例えば !var hoge, 255 //これは数値型 !var hoge, -255 //これも数値型 !var hoge, 'UNKO' //これは文字列型 !var hoge, True //これは真偽値型 とか。今後都合が悪くなるようなら仕様変更もありえるな。(←無計画すぎ! ちなみに数値型はオーバーフロー・アンダーフローが起きないように注意して使うのが必須条件さね。 考えることが多くてそこまで面倒見切れん。 if文の条件式、即値ならすぐできるんだけどなぁ !if (Hoge<255) //これなら簡単 !if (Hoge<255) and ((not Hage) or Unko) xor (Hige='ABCDE') //こんなのどうやったらいのか・・・ 逆ポーランド法とか応用したらできるかなぁ 以上、現状報告でした!
791 名前:691 mailto:sage [2006/11/01(水) 22:24:45 ID:xDE8tosI] >>789 ( `∀´)ケケケなんのことやら おいらはただの数字コテですぜ
792 名前:名前は開発中のものです。 [2006/11/01(水) 23:27:39 ID:3J8+zwro] >790 !if( Foo<>0 ) and ( 1000/Foo
793 名前:名前は開発中のものです。 mailto:sage [2006/11/01(水) 23:28:49 ID:3J8+zwro] 書きかけで送ってしまった。 >790 !if( Foo<>0 ) and ( 1000/Foo > 5 ) then... とかだとRPNだとアカンよ、
794 名前:691 mailto:sage [2006/11/02(木) 22:13:42 ID:Dhql3Jxs] >>793 むむ? なんでなんで? kwsk divide by 0 とかは関係ないよね
795 名前:名前は開発中のものです。 mailto:sage [2006/11/02(木) 23:08:39 ID:C7j+kj57] そのとおり、0除算が出るから。 常識的にはFooが0の時には( Foo<>0 )が成立しないので後が何であろうとも全体として不成立になるはず。 しかし、RPN処理の場合は正格評価になるので( 1000/Foo > 5 )を必ず評価してしまうことになる。 (Foo 0 <> 1000 Foo / 5 > and あたりになるかな?) これは望ましい状態とは言いがたい。 なお、notとxorは正格評価で問題ない。
796 名前:167 mailto:sage [2006/11/03(金) 10:28:34 ID:MzOzsI/Z] >795 横レスですが、成る程、参考になります(´Д`) とはいえ、RPNの便利さは捨てられませんが………orz
797 名前:名前は開発中のものです。 mailto:sage [2006/11/03(金) 11:49:55 ID:GIcTFPfW] おまけ:いくつかのスクリプト/プログラミング言語でのANDの評価(ORも同様)。 C/C++ && 短絡 *1 java && 短絡 VB And 正格 AndAlso 短絡 delphi and 短絡 scheme and 短絡 perl &&,and 短絡 TJS2 && 短絡 NScripter *2 *1 C++で演算子オーバロードした時は正格 *2 なし:式を扱えない
798 名前:691 mailto:sage [2006/11/03(金) 20:02:48 ID:LiNNIOVd] >>795 すごくよくわかった。795タンは物知りだなぁ(*´∀`*) それと>>797 を見る限り、短絡評価のほうが誤解がなくてよさそうだね うーん、どうしたらいいんだろう (a) Foo 0 <> 1000 Foo / 5 > and (a-1) Foo 0 <> (a-2) 1000 Foo / 5 > (a-3) <a-1> <a-2> and (a)をこういうブロックに大別して…、普通に上から順に式を評価していくだろ? 評価の過程で divide by 0 が出そうだと判明したら、 実際の計算はせず、「そのままだとエラーが出そうだ」という情報だけを記憶しておく。 んで(a-3)にきたら、まず<a-1>をみて、偽なら<a-2>の評価は無視して全体の評価として「偽」を返す。 <a-1>が真の場合、続いて<a-2>の評価を見るわけだが、「エラーが出そうだ情報」を記憶しているときは これ以上続けるわけにもいかんので、これまでの作業をすべて放擲して if 文を抜ける、とか。 なんだ・・・おれは何を書いているんだ?わけわかんなくなってきt ここまで↓作ってはしゃいでたら(-2*-5)とかの単項演算子が使えないことに気づいたorz members3.jcom.home.ne.jp/jellyjam/img/RPN.png 付け足していくより最初からやり直したほうがはやそうだ… また明日か…
799 名前:名前は開発中のものです。 mailto:sage [2006/11/03(金) 20:44:41 ID:GIcTFPfW] >798 こんなんはどう? RPN作る/処理するのが面倒になるけど。 A and B A #dup not #ifskip<N> #pop B #marker<N> A or B A #dup #ifskip<N> #pop B #marker<N> #dup スタックの一番上を複製する #pop スタックの一番上を捨てる #ifskip<N> スタックの一番上を取り出し、 trueなら#marker<N>まで読み飛ばす falseならそのまま続行 #marker<N> 読み飛ばされる ※入れ子になる場合があるのでNが重複しないよう気をつけること。 A and B and C A #dup not #ifskip<N1> #pop B #dup not #ifskip<N2> #pop C #marker<N2> #marker<N1> ( Foo<>0 ) and ( 1000/Foo > 5 ) Foo 0 <> #dup not #ifskip<0> #pop 1000 Foo / 5 > #marker<0> 三項演算子もできるかな A?B:C A #ifskip<N1> C #ifskip<N2> #marker<N1> B #marker<N2>
800 名前:名前は開発中のものです。 mailto:sage [2006/11/03(金) 22:23:23 ID:GIcTFPfW] >798 > members3.jcom.home.ne.jp/jellyjam/img/RPN.png (25*Hage/24)が 25 Hage 24 / *、つまり/が*より優先になってる(or 右結合になってる)けどOKなの?
801 名前:167 mailto:sage [2006/11/03(金) 23:12:17 ID:MzOzsI/Z] 複雑なRPNですね一度基盤を(自力で)作り上げたのに、今から組み直すのはぞっとします(;´Д`) とりあえず、今はVer1.0を目指して頑張っていこうかなと。作業が八割方終了したので、近々新Ver出せそうです(´Д`)
802 名前:名前は開発中のものです。 mailto:sage [2006/11/03(金) 23:15:24 ID:LErpqGYA] 【スクリプトをちょっと紹介させてください】 アドベンチャーゲーム用スクリプトシステム「MICoスクリプト」を開発しました。 軽いこと&商用ゲームでの使用可能な高性能を目指して設計しており 複雑な演出も簡単に作れるシステムです。 詳しい紹介は公開サイトにありますので、よろしければ使ってみてください。 公開サイト ttp://mico.x0.com
803 名前:名前は開発中のものです。 mailto:sage [2006/11/03(金) 23:37:17 ID:pcqCA54V] ダウンロードできません
804 名前:名前は開発中のものです。 mailto:sage [2006/11/04(土) 00:20:08 ID:s0zwtZjj] URLに¥をつけるなんて、相当●●だなぁ。大丈夫か?>>802 ttp://mico.x0.com/files/MICo100c.zip ttp://mico.x0.com/files/Sample01.zip
805 名前:名前は開発中のものです。 mailto:sage [2006/11/04(土) 12:59:51 ID:zX4Hlg4d] ぬはDelphiなんだよな。のらだいこさんとこのやつは見たのか?
806 名前:名前は開発中のものです。 mailto:sage [2006/11/04(土) 14:03:18 ID:uWIJc3Ba] のらだいこ本人乙。
807 名前:名前は開発中のものです。 mailto:sage [2006/11/04(土) 20:39:01 ID:zX4Hlg4d] 俺は違うぜwwwwwww通りすがりのVIPPERwwwwwwwww
808 名前:名前は開発中のものです。 mailto:sage [2006/11/05(日) 14:24:28 ID:bBy3ooVM] 再び空気読まずスマソ ペンタって何インチぐらいがいい?
809 名前:691 mailto:sage [2006/11/06(月) 06:03:55 ID:/PkNNPJx] オハヨー members3.jcom.home.ne.jp/jellyjam/p/parser.zip ここ↓のを参考にして、Delphi に移植してみた。これはすごい! ttp://www.h4.dion.ne.jp/~zero1341/winback2.htm 実際の計算は行わず、中置記法を逆ポーランド記法に返還するだけのものだ。 ↑に倣って、式が変だったりするとエラーを出力するようになってるはず。 ちなみに演算子の優先順位は以下の通り。Delphi と一緒やね。 優先順位は括弧を使って変更できるよ。 1 位(最高) not,-(単項演算子、RPN 上では neg に変換される) 2 位 *,/,mod,and 3 位 +,-,or,xor 4 位(最低) =,<>,<,>,<=,>= しかし式が複雑になるほど変換するコストが気になるなぁ 果たしてループ内でストレスなく機能してくれるだろうか? インタプリタの限界はどこだ。
810 名前:691 mailto:sage [2006/11/06(月) 06:47:54 ID:/PkNNPJx] >>799 んー、難しい! これ、not はどこに掛かってるの? だめだ、仕事終わってからまた考えよう。 >>800 あと右結合、直ってると思いますぜよ >>801 ガンガレ。超ガンガレ >>805 情報thxですよ。こんな便利なものがあるとは知らなかった。 んでも、今やってることってそれほど難しいことじゃないから、まずは自分で作ってみたいんだよね。 などと大見栄を切ってみるテスト。もう後には引けないぜ? >>808 わかんないけど33インチぐらいでいいんじゃね ttp://www.pentaputter.com/products/index.html
811 名前:名前は開発中のものです。 [2006/11/06(月) 07:07:41 ID:WD4G+Tat] >810 A and B → A #dup not #ifskip<N> #pop B #marker<N> を例にする(A,Bは真偽値を返すRPN式)。 []はスタック状態(左がスタックトップ)、 //以降はコメント。 ●Aがtrueの時 [] A #dup not #ifskip<N> #pop B #marker<N> [true] #dup not #ifskip<N> #pop B #marker<N> [true,true] not #ifskip<N> #pop B #marker<N> [false,true] #ifskip<N> #pop B #marker<N> //偽だったので読み飛ばしは無し [true] #pop B #marker<N> //結果はBのみで決まるのでAは要らない [] B #marker<N> [B] #marker<N> //マーカは読み飛ばす [B] (END)
812 名前:続き mailto:sage [2006/11/06(月) 07:08:58 ID:WD4G+Tat] ●Aがfalseの時 [] A #dup not #ifskip<N> #pop B #marker<N> [false] #dup not #ifskip<N> #pop B #marker<N> [false,false] not #ifskip<N> #pop B #marker<N> [true,false] #ifskip<N> #pop B #marker<N> //真なので対応するマーカまで読み飛ばす [false] (END)
813 名前:167 mailto:sage [2006/11/09(木) 10:39:11 ID:FF84JFMS] ほしゅ(´Д`) ソースコードの変更は既に終わったのですが、パフォーマンスが極端に落ちてますorz なので、プロファイラを入れてあっちこっちを弄る日々………誰かボスケテorz
814 名前:167 mailto:sage [2006/11/09(木) 13:36:01 ID:FF84JFMS] 誰か見ている事を期待しつつ。何とか、パフォーマンスが極度に落ちている部分を発見しました(´Д`) ですが、何故落ちているのかが理解出来ず………誰か説明出来ますか?orz if((m_Log_Text.at(m_It)>=(char)0x81 && m_Log_Text.at(m_It)<=(char)0x9F) || (m_Log_Text.at(m_It)>=(char)0xE0 && m_Log_Text.at(m_It)<=(char)0xFF)){ m_It += 2; } を if((m_Log_Text.at(m_It)>=0x81 && m_Log_Text.at(m_It)<=0x9F) || (m_Log_Text.at(m_It)>=0xE0 && m_Log_Text.at(m_It)<=0xFF)){ m_It += 2; } と変えるとパフォーマンスが急激に悪化します、ただのキャストの有無だけなのに何故なのでしょう(´Д`)
815 名前:名前は開発中のものです。 mailto:sage [2006/11/09(木) 14:38:01 ID:zlLv3Pnq] みてるよノシ けどサパーリワカラン
816 名前:名前は開発中のものです。 mailto:sage [2006/11/09(木) 14:53:50 ID:+EWAYAdH] >814 increase warning level of your compiler!
817 名前:名前は開発中のものです。 mailto:sage [2006/11/09(木) 15:17:42 ID:z1ieNEFL] パフォーマンスはさておき、一時変数作れよ 比較式を見直せよ unsigned char hoge = static_cast<unsigned char>(m_Log_Text.at(m_It)); if( !(hoge < 0xA0 && hoge > 0xDF) ){}
818 名前:167 mailto:sage [2006/11/09(木) 20:25:13 ID:FF84JFMS] 基本的に、そこでしか.atは使っていないのでたった4つの命令で一時変数を作るのもどうかと思い(´Д`) あと、直感的ではない比較式は極力使わないようにしています。オープンソースを前提に制作していますので('='
819 名前:名前は開発中のものです。 mailto:sage [2006/11/09(木) 20:37:44 ID:+EWAYAdH] 多分そのif文には else ++m_It; が続くと思うけど、テーブル作っておけばいいんじゃね。 m_It += TABLE[m_Log_Text.at(m_It)+OFFSET]; か m_It += TABLE[m_Log_Text.at(m_It)&MASK]; みたいな感じで。
820 名前:167 mailto:sage [2006/11/09(木) 21:10:31 ID:FF84JFMS] >816 何か、警告が出るという事でしょうか? >817 呼び出し頻度が高くない部分なので、テーブルにするまでもないかと。 三角関数みたいな複雑かつ演算に時間を要するものでしたらテーブルを作った方が良いかもしれませんが、 上記のは比較的単純な比較式で出来ますし。テーブルを作る分だけ、余計にキャッシュを圧迫しそうです(´Д`)
821 名前:名前は開発中のものです。 mailto:sage [2006/11/09(木) 21:53:59 ID:+EWAYAdH] 適当に補ってその部分だけコンパイルしたら a.cc:14: warning: comparison is always false due to limited range of data type a.cc:14: warning: comparison is always true due to limited range of data type a.cc:15: warning: comparison is always false due to limited range of data type a.cc:15: warning: comparison is always true due to limited range of data type とか。 > 呼び出し頻度が高くない部分なので、 ならそもそもボトルネックにならないはず。 > テーブルを作る分だけ、余計にキャッシュを圧迫しそうです が、分岐は排除できるぞ。
822 名前:167 mailto:sage [2006/11/09(木) 22:37:42 ID:FF84JFMS] >821 う〜ん、適当に補ったからだと思われますです。 /Src/AbyssLib/Command/Cmd_text.cpp内に、具体的なソースはあります(´Д`) 全体としての呼び出し頻度は高くないのですよ、ぶっちゃけスクリプトのtext命令が実行されている間にしか使われません。 だからこそ、何でこんなところが重くなるのか疑問なワケで………(;´Д`) あと、単純な分岐条件なだけにテーブル作るまでも無いかなと。
823 名前:名前は開発中のものです。 mailto:sage [2006/11/09(木) 23:07:47 ID:oeKHxQcL] /Src/AbyssLib/Command/Cmd_text.cpp内、とか言われても、そのソースはどこだよ
824 名前:167 mailto:sage [2006/11/09(木) 23:30:24 ID:FF84JFMS] abyss-21.hp.infoseek.co.jp/Release.zip です、すっかり貼り忘れてました(´Д`) 最新Verではなく、ひとつ手前ではありますが………。
825 名前:名前は開発中のものです。 mailto:sage [2006/11/09(木) 23:35:47 ID:oeKHxQcL] 落とせないし、そもそもabyss-21.hp.infoseek.co.jp/ にもアクセスできないが?
826 名前:167 mailto:sage [2006/11/09(木) 23:37:39 ID:FF84JFMS] 確認しました、どうやらinfoseekが落ちている様ですね。 先日も落ちてましたし、落ち易いのかもしれません(´Д`)
827 名前:名前は開発中のものです。 mailto:sage [2006/11/10(金) 13:48:20 ID:n/BNIL0m] >基本的に、そこでしか.atは使っていないのでたった4つの命令で一時変数を作るのもどうかと思い(´Д`) >あと、直感的ではない比較式は極力使わないようにしています。オープンソースを前提に制作していますので('=' >三角関数みたいな複雑かつ演算に時間を要するものでしたらテーブルを作った方が良いかもしれませんが、 >上記のは比較的単純な比較式で出来ますし。テーブルを作る分だけ、余計にキャッシュを圧迫しそうです(´Д`) >あと、単純な分岐条件なだけにテーブル作るまでも無いかなと。 やれやれ こんな調子じゃ>>814 の疑問に回答したとしても理解できるとは思えんな
828 名前:167 mailto:sage [2006/11/10(金) 18:55:58 ID:5S9vD1uX] >827 理解出来るかどうかは分かりませんが、回答出来るのでしたらお願い出来ればと('='