1 名前:親父PG [04/03/30 02:40 ID:phIrC7nN.net] C++やC、アセンブラは昔こなしたし、プログラムの事なら自信はあるけど ゲームは作った事が無い方。現場からも引退したし(w。 ここは一つ趣味でDirectXでも勉強して、ゲームでも作ってみようかなぁと思った、 オジサンPGのスレッドです。 一緒にマターリライブラリから作りませんか?
184 名前:親父PG [04/04/08 17:53 ID:msAPqSAi.net] 続き >std::map< std::string, TriggerAndProcess > みたいなのに突っ込もう 実際問題としてトリガーがトリガーを呼ぶ構造なので、スタックという形で動的配列は使用します。 それはデータ−を解釈するPG側の話なので、そのあたりについてはお任せください。 >>トリガテーブルは固定長じゃないほうがいいと思うよ。 可変長が必用な場合、トリガーテーブルを2個(以上)使って表現すればよいのです。 トリガーがトリガーの結果を呼び出せるという構造で、柔軟な動きに対応できるはずです。 >当面は今のトリガ記述方法で良いと思うけど、早いうちからスクリプト >への変換をしておくと、トランスレータだけいじればよくなるので、 逆にいえば、RPGのデータ−ツールに複雑な構造を単純化しうる機能が必要になるのです。 最終データ−を扱う段階で、英文翻訳ソフトのようなプロセスを行うことは致しませんよ。 3DについてはZ座標を別途持つことでは対応できないのかなぁorz 誤差範囲とかも必用だけど基本はBOX判定だろうし........ ※どのアイテム、動作、動きにていて基底データ−のようなものを定義するのは有用かもね。C++でいう基底クラス
185 名前:名前は開発中のものです。 mailto:sage [04/04/08 18:02 ID:TfluK8Bw.net] スクリプトをCPUバイナリにするメリットなんてあるの? 解釈しやすいバイナリにするのなら当たり前だけど 移植性や可読性を考えると命令セットに依存する部分って必要ないような CPUやモードが替わったりすると確保するバッファサイズが様々になるので メリットないと思うんだが ついでにいうとテキストレベルのスクリプトを動的解釈しても500MHz 超えているマシンなら問題になりにくい デバッグの課程を考えるといわゆるインタプリタレベルのデバッグモード という位置づけも必要になるんじゃないの? 3Dについてどうのこうのってのは再ショアから作るものが決まってないからそういったことになる ソーサリアンを目指すというのならたとえばサイドビューとか 作るものが決まってないのならそのへんの最適な解は見つからんよ
186 名前:親父PG [04/04/08 18:05 ID:msAPqSAi.net] >>178 思い出しましたか?^^; >>180 orz.... >>182 ニヤリ -) WINDOWの構造体造ったはいいがツール作るのが面倒で鬱ぬ。
187 名前:親父PG [04/04/08 18:18 ID:msAPqSAi.net] >>185 CPUはたとえでありまして、実際にCPUバイナリにはしません。 動的スクリプト解釈についてはメリットがないと思うのです。 同じ処理を事前に済ましてしまえばいいのですから。 「物理できなデータ−の塊を解釈して動作させる」という動きの比喩でCPUを上げました。 さて今回必用な話に戻すと、データ−の塊を逐次解釈して動作させます。 その基本形が提唱している固定データ−(トリガーテーブル)(中間コード)になります。 動的スクリプト解釈をするにしても起動時に一旦コンパイルして中間コードに、並べてから動作させます。 1ラインごとに解釈するはずはありません。特に今回のケースではメリットがありません。
188 名前:親父PG [04/04/08 18:36 ID:msAPqSAi.net] 新人PGさん<この呼び方なんかすごく恐縮なので, せめてベテランPGさんとかにしてほしいなぁqrz 閑話休題 まとめていただいた図 造って頂いて有難う www.geocities.jp/oyajipg/up/relational_01.gif ずばりです。各トリガーの必用な引数などは追加する可能性がありますが、 おおよそこのようなつくりです。 トリガーテーブルと呼んでいますが、これって(中間コード)ですよね。 MAPからの引数はZ値も入れましょう。 ゲームの種類のよっては使わないかもしれませんが...
189 名前:名前は開発中のものです。 mailto:sage [04/04/08 18:54 ID:TfluK8Bw.net] トリガーからトリガー呼ぶのはいいがそのへんはシステムがインテリジェントにやってくれて スクリプトを書く人は意識しないでいいんですよね? たとえばjava風だとadd〜listenerみたいな感じでイベントリスナ追加で 一度発生したイベントが次に発生しなくなるならremove〜Listenerとか あくまでもトリガテーブルに処理は書いちゃいかんと思うのですよ
190 名前:親父PG [04/04/08 19:33 ID:msAPqSAi.net] >>189 たくさんのご意見ありがとう。 トリガーテーブルはそれ自身がスクリプトともいえます。 自身を管理する処理は最低限行えます。 もちろん、メッセージを出すといった「処理」はかかれません そういう場合は処理が書かれた「シーン」を呼び出す事になります。 トリガー自体を有効無効については、そういうFGが入ってもいいかもしれませんね。 Enable Enableの価によってリムーブをコントロールしましょう。 ADDについては、フラグテーブルの後ろに物理的に加算することで表現できます。 >トリガーからトリガー呼ぶのはいいがそのへんはシステムがインテリジェント 内部的にはそうなります。 命令の組み合わせを作り出すのはツール側になります。 例えばCのswitch-case文などをif文の羅列に並び替えるような処理は、ツール側の仕事になります。
191 名前:新人PG mailto:sage [04/04/08 23:33 ID:nyCaSSwW.net] ただいま帰りました・・・。 >>親父PGタン ようやくデータ構造が見えてきました。順にまとめていきたいと思います。 ↑日曜日以降になりそうです。週末予定が入ってしまいました・・・orz 今年入社なんで「新人PG」ですw 社会人歴1週間です。 モビットってなんだろーとか思っていたら、2chから直リンするとモビットが出ますねw URL直接指定してください(汗 あと元少女漫画家の友人に注文しても良いですかね? 男だろうが女だろうが 筋 肉 モ リ モ リ で よろしくお願いしますw
192 名前:172 mailto:sage [04/04/08 23:47 ID:rdLQdFbl.net] >>親父PG いまんとこ2Dゲーになるのか3Dゲーになるのかわかんないので、 もし今後このシステムで3Dゲーを作ろう!となって 3Dモデルとかモーションとか作る肉体労働者がたりねー みたいな事態になったら声かけてくだちい。 (イラスト描いたりデザインしたりはデキネ。) プログラムにも興味あるのでずっとタシロってると思いますので。。。
193 名前:親父PG [04/04/08 23:59 ID:msAPqSAi.net] >>191 お帰りなさい。 >ようやくデータ構造が見えてきました。順にまとめていきたいと思います。 それは良かった。スクリプト作成側にも最適化等の処理を求めますので、データ構造の意味が理解していただけないと なかなか説明が難しいと思っていたところだったので、安心しました。 >モビットってなんだろーとか思っていたら、2chから直リンするとモビットが出ますねw URL直接指定してください(汗 あれ、かなりつぼにはまって笑いましたよw >あと元少女漫画家の友人に注文しても良いですかね? >男だろうが女だろうが 筋 肉 モ リ モ リ で なるほろ、間に合えば連絡しておきます。 >>192 そうですか、では3Dになったら即お願いします。^^;
194 名前:名前は開発中のものです。 mailto:sage [04/04/09 02:52 ID:d03K47Nx.net] >>184 > 3DについてはZ座標を別途持つことでは対応できないのかなぁorz > 誤差範囲とかも必用だけど基本はBOX判定だろうし........ ナナメ
195 名前:144 mailto:sage [04/04/09 04:52 ID:d03K47Nx.net] >>183 > 私が提起しているデータ−形式は、そのまま「メモリの上に展開して動かせる最終形態」の話です。 (略) > ただし、その前工程でどのような形でデータ−を扱ってもかまいません。 もちろん。 ただ、現在の形が、固定長のCISCのような命令セットであり、柔軟性に乏しい。 以下のような例を考えよう。 台座に青い宝石があり、ソーサリアン的には台座の下で<<上>>を入力すると調べるのような反応になる。 最初に調べると、「台座に青い宝石が置かれている」とメッセージウィンドウに表示される。 次に調べると、「青い宝石からは高い音が発せられている」とメッセージウィンドウに表示される。 さらに調べると、「青い宝石を手に入れた。どこかで音がした」メッセージウィンドウに表示され、 (このシナリオ限りの)アイテムがアイテム欄に追加される。 という場合、青い宝石のある座標にトリガ番号 777 が設定されているとしよう [トリガファイル] 777 FG BlueJewelCounter eq imm 0 Scene 1 * 778 FG BlueJewelCounter eq imm 1 Scene 2 * 779 FG BlueJewelCounter eq imm 2 Scene 3 780 always StoreFG BlueJewelCounter 1 781 always StoreFG BlueJewelCounter 2 782 always StoreFG BlueJewelCounter 3 * 783 always GetItem BlueJewel [シーンファイル] scene 1 「台座に青い宝石が置かれている」 goto 780 scene 2 「青い宝石からは高い音が発せられている」 goto 781 scene 3 「青い宝石を手に入れた。どこかで音がした」 goto 782 つづく
196 名前:144 mailto:sage [04/04/09 04:54 ID:d03K47Nx.net] って感じ? ソーサリアンでは、反応する場所では、とりあえず反応がなくなるまで上連打が基本だったと思うけど。 これより簡単にしようとすると、 ・条件が一致したら、自動的にフラグをインクリメントする比較命令を作る ・複合命令を(例:CountupAndGetItem)どんどん増やす ・フラグのインクリメントやアイテムの取得はシーンファイルに記述する って感じじゃないの? いーの? 充分素人の手に負えないと思うけど。always とか * とか。 上記トリガは最適化版。最適化前は、シーンファイルに goto が無く、トリガファイルは9行だった。 777 FG BlueJewelCounter ne imm 0 goto 780 * 778 always StoreFG BlueJewelCounter 1 * 779 always scene 1 780 FG BlueJewelCounter ne imm 1 goto 783 * 781 always StoreFG BlueJewelCounter 2 * 782 always scene 2 783 FG BlueJewelCounter eq imm 2 goto 784 784 always StoreFG BlueJewelCounter 3 785 always scene 3 ちなみに、* なしで複数の処理を一度に行うことは俺にはできなかったよ。 上記トリガを記述するのに、親父PGタン の発言に無かった仕様は * だけ。 マップの ToDo を書き換えることも考慮したが、余計わかりにくくなった (セーブするのに、シナリオで使う前マップも保存しなきゃならなくなるし)。
197 名前:144 mailto:sage [04/04/09 04:56 ID:d03K47Nx.net] トランスレータを書く前提で、スクリプトで上記を書き直してみよう。 青い宝石のある位置に、イベント名 BlueJewl の文字列が定義されている(もちろん識別番号でも良い)としよう。 [シーンファイル] <event BlueJewel> [CounterCheck BlueJewelCounter] 0 「台座に青い宝石が置かれている」 1 「青い宝石からは高い音が発せられている」 2 「青い宝石を手に入れた。どこかで音がした」 *get BlueJewel ただし、[ ] 内の CounterCheck は、スイッチのようなものだが、カウンタを参照して、一致したらイベントを起動して、 カウンターをカウントアップする。Cの switch でいう default は別に考える。 * は、システムコマンドを呼び出す。 もちろん、シーンファイルは事前に仮想マシン用のバイトコードにコンバートしておいて構わない。 例に最適化した文法を作ったわけで、かなりズルしてるけど、トランスレータを前提にすれば、こういうズルも必要なときにできる。 親父PGタン のトリガファイルの文法へのトランスレータも問題なく書ける。 しかし、これに多少の工夫をしても、まだ分かりにくいし、人為的ミスの混入も減らないかもしれない。 すると、結局シナリオ編集サポートツールを作ることになるわけで、ならば最初からスクリプトに任せてしまえ、ということですよ。 で、スクリプトをアセンブラライクなバイトコードに変換すると(逐次解釈でもいいけど)。 だから、スクリプトライクなトリガテーブルには疑問を抱くのですよ。 > std::map< std::string, TriggerAndProcess >を使用する場合、 > プログラム内で「このデータ−をMAP(STL)にPUSHしてくれ」という、コードを入れなければなりません。 > そういったレベルでスクリプトを組めるのはPGレベルの人だと思いますorz... 違う違う。 シリアルナンバを使用するのは、配列のアドレッシングのためでしょ? 文字列で連想配列をアドレッシングすることを勧めてるの。 編集時や使い回しの柔軟性のために。 ID みればわかるけど、>>194 も俺。
198 名前:親父PG [04/04/09 07:10 ID:Ihr7T82R.net] >>194-197 144氏さん 考察ありがとうございます。今回のケースはswitch文の構文が適していますね。 switch (fg){ case 0:{seen1;++fg;break;} case 1:{seen2;++fg;break;} case 2:{seen3;++fg;break;} default:{NonOp} } Cで書くとこうなります。これを置き換えます。 777 (MAPposition) X,Y EQ (価)a ,b start switch 4 778 (fg)A eq 0 CALL シーン1(fg A) 779 (fg)A eq 1 CALL シーン2(fg A) 780 (fg)A eq 2 CALL シーン3(fg A) 781 CALL シーン4(fgA) 782 return(0) シーン0 deviceWait() KEYUP:メッセージ出力1、++FG KETLEFT:メッセージ出力2、FG=0 return (next)
199 名前:親父PG [04/04/09 07:10 ID:Ihr7T82R.net] シーン側も以下のようにコンパイルされます (Keydevice) a start switch 2 a EQ KEYUP goto localindex 1 a EQ KEYLEFT goto localindex 4 PUTMES 1(文字列INDEX) FGOP +1 return PUTMES 2(文字列INDEX) FGOP 0 return データ−のお尻に追加 文字列 array index of string max ... 0,24 "宝石が..." "宝石を拾った..." あとで説明文書きます
200 名前:親父PG [04/04/09 08:07 ID:Ihr7T82R.net] 続き シーンデータについて考察してみました。シーンデータ−は以下の要求を満たす為に定義されます。 ○ゲーム内の処理命令を表す ○可変長をサポート ○ストリングが入る ○また、ここに1つだけ判断文を定義する事ができます。 定義できる判断文 DeviceWait系 ButtonPush系 設定なし FGに対する操作 他のトリガーの呼出 DeviceWait系、ButtonPush系 この2つは内部的にはトリガーテーブルを呼んでいるのと同じなのですが、シナリオの文法上煩雑になるので1文で定義できるようにします。 戻り値に対して処理のスタート部分を分岐できます。 ・スクリプト上の文法 deviceWait() KEYUP:メッセージ出力1、++FG KETLEFT:メッセージ出力2、FG=0 ・展開された形 (Keydevice) a start switch 2 a EQ KEYUP goto localindex 1 a EQ KEYLEFT goto localindex 4 ・実際の処理はこのあと1行ずつ定義されます PUTMES 1(文字列INDEX) FGOP +1 return これらの1行1行もあのトリガーテーブルと同じフォーマットで表すことができます。 文字列は別の場所に一括してまとめられて、内部ではインデックス扱い char*[a] に置き換わります。 シナリオを書く時の文法とコンパイル後の文法やデータ−の配置は異なります。 シナリオを各段階では「可変長」で表記できます。 >シリアルナンバを使用するのは、配列のアドレッシングのためでしょ? これは少し違います。地形MAPを切り替えた時に、同時座標のトリガーを判断するためにあります。
201 名前:親父PG [04/04/09 09:26 ID:Ihr7T82R.net] すこし拡張しました struct { int SelfID; //シリアル番号 int CommandID;//基本命令系 byte CmpSeed1; //int CmpTarget1が何を示すかの種類 FGテーブル デバイス 関数戻り値 値 int CmpTarget1; //値 int CmpTarget1_2; //値(予備) byte CmpSeed2; //int2 CmpTarget1が何を示すかの種類 FGテーブル デバイス 関数戻り値 値 int CmpTarget2; //値 int CmpTarget2_2;//予備 byte CmpOP; //上の値の比較方法 byte CmpOP; //真/偽どちらを使うか? (追加 short int ActCommand ; //何をするか? MOVE FG値操作 次処理 シーン呼び出し int ActValue1; //値 ActCommandによって扱いが異なる int ActValue2; int ActValue3; int ActValue4; //リザーブ };
202 名前:名前は開発中のものです。 mailto:sage [04/04/09 16:26 ID:HmpNauZs.net] もう何がなにやら・・・
203 名前:名前は開発中のものです。 [04/04/09 16:48 ID:Ws2ssbno.net] チチキノドク スグカエレ
204 名前:名前は開発中のものです。 mailto:sage [04/04/09 19:40 ID:9dUWl+kl.net] 俺はスレ主には特に何も言わんが けっこう可愛そうな奴らがいるみたいだなぁ この板には
205 名前:名前は開発中のものです。 mailto:sage [04/04/10 03:46 ID:yG5v3On8.net] がんがれ
206 名前:名前は開発中のものです。 mailto:sage [04/04/10 06:51 ID:ZruuXOcF.net] おおよそ固まるまでsageで行ってみてわ? >オヤジさん
207 名前:親父PG mailto:sage [04/04/10 09:25 ID:Sr13ZjT1.net] >>202 PG以外はなんだがわけわからないですね。反省orz... 前の書き込みに「戦闘システム」の計画を書いたので何かご意見をいただければ幸いです >>203 何処へ帰ればorz >>204 まぁマッタリいきましょう >>205 OK! >>206 了解。 今日も仕事ですorz こっそり書き込みです。 現在ツール側を作成しておりまして、本体側の進行はSTOPしています。 そのツールが完成して、本体のPGに反映された頃に一回公開します。 といってもボタンとウインドとテキストのコントロール部分だけですけどねorz
208 名前:144 mailto:sage [04/04/10 13:01 ID:1EUDp4ba.net] >>198-200 トリガから別のトリガを呼び出せるというのは書いてあったけど、return まで逐次実行ってのはどこにも書いてなかったよ。 後出しだしズルいよw。 ま、それはいいとして、オヤジタン の記述例では、トリガもシーンも、オヤジタン のいうPG以外が対応できるレベルにみえないけど。 それと、トリガテーブルって、同時にいくつも存在するの? 同時ってのは、実行時の話なんだけど、仮に1つだとすると、エクセルとどのように整合性を保つのかな、と思って。 シーンファイルに、トリガサブルーチンがあるのはいいと思うけどね。 なんかもう、普通のスクリプトのバイトコードと話が変わらないように見えるよ。 単にバイトコードのフォーマットが見たことないほどリッチなだけで。 そして、エクセルで入力すると言い張ってるのは、アセンブリ言語での記述を要求しているのと等価にしか思えない。 > >シリアルナンバを使用するのは、配列のアドレッシングのためでしょ? > これは少し違います。地形MAPを切り替えた時に、同時座標のトリガーを判断するためにあります。 地形マップを切り替えるというのは、 ・どこかのマップでスイッチを入れる ・別のマップで跳ね橋が下りる のようなときに、マップチップテーブルだけの入れ替えをするような話だよね? それをシリアルナンバで判定するということは結局 std::map< int/*シリアル*/, int/*トリガ配列の添え字*/ > のような形で判定するんでしょ? 俺は、エクセル上でもシリアルナンバの入力を強要してるのかと思ったんだけど、トリガコンパイラが文字列で 解決してくれるならそれでいいと思うよ。 ところで、>>189 で MAPposition で比較してるけど、本当は MAPBASE::ToDO に 777 が入ってるんだよね? そうじゃなければ、エクセルで入力するときはコンマ付で入力? マップの大きさは最大256x256? 自信あるみたいだから、思うとおりにやってみるといいでしょう。 使い物になりそうなことは分かったし。
209 名前:名前は開発中のものです。 mailto:sage [04/04/10 16:08 ID:ZruuXOcF.net] 後出しって・・・・なんかの勝負でもしてるのか?
210 名前:親父PG mailto:sage [04/04/10 20:09 ID:Sr13ZjT1.net] >>144 いろいろと検証ありがとう。いろんな角度から見てもらえてるので、実に助かってます。 対策として具体的な仕様も決まっていくしw まず書き方の例ですが、ここでの話を判りやすくするためであって実際の文法はもっと判りやすくなるはずです このへんは「新人ニューウェーブPG」氏に期待します^^。 メイン担当としては、「最終バイナリはこういうイメージにしてね」と伝えなければなりません。 データの意味(解釈方法)を伝えるためにCで書いてみたわけです。 144氏の指摘の多くは私の作業より、一つ上のレイヤーの話と思える部分があります。 トリガーテーブルは(エクセル「でも」編集できる)ここが味噌でエクセルの機能を使って レコードの操作をいたします。(エクセルと同じ機能のツール作るのは大変だw) 多重ソートとかマクロ機能とかね...別途作ってもいいけど。 エクセルコンポーネント使うなら一緒だ(orz...コレダケデモエツキルヨ 利用理由は主にチェックです。デバックですね。これってありがたいんですよ。ええ(独り言モード トリガーテーブルは基本は一つですが、動的に後ろに追加しても仕様上動きます。 地形MAP配列にはトリガーを引くことしか指示しません。引数は座標XYZ(65535)+MAPシリアル(65535)になります。何をするかはMAP側ではなくトリガー側が判断します。 作業予想 地形MAPツールは地形データ-とトリガーテーブルを読み込む。 イベントを行いたい場所へマウスでマークしていく。 このときトリガーテーブルにもトリガー情報のみのデータ-が追記される。 保存... 再度開いた時はトリガーテーブルのMAPシリアルを見て以前のマーク場所を再配置する STEP2 イベントツールはMAP作成ツールによって作られたトリガーテーブルに、必要な情報を追加していく。 このような感じになる予定です。 >>209 勝負はしてないけどね^^ いろいろ言ってくれると助かるよ。
211 名前:親父PG mailto:sage [04/04/10 20:23 ID:Sr13ZjT1.net] 都築 >地形マップを切り替えるというのは、 これは「地形MAP配列にはトリガーを引くことしか指示しません。」 この設定が前提にあります。地形データ-を入れ替えた時に同じ座標にイベントがあった場合 受け取った側が判断できません。そのためのMAPシリアルになります。 >・どこかのマップでスイッチを入れる >・別のマップで跳ね橋が下りる これはトリガーテーブルのイネーブルをONにすれば良しでしょう。 CAll MAP(B 3,3)//橋 トリガー親父 そのMAPのその座標のトリガーは「なし」だ。交信終了 Call (MAP A 1,1)//スイッチON トリガー親父 ウィ〜ス トリガ3番(橋のトリガ)イネーブルON 再び CAll MAP(B 3,3)//橋 トリガー親父 ウィ〜ス 橋をおろせセニョール ついでに MAP A 1、1のフラグもイネーブルにするべ こんな流れかな
212 名前:親父PG mailto:sage [04/04/10 20:39 ID:Sr13ZjT1.net] 誤>トリガー親父 ウィ〜ス 橋をおろせセニョール ついでに MAP A 1、1のフラグもイネーブルにするべ 生 トリガー親父 ウィ〜ス 橋をおろせセニョール ついでに MAP A 1、1のフラグもディスネーブルにするべ 間違えた(汗 間違えたついでに このシステムの目指すところを書いてもいいのではないかと。勝手に思ったので妄想を書き込みます このシステムでは「キャラクターデータ-」が中心となり世界を広げていきます。 大昔、D&DというTRPGがありました。あのシステムも最初は赤本から始まりました。 ダンジョンにもぐり宝物を集め、経験値を上げていく。 たくさんのエキスパンション(シナリオ)が生まれてキャラクターは成長していきました。 本システムもこのような流れで大きくしていきたいと思っています。 エキスパンションを通じてのキャラクター成長。 そして、シナリオの作成についてはツールを公開して、誰でもDMになれるようなものを考えています。 シナリオをそれぞれ交換などする事もできるようにしたいと思っています。 またキャラクターに関わる事柄。お店だとか交換所なども一種のシナリオによって構築されます。 全ての完成にはまだまだかかりますが、そこは(追加型 という仕様がなんとかしてくれるはずです(W
213 名前:名前は開発中のものです。 mailto:sage [04/04/11 00:46 ID:tw9ZgcmP.net] >>212 でもあんまりシナリオとか簡単に作れるようにすると あんまり知識の無い人でも簡単にズルができるようになるような。 まぁ、その人がつまらなくなるだけですけど。
214 名前:名前は開発中のものです。 mailto:sage [04/04/11 01:02 ID:osyo1R4q.net] >>213 その話は次元が違うものと思われ 本気で解読にかかられたらいくらプロテクトかけてもだめなのと一緒
215 名前:親父PG mailto:sage [04/04/11 10:09 ID:uZkaW7mz.net] >>214 213 バイナリエディタ程度では改変できない仕組みは考えていますが、 214氏のご指摘どうり本気で解析されればプロテクトは無理でしょう。 ローカルで作られたシナリオの経験はキャラシートに反映されないとか、対策はありますけどね。 あとはシナリオに適正レベルを設ける。 システム側でおかしなシナリオを最初から「エラーにより排除」するなど いろいろと対策はありますけどね。 複合的なエラーチェックでめんどくさくするぐらいしかないのかなorz...
216 名前:新人PG mailto:sage [04/04/13 23:45 ID:w0VogWFU.net] ただいま帰りました。仕事忙しすぎ。 だんだんまとめ辛くなってきましたが、ばんがります。 トリガーデータ案:草案を元にしたもの [シリアルID]:数値5桁 [基本命令系]:わからん [値種類1]:英数字5桁以内 [比較対象値1]:数値5桁 [値種類2]:英数字5桁以内 [比較対象値2]:数値5桁 [比較方法]:英数字? [真処理]:英字?桁 [偽処理]:英字?桁 [パラメータ]:??? 記述例) 00001,?????,Int,0,Scene,00020,Equal,ACTSCENE,00030,00002,MOVETRIGGER,00003 IDは00001、比較値1は数値型定数0、比較値2はシーン00020の戻値、比較方法は値等価判断 真の場合シーン00030を読み込みトリガ00002を起動、偽の場合トリガ00003に移動。 とりあえず、Excelで編集と言う事でXML云々は考えない方向で行きます。 このようなCSVを作成していく感じでいいんでしょうか?
217 名前:新人PG mailto:sage [04/04/13 23:49 ID:w0VogWFU.net] なんか殆ど、親父PGタンの頭の中でできあがってるようですね(汗 俺、要るのかな・・・?
218 名前:名前は開発中のものです。 mailto:sage [04/04/14 01:26 ID:fCb1f0Lh.net] Excel前提ってのがまず汎用性で問題あるような 最近のマシンオフィス標準搭載かなり減ったし その辺の自動化もツール担当の仕事かと
219 名前:親父PG mailto:sage [04/04/14 05:14 ID:EE4mRz9N.net] >>217 お疲れさまー、ご無沙汰しています。 >このようなCSVを作成していく感じでいいんでしょうか? 違いますorz...SUMAN エクセルの話ですが、あくまで「エクセルでも」データ−が見れるというものでありまして、 それはコンパイルされたデータ−を、バイナリ<>CSVツールで編集(デバック)できるように するというものです。 よってスクリプト記章ツールは別に必要です。 >>217 ここ数日の書き込みでそう思われたのですねorz... でも、決まったのはメインPGが受け取るバイナリの形でありまして、スクリプト記章ツールがいらなくなったわけではありません。 メインPG側の受け取りバイナリの形と解釈方法を提示しましたので、スクリプト側のツールはスクリプトの文法を(設計)設定して 予定のバイナリを出力するものを、設計してくれることを期待しています。 スクリプトの文法はXMLでも、オリジナルでもOKです。 ここで必用なことはシナリオライターが必要とする機能の調査と設計、機能の単純化などです。 バイナリからの逆復元(バイナリからのソース復元機能)は必用ありません。(ソースコード保存) メインPG<バイナリ<スクリプトツール ↑↓ CSV エクセル スクリプトの文法、設計はまったくの白紙状態です。新人PGさん、大変期待しています。
220 名前:親父PG mailto:sage [04/04/14 05:35 ID:EE4mRz9N.net] >>218 おつかれさま EXCELは補助ツールなのでスクリプトツールは別途作成予定です。 メインPG側のバイナリの形さえ決まっていれば、スクリプトツールは自由に選べます。Excelもそのうちのひとつだと考えてください。 (もっともExcelの場合,スクリプトではなくバイナリエディタっぽい使い方だけどね。) 私の作業の報告 WINDOWの設定ツールがひとまず完成しました。12種類のスタイルを定義できます。 メイン側は使用するときにこれらのスタイル定義にしたがって、先につくったボタン定義用のデータ−構造体より必要なデータ−をコピーして、 画面に作成します。現在、メイン画面にWINDOW本体と上部バーとクローズボタンを表示するところまでです。(WINDOWSの上にWINDOWS作ってるよorz...) 今日は久しぶりの休みです。ぼちぼち作業を始めます。
221 名前:名前は開発中のものです。 mailto:sage [04/04/14 10:42 ID:fCb1f0Lh.net] Excelでcsv扱うと文字列の先頭のゼロが数値として読み込むために消えたり 全角数値が半角になったりしてくれるんであんまり便利な物ではないですよ ダブルクォーテーションでくくった項目は強制的に文字列として読み込んでくれるとよかったのですがね
222 名前:親父PG mailto:sage [04/04/14 10:50 ID:EE4mRz9N.net] >>221 それは拡張子をtxtで読みこめば回避できます。読み込み時にセルの属性指定可能。 このシステムに関してなら、トリガーテーブルに文字列はありませんので大丈夫です。
223 名前:名前は開発中のものです。 mailto:sage [04/04/14 17:33 ID:bV4eSf3V.net] ひげぽんOSは飽きたのか?
224 名前:親父PG mailto:sage [04/04/14 17:50 ID:EE4mRz9N.net] >>223 こんなプロジェクトがあったんですね。知りませんでした。orz... OSを作る気はありまえん(W そんな能力はありませぬorz... 新人PGさんへ 既にご存知かもしれませんがこういうサイトがあります www.ultrasync.net/dee/kr2helps/tjs2doc/contents/ 私が仮想マシン側の設計ですね。 この板見てるとツクール派と、それ以外を使ってみたいという方がけっこういらっしゃるようですね。 自作であればスクリプトエンジンが必用ですが、そのへんはみなさんどうしているのかな?
225 名前:名前は開発中のものです。 mailto:sage [04/04/14 23:06 ID:FAI9201/.net] >>223 何コイツ?
226 名前:名前は開発中のものです。 [04/04/14 23:26 ID:7S1uDrPs.net] ここの親父はまだまだ若い方だろう。 ・・・もっと親父になるとマジではかどらなくなるから 今のうちにやりたい事やっときなされ。
227 名前:WinMEMEME!fuckme! [04/04/15 00:25 ID:WvzZ497j.net] unnkoburiburi?
228 名前:新人PG mailto:sage [04/04/15 01:04 ID:XWJTPtW1.net] ただいま帰りました。研修も無しにいきなり出向させられる会社ってどうよ(泣) >>親父PGタン なんとなくわかりました。スクリプト言語(みたいなもの)を設計するって事ですね。 それならいっそのこと、トリガーだけではなくてシーン等も記述するできるようにしたいですよね? あまり汎用的なものは考えていないのですが、現ゲームの作成に特化したものを目指すようにします。 #余談ですが、卒論のテーマと似ていますw #流用しながら作る予定なので、早く作れるかも?
229 名前:親父PG mailto:sage [04/04/15 07:18 ID:lFmywgB/.net] >>226 ^^;ガンバリマス >>227 orz... >>228 おつかれさま。お仕事大変ですね。 >スクリプト言語(みたいなもの)を設計するって事ですね。 そうです。よろしくお願いします。 >トリガーだけではなくてシーン等も記述するできるようにしたいですよね? そうです。そして出力ファイルは分離して行われます。 トリガーとシーンは分離します。 >あまり汎用的なものは考えていないのですが、現ゲームの作成に特化したものを目指すようにします スクリプト言語内で一旦中間コードにして、そこから出力フォーマット用に変換するように設計すると良いですよ。 出力フォーマットを切り替えると、別の用途用に使えるように切り替える事も出来ます^^;(仕様変更にも強くなりますorz...) #余談ですが、卒論のテーマと似ていますw #流用しながら作る予定なので、早く作れるかも? おお! 期待してますよ♪
230 名前:親父PG mailto:sage [04/04/18 17:10 ID:2197QA5A.net] しばらく書き込みがなくてさびしいので書き込みますorz... 日々少しずつ進んでいますが、なかなか進展しません。今調整いている部分が大掛かりな部分なので仕方ないのですがorz... 親父プロジェクトの構造 LIFE=trueであればACTトリガーvietualFunction 「基底クラススケジュール」→インプリメント部 ↑ ↓各オブジェクト(ポリゴンなどをオブジェクト配列のデータより作成) ↑一定周期 描画ループ Windowloop →→→ 描画 ↑ ↑ WindowMessage(OSトリガー)→範囲チェック→オブジェクトデータ−の操作 各オブジェクトデータ−配列(STL) ○WINDOWSクラス<−現在作成中 登録済みのWINDOWのスタイルから複製を作って、ポリゴンーテクスチャーボタンなどを画面に配置する。 ○ボタンクラス テクスチャとボタンの振る舞い(トリガー)や描画をコントロール ○テクスチャクラス テクスチャのファイルの読み込み部分切り出しなどをコントロール ○ポリゴンクラス 主に四角形を作りテクスチャが張り込まれる。線や点にも対応 ○ポリゴンクラス3D 上の機能に3D用に派生したクラス ○ライトクラス ライトを定義するポリゴンと同じように移動させることができる ○フォントクラス フォント表示 ○範囲クラス 範囲を定義する(3D対応) ○オブジェクトIDマネージャー オブジェクトを作成した時にユニークなID番号を発行する。各オブジェクトの配列のINDEX値も格納してハンドルからアクセスしたいオブジェクトを識別できる ○プロファイルクラス 定義ファイルの読み込み ○コマンドクラス 下位コマンド全般を定義コントロールする為の関数群 さて、作業にもどりますorz.... パコに入っていたCDが出てきたので押し込んだらCIV3の画面が...激しく誘惑に駆られるw
231 名前:名前は開発中のものです。 mailto:sage [04/04/19 18:50 ID:zoW1zDwj.net] 今始めてきたけど、親父さんすごいなぁ。 全くわからん。 HPでも立ててみたら?
232 名前:親父PG mailto:sage [04/04/19 20:15 ID:HvqP5Z0m.net] >>231 どうも^^; HPですが「新人PG」さんのご好意で以下のものがあります。 www.geocities.jp/oyajipg/index.html さてWINDOWですが、複数面サポート。 クリックにより背面と前面入れ替わる動き。 タイトルバーの表示 キャプションの表示 クローズボタンの表示、MOUSEOVERで反応、クリックでウインド閉じる タイトルバーをクリックして動かす Windowのレクト領域の頂点に色を設定できる機能 Windowの半透明表示 こんな所までできました。 改めてWINDOWSのコントールオブジェクトを1から造るの面倒だなぁとorz... しかも、スクロール機能、拡大縮小機能がありませんね。マンドクサイorz..... まぁWINDOWSを造っているわけではないので、ボタンとメニューとテキストを載せて、 動かせるようになったら、一旦収束してスクリプトに移ります。 バイナリを解読して仮想スクリプト用エンジンを造る事になります。 バイナリコードと命令表を作らないといけません。 ほんとコツコツだなぁ(笑
233 名前:231 mailto:sage [04/04/19 21:14 ID:AzIQfmcz.net] おお、早速反応が来た。なんだかうれしい。 VisualC買うべきですかね。一応高校生なんでアカデミックで買えるから買ったほうがいいんですかね。 いや、Cのかけらもわかってないんですけど。 金がないからDev-Cという安易な考えは捨てちまったほうがいいですね。 紹介していただいたページにも書いてあるし。 んじゃ、がんばってください
234 名前:親父PG mailto:sage [04/04/19 21:46 ID:HvqP5Z0m.net] >>233 アカデミックですとC++.net10000円しないんですよね。 フルで買っても2万5千円ぐらいかな? ちなみにC++.net単体でCの学習は辛いかもしれない。 言語の解説は入っておらず、クラス構成が書かれたポスターのような表が何枚か入ってるだけ。 最初の事初めでしたらC#のほうがマネージドコードやコンポ−ネントなどが使い易くてよいかもしれませんね。 (C++.netでも使えるけど、ディホルトの設定では使えなかったりするしorz...) フリーのCビルダーも良いかもしれません。なにより結果に最短なものがベストです。 それでしばらく学習した後に、DirectXが良いと思われます。 C++.netはここの板的にはDirectX以外の用途には使えません(w 怒られるかな@rz
235 名前:名前は開発中のものです。 mailto:sage [04/04/19 22:33 ID:4HaR2ypQ.net] C自体が全く分からないというけどほかの言語はどうなのかな いまだと無料でつかえる言語たくさんあるので言語自体が不慣れならそちらからはいるといい そしてゲーム作るのにC++じゃないということはない
236 名前:新人PG mailto:sage [04/04/19 23:10 ID:rjSD3Om1.net] お久しぶりです。ただいま仕事から戻りました。 ぶっちゃけ仕事忙しすぎて、あんまり手がかけれない状態に陥ってますが、勘弁してください・・・(汗 >>親父PGタン 今言語設計に取り掛かっていて、前に出して頂いた目的コードを参考にしながら中間コードの出力を想像している所です。 似非Java言語仕様となっています。 構造化フローOnlyで、型チェックは今のところ省いています。 連休までには動くものができると思いますが、それまではソース&仕様書の断片を小出しにしていきます。 ただ、今の目的コードの草案だけではちょっとムリポです。ある程度作ると、いろんな面が見えてくるので そこで突っ込みをいれてみます。(こんな感じの進行で行くんですよね?w) 環境Win2K + VC++7.0 + STL + Boostてな環境です。 ソース公開するつもりなので穴があったら突っ込んでください・・・。>コンパイラ職人
237 名前:親父PG mailto:sage [04/04/19 23:31 ID:HvqP5Z0m.net] >>236 お疲れ様、お久しぶりです。 進行についてはそれでOKです。というか付き合って頂いて有難うです。 こちらの仮想エンジンは固定長トークンを随時実行していくというタイプになります。 あまり賢いとはいえません(orz... CPUコードのようなイメージで、命令にはいろいろな「バリエーション」を選択できます。 とりあえず基本的な制御構造の部分を決めていきましょう。 「命令」トークンの価決めが必要ですね。取り合えずNOPは90Hで(謎 Windowの部分が完成したら一旦UPして見てもらおうと思います。 プラットフォームしかできていないので、大掛かりな割にはしょぼいのですがorz...
238 名前:とおりすがりの親父PG mailto:sage [04/04/20 17:51 ID:UA9bY4ln.net] 取り急ぎトリガー構造体 TYPE 1 48byte DataString struct stScriptTcodeA { unsigned short ;//S/N シナリオシリアル unsigned short ;//ID 番号 unsigned char MainCodeToken;//このテーブルの主な役割を示す char Enable;//この値が-1の場合シナリオエディタを使ってコンパイルされていない 0:disenable 1:enable unsigned char PAtype;//パラメーターAの指している場所、使われ方等をコードで示す unsigned char PBtype;//パラメーターBの指している場所、使われ方等をコードで示す int ParameterA;//パラメータA int ParameterB;//パラメーターB short SubParameterA;//パラメータA sub short SubParameterB;//パラメータB sub unsigned char CalcToken;// 計算式 char BoolToken;// トリガー条件 真の時 偽の時 =0 !=0 - + -1 +1 2の倍数 unsigned char ActToken;//アクション番号 unsigned char ParameterType;0: int*3 / 1: short*6 (HIWORD)(LOWORD).. int Callparametar1;//パラメーター int Callparametar2;// int Callparametar3;// int Resaved; //(this Area Used System Work) 使用者がワークエリアとして使う int Resaved; //(this Area Used System Work) short Resave01; unsigned char CountToken トリガーをまとめて使う場合、いくつあるか? unsigned char EndofToken 命令の終わりコード 終わり・次がある };
239 名前:231 mailto:sage [04/04/20 19:09 ID:558xdrhW.net] >>親父PGさま なるほど。Cの勉強をしようと思ったとき、「よくVisualCでしか動かないコードを載せているサイトや本が多い」 と学校の先輩に言われたのでVisualCを買おうかと思ったのです。 で、GCC(Dev-C)を使っているのは、これはなんとなく……。 いろいろありがとうこざいます。 >>235 さま 今までDelphiを使っておりました。ただ、学校(工業高校です)の勉強でCを使うらしいし、Cは実行速度が速い と聞いていたのでこの際Cもやってみるか、と思った次第です。
240 名前:名前は開発中のものです。 mailto:sage [04/04/20 19:18 ID:svF6Tlnf.net] >>239 ***すれ立てるまでもない質問はここで 第53刷*** pc5.2ch.net/test/read.cgi/tech/1081170910/l50
241 名前:親父PG mailto:sage [04/04/20 20:05 ID:EEGw5Gpv.net] >>239 Delphiをお使いですか、私も愛用しております。私はツール類はDelphiを使って作成しています。楽ですからね^^;。。。 最近は、「造りたいもの」に合わせて言語を使う(選ぶ)傾向があると思いますので。特にVCが必用ということはないと思います。 VCにこだわらなくても慣れて来ると、Cファミリーに属する言語は殆ど理解できるようになりますから(W また実行速度は学習段階では考えなくても良いと思いますよ。 サイトのサンプルはコピペではなく、意味を理解して使う事が望ましい。ですからVC用に書かれていようが関係ありません。 例をあげるとDelphi用のコードを書いている時に、サンプルはCのソースコードを読むことは沢山あります。 むしろVCという開発環境を使いこなすのは大変かもしれません。それはプログラム言語の学習とはちょっとニュアンスが違います。 MFCやらマネージドクラスやらブーストやらDirectXやらSTLやら(ムニャムニャ ライブラリの導入一つではまる事はざらにあります(ここがCの柔軟性の負の遺産と思いますがorz... 結論を言えば、慌ててVCにすることはないと思います。VCでしか造れない(造り易い)という目標があれば別ですが。 >>240 お気遣い有難うございます(^^*/ 今日は久しぶりの早い帰りです。明日も昼からなのでじっくり取り組もうと思います。 今作っているWINDOWですが、マウスに合わせてウインドがグリグリ動いて、ちょっと嬉しい。 マウスを激しく動かしたり、ビューポート外でマウスを放したときの処理など、エラー処理と (その危険な)コードを探すのに苦労しました(死 危険なメモリアクセスが(滝汗 しかしポインターって便利ですね。 蛇足ですが構造体にSTLのポインターって定義できるんですよね。 実行時にNEWでSTLを実体化してドカドカデータ−をぶち込んで使っています。 さて、呆れられるまえに親父日記は終了します。
242 名前:新人PG mailto:sage [04/04/21 01:25 ID:eYcWXse+.net] お疲れ様です。 >>親父PG まずは、Windowの基盤完成おめでたうございます。 DirectXの穴(デバイス消失など)も考えられて作られているようで、素晴らしいと思います。 これはゲーム完成が楽しみですね。 トリガデータ設計ありがとうございます。やはり目的コードが決まるとモヤモヤが消えます。 現在構文解析ツリーの設計と言語設計の矛盾を小一時間(いや、もっとか)問い詰めています。 大学の教科書見て復習しながらの実装です・・・(汗 あと、まとめページの方を明日ぐらいに更新しておきます。更新ペース遅くてスマソです。 #余談1 主観ですけどVCよりも使いやすいC/C++環境って無かったです。 MFCの使い方から教える入門書が悪い気がしますw 個人的には コンソール(C++の文法と標準関数覚える) → 猫でも → MFC入門(斜陽ですけど) で十分な気がするんですけどw つーか.NET覚えてWindows.Form覚え(ry #余談2 Windowsでゲームを作る上で、C#.NET + DirectXも選択肢に入る時代になったんですね・・・。 思った以上に高速に動作します。MSがパフォーマンスを最も重視して設計したと 豪語していますが、流石に言うだけのことはありますね。
243 名前:名前は開発中のものです。 mailto:sage [04/04/21 01:50 ID:cLgAiJmm.net] つーかネックになる場所は大概描画方面だったりするので その辺はDirectX使ってるのなら問題になることはないでしょう インタプリタの旧VBでもネックになることもよほどのレベルじゃない限りまずありません むしろ中間言語系は同一バイナリでも最適化できるのもポイントです たとえばjavaの1.4.2は従来バージョンのアプリも大幅に高速化しています これはSSEを使っているためです 静的コンパイラの最適化はたしかにいいのですが動的に環境に適応する コンパイラ(hotspot技術)というのも使うかどうかはともかく遊び倒す テーマとして面白い物です ちとふるいですが www.geocities.jp/toshio16369/column/021108a.html もちろん、今の最適化はこのころからくらべてかなりよくなっています
244 名前:親父PG mailto:sage [04/04/21 04:38 ID:OH77B7oH.net] >>242 おつかれさま。 >現在構文解析ツリーの設計と言語設計の矛盾を小一時間(いや、もっとか)問い詰めています。 ^^;復習してまでやってもらえて感謝です。 配列は会社で暇な時に紙に書いて構築しておりました。32Byteに収めたかったんですが、48byteになってしまいました。 あれだけではわけ解らないと思いますので補足説明しますね。 unsigned char MainCodeToken;//このテーブルの主な役割を示す これはズバリそのままで、「計算」とか「IF文」「Swith文」「価のセット」など仮想VMに命令を伝えます。 char Enable;//この値が-1の場合シナリオエディタを使ってコンパイルされていない 0:disenable 1:enable このー1というのはマップコンパイラ以外のツール(MAP(地形)にトリガーを埋め込むツール)などで 書き込まれたデータ−という意味です。 これを見つけたコンパイラは処理を追加義務が発生します。 命令コードは「地形MAPツールによって追加されたトリガ」になります。 unsigned char PAtype;//パラメーターAの指している場所、使われ方等をコードで示す 次のパラメータがFGのINDEX番号なのかMAPの座標なのか価なのかを表します またINTをつかうかShortを使うか両方つかうかを識別します。 INT ,Short , (Short+INT), Short:INT , Short,(HIWORD)Short,LOWORD(Short) unsigned char CalcToken;// 計算式 2つの価を同計算計算するか示します + - and or not > < >= <= ,INTかShortか両方か パラメーターが複数ある場合(PAtypeで指示)、もここのコードで判断します。 同じ[+]を表すコードでも両方を加算するトークン用、片方だけのトークン用があります パラメーターが複数ある場合、処理に引き渡す引数としても使えます。 char BoolToken;// トリガー条件 真の時 偽の時 =0 !=0 - + -1 +1 2の倍数 -64〜+64までは価として(6ビット)最上位ビットが 真の時 偽の時を表します 7ビット目がONの場合ユニークな条件を設定します65〜127 -65〜-127 00000000 は計算結果が0の時 真なら 10000000 は計算結果が0の時 偽なら 00000001 は計算結果が1の時 真なら 01000000 ユニークな条件(いまは考えていないorz)
245 名前:親父PG mailto:sage [04/04/21 10:08 ID:OH77B7oH.net] >>243 コンピューターの高速化がもたらした波ですなぁ。 Parlで最初にスカラー型を知った時は驚きでした。インタプリタできる芸当ですね。 ところで... じっくり取り組もうとか宣言しているにも関わらず、パコの前で気絶してしまいましたorz...
246 名前:名前は開発中のものです。 mailto:sage [04/04/21 11:34 ID:5LzXW3vc.net] ×disenable ○disable
247 名前:名前は開発中のものです。 mailto:sage [04/04/21 14:14 ID:y1g5Kw7w.net] ×Parl ○Perl
248 名前:親父PG mailto:sage [04/04/21 14:17 ID:iaRnmK/d.net] >>246 247 orz....
249 名前:親父PG mailto:sage [04/04/21 19:09 ID:iaRnmK/d.net] 新人PGさんへ スクリプトを組むに当たって構造設計のお話を致します。 定義 スクリプト言語の本システムにおける位置付け 本システムVMにおいて動作命令を出す事が可能である。 条件文は主にトリガーテーブルに置かれ、実行命令文をわけて管理される(トリガーTBLと実行データ-) アイドルは何処に書かれる? アイドル状態を想定する必要は無い。スクリプトは処理が終わると自動的にアイドルモードに切り替わる。 必要がある場合にVM側よりトリガーが引かれ実行される MAP座標 ユーザーの入力 -トリガ>トリガーTBLを検索 >実行>VMに実行部(が書かれたシナリオ上の番号を渡す) ボタンを押した時の処理 現在考えているのはこのようなタイプの静的なスクリプト処理です。(一部引数を動的に処理) ここからが相談ですが、動的に処理をしたほうが好ましい内容があると思われるのですが、何か希望がありますでしょうか? 変数、配列 などがまず考えられます。 具体的な実装方法は考えていませんが、「外部プログラムの起動」やゲーム特有の処理が必要な場合、DLLの読み込みなども考えられます。 ------------------------------------------------------------------------------------------------ 余談ですがツクールXPの紹介HPを見ました。あまり細かいところまでは判らないですが、 MAP(地形)が3階層 画面サイズが640*400 MAPツール(チップ編集による地形作成) スクリプト機能 暗号化機能などがあるようです。 暗号化機能というのは注目すべきアイデアかもしれませんね。 MAPツール(チップ編集による地形作成)については考察が必要かもしれません。
250 名前:親父PG mailto:sage [04/04/21 19:57 ID:iaRnmK/d.net] 新人PGさんはご存知かもしれませんが、MAPツールについて確認の為に書いておきます。 ゲームの画像の伝統的なやり方として、チップデータ-によるMAP作成という手法があります。 これは決められたサイズ8*8 16*16単位で書かれたチップデーター(画像)を並べて画像にしていくというのがあります。 これはコンシュマーのマシンが1キャラをハードウェア的にそのように扱っていた為に、行われてきた伝統的なやり方です。 同じパターンの使いまわしができるという点で、手動でデータの圧縮しているという側面がありました。 PCエンジン開発用のPC98用ツールが広く出回って、色々なゲームの開発用に使われた事は結構有名(orz... さてツクールでは、そのような方法とおぼしき方法が使われているようです(違っていたらごめんなさい) DirectXでは画像を細かく分割して扱うメリットはないので、親父システムではこのような方法はサポートしません。 地形画像データ-はJPGで(笑 最近の(とはいってもかなり昔からだけど)地形ツールは論理的な地形データをツールによって並べると、 境目には自動的に埋められていくようです。平平山山<こういうデータ-の場合平^山の間に自動的に間を補完する画像データ-が置かれるようになっています。 こういうツールも1から組み立てると大変ですねぇ。とりあえず最初は1枚画でいいかなorz....
251 名前:名前は開発中のものです。 mailto:sage [04/04/21 20:06 ID:cLgAiJmm.net] PCGデータ使った方がサイズ小さいというのはともかく Jpegだとカラーキーやアルファ扱うとき困りませんか? 重ね合わせとか普通しますし それにハイドライドやFFの森のようなものをやる場合どうします?
252 名前:231 mailto:sage [04/04/21 20:44 ID:uRL7H9Xs.net] >>親父PGさま 長い解説ありがとうございます。 >>サイトのサンプルはコピペではなく、意味を理解して使う事が望ましい。 肝に銘じておきます。 取り敢えずDev-Cで頑張ってみようと思います。いつかそれなりにプログラムが書けるようになったらここに戻ってこようと思います。 >>新人PGさま わざわざありがとうございます。
253 名前:親父PG mailto:sage [04/04/21 23:39 ID:OH77B7oH.net] >>251 いろいろと方法があります。アンチエイリアスなどが必用な場合を「除いて」単純なクロマキーであれば |アンド演算で抜けます。また全体を半透明にする場合はα値を偽造します。 うまくいかなかったらPNGでorz.. >>231 いつでもどうぞ^^ 前向きな書き込みであれば、歓迎しますよ。
254 名前:新人PG mailto:sage [04/04/22 00:09 ID:GFAvdjZl.net] >>243 色々意見ありがとうございます。 あまり大それた物を期待してもらうと逆に恐縮なんですけど、自分の出来る範囲で頑張っていこうかと思います。 >>親父PGタン 一応まとめの方に、トリガデータを載せました。 僕のアタマが悪いのか、完全理解が出来てません。また聞きます(汗 >>スクリプトの構造設計 ・アイドル処理は要らない 同意&同感です。こちらはトリガ処理・シーン処理記述のみを書かせます。 しかし未だにMAP座標にトリガーを持たせるのにはちと抵抗があります・・・。 ・静的か動的か 変数、配列はサポートします。 DLL読み込みやその他プラグイン読み込み等は、今は考えてないです・・・。 とりあえず、第1段階完成後に考えます。 ・チップデータの地形 実はあんまり好きくないです。 本当は3Dで臨場感のあるタイプのが好きなのですけど、難しい=親父PGタンが大変 なので 今回はアリかななんて思っています。 まあ、チップも一枚絵も対応すると言う事ならば、チップで組んだほうが両対応で良いと思いますけどね。
255 名前:親父PG mailto:sage [04/04/22 00:10 ID:cy5y1emu.net] >>新人PG様 まとめページ有難うございます。 いくつか修正点がありますので書いておきますね。 ParameterA パラメータ左辺値? 2 ParameterB パラメータ右辺値? 2 意味のコメントはそれであってますよ^^ サイズは4です。 CalcToken 計算式?? あまり良く分っていない・・・ unsigned char CalcToken;// 計算式 2つの価(ParameterA ParameterB) をどのように計算するか示します + - and or not > < >= <= ,INTかShortか両方か パラメーターが複数ある場合(PAtypeで指示)、もここのコードで判断します。 同じ[+]を表すコードでも両方を加算するトークン用、片方だけのトークン用があります パラメーターが複数ある場合、処理に引き渡す引数としても使えます。 例 10は足し算 A+B 11は足し算 A'A+B'B 二つの価を上位ビット下位ビットで解釈 12は足し算 A'+B' サブパラメーターで演算 例 21は比較 A?B 22は比較 A?B A'?B' 23は比較 HIWORD(A)HIWORD(B) LOWORD(A)LOWORD(B) こんな感じです。 ParameterType ? 以下の3つのintの分割方法を示します。Short *6とか 解らない点がありましたらどしどしご質問ください。
256 名前:名前は開発中のものです。 mailto:sage [04/04/22 00:10 ID:hQ7KmIOV.net] >>253 いや、jpegってことはピクセルが綺麗に抜けないってところが問題なわけで ブロックノイズ単位で色が抜けるのはなんかいやだ ま、pngでいいんじゃない? αももてるし、パレットもあるし ところでハイドライドとかの森って実現できるの? キャラのY座標によって手前に行ったり奥に言ったりするようなオブジェクトなんだけど
257 名前:親父PG mailto:sage [04/04/22 00:19 ID:cy5y1emu.net] >しかし未だにMAP座標にトリガーを持たせるのにはちと抵抗があります・・・。 キャラがある座標にいどうする。 MAP上にはトリガーがあるという情報しかありません そこで初めてMAPからトリガーテーブルに対して座標引数をもったトリガーが呼ばれます。 と、いっても実際にシステム側からすれば、一致する座標のトリガーテーブルを検索して探すだけなんですけども。 (これが理由で命令コードにMAPから呼ばれた命令)というのがあるわけです。 検索速度を上げるためです。 スクリプト側から見れば、座標データ−さえセットしておけば、システム側から勝手にトリガーを 引いてくれる事になります。 チップデータ−を内部でサポートするというとは、実際にチップINDEXを持って使用時に組み立てる作業を PG内部でおこなう事をいいます。今回このようなことはおこないません。
258 名前:親父PG mailto:sage [04/04/22 00:30 ID:cy5y1emu.net] >>256 おお256を踏みましたね。このスレも無事に1バイトを超えました(W ご心配のJPGデータですが、内部に読み込むとARGB各8ビットというデータ−に変わります。 この時点でαは全ピクセルにFFが割り当てられています。 このFFの価を変化させてあげると半透明になります。 実はこのようなことを心配しなくても、2つのテクスチャはちゃんと抜くことができます。 αが意味を持つのはエッジ処理です。全体に薄くしたり特定色(黒)を透明にする事は特に PNGを使う必用は無いのです。 綺麗にエッジを抜く場合はαデータ−を持ったPNGが有利ですが。それほど必用でないものや 最初からスクリーン<−フォトショップのレイヤー属性のあれ(or演算) であればαデータ−なしでもそれほど問題になりません。 要するに使う場所と目的によって決定されます。
259 名前:親父PG mailto:sage [04/04/22 23:37 ID:cy5y1emu.net] >>新人PGさんへ >しかし未だにMAP座標にトリガーを持たせるのにはちと抵抗があります・・・。 もしかして、地形MAPにあの48バイトのトリガーデータを持つと、お考えですか? もしそうなら違いますよ。地形データには「トリガーを引いて」という意味の1バイトデータしか使いません。 眠い、眠いです。ツールにバグがあった...ナオサナケレバorz... とある会社のデータ−ベースに製品シリアルに「ハイフンと全角ハイフン」が混じって登録されているのを発見。 直すのは不可能との事....(メインフレーム上にあり、直すのにんんんん万かかるらしい)激しく鬱ですorz...
260 名前:名前は開発中のものです。 mailto:sage [04/04/22 23:42 ID:q2BwaruN.net] ウィンドウ見せてクリ
261 名前:新人PG mailto:sage [04/04/23 00:03 ID:zEfEFbHL.net] >>親父PGタン お疲れ様です。 メインフレームは触った事ないんで良く分らないですが、コンバータ組むぐらいじゃダメなんでしょうね・・・きっと。 >もしかして、地形MAPにあの48バイトのトリガーデータを持つと、お考えですか? >もしそうなら違いますよ。地形データには「トリガーを引いて」という意味の1バイトデータしか使いません。 いえ。トリガーを変更した場合、直接は関係なさそうな地形MAPもデータを作りなおさなきゃいけないのでそう思いました。 ツールが補完するとしても、地形MAP編集ツール等がトリガーの事を気にしなくてはいけないデータ構造はちょっと・・・。 地形MAPは地図情報のみを扱う事にすると良いのでは?、と思ったのです。 言語設計なのですけど、一連のシーンを1関数として定義していきます。 吉里吉里のスクリプトを大いに参考にさせて頂いています、が、そこまでの汎用性は無いです。 言語上に機能として持たせたい物で、レイヤー・ウィンドウ管理、外部ファイル読み込み、がありますがどうでしょうか? (特に外部ファイル読み込みは静的か動的かの話題なんですけど・・・)
262 名前:親父PG mailto:sage [04/04/23 00:05 ID:nZvvFTd4.net] >>260 まだデザインなど適当ですがこんな感じです。 www02.so-net.ne.jp/~wizzhen/flash/test.jpg 今 標準的なメッセージ表示用のものを造っているところです。 OKボタンは左上のものが入ります ツールのバグでいま表示できていませんorz...
263 名前:親父PG mailto:sage [04/04/23 00:11 ID:nZvvFTd4.net] >>261 おつかれさまー メインフレームの件は私もそう思ったんですけどね。そういう簡単なものではないらしい 未知の世界(デッカイTAPE装置が動いている世界... MAPの話 例えばMAPにトリガーが無いと仮定すると、 キャラが移動する毎にトリガーテーブル−のサーチが必要になります。 これは効率が悪いので、MAP側に「探せ!」というコードを埋め込むわけです。 外部ファイル読み込みは 動的に処理しないとあまり意味はありません。 固定長のトリガーテーブルは後ろに付け足しできるなど、扱い易い点はあると思いますけどね。
264 名前:親父PG mailto:sage [04/04/23 19:05 ID:nZvvFTd4.net] 新人PGさんへ 豆乳システムの命令リファレンスです ttp://tonyu.kake.info.waseda.ac.jp/api/wiki.cgi?page=%cc%bf%ce%e1%a5%ea%a5%d5%a5%a1%a5%ec%a5%f3%a5%b9 これを参考に実行部のほうも定義していきますね。
265 名前:親父PG [04/04/25 16:09 ID:F+nBnVBh.net] まだデザインなど適当ですがこんな感じです。 www02.so-net.ne.jp/~wizzhen/flash/test.jpg 文字出力が出来ました。 このウインドは全角で24文字程度の出力用です。 文字量が増えた時は何もしませんorz... スクロール機能を備えたウインドはこの次に作成します。 ところで皆さんは文字列用のライブラリは何をお使いですか? (特に可変文字列など) 私はSTLのbasic_string を使っておりますが^^
266 名前:親父PG mailto:sage [04/04/25 16:10 ID:F+nBnVBh.net] ageてしまったorz.........................
267 名前:親父PG mailto:sage [04/04/25 16:25 ID:F+nBnVBh.net] >>新人PGさんへ 今、ある下位コマンドです。設計の参考にしてください。 const hOBJECT _mesNewOBJWin( int objtype,D3DPRIMITIVETYPE stype,unsigned ten ,byte* pstruc ,int zindex);//Winsowの登録(OBJを呼び出し) const hOBJECT _mesNewOBJ( int objtype,D3DPRIMITIVETYPE stype,unsigned ten ,byte* pstruc );//OBJの登録 const hOBJECT _mesNewOBJ( int objtype,char* texfilename ,int usealpa);//テクスチャの登録 const hOBJECT _mesNewOBJ( int objtype ,float x,float y ,float z );//四角などの登録 const hOBJECT _mesNewOBJ( int objtype ,float x,float y ,float z ,D3DLIGHT9* );//ライトの登録 const hOBJECT _mesNewOBJ( int objtype ,float x,float y ,float z ,float w,float h,float r );//空間の登録 const hOBJECT _mesNewOBJ( int objtype ,float D3Dfontsize, char* outputtext ,int D3Dfontnumber );//フォントの登録 void _mesVirePortTextureSet(); int _mesViewPortProfileLoad(char* datfilename );//ViewPortの切替 セッテイングファイルの読み込み int _mesViewPortProfileLoad();//ViewPortの切替 セッテイングファイルの切替 int _mesLoadTextureforProfile();//テクスチャファイルを一気に読み込む関数 int _mesMakeButtonforProfile();//ボタンを貼り付ける□を作成する int _mesSetButtonText( dBOption* pButtonData ,char* newtext); int _mesSetButtonText( int btnumber,char* newtext);//ボタンのテキストを変更する int _masMakeButton(int btnumber ,dBOption* dbt,dRECT* rect,int zindex);//ボタンを作成する int _mesMovingOBJ( hOBJECT,int time ,float x ,float y ,float z ,BOOL sw );//objの移動 int _mesMovOBJ( hOBJECT handle,int time ,float x ,float y ,float z ,BOOL sw );//objのSTOP移動
268 名前:親父PG mailto:sage [04/04/25 16:26 ID:F+nBnVBh.net] int _mesScaleOBJ( hOBJECT handle,int time ,float x ,float y ,float z ,BOOL sw );//objの拡大縮小 int _mesShowOBJ( hOBJECT handle, int time ); int _mesHideOBJ( hOBJECT handle, int time ); int _mesSetObjectOutputText( hOBJECT handle,float x,float y,float z,float fontsize=FONT_NORESIZE,const char* outputText =NULL ); int _mesDeleteOBJ( hOBJECT handle, int time ); int _mesSetWindowPos(unsigned int nWin ,float x,float y ,float z);//Moveコマンドを一斉に発行する_mesmoveの上位コマンド int _mesSetTexture( unsigned int taget,unsigned int texnumber ,unsigned int coindex =0); int _mesSetArea( hOBJECT tagetA,hOBJECT objnumber,unsigned int _incommand_=0,unsigned int _outcommand_=0,unsigned int _hitcommand_=0 ); int _mesSetObjectStatus1( hOBJECT handle,OBJSTATUSFORMAT _format_ );// int _mesFontColorChange( hOBJECT handle,float r,float g,float b );//FONTに対してのみ有効 即対応型 int _mesFontSizeChange( hOBJECT handle,float _fontsize_ );//FONTに対してのみ有効 即対応型 void ClearALLOBJ_(); hwin _mesCreateWindow(unsigned char WinType ,short X,short Y); void _mesDeleteWindow(int hwin); 変更・追加はありますorz...つぎはぎだらけなのがばれてしまうソースですな(汗
269 名前:名前は開発中のものです。 mailto:sage [04/04/25 17:29 ID:TuLiLdfJ.net] >>265 std::string でお茶を濁してまつ
270 名前:新人PG mailto:sage [04/04/26 00:37 ID:RHLEfjhQ.net] 公言した連休まで一週間しかないYO! 先に謝っておきます。多分動くもの、できません・・・。 Boostのspiritを使いつつ、字句&構文解析を頑張って作っているところです、が、なかなか思うように進んでおりません。 言語仕様ですが、まだ公開できる段階ではありません(汗 最終形は似非C言語+謎の独自予約語と思って頂くとわかりやすいかも知れません。 出来たところ ・EBNFの基幹部分(やっと終わった・・・) ・演算部分の字句・構文解析実装 ・if文の字句・構文解析実装 出来てないところ ・その他の構文の字句・構文解析実装 ・中間コード設計(先にやった方がいいな・・・) ・目的コード設計 ・中間コード出力実装 ・中間コード解析実装 ・目的コード出力実装 ・その他ドキュメントなど・・・ 全然出来てませんな・・・。早く出来るなんて嘘こきましたがもうちょっと時間を下され・・・。
271 名前:親父PG mailto:sage [04/04/26 00:46 ID:Tu3Nnhfj.net] >>270 お疲れ様。^^ まぁ肩の力を抜いて楽しくいきましょう。 自分で仕様を決めて造るProgramは、楽しくやらないと損ですからね。 力を抜いて頑張ってください。 私の方もWINDOWの拡張に努めています。文字列が入りきらない場合の 文字のスキップ(スクロール)の処理などをやってます。 出来上がった所から少しずつ、先のURLにあぷしていこうと思います。 私事ですが明後日に光が開通します。 勢いでMN8300W買ってしまいましたorz....
272 名前:名前は開発中のものです。 mailto:sage [04/04/26 09:31 ID:YvjKmIIw.net] なんか文字の後ろが透過されてないんだけど、 もしかして例のDIB側で合成して、αを使っていないせい?
273 名前:親父PG mailto:sage [04/04/26 12:40 ID:Tu3Nnhfj.net] >>269 スタンダートストリングですか^^ 何が何に強いとか特長とかあるんですかね? C関係は文字ライブラリの種類多すぎorz... デルファイのようにStringが、すべてカプセル化して1つしかない状態のほうが シンプルで良いような気もするんですけどね(個人的には) string.sort() ←こういう事が標準でできるあたりはCも便利なんですが... >>272 そうではありませぬ。 文字の後ろは可読性を考えて、わざと不透明にしております。 文字は高精度αを使って滑らかに出力しております。 「文字 DIB |合成(スクリーン) 背景」Tecture このとき背景のαを255←ここを変化させると透過する ポリゴン (重ね合わせ) WINDOWポリゴン 頂点にα設定 (重ね合わせ) サーフェースカラー
274 名前:名前は開発中のものです。 mailto:sage [04/04/28 22:48 ID:ZcMEeys0.net] 応援さげほっしゅ
275 名前:親父PG mailto:sage [04/04/29 00:55 ID:fKr8I6Zs.net] >>274 最近、書き込み少なくて寂しいのでorz...ありがとうです^^ さて我が家にも光が開通したのですが、ADSL>光の切替が月末に固定されているので 使えないというorz... システムのほうはコンポーネントという概念(複数のコントロールOBJ)を一括して扱う この実現のために新しいクラスの定義、一部命令の移動など工事などを進めました。 仕事の合間に紙に、ボールペンでクラスの構造設計書を書いておりました。 落書きの山ですな。 この新しいクラスのためにSTLのタイプを何を使うか検討しています。 STLの種類選びはなかなか重要で本システムでも、Vector と deque を 切り替えただけで80%速度が改善しました。 さて親父日記は終了して 仕事に戻ります
276 名前:新人PG mailto:sage [04/04/29 21:03 ID:im0w3ame.net] >>親父PG お疲れ様です。 アク禁食らっていてカキコできませんですた・・・。 言語の設計 ・ホワイトスペースは 空白・タブ・コメント・改行文字とします。 ・コメントはJava風("//" "/* */") ・if,for,while,switch,gotoあり ・型はshort,int,long,byte,string ・予約語としてscene,array等を予定 ・関数の宣言 int function Func1(int arg,string str){...} てな感じです。(細かい所はまた後で) クラス実装はほぼ諦めてます・・・。(だれか作れる人がいたら受け継いでくれ〜) 標準APIをこちらが実装する事でゲームの記述を行えるようにします。 こちらもコンパイラ作るのが飽きたときにコソッとゲーム考えたりしてます。 地形なのですけど、テクスチャから地形ポリゴンの高低を生成できたりすると面白いかもしれません? #文字列は普段はstd::string MFC環境はCStringを使っています。
277 名前:親父PG mailto:sage [04/04/29 21:51 ID:j+4sgpkF.net] >>276 お疲れさま 現在私は夜勤中ですorz... しかもノートPCの電源家に忘れた。さらに鬱.... 仕様ですが、最初の段階としては問題ないと思います。 そもそもクラス言語が理解している人ならば、ゲームツールを使わず自分で作ってるでしょう。orz.... というわけで、簡単な言語仕様をまとめて、シナリオライタークラスの人に「難易度」を計ってもらう事が必要かもしれません。 >>こちらもコンパイラ作るのが飽きたときにコソッとゲーム考えたりしてます。 いいですねぇ。なんかPGの話ばかりしてると、PG以外の人が寄り付かなくなってしまうので、いろいろとネタを振るのもいいかもしれませんね。 >>地形なのですけど、テクスチャから地形ポリゴンの高低を生成できたりすると面白いかもしれません? すまん。もう少し詳しく教えてくだされ。テクスチャの何から高低を生成するのかな? いきなりですが、DirectXの描画ループの説明を致します。 DirectXの描画ループ ポリゴンを作る ポリゴンにテクスチャを張る レンダリングGO 描画(FLIP) ポリゴンを張るというのはポリゴンのデータ-に対してテクスチャの(ポインタ)を渡します。 するとあとはDirectXが勝手に描いてくれます。いいですねぇ。 さて2つのポリゴンに対してテクスチャAを割り当てた時に、テクスチャAの内容を変化させるとどうなるか? 答えは2つのポリゴン両方の内容が変化します。 この特性は美味く使うと便利ですが、少し困る事があります。その場合はテクスチャのコピーを作ってそのポインタを渡したほうがいいかもしれません。
278 名前:新人PG mailto:sage [04/04/29 22:17 ID:im0w3ame.net] >>親父PGタン (゚Д゚)オツーです。 シナリオライターはツールやこちらが組んだAPIを使用して、シンプルな記述が出来るように設計します。 ほとんど変数や分岐を記述させないで、こちらが用意した評価関数を使用させるようにします。 (ほとんどGameProgramming Gemsの内容に従っての設計になっています) >>地形データからマップ生成 www.uroboros.org/manageddirectx_csharp.html こんなのを見ていて面白そうだと思いました。 >>テクスチャの話 テクスチャを1つだけ生成して複数のポリゴンに参照させる事が出来るんですねぇ。 ゲームPGを全く(ていうか画像処理を)やった事の無い自分にとって面白い仕掛けだらけです。
279 名前:親父PG mailto:sage [04/04/30 01:23 ID:yNfOtjDQ.net] >>278 お疲れさま。 サンプル見ました。面白いですね。ではランドスケープの部分は新人PGさんにお任せします(w とりあえずなのですが、MAPは一枚画を3枚ぐらいレイヤー構造でスクロールするものを考えています。 でランドスケープのシステムの話。 シミュレーションなどで使うMAPでは論理座標を管理するMAPが存在します。 これを表すためにXY(Z)の配列をつくってその座標の特性に合わせてランドを作成します。 1が海2が平地として 111111 111211 112211 111111 古典的なやり方では1対1に対応して「チップ」データをおいていきました。 昔の「大戦略」などを思い出していただければ結構です。 これはMAPをユーザーにもエデットできるという仕様上からもこのような設計になってるのでしょう ユーザーにエディットさせないのであれば、1枚画を使ったほうが綺麗ですね。そういう方法を使っているところも結構あります。 さて次の方法ですが、1に上げた方法を拡張して平地と海の間のグラフィックを補完する方法というのがあります。 1と2の間に海岸のグラフィックを表示する これは3Dではない地形データを表現する方法として多く使われています。 3DMAP 予め作成済みの頂点データ-とポリゴンデータの組み合わせを表示する。 これは速度的にもよく使用されている方法です。動的に変化するのは必要な部分のみ。 通信ゲームなどはこの方法が多いのではないでしょうか? 本システムでは(とりあえず)斜め上視点を考えてます。後期ドラクエと考えてください。 地形MAPツールも作らないといけないですねぇorz... やる事多すぎw 次に考えているのは論理MAPデータ-からポリゴンデータ-を動的(読み込み時)に作成して ポリゴンを貼り付けていく方法というのがあります。 速度的な心配があるのですが、精度がそれほどでもなければなんとかなるかも。
280 名前:新人PG [04/05/02 16:13 ID:tneOjVuC.net] >>親父PGタン お疲れ様です。連休入ってから呆けていて遊んでました・・・、スンマソン。 スクリプト言語、中間コード生成までは問題なく進めそうです。(BoostのSpiritのおかげです・・・) 問題はその先なのですが(汗 Mの命令語の設計が出来てからマッピングを考えるのでそれ以上は保留としておきます。 不安要素は、スクリプト言語の汎用性が高すぎる事です。トリガーとマッピングできるのかしら? 恐らく、制御構造が全くといって良いほど違うので「戻り」は発生すると思いますけど。 >>サンプル見ました。面白いですね。ではランドスケープの部分は新人PGさんにお任せします(w >>とりあえずなのですが、MAPは一枚画を3枚ぐらいレイヤー構造でスクロールするものを考えています。 ちょっと待ったーッ!2Dの表示もやった事のない僕にそんな餌を撒かないで下さい(汗 画像処理系は任せますw 後学の為に参考にさせていただきますので b(・ー・) 個人的にはMAPツールはデータをプレビューできる機能さえあれば十分だと思ってますけどねw あとはテキストエディタなりバイナリエディタなり使ってw
281 名前:新人PG mailto:sage [04/05/02 17:45 ID:tneOjVuC.net] ageてしまった・・・スマソ。 言語仕様なのですけど、関数とトリガーを完全に別の記述方法にしました。 宣言方法も違います。 トリガーの宣言: "trigger" [シリアルID] ([トリガーより渡される引数]){...} 関数の宣言 [型(戻り値)] [関数名] ([スクリプト内で渡される引数] ){...} その他の変更・疑問など ・FOR文,SWITCH文が無くなる可能性があります。 ・ひょっとして中間コード要らない?←出力する中間コードそのものの変更が起こる可能性が非常に高いため (字句・構文解析とファンクタは別実装) ・計算式が書けなくなるかも?(VMの命令語次第)
282 名前:名前は開発中のものです。 mailto:sage [04/05/02 19:50 ID:PAfxeO72.net] for文や計算式が書けないのはまずいんでない?
283 名前:名前は開発中のものです。 mailto:sage [04/05/02 21:08 ID:wpvFJ3U7.net] 普通はスクリプト系にforとかswitchはあまりないんでない? 開発ツールのほうでswitchがあってもそれをifに展開したりする forのような繰り返しはあまり多くないからさほどいらないはず どうしてもほしかったら後で付け加えるだけでいいし
284 名前:名前は開発中のものです。 mailto:sage [04/05/02 21:33 ID:PAfxeO72.net] >普通はスクリプト系にforとかswitchはあまりないんでない? それ本当? 逆にforに相当するものが書けないスクリプトを知らないんで教えて欲しい。