親父PGがゲームを作り始めるスレッドat GAMEDEV
親父PGがゲームを作り始めるスレッド - 暇つぶし2ch165:新人PG
04/04/07 21:50 7aasUls1
URLリンク(www.geocities.jp)
ちょっとトリガーと地形の事についてまとめてみました。
思った事を書きます。
・トリガーのCmpOP(比較方法)は要らないんじゃないかと思っています。
プログラムの実装でカバーできるんじゃないでしょうか?
・トリガーのActCommandはデータは大きく確保しておいた方が良いのではないでしょうか。
私は複数の処理を羅列して書けたら良いと思っているので可変長配列がいいと思いますが。

実は個人的には地形データにトリガシリアルを記述する事に賛成ではありません。
別のデータ(アイテムデータ等)が持つデータだと思います。
アイテムデータがトリガ情報を所持していて、それが地形データの上にあるとすると、
アイテムデータトリガ呼び出し > 地形データの座標等チェック(トリガへの付加情報) > トリガ処理
という流れが出来るので良いと思っています。
抱合関係はファイルデータを参照して
●シーン := トリガ := アイテムデータ | 地形データ | シナリオ
このようなイメージを持っているのですがどうでしょう?

166:新人PG
04/04/07 22:10 7aasUls1
あ、あと細かい事かも知れないけど、MAPって聞くとデータ構造の方を思い浮かべてしまって混乱してますw
呼称「地形」で良いスか?w (ごめんなさい、ほんとに判らないんです)

167:名前は開発中のものです。
04/04/07 22:16 NGXP1J9S
俺的にはマップとmapでわけてるというか
会話になると混乱するかもしれん

つーか、普段の会話でmapってでてこないしなー
hashmapとか実装込みで離すだろうし

168:新人PG
04/04/07 22:35 7aasUls1
>>167
マップが地形の方でmapがデータ構造の方?w
うちの会社ではiniファイルもpropertiesファイルも全て「マップファイル」と呼びます。(ガクブル

しかし、データ構造やシステム面から詰めていってゲームって作れるんでしょうか。
本当に行き着く先がRPGツクールな気がしてきましたw
ラフ絵等が出てくると雰囲気出て良いかも。

169:名前は開発中のものです。
04/04/07 22:44 iAt21LPE
そしてそういったゲームには欠かせない
絵とか音楽とかシステムまわりがこのプロジェクトにはまったく無い
技術ありきだとプログラマ本人以外ついていけんしな


170:名前は開発中のものです。
04/04/07 23:16 SEG+EKoN
ああ。。僕の真鈴たん(仮名)早く逢いたいよ。。

171:新人PG
04/04/07 23:55 7aasUls1
寝ます。
親父PGタン夜勤ご苦労様です。

絵柄は洋ゲーっぽく、渋くクドイのが良いなぁ・・・。
硬派さを出したいw

172:名前は開発中のものです。
04/04/08 04:23 rdLQdFbl
なんだか凄そうなので、3Dだったらぜひ一枚かませて欲しいです。
激渋グラフィック大好きなので。必要になったら声かけてくだちい。
ひっそりのぞいてます。

173:親父PG
04/04/08 05:31 msAPqSAi
>>165
お疲れ様!
Gif画像がモビットになってるorz HPに上げてくれると助かるです
まとめ画像を見てない状態ですが、いくつか私の意見も書いておきます。
>・トリガーのCmpOP(比較方法)は要らないんじゃないかと思っています。
>プログラムの実装でカバーできるんじゃないでしょうか

トリガーテーブルは仮想CPUに対する命令です。この部分にゲームの「分岐」に対する情報が書き込まれます。
これらの情報は「シナリオ作成者」が担当するものなのですが、シナリオ作成者に「Cを書け」と言っても無理な注文です。
そこで、それを解決する方法として考えたのが分離方式です。
煩わしい制御コードに悩むことなく、文章部分に集中してもらいます。

トリガーテーブルは以下のようなインターフェイスで、編集を考えています。
▼はプルダウン []は価入力
条件NO0023「▼FGの価」[34]と「▼トリガーの結果」が「▼等しいなら」「▼シーンの」[234]を処理

可変長にしないのはデータ-作成者のレベルを配慮(IF文より難しいことを避ける)
メインPGが使用するときの検索の高速化
いろんなツールが読み込んで作業する為のデータの単純化 など
トリガーテーブル部分だけ準PGがやることによって、ゲームスクリプトの矛盾発生を押さえ込む。
いくつかの理由があります。





174:親父PG
04/04/08 06:14 msAPqSAi
続き
・トリガーのActCommandはデータは大きく確保しておいた方が良いのではないでしょうか。
そうですね。引数もふくめるとおっしゃるとうりです。この部分は拡張しましょう。

>別のデータ(アイテムデータ等)が持つデータだと思います。
>アイテムデータがトリガ情報を所持していて、それが地形データの上にあるとすると、
>アイテムデータトリガ呼び出し > 地形データの座標等チェック(トリガへの付加情報) > トリガ処理
>という流れが出来るので良いと思っています。

アイテムデータ-にはトリガー情報は含みません。例えば、ある地点でアイテムを拾うというイベントがあったとしましょう。
キャラデータ-が移動、地図配列をチェック、トリガーがある。>トリガーテーブルから該当するトリガーを探し出す。
トリガの1番目のコマンドを調べる (シーン1と書いてある)
 シーン1 メッセージの表示「アイテムを拾いますか?」
 選択メニュ表示 戻り値をリターン
トリガの1の価取得終了 トリガの2の価取得開始 (ダイレクトの価1)
比較命令に従って2つの価の比較 条件によりアイテム取得トリガー呼出(引数 任意のアイテム番号)
このような流れになります
シーン1の情報が変わってもトリガー情報に影響がありません、逆もしかりです。

>>実は個人的には地形データにトリガシリアルを記述する事に賛成ではありません
これは144氏の指摘にある「地形データが入れ替わった時どうするのですか?」に対する
解決案のひとつ。同座標にトリガー埋め込んだ場合どうする? という問題ですね。

>●シーン := トリガ := アイテムデータ | 地形データ | シナリオ
>このようなイメージを持っているのですがどうでしょう?
私のイメージは

地形データ>>>>トリガー<<<<シナリオ
独立 アイテムデータ-
このようなイメージを考えています。 トリガーテーブルを中心に他は従属関係にあります。
>うちの会社ではiniファイルもpropertiesファイルも全て「マップファイル」と呼びます。
prz.... このスレでは地図データ-は地図データ-もしくは地形データと呼ぶようにしましょう。

175:親父PG
04/04/08 06:38 msAPqSAi
続き
>しかし、データ構造やシステム面から詰めていってゲームって作れるんでしょうか。
>本当に行き着く先がRPGツクールな気がしてきましたw
>ラフ絵等が出てくると雰囲気出て良いかも。
メインPGの最初のステップは、ステージを作ることですので最初は仕方の無いことでしょう。

画面イメージなどは今ちょこちょこ作ってます。お友達にキャラ絵も数点お願いしました。
(決定原稿ではないですけどね)元少女漫画家(出産の為引退)された方です。

ゲームの雰囲気ですが、私の隣には数年前に上野の博物館であった「ケルト神話」の展覧会の本が置いてあります(W
そこから察してください。^^;

>>172 >>169
最初はライブラリの構築からマッタリという考えだったので、イメージとかの資料を提示できずにいます。
申し訳ない。劇渋3D大歓迎です。そうだ!1点お願いしてもいいでしょうか。
128*128で武器(種類問わず)を1点お願いしてもいいでしょうか?
デザイン背景はケルト神話で基調カラーは青に緑が加わった色。
アクリル絵の具でいうところの「Compose Blue」でお願いします。

と勝手にお願いしていいのか俺orz

劇渋路線が人気あるようですね。私もラリーエルモア大好きです。

背景テクスチャポリゴンと前面テクスチャポリゴンがうまく半透明にならないと
いろいろ苦慮していましたが、原因は「背景データ-を先に描画していないから」
という結論でしたorz.....アホスギル
各テクスチャ事にレンダリングステート登録する機能作ったのに...全然別の理由だった(鬱だ
この機能は現時点ではいらないことが発覚(ショボーン orzナニカニツカエルカナ....

閑話休題
子供はまだ3歳と5歳だよw

176:名前は開発中のものです。
04/04/08 08:54 qS569gdt
子供ください

177:名前は開発中のものです。
04/04/08 15:10 EIdbWV3j
いきなりマニアックな内容でさらりと語るのはやめてくれ。
せめて参考になりそうなURL用意するとかして欲しいぞ。

コンポーズブルー
URLリンク(www.fairy-land.to)

エルモア
URLリンク(www.larryelmore.com)

178:名前は開発中のものです。
04/04/08 15:26 Hg7sDvxp
エルモアってなにか遠い昔に聞いた名だなと思ったが
D&Dのパッケ描いた人か…。

179:親父PG
04/04/08 15:40 msAPqSAi
>>176 orz...
>>177
調べてくれて有難う。こんなHPあったんだねorz
僕が中学生の頃、D&Dのイラストを見て、激しく感動したイラストレータです

RPGの話をするならこの人は避けて通れません。

Windowのパーツを作り始めました。仕様もこれから固めていきます。

イメージのたたき台になりますかね?

180:名前は開発中のものです。
04/04/08 16:06 PQfhS+Yw
 | ああ~ やっぱ3歳は    /
 |    シマリがいいな~!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ∥' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


181:144
04/04/08 16:49 kikONY5O
トリガテーブルは固定長じゃないほうがいいと思うよ。
で、番号じゃなくて名前の文字列にしよう。
で、std::map< std::string, TriggerAndProcess > みたいなのに突っ込もう。
ハッシュでもいいけど。

マップの方では、トリガ番号をセルに埋め込むのはよろしくないと思う。
3Dにしたときにどうしようもなくなる。
その代わりに、アトリビュートファイルを作ろう。
アトリビュート範囲とトリガの名前が書いてある。
(もちろん、マップファイルの固定長地形データ配列の次にくっ付けても
構わないが、実行の問題じゃなくて構造の問題ね)

トリガの条件判断は、やはりスクリプトに譲ったほうがよいと思う。
寄り道できない一本道のシナリオなら今のトリガテーブルの条件記述
で構わないと思うが、ちょっと複雑になったら、結局素人の手には
終えなくなると思う。
当面は今のトリガ記述方法で良いと思うけど、早いうちからスクリプト
への変換をしておくと、トランスレータだけいじればよくなるので、
トリガデータ構造はもっと柔軟なもの(できればスクリプト)にしておいた
ほうが良いだろう。

182:名前は開発中のものです。
04/04/08 17:15 Hg7sDvxp
親父PG氏、ソーサリアンとかD&Dとか言ってる時点で
俺と同世代っぽいなー。

183:親父PG
04/04/08 17:53 msAPqSAi
>>144
ご意見ありがとう。いろいろとご意見を私なりに整理しました、話をすすめていく上で確認すべき点があると思います。

私が提起しているデータ-形式は、そのまま「メモリの上に展開して動かせる最終形態」の話です。
プログラムの中でSTLを使うにしても、バイナリデータ-の並びを解釈してCPUを動かさなければなりません。
前にも述べましたが、スクリプト(テキスト)を動的に解釈するメリットはないので、
中間言語およびスクリプトで書かれたコードは全てコンパイルが済んだ形(バイナリ)にします。
そのバイナリ形式が提案している形になります。
ただし、その前工程でどのような形でデータ-を扱ってもかまいません。

例えばコンパイラはテキストで書かれた命令文を最終的にCPU命令に置き換えます。(MOV AX、CX)
といった単純な命令群に置き換わります。今回のゲームデータ-についてはここまで単純化してはいない(必要が無い)ですが、
その一歩手前にある(構造を単純化して高速化)といえます。
std::map< std::string, TriggerAndProcess >を使用する場合、
プログラム内で「このデータ-をMAP(STL)にPUSHしてくれ」という、コードを入れなければなりません。
そういったレベルでスクリプトを組めるのはPGレベルの人だと思いますorz...


184:親父PG
04/04/08 17:53 msAPqSAi
続き
>std::map< std::string, TriggerAndProcess > みたいなのに突っ込もう
実際問題としてトリガーがトリガーを呼ぶ構造なので、スタックという形で動的配列は使用します。
それはデータ-を解釈するPG側の話なので、そのあたりについてはお任せください。
>>トリガテーブルは固定長じゃないほうがいいと思うよ。
可変長が必用な場合、トリガーテーブルを2個(以上)使って表現すればよいのです。
トリガーがトリガーの結果を呼び出せるという構造で、柔軟な動きに対応できるはずです。

>当面は今のトリガ記述方法で良いと思うけど、早いうちからスクリプト
>への変換をしておくと、トランスレータだけいじればよくなるので、

逆にいえば、RPGのデータ-ツールに複雑な構造を単純化しうる機能が必要になるのです。
最終データ-を扱う段階で、英文翻訳ソフトのようなプロセスを行うことは致しませんよ。

3DについてはZ座標を別途持つことでは対応できないのかなぁorz
誤差範囲とかも必用だけど基本はBOX判定だろうし........

※どのアイテム、動作、動きにていて基底データ-のようなものを定義するのは有用かもね。C++でいう基底クラス

185:名前は開発中のものです。
04/04/08 18:02 TfluK8Bw
スクリプトをCPUバイナリにするメリットなんてあるの?

解釈しやすいバイナリにするのなら当たり前だけど
移植性や可読性を考えると命令セットに依存する部分って必要ないような
CPUやモードが替わったりすると確保するバッファサイズが様々になるので
メリットないと思うんだが

ついでにいうとテキストレベルのスクリプトを動的解釈しても500MHz
超えているマシンなら問題になりにくい
デバッグの課程を考えるといわゆるインタプリタレベルのデバッグモード
という位置づけも必要になるんじゃないの?

3Dについてどうのこうのってのは再ショアから作るものが決まってないからそういったことになる
ソーサリアンを目指すというのならたとえばサイドビューとか
作るものが決まってないのならそのへんの最適な解は見つからんよ


186:親父PG
04/04/08 18:05 msAPqSAi
>>178
思い出しましたか?^^;
>>180 orz....
>>182 ニヤリ -)

WINDOWの構造体造ったはいいがツール作るのが面倒で鬱ぬ。



187:親父PG
04/04/08 18:18 msAPqSAi
>>185
CPUはたとえでありまして、実際にCPUバイナリにはしません。
動的スクリプト解釈についてはメリットがないと思うのです。
同じ処理を事前に済ましてしまえばいいのですから。

「物理できなデータ-の塊を解釈して動作させる」という動きの比喩でCPUを上げました。
さて今回必用な話に戻すと、データ-の塊を逐次解釈して動作させます。
その基本形が提唱している固定データ-(トリガーテーブル)(中間コード)になります。

動的スクリプト解釈をするにしても起動時に一旦コンパイルして中間コードに、並べてから動作させます。

1ラインごとに解釈するはずはありません。特に今回のケースではメリットがありません。


188:親父PG
04/04/08 18:36 msAPqSAi
新人PGさん<この呼び方なんかすごく恐縮なので,
せめてベテランPGさんとかにしてほしいなぁqrz

閑話休題
まとめていただいた図 造って頂いて有難う
URLリンク(www.geocities.jp)

ずばりです。各トリガーの必用な引数などは追加する可能性がありますが、
おおよそこのようなつくりです。
トリガーテーブルと呼んでいますが、これって(中間コード)ですよね。

MAPからの引数はZ値も入れましょう。
ゲームの種類のよっては使わないかもしれませんが...



189:名前は開発中のものです。
04/04/08 18:54 TfluK8Bw
トリガーからトリガー呼ぶのはいいがそのへんはシステムがインテリジェントにやってくれて
スクリプトを書く人は意識しないでいいんですよね?

たとえばjava風だとadd~listenerみたいな感じでイベントリスナ追加で
一度発生したイベントが次に発生しなくなるならremove~Listenerとか

あくまでもトリガテーブルに処理は書いちゃいかんと思うのですよ


190:親父PG
04/04/08 19:33 msAPqSAi
>>189
たくさんのご意見ありがとう。

トリガーテーブルはそれ自身がスクリプトともいえます。
自身を管理する処理は最低限行えます。
もちろん、メッセージを出すといった「処理」はかかれません
そういう場合は処理が書かれた「シーン」を呼び出す事になります。
トリガー自体を有効無効については、そういうFGが入ってもいいかもしれませんね。
Enable
Enableの価によってリムーブをコントロールしましょう。
ADDについては、フラグテーブルの後ろに物理的に加算することで表現できます。

>トリガーからトリガー呼ぶのはいいがそのへんはシステムがインテリジェント
内部的にはそうなります。
命令の組み合わせを作り出すのはツール側になります。

例えばCのswitch-case文などをif文の羅列に並び替えるような処理は、ツール側の仕事になります。


191:新人PG
04/04/08 23:33 nyCaSSwW
ただいま帰りました・・・。

>>親父PGタン
ようやくデータ構造が見えてきました。順にまとめていきたいと思います。
↑日曜日以降になりそうです。週末予定が入ってしまいました・・・orz
今年入社なんで「新人PG」ですw 社会人歴1週間です。

モビットってなんだろーとか思っていたら、2chから直リンするとモビットが出ますねw URL直接指定してください(汗
あと元少女漫画家の友人に注文しても良いですかね? 

男だろうが女だろうが 筋 肉 モ リ モ リ で

よろしくお願いしますw

192:172
04/04/08 23:47 rdLQdFbl
>>親父PG
いまんとこ2Dゲーになるのか3Dゲーになるのかわかんないので、
もし今後このシステムで3Dゲーを作ろう!となって
3Dモデルとかモーションとか作る肉体労働者がたりねー
みたいな事態になったら声かけてくだちい。
(イラスト描いたりデザインしたりはデキネ。)
プログラムにも興味あるのでずっとタシロってると思いますので。。。

193:親父PG
04/04/08 23:59 msAPqSAi
>>191
お帰りなさい。
>ようやくデータ構造が見えてきました。順にまとめていきたいと思います。
それは良かった。スクリプト作成側にも最適化等の処理を求めますので、データ構造の意味が理解していただけないと
なかなか説明が難しいと思っていたところだったので、安心しました。

>モビットってなんだろーとか思っていたら、2chから直リンするとモビットが出ますねw URL直接指定してください(汗

あれ、かなりつぼにはまって笑いましたよw

>あと元少女漫画家の友人に注文しても良いですかね? 
>男だろうが女だろうが 筋 肉 モ リ モ リ で

なるほろ、間に合えば連絡しておきます。

>>192
そうですか、では3Dになったら即お願いします。^^;

194:名前は開発中のものです。
04/04/09 02:52 d03K47Nx
>>184
> 3DについてはZ座標を別途持つことでは対応できないのかなぁorz
> 誤差範囲とかも必用だけど基本はBOX判定だろうし........

ナナメ

195:144
04/04/09 04:52 d03K47Nx
>>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
04/04/09 04:54 d03K47Nx
って感じ?
ソーサリアンでは、反応する場所では、とりあえず反応がなくなるまで上連打が基本だったと思うけど。
これより簡単にしようとすると、
・条件が一致したら、自動的にフラグをインクリメントする比較命令を作る
・複合命令を(例: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
04/04/09 04:56 d03K47Nx
トランスレータを書く前提で、スクリプトで上記を書き直してみよう。
 青い宝石のある位置に、イベント名 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 Ihr7T82R
>>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 Ihr7T82R
シーン側も以下のようにコンパイルされます
(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 Ihr7T82R
続き
シーンデータについて考察してみました。シーンデータ-は以下の要求を満たす為に定義されます。
○ゲーム内の処理命令を表す ○可変長をサポート ○ストリングが入る ○また、ここに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 Ihr7T82R
すこし拡張しました
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:名前は開発中のものです。
04/04/09 16:26 HmpNauZs
もう何がなにやら・・・

203:名前は開発中のものです。
04/04/09 16:48 Ws2ssbno
チチキノドク スグカエレ

204:名前は開発中のものです。
04/04/09 19:40 9dUWl+kl
俺はスレ主には特に何も言わんが

けっこう可愛そうな奴らがいるみたいだなぁ この板には

205:名前は開発中のものです。
04/04/10 03:46 yG5v3On8
がんがれ

206:名前は開発中のものです。
04/04/10 06:51 ZruuXOcF
おおよそ固まるまでsageで行ってみてわ? >オヤジさん


207:親父PG
04/04/10 09:25 Sr13ZjT1
>>202
PG以外はなんだがわけわからないですね。反省orz...
前の書き込みに「戦闘システム」の計画を書いたので何かご意見をいただければ幸いです
>>203
何処へ帰ればorz
>>204
まぁマッタリいきましょう
>>205
OK!

>>206
了解。 今日も仕事ですorz こっそり書き込みです。
現在ツール側を作成しておりまして、本体側の進行はSTOPしています。
そのツールが完成して、本体のPGに反映された頃に一回公開します。
といってもボタンとウインドとテキストのコントロール部分だけですけどねorz



208:144
04/04/10 13:01 1EUDp4ba
>>198-200
トリガから別のトリガを呼び出せるというのは書いてあったけど、return まで逐次実行ってのはどこにも書いてなかったよ。
後出しだしズルいよw。
ま、それはいいとして、オヤジタン の記述例では、トリガもシーンも、オヤジタン のいうPG以外が対応できるレベルにみえないけど。

それと、トリガテーブルって、同時にいくつも存在するの?
同時ってのは、実行時の話なんだけど、仮に1つだとすると、エクセルとどのように整合性を保つのかな、と思って。
シーンファイルに、トリガサブルーチンがあるのはいいと思うけどね。

なんかもう、普通のスクリプトのバイトコードと話が変わらないように見えるよ。
単にバイトコードのフォーマットが見たことないほどリッチなだけで。
そして、エクセルで入力すると言い張ってるのは、アセンブリ言語での記述を要求しているのと等価にしか思えない。

> >シリアルナンバを使用するのは、配列のアドレッシングのためでしょ?
> これは少し違います。地形MAPを切り替えた時に、同時座標のトリガーを判断するためにあります。
地形マップを切り替えるというのは、
・どこかのマップでスイッチを入れる
・別のマップで跳ね橋が下りる
のようなときに、マップチップテーブルだけの入れ替えをするような話だよね?
それをシリアルナンバで判定するということは結局 std::map< int/*シリアル*/, int/*トリガ配列の添え字*/ >
のような形で判定するんでしょ?
俺は、エクセル上でもシリアルナンバの入力を強要してるのかと思ったんだけど、トリガコンパイラが文字列で
解決してくれるならそれでいいと思うよ。

ところで、>>189 で MAPposition で比較してるけど、本当は MAPBASE::ToDO に 777 が入ってるんだよね?
そうじゃなければ、エクセルで入力するときはコンマ付で入力? マップの大きさは最大256x256?

自信あるみたいだから、思うとおりにやってみるといいでしょう。
使い物になりそうなことは分かったし。

209:名前は開発中のものです。
04/04/10 16:08 ZruuXOcF
後出しって・・・・なんかの勝負でもしてるのか?


210:親父PG
04/04/10 20:09 Sr13ZjT1
>>144
いろいろと検証ありがとう。いろんな角度から見てもらえてるので、実に助かってます。
対策として具体的な仕様も決まっていくしw
まず書き方の例ですが、ここでの話を判りやすくするためであって実際の文法はもっと判りやすくなるはずです
このへんは「新人ニューウェーブPG」氏に期待します^^。
メイン担当としては、「最終バイナリはこういうイメージにしてね」と伝えなければなりません。
データの意味(解釈方法)を伝えるためにCで書いてみたわけです。

144氏の指摘の多くは私の作業より、一つ上のレイヤーの話と思える部分があります。

トリガーテーブルは(エクセル「でも」編集できる)ここが味噌でエクセルの機能を使って
レコードの操作をいたします。(エクセルと同じ機能のツール作るのは大変だw)
多重ソートとかマクロ機能とかね...別途作ってもいいけど。
エクセルコンポーネント使うなら一緒だ(orz...コレダケデモエツキルヨ
利用理由は主にチェックです。デバックですね。これってありがたいんですよ。ええ(独り言モード

トリガーテーブルは基本は一つですが、動的に後ろに追加しても仕様上動きます。

地形MAP配列にはトリガーを引くことしか指示しません。引数は座標XYZ(65535)+MAPシリアル(65535)になります。何をするかはMAP側ではなくトリガー側が判断します。

作業予想
地形MAPツールは地形データ-とトリガーテーブルを読み込む。
イベントを行いたい場所へマウスでマークしていく。
このときトリガーテーブルにもトリガー情報のみのデータ-が追記される。
保存...
再度開いた時はトリガーテーブルのMAPシリアルを見て以前のマーク場所を再配置する
STEP2
イベントツールはMAP作成ツールによって作られたトリガーテーブルに、必要な情報を追加していく。
このような感じになる予定です。

>>209
勝負はしてないけどね^^ いろいろ言ってくれると助かるよ。

211:親父PG
04/04/10 20:23 Sr13ZjT1
都築
>地形マップを切り替えるというのは、

これは「地形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
04/04/10 20:39 Sr13ZjT1
誤>トリガー親父 ウィ~ス 橋をおろせセニョール ついでに MAP A 1、1のフラグもイネーブルにするべ
生 トリガー親父 ウィ~ス 橋をおろせセニョール ついでに MAP A 1、1のフラグもディスネーブルにするべ

間違えた(汗

間違えたついでに
このシステムの目指すところを書いてもいいのではないかと。勝手に思ったので妄想を書き込みます

このシステムでは「キャラクターデータ-」が中心となり世界を広げていきます。
大昔、D&DというTRPGがありました。あのシステムも最初は赤本から始まりました。
ダンジョンにもぐり宝物を集め、経験値を上げていく。
たくさんのエキスパンション(シナリオ)が生まれてキャラクターは成長していきました。

本システムもこのような流れで大きくしていきたいと思っています。
エキスパンションを通じてのキャラクター成長。
そして、シナリオの作成についてはツールを公開して、誰でもDMになれるようなものを考えています。
シナリオをそれぞれ交換などする事もできるようにしたいと思っています。

またキャラクターに関わる事柄。お店だとか交換所なども一種のシナリオによって構築されます。

全ての完成にはまだまだかかりますが、そこは(追加型 という仕様がなんとかしてくれるはずです(W

213:名前は開発中のものです。
04/04/11 00:46 tw9ZgcmP
>>212
でもあんまりシナリオとか簡単に作れるようにすると
あんまり知識の無い人でも簡単にズルができるようになるような。
まぁ、その人がつまらなくなるだけですけど。

214:名前は開発中のものです。
04/04/11 01:02 osyo1R4q
>>213
その話は次元が違うものと思われ
本気で解読にかかられたらいくらプロテクトかけてもだめなのと一緒

215:親父PG
04/04/11 10:09 uZkaW7mz
>>214 213
バイナリエディタ程度では改変できない仕組みは考えていますが、
214氏のご指摘どうり本気で解析されればプロテクトは無理でしょう。

ローカルで作られたシナリオの経験はキャラシートに反映されないとか、対策はありますけどね。
あとはシナリオに適正レベルを設ける。

システム側でおかしなシナリオを最初から「エラーにより排除」するなど
いろいろと対策はありますけどね。
複合的なエラーチェックでめんどくさくするぐらいしかないのかなorz...




216:新人PG
04/04/13 23:45 w0VogWFU
ただいま帰りました。仕事忙しすぎ。
だんだんまとめ辛くなってきましたが、ばんがります。

トリガーデータ案:草案を元にしたもの
[シリアル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
04/04/13 23:49 w0VogWFU
なんか殆ど、親父PGタンの頭の中でできあがってるようですね(汗

俺、要るのかな・・・?

218:名前は開発中のものです。
04/04/14 01:26 fCb1f0Lh
Excel前提ってのがまず汎用性で問題あるような
最近のマシンオフィス標準搭載かなり減ったし

その辺の自動化もツール担当の仕事かと

219:親父PG
04/04/14 05:14 EE4mRz9N
>>217
お疲れさまー、ご無沙汰しています。
>このようなCSVを作成していく感じでいいんでしょうか?
違いますorz...SUMAN

エクセルの話ですが、あくまで「エクセルでも」データ-が見れるというものでありまして、
それはコンパイルされたデータ-を、バイナリ<>CSVツールで編集(デバック)できるように
するというものです。 よってスクリプト記章ツールは別に必要です。

>>217
ここ数日の書き込みでそう思われたのですねorz...

でも、決まったのはメインPGが受け取るバイナリの形でありまして、スクリプト記章ツールがいらなくなったわけではありません。
メインPG側の受け取りバイナリの形と解釈方法を提示しましたので、スクリプト側のツールはスクリプトの文法を(設計)設定して
予定のバイナリを出力するものを、設計してくれることを期待しています。
スクリプトの文法はXMLでも、オリジナルでもOKです。
ここで必用なことはシナリオライターが必要とする機能の調査と設計、機能の単純化などです。
バイナリからの逆復元(バイナリからのソース復元機能)は必用ありません。(ソースコード保存)


メインPG<バイナリ<スクリプトツール
      ↑↓
      CSV
     エクセル

スクリプトの文法、設計はまったくの白紙状態です。新人PGさん、大変期待しています。


220:親父PG
04/04/14 05:35 EE4mRz9N
>>218
おつかれさま EXCELは補助ツールなのでスクリプトツールは別途作成予定です。
メインPG側のバイナリの形さえ決まっていれば、スクリプトツールは自由に選べます。Excelもそのうちのひとつだと考えてください。
(もっともExcelの場合,スクリプトではなくバイナリエディタっぽい使い方だけどね。)

私の作業の報告
WINDOWの設定ツールがひとまず完成しました。12種類のスタイルを定義できます。
メイン側は使用するときにこれらのスタイル定義にしたがって、先につくったボタン定義用のデータ-構造体より必要なデータ-をコピーして、
画面に作成します。現在、メイン画面にWINDOW本体と上部バーとクローズボタンを表示するところまでです。(WINDOWSの上にWINDOWS作ってるよorz...)

今日は久しぶりの休みです。ぼちぼち作業を始めます。

221:名前は開発中のものです。
04/04/14 10:42 fCb1f0Lh
Excelでcsv扱うと文字列の先頭のゼロが数値として読み込むために消えたり
全角数値が半角になったりしてくれるんであんまり便利な物ではないですよ

ダブルクォーテーションでくくった項目は強制的に文字列として読み込んでくれるとよかったのですがね


222:親父PG
04/04/14 10:50 EE4mRz9N
>>221
それは拡張子をtxtで読みこめば回避できます。読み込み時にセルの属性指定可能。
このシステムに関してなら、トリガーテーブルに文字列はありませんので大丈夫です。

223:名前は開発中のものです。
04/04/14 17:33 bV4eSf3V
ひげぽんOSは飽きたのか?

224:親父PG
04/04/14 17:50 EE4mRz9N
>>223
こんなプロジェクトがあったんですね。知りませんでした。orz...
OSを作る気はありまえん(W そんな能力はありませぬorz...

新人PGさんへ 既にご存知かもしれませんがこういうサイトがあります
URLリンク(www.ultrasync.net)

私が仮想マシン側の設計ですね。


この板見てるとツクール派と、それ以外を使ってみたいという方がけっこういらっしゃるようですね。
自作であればスクリプトエンジンが必用ですが、そのへんはみなさんどうしているのかな?



225:名前は開発中のものです。
04/04/14 23:06 FAI9201/
>>223
何コイツ?

226:名前は開発中のものです。
04/04/14 23:26 7S1uDrPs
ここの親父はまだまだ若い方だろう。
・・・もっと親父になるとマジではかどらなくなるから
今のうちにやりたい事やっときなされ。

227:WinMEMEME!fuckme!
04/04/15 00:25 WvzZ497j
unnkoburiburi?

228:新人PG
04/04/15 01:04 XWJTPtW1
ただいま帰りました。研修も無しにいきなり出向させられる会社ってどうよ(泣)

>>親父PGタン
なんとなくわかりました。スクリプト言語(みたいなもの)を設計するって事ですね。
それならいっそのこと、トリガーだけではなくてシーン等も記述するできるようにしたいですよね?
あまり汎用的なものは考えていないのですが、現ゲームの作成に特化したものを目指すようにします。

#余談ですが、卒論のテーマと似ていますw
#流用しながら作る予定なので、早く作れるかも?

229:親父PG
04/04/15 07:18 lFmywgB/
>>226
^^;ガンバリマス
>>227
orz...
>>228
おつかれさま。お仕事大変ですね。
>スクリプト言語(みたいなもの)を設計するって事ですね。
そうです。よろしくお願いします。
>トリガーだけではなくてシーン等も記述するできるようにしたいですよね?
そうです。そして出力ファイルは分離して行われます。
トリガーとシーンは分離します。

>あまり汎用的なものは考えていないのですが、現ゲームの作成に特化したものを目指すようにします
スクリプト言語内で一旦中間コードにして、そこから出力フォーマット用に変換するように設計すると良いですよ。
出力フォーマットを切り替えると、別の用途用に使えるように切り替える事も出来ます^^;(仕様変更にも強くなりますorz...)

#余談ですが、卒論のテーマと似ていますw
#流用しながら作る予定なので、早く作れるかも?

おお! 期待してますよ♪






230:親父PG
04/04/18 17:10 2197QA5A
しばらく書き込みがなくてさびしいので書き込みますorz...

日々少しずつ進んでいますが、なかなか進展しません。今調整いている部分が大掛かりな部分なので仕方ないのですがorz...
親父プロジェクトの構造

    LIFE=trueであればACTトリガーvietualFunction
「基底クラススケジュール」→インプリメント部
  ↑              ↓各オブジェクト(ポリゴンなどをオブジェクト配列のデータより作成)
  ↑一定周期  描画ループ
Windowloop →→→       描画
                          ↑
                          ↑                     
WindowMessage(OSトリガー)→範囲チェック→オブジェクトデータ-の操作

各オブジェクトデータ-配列(STL)
○WINDOWSクラス<-現在作成中 登録済みのWINDOWのスタイルから複製を作って、ポリゴンーテクスチャーボタンなどを画面に配置する。
○ボタンクラス テクスチャとボタンの振る舞い(トリガー)や描画をコントロール
○テクスチャクラス テクスチャのファイルの読み込み部分切り出しなどをコントロール
○ポリゴンクラス 主に四角形を作りテクスチャが張り込まれる。線や点にも対応
○ポリゴンクラス3D 上の機能に3D用に派生したクラス
○ライトクラス ライトを定義するポリゴンと同じように移動させることができる
○フォントクラス フォント表示
○範囲クラス 範囲を定義する(3D対応)
○オブジェクトIDマネージャー オブジェクトを作成した時にユニークなID番号を発行する。各オブジェクトの配列のINDEX値も格納してハンドルからアクセスしたいオブジェクトを識別できる
○プロファイルクラス 定義ファイルの読み込み
○コマンドクラス 下位コマンド全般を定義コントロールする為の関数群

さて、作業にもどりますorz.... パコに入っていたCDが出てきたので押し込んだらCIV3の画面が...激しく誘惑に駆られるw

231:名前は開発中のものです。
04/04/19 18:50 zoW1zDwj
今始めてきたけど、親父さんすごいなぁ。
全くわからん。
HPでも立ててみたら?

232:親父PG
04/04/19 20:15 HvqP5Z0m
>>231
どうも^^;
HPですが「新人PG」さんのご好意で以下のものがあります。
URLリンク(www.geocities.jp)

さてWINDOWですが、複数面サポート。
クリックにより背面と前面入れ替わる動き。
タイトルバーの表示
キャプションの表示
クローズボタンの表示、MOUSEOVERで反応、クリックでウインド閉じる
タイトルバーをクリックして動かす
Windowのレクト領域の頂点に色を設定できる機能
Windowの半透明表示

こんな所までできました。
改めてWINDOWSのコントールオブジェクトを1から造るの面倒だなぁとorz...

しかも、スクロール機能、拡大縮小機能がありませんね。マンドクサイorz.....

まぁWINDOWSを造っているわけではないので、ボタンとメニューとテキストを載せて、
動かせるようになったら、一旦収束してスクリプトに移ります。

バイナリを解読して仮想スクリプト用エンジンを造る事になります。
バイナリコードと命令表を作らないといけません。
ほんとコツコツだなぁ(笑




233:231
04/04/19 21:14 AzIQfmcz
おお、早速反応が来た。なんだかうれしい。
VisualC買うべきですかね。一応高校生なんでアカデミックで買えるから買ったほうがいいんですかね。
いや、Cのかけらもわかってないんですけど。
金がないからDev-Cという安易な考えは捨てちまったほうがいいですね。
紹介していただいたページにも書いてあるし。
んじゃ、がんばってください

234:親父PG
04/04/19 21:46 HvqP5Z0m
>>233
アカデミックですとC++.net10000円しないんですよね。
フルで買っても2万5千円ぐらいかな?

ちなみにC++.net単体でCの学習は辛いかもしれない。
言語の解説は入っておらず、クラス構成が書かれたポスターのような表が何枚か入ってるだけ。
最初の事初めでしたらC#のほうがマネージドコードやコンポ-ネントなどが使い易くてよいかもしれませんね。
(C++.netでも使えるけど、ディホルトの設定では使えなかったりするしorz...)
フリーのCビルダーも良いかもしれません。なにより結果に最短なものがベストです。

それでしばらく学習した後に、DirectXが良いと思われます。
C++.netはここの板的にはDirectX以外の用途には使えません(w 怒られるかな@rz

235:名前は開発中のものです。
04/04/19 22:33 4HaR2ypQ
C自体が全く分からないというけどほかの言語はどうなのかな
いまだと無料でつかえる言語たくさんあるので言語自体が不慣れならそちらからはいるといい

そしてゲーム作るのにC++じゃないということはない


236:新人PG
04/04/19 23:10 rjSD3Om1
お久しぶりです。ただいま仕事から戻りました。
ぶっちゃけ仕事忙しすぎて、あんまり手がかけれない状態に陥ってますが、勘弁してください・・・(汗

>>親父PGタン
今言語設計に取り掛かっていて、前に出して頂いた目的コードを参考にしながら中間コードの出力を想像している所です。
似非Java言語仕様となっています。
構造化フローOnlyで、型チェックは今のところ省いています。
連休までには動くものができると思いますが、それまではソース&仕様書の断片を小出しにしていきます。
ただ、今の目的コードの草案だけではちょっとムリポです。ある程度作ると、いろんな面が見えてくるので
そこで突っ込みをいれてみます。(こんな感じの進行で行くんですよね?w)

環境Win2K + VC++7.0 + STL + Boostてな環境です。
ソース公開するつもりなので穴があったら突っ込んでください・・・。>コンパイラ職人

237:親父PG
04/04/19 23:31 HvqP5Z0m
>>236
お疲れ様、お久しぶりです。
進行についてはそれでOKです。というか付き合って頂いて有難うです。
こちらの仮想エンジンは固定長トークンを随時実行していくというタイプになります。
あまり賢いとはいえません(orz...
CPUコードのようなイメージで、命令にはいろいろな「バリエーション」を選択できます。

とりあえず基本的な制御構造の部分を決めていきましょう。
「命令」トークンの価決めが必要ですね。取り合えずNOPは90Hで(謎

Windowの部分が完成したら一旦UPして見てもらおうと思います。
プラットフォームしかできていないので、大掛かりな割にはしょぼいのですがorz...


238:とおりすがりの親父PG
04/04/20 17:51 UA9bY4ln
取り急ぎトリガー構造体

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
04/04/20 19:09 558xdrhW
>>親父PGさま
なるほど。Cの勉強をしようと思ったとき、「よくVisualCでしか動かないコードを載せているサイトや本が多い」
と学校の先輩に言われたのでVisualCを買おうかと思ったのです。
で、GCC(Dev-C)を使っているのは、これはなんとなく……。
いろいろありがとうこざいます。
>>235さま
今までDelphiを使っておりました。ただ、学校(工業高校です)の勉強でCを使うらしいし、Cは実行速度が速い
と聞いていたのでこの際Cもやってみるか、と思った次第です。

240:名前は開発中のものです。
04/04/20 19:18 svF6Tlnf
>>239
***すれ立てるまでもない質問はここで 第53刷***
スレリンク(tech板)l50

241:親父PG
04/04/20 20:05 EEGw5Gpv
>>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
04/04/21 01:25 eYcWXse+
お疲れ様です。

>>親父PG
まずは、Windowの基盤完成おめでたうございます。
DirectXの穴(デバイス消失など)も考えられて作られているようで、素晴らしいと思います。
これはゲーム完成が楽しみですね。
トリガデータ設計ありがとうございます。やはり目的コードが決まるとモヤモヤが消えます。
現在構文解析ツリーの設計と言語設計の矛盾を小一時間(いや、もっとか)問い詰めています。
大学の教科書見て復習しながらの実装です・・・(汗
あと、まとめページの方を明日ぐらいに更新しておきます。更新ペース遅くてスマソです。

#余談1
主観ですけどVCよりも使いやすいC/C++環境って無かったです。
MFCの使い方から教える入門書が悪い気がしますw
個人的には
コンソール(C++の文法と標準関数覚える) → 猫でも → MFC入門(斜陽ですけど)
で十分な気がするんですけどw つーか.NET覚えてWindows.Form覚え(ry

#余談2
Windowsでゲームを作る上で、C#.NET + DirectXも選択肢に入る時代になったんですね・・・。
思った以上に高速に動作します。MSがパフォーマンスを最も重視して設計したと
豪語していますが、流石に言うだけのことはありますね。

243:名前は開発中のものです。
04/04/21 01:50 cLgAiJmm
つーかネックになる場所は大概描画方面だったりするので
その辺はDirectX使ってるのなら問題になることはないでしょう
インタプリタの旧VBでもネックになることもよほどのレベルじゃない限りまずありません

むしろ中間言語系は同一バイナリでも最適化できるのもポイントです
たとえばjavaの1.4.2は従来バージョンのアプリも大幅に高速化しています
これはSSEを使っているためです

静的コンパイラの最適化はたしかにいいのですが動的に環境に適応する
コンパイラ(hotspot技術)というのも使うかどうかはともかく遊び倒す
テーマとして面白い物です

ちとふるいですが
URLリンク(www.geocities.jp)
もちろん、今の最適化はこのころからくらべてかなりよくなっています


244:親父PG
04/04/21 04:38 OH77B7oH
>>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
04/04/21 10:08 OH77B7oH
>>243
コンピューターの高速化がもたらした波ですなぁ。
Parlで最初にスカラー型を知った時は驚きでした。インタプリタできる芸当ですね。

ところで...
じっくり取り組もうとか宣言しているにも関わらず、パコの前で気絶してしまいましたorz...


246:名前は開発中のものです。
04/04/21 11:34 5LzXW3vc
×disenable
○disable

247:名前は開発中のものです。
04/04/21 14:14 y1g5Kw7w
×Parl
○Perl

248:親父PG
04/04/21 14:17 iaRnmK/d
>>246 247
orz....

249:親父PG
04/04/21 19:09 iaRnmK/d
新人PGさんへ
スクリプトを組むに当たって構造設計のお話を致します。

定義 スクリプト言語の本システムにおける位置付け
本システムVMにおいて動作命令を出す事が可能である。
条件文は主にトリガーテーブルに置かれ、実行命令文をわけて管理される(トリガーTBLと実行データ-)

アイドルは何処に書かれる?
アイドル状態を想定する必要は無い。スクリプトは処理が終わると自動的にアイドルモードに切り替わる。
必要がある場合にVM側よりトリガーが引かれ実行される

MAP座標
ユーザーの入力     -トリガ>トリガーTBLを検索 >実行>VMに実行部(が書かれたシナリオ上の番号を渡す) 
ボタンを押した時の処理

現在考えているのはこのようなタイプの静的なスクリプト処理です。(一部引数を動的に処理)

ここからが相談ですが、動的に処理をしたほうが好ましい内容があると思われるのですが、何か希望がありますでしょうか?

変数、配列 などがまず考えられます。

具体的な実装方法は考えていませんが、「外部プログラムの起動」やゲーム特有の処理が必要な場合、DLLの読み込みなども考えられます。

------------------------------------------------------------------------------------------------
余談ですがツクールXPの紹介HPを見ました。あまり細かいところまでは判らないですが、
MAP(地形)が3階層 画面サイズが640*400 MAPツール(チップ編集による地形作成)
スクリプト機能 暗号化機能などがあるようです。 暗号化機能というのは注目すべきアイデアかもしれませんね。

MAPツール(チップ編集による地形作成)については考察が必要かもしれません。


250:親父PG
04/04/21 19:57 iaRnmK/d

新人PGさんはご存知かもしれませんが、MAPツールについて確認の為に書いておきます。

ゲームの画像の伝統的なやり方として、チップデータ-によるMAP作成という手法があります。
これは決められたサイズ8*8 16*16単位で書かれたチップデーター(画像)を並べて画像にしていくというのがあります。
これはコンシュマーのマシンが1キャラをハードウェア的にそのように扱っていた為に、行われてきた伝統的なやり方です。
同じパターンの使いまわしができるという点で、手動でデータの圧縮しているという側面がありました。
PCエンジン開発用のPC98用ツールが広く出回って、色々なゲームの開発用に使われた事は結構有名(orz...

さてツクールでは、そのような方法とおぼしき方法が使われているようです(違っていたらごめんなさい)

DirectXでは画像を細かく分割して扱うメリットはないので、親父システムではこのような方法はサポートしません。
地形画像データ-はJPGで(笑
 
最近の(とはいってもかなり昔からだけど)地形ツールは論理的な地形データをツールによって並べると、
境目には自動的に埋められていくようです。平平山山<こういうデータ-の場合平^山の間に自動的に間を補完する画像データ-が置かれるようになっています。

こういうツールも1から組み立てると大変ですねぇ。とりあえず最初は1枚画でいいかなorz....


251:名前は開発中のものです。
04/04/21 20:06 cLgAiJmm
PCGデータ使った方がサイズ小さいというのはともかく
Jpegだとカラーキーやアルファ扱うとき困りませんか?
重ね合わせとか普通しますし

それにハイドライドやFFの森のようなものをやる場合どうします?


252:231
04/04/21 20:44 uRL7H9Xs
>>親父PGさま
長い解説ありがとうございます。
>>サイトのサンプルはコピペではなく、意味を理解して使う事が望ましい。
肝に銘じておきます。
取り敢えずDev-Cで頑張ってみようと思います。いつかそれなりにプログラムが書けるようになったらここに戻ってこようと思います。

>>新人PGさま
わざわざありがとうございます。

253:親父PG
04/04/21 23:39 OH77B7oH
>>251
いろいろと方法があります。アンチエイリアスなどが必用な場合を「除いて」単純なクロマキーであれば
|アンド演算で抜けます。また全体を半透明にする場合はα値を偽造します。

うまくいかなかったらPNGでorz.. 

>>231
いつでもどうぞ^^ 前向きな書き込みであれば、歓迎しますよ。



254:新人PG
04/04/22 00:09 GFAvdjZl
>>243
色々意見ありがとうございます。
あまり大それた物を期待してもらうと逆に恐縮なんですけど、自分の出来る範囲で頑張っていこうかと思います。

>>親父PGタン
一応まとめの方に、トリガデータを載せました。
僕のアタマが悪いのか、完全理解が出来てません。また聞きます(汗

>>スクリプトの構造設計
・アイドル処理は要らない
同意&同感です。こちらはトリガ処理・シーン処理記述のみを書かせます。
しかし未だにMAP座標にトリガーを持たせるのにはちと抵抗があります・・・。

・静的か動的か
変数、配列はサポートします。
DLL読み込みやその他プラグイン読み込み等は、今は考えてないです・・・。
とりあえず、第1段階完成後に考えます。

・チップデータの地形
実はあんまり好きくないです。
本当は3Dで臨場感のあるタイプのが好きなのですけど、難しい=親父PGタンが大変 なので
今回はアリかななんて思っています。
まあ、チップも一枚絵も対応すると言う事ならば、チップで組んだほうが両対応で良いと思いますけどね。

255:親父PG
04/04/22 00:10 cy5y1emu
>>新人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:名前は開発中のものです。
04/04/22 00:10 hQ7KmIOV
>>253

いや、jpegってことはピクセルが綺麗に抜けないってところが問題なわけで
ブロックノイズ単位で色が抜けるのはなんかいやだ
ま、pngでいいんじゃない?
αももてるし、パレットもあるし

ところでハイドライドとかの森って実現できるの?
キャラのY座標によって手前に行ったり奥に言ったりするようなオブジェクトなんだけど

257:親父PG
04/04/22 00:19 cy5y1emu
>しかし未だにMAP座標にトリガーを持たせるのにはちと抵抗があります・・・。
キャラがある座標にいどうする。
MAP上にはトリガーがあるという情報しかありません

そこで初めてMAPからトリガーテーブルに対して座標引数をもったトリガーが呼ばれます。
と、いっても実際にシステム側からすれば、一致する座標のトリガーテーブルを検索して探すだけなんですけども。
(これが理由で命令コードにMAPから呼ばれた命令)というのがあるわけです。
検索速度を上げるためです。

スクリプト側から見れば、座標データ-さえセットしておけば、システム側から勝手にトリガーを
引いてくれる事になります。


チップデータ-を内部でサポートするというとは、実際にチップINDEXを持って使用時に組み立てる作業を
PG内部でおこなう事をいいます。今回このようなことはおこないません。


258:親父PG
04/04/22 00:30 cy5y1emu
>>256
おお256を踏みましたね。このスレも無事に1バイトを超えました(W

ご心配のJPGデータですが、内部に読み込むとARGB各8ビットというデータ-に変わります。
この時点でαは全ピクセルにFFが割り当てられています。
このFFの価を変化させてあげると半透明になります。

実はこのようなことを心配しなくても、2つのテクスチャはちゃんと抜くことができます。
αが意味を持つのはエッジ処理です。全体に薄くしたり特定色(黒)を透明にする事は特に
PNGを使う必用は無いのです。

綺麗にエッジを抜く場合はαデータ-を持ったPNGが有利ですが。それほど必用でないものや
最初からスクリーン<-フォトショップのレイヤー属性のあれ(or演算)
であればαデータ-なしでもそれほど問題になりません。
要するに使う場所と目的によって決定されます。


259:親父PG
04/04/22 23:37 cy5y1emu
>>新人PGさんへ
>しかし未だにMAP座標にトリガーを持たせるのにはちと抵抗があります・・・。
もしかして、地形MAPにあの48バイトのトリガーデータを持つと、お考えですか?
もしそうなら違いますよ。地形データには「トリガーを引いて」という意味の1バイトデータしか使いません。

眠い、眠いです。ツールにバグがあった...ナオサナケレバorz...

とある会社のデータ-ベースに製品シリアルに「ハイフンと全角ハイフン」が混じって登録されているのを発見。
直すのは不可能との事....(メインフレーム上にあり、直すのにんんんん万かかるらしい)激しく鬱ですorz...



260:名前は開発中のものです。
04/04/22 23:42 q2BwaruN
ウィンドウ見せてクリ

261:新人PG
04/04/23 00:03 zEfEFbHL
>>親父PGタン
お疲れ様です。
メインフレームは触った事ないんで良く分らないですが、コンバータ組むぐらいじゃダメなんでしょうね・・・きっと。

>もしかして、地形MAPにあの48バイトのトリガーデータを持つと、お考えですか?
>もしそうなら違いますよ。地形データには「トリガーを引いて」という意味の1バイトデータしか使いません。
いえ。トリガーを変更した場合、直接は関係なさそうな地形MAPもデータを作りなおさなきゃいけないのでそう思いました。
ツールが補完するとしても、地形MAP編集ツール等がトリガーの事を気にしなくてはいけないデータ構造はちょっと・・・。
地形MAPは地図情報のみを扱う事にすると良いのでは?、と思ったのです。

言語設計なのですけど、一連のシーンを1関数として定義していきます。
吉里吉里のスクリプトを大いに参考にさせて頂いています、が、そこまでの汎用性は無いです。
言語上に機能として持たせたい物で、レイヤー・ウィンドウ管理、外部ファイル読み込み、がありますがどうでしょうか?
(特に外部ファイル読み込みは静的か動的かの話題なんですけど・・・)

262:親父PG
04/04/23 00:05 nZvvFTd4
>>260
まだデザインなど適当ですがこんな感じです。
URLリンク(www02.so-net.ne.jp)

今 標準的なメッセージ表示用のものを造っているところです。
OKボタンは左上のものが入ります

ツールのバグでいま表示できていませんorz...


263:親父PG
04/04/23 00:11 nZvvFTd4
>>261
おつかれさまー
メインフレームの件は私もそう思ったんですけどね。そういう簡単なものではないらしい
未知の世界(デッカイTAPE装置が動いている世界...

MAPの話
例えばMAPにトリガーが無いと仮定すると、
キャラが移動する毎にトリガーテーブル-のサーチが必要になります。
これは効率が悪いので、MAP側に「探せ!」というコードを埋め込むわけです。

外部ファイル読み込みは 動的に処理しないとあまり意味はありません。
固定長のトリガーテーブルは後ろに付け足しできるなど、扱い易い点はあると思いますけどね。

264:親父PG
04/04/23 19:05 nZvvFTd4
新人PGさんへ
豆乳システムの命令リファレンスです
URLリンク(tonyu.kake.info.waseda.ac.jp)

これを参考に実行部のほうも定義していきますね。

265:親父PG
04/04/25 16:09 F+nBnVBh
まだデザインなど適当ですがこんな感じです。
URLリンク(www02.so-net.ne.jp)

文字出力が出来ました。

このウインドは全角で24文字程度の出力用です。
文字量が増えた時は何もしませんorz...

スクロール機能を備えたウインドはこの次に作成します。

ところで皆さんは文字列用のライブラリは何をお使いですか?
(特に可変文字列など)
私はSTLのbasic_string を使っておりますが^^


266:親父PG
04/04/25 16:10 F+nBnVBh
ageてしまったorz.........................

267:親父PG
04/04/25 16:25 F+nBnVBh
>>新人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
04/04/25 16:26 F+nBnVBh
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:名前は開発中のものです。
04/04/25 17:29 TuLiLdfJ
>>265
std::string でお茶を濁してまつ

270:新人PG
04/04/26 00:37 RHLEfjhQ
公言した連休まで一週間しかないYO!
先に謝っておきます。多分動くもの、できません・・・。

Boostのspiritを使いつつ、字句&構文解析を頑張って作っているところです、が、なかなか思うように進んでおりません。
言語仕様ですが、まだ公開できる段階ではありません(汗
最終形は似非C言語+謎の独自予約語と思って頂くとわかりやすいかも知れません。

出来たところ
・EBNFの基幹部分(やっと終わった・・・)
・演算部分の字句・構文解析実装
・if文の字句・構文解析実装

出来てないところ
・その他の構文の字句・構文解析実装
・中間コード設計(先にやった方がいいな・・・)
・目的コード設計
・中間コード出力実装
・中間コード解析実装
・目的コード出力実装
・その他ドキュメントなど・・・
全然出来てませんな・・・。早く出来るなんて嘘こきましたがもうちょっと時間を下され・・・。


271:親父PG
04/04/26 00:46 Tu3Nnhfj
>>270
お疲れ様。^^
まぁ肩の力を抜いて楽しくいきましょう。
自分で仕様を決めて造るProgramは、楽しくやらないと損ですからね。
力を抜いて頑張ってください。

私の方もWINDOWの拡張に努めています。文字列が入りきらない場合の
文字のスキップ(スクロール)の処理などをやってます。
出来上がった所から少しずつ、先のURLにあぷしていこうと思います。

私事ですが明後日に光が開通します。
勢いでMN8300W買ってしまいましたorz....


272:名前は開発中のものです。
04/04/26 09:31 YvjKmIIw
なんか文字の後ろが透過されてないんだけど、
もしかして例のDIB側で合成して、αを使っていないせい?

273:親父PG
04/04/26 12:40 Tu3Nnhfj
>>269
スタンダートストリングですか^^
何が何に強いとか特長とかあるんですかね?
C関係は文字ライブラリの種類多すぎorz...

デルファイのようにStringが、すべてカプセル化して1つしかない状態のほうが
シンプルで良いような気もするんですけどね(個人的には)

string.sort() ←こういう事が標準でできるあたりはCも便利なんですが...

>>272
そうではありませぬ。
文字の後ろは可読性を考えて、わざと不透明にしております。
文字は高精度αを使って滑らかに出力しております。

「文字 DIB
 |合成(スクリーン)
 背景」Tecture このとき背景のαを255←ここを変化させると透過する
ポリゴン
(重ね合わせ)
WINDOWポリゴン 頂点にα設定 
(重ね合わせ)
サーフェースカラー

274:名前は開発中のものです。
04/04/28 22:48 ZcMEeys0
応援さげほっしゅ

275:親父PG
04/04/29 00:55 fKr8I6Zs
>>274
最近、書き込み少なくて寂しいのでorz...ありがとうです^^

さて我が家にも光が開通したのですが、ADSL>光の切替が月末に固定されているので
使えないというorz...

システムのほうはコンポーネントという概念(複数のコントロールOBJ)を一括して扱う
この実現のために新しいクラスの定義、一部命令の移動など工事などを進めました。

仕事の合間に紙に、ボールペンでクラスの構造設計書を書いておりました。
落書きの山ですな。

この新しいクラスのためにSTLのタイプを何を使うか検討しています。

STLの種類選びはなかなか重要で本システムでも、Vector と deque を
切り替えただけで80%速度が改善しました。

さて親父日記は終了して 仕事に戻ります

276:新人PG
04/04/29 21:03 im0w3ame
>>親父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
04/04/29 21:51 j+4sgpkF
>>276
お疲れさま 現在私は夜勤中ですorz... しかもノートPCの電源家に忘れた。さらに鬱....

仕様ですが、最初の段階としては問題ないと思います。
そもそもクラス言語が理解している人ならば、ゲームツールを使わず自分で作ってるでしょう。orz....
というわけで、簡単な言語仕様をまとめて、シナリオライタークラスの人に「難易度」を計ってもらう事が必要かもしれません。

>>こちらもコンパイラ作るのが飽きたときにコソッとゲーム考えたりしてます。
いいですねぇ。なんかPGの話ばかりしてると、PG以外の人が寄り付かなくなってしまうので、いろいろとネタを振るのもいいかもしれませんね。

>>地形なのですけど、テクスチャから地形ポリゴンの高低を生成できたりすると面白いかもしれません?
すまん。もう少し詳しく教えてくだされ。テクスチャの何から高低を生成するのかな?

いきなりですが、DirectXの描画ループの説明を致します。
DirectXの描画ループ
 ポリゴンを作る
 ポリゴンにテクスチャを張る
 レンダリングGO
 描画(FLIP) 
ポリゴンを張るというのはポリゴンのデータ-に対してテクスチャの(ポインタ)を渡します。
するとあとはDirectXが勝手に描いてくれます。いいですねぇ。
さて2つのポリゴンに対してテクスチャAを割り当てた時に、テクスチャAの内容を変化させるとどうなるか? 答えは2つのポリゴン両方の内容が変化します。
この特性は美味く使うと便利ですが、少し困る事があります。その場合はテクスチャのコピーを作ってそのポインタを渡したほうがいいかもしれません。


278:新人PG
04/04/29 22:17 im0w3ame
>>親父PGタン
(゚Д゚)オツーです。
シナリオライターはツールやこちらが組んだAPIを使用して、シンプルな記述が出来るように設計します。
ほとんど変数や分岐を記述させないで、こちらが用意した評価関数を使用させるようにします。
(ほとんどGameProgramming Gemsの内容に従っての設計になっています)

>>地形データからマップ生成
URLリンク(www.uroboros.org)
こんなのを見ていて面白そうだと思いました。

>>テクスチャの話
テクスチャを1つだけ生成して複数のポリゴンに参照させる事が出来るんですねぇ。
ゲームPGを全く(ていうか画像処理を)やった事の無い自分にとって面白い仕掛けだらけです。

279:親父PG
04/04/30 01:23 yNfOtjDQ
>>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 tneOjVuC
>>親父PGタン
お疲れ様です。連休入ってから呆けていて遊んでました・・・、スンマソン。
スクリプト言語、中間コード生成までは問題なく進めそうです。(BoostのSpiritのおかげです・・・)
問題はその先なのですが(汗
Mの命令語の設計が出来てからマッピングを考えるのでそれ以上は保留としておきます。
不安要素は、スクリプト言語の汎用性が高すぎる事です。トリガーとマッピングできるのかしら?
恐らく、制御構造が全くといって良いほど違うので「戻り」は発生すると思いますけど。

>>サンプル見ました。面白いですね。ではランドスケープの部分は新人PGさんにお任せします(w
>>とりあえずなのですが、MAPは一枚画を3枚ぐらいレイヤー構造でスクロールするものを考えています。
ちょっと待ったーッ!2Dの表示もやった事のない僕にそんな餌を撒かないで下さい(汗
画像処理系は任せますw 後学の為に参考にさせていただきますので b(・ー・)

個人的にはMAPツールはデータをプレビューできる機能さえあれば十分だと思ってますけどねw
あとはテキストエディタなりバイナリエディタなり使ってw

281:新人PG
04/05/02 17:45 tneOjVuC
ageてしまった・・・スマソ。
言語仕様なのですけど、関数とトリガーを完全に別の記述方法にしました。
宣言方法も違います。
トリガーの宣言:
"trigger" [シリアルID] ([トリガーより渡される引数]){...}
関数の宣言
[型(戻り値)] [関数名] ([スクリプト内で渡される引数] ){...}

その他の変更・疑問など
・FOR文,SWITCH文が無くなる可能性があります。
・ひょっとして中間コード要らない?←出力する中間コードそのものの変更が起こる可能性が非常に高いため
(字句・構文解析とファンクタは別実装)
・計算式が書けなくなるかも?(VMの命令語次第)

282:名前は開発中のものです。
04/05/02 19:50 PAfxeO72
for文や計算式が書けないのはまずいんでない?

283:名前は開発中のものです。
04/05/02 21:08 wpvFJ3U7
普通はスクリプト系にforとかswitchはあまりないんでない?
開発ツールのほうでswitchがあってもそれをifに展開したりする
forのような繰り返しはあまり多くないからさほどいらないはず

どうしてもほしかったら後で付け加えるだけでいいし


284:名前は開発中のものです。
04/05/02 21:33 PAfxeO72
>普通はスクリプト系にforとかswitchはあまりないんでない?
それ本当?
逆にforに相当するものが書けないスクリプトを知らないんで教えて欲しい。

285:名前は開発中のものです。
04/05/02 21:34 wpvFJ3U7
普通スクリプトって社内開発で外に出ないもんじゃ?


286:名前は開発中のものです。
04/05/02 22:19 PAfxeO72
>普通スクリプトって社内開発で外に出ないもんじゃ?
趣味ならまだしも仕事で作って
for文も使えないってことはないのでは?

スクリプトの処理系なんて社内開発以外にも
Python,Ruby,Lua などいろいろあると思います。

参考までにPython+SDLのゲーム開発サイトです。
URLリンク(www.pygame.org)

287:名前は開発中のものです。
04/05/02 22:49 wpvFJ3U7
ここでの流れはそういう汎用スクリプトの話してねーだろ


288:名前は開発中のものです。
04/05/03 00:18 O34XE/AV
いや市販ゲームにも使われてるし別にいいだろ。
逆に社内開発の非公開スクリプトの話されても困る。

289:名前は開発中のものです。
04/05/03 01:58 ttTkVS1d
スクリプトみたいなユーザーに近いレベルの言語こそ
forとかの制御構文あったほうがいいと思うけどね。
それをjumpやgotoなどに展開するのば普通じゃないのかな。

290:名前は開発中のものです。
04/05/03 02:07 0IkDbgp8
for文じゃなくてwhile文なんだよ。

ってのは冗談として、ゲームツールのスクリプトでループ文はいらないんじゃない?
Mainループとしてゲーム本体があるんだから段階的に時間軸に沿って処理する場合
でも、ツールユーザーがスクリプトで書くのは判定文だけでいいでしょ。
純粋なツールではないけどMorrowindのスクリプトでもwhile文はあるけどtime Overありだし
推奨はしてないよ。
URLリンク(www.uesp.net)


291:名前は開発中のものです。
04/05/03 03:14 uGveXlu0
あくまで学習しながらゲームを作るのってのが目的みたいだし
多少機能が貧弱でもいいのでは?
単に高機能な物が欲しいのならフリーでオープンソースな
ゲーム開発環境なんていろいろあるわけだしそっちを使ったほうがいい。
中途半端に終了ってのが一番最悪ですから。

292:名前は開発中のものです。
04/05/03 05:34 F5voLn4B
>>288
それは初めて聞くな。PCゲームなの?
その手のスクリプト言語のパーサとかVMって、ライセンスはどうなってるの?
GPLだったら、ゲーム自体のソースも公開になるの?
それともコピーライト表示だけで構わないライセンス?

293:新人PG
04/05/03 06:49 XPOMrzWI
みなさん色々意見ありがとうございます m(_ _)m

FOR文が消える理由:
>>290さんの言うように必要性を感じなかったのと、目的コードと合わない感じがしたからです。

計算式が消えそうな理由:
計算をする事が出来るかどうか怪しいため。
あくまでゲーム中イベント処理の記述のみをスクリプトで作る手筈なので。

他の処理系(Lua等)を使わない理由:
作ってみたかったからっス・・・(・ω・;)>>291さん、フォローThanx
あと、親父PGさんの方である程度考えにまとまりがあったので下手に他に手を出すよりは良いかと思ったからです。
まあ最初はXMLでの記述のみを考えていたんですけどね・・・w

294:名前は開発中のものです。
04/05/03 12:47 nXfpjc4K
>>292
最近だとFarCryがLua使ってる。
URLリンク(www.4gamer.net)

ライセンスはLuaだとMITライセンス。
GPLとかだったら市販ソフトにはとてもつかえないよ。

295:名前は開発中のものです。
04/05/03 14:15 GKQkdavB
luaは組み込み目的で開発されてたヤツだし

中間言語系でGC使ってどうのこうのってやつなんで、それでいいのであれば
javaとか組み込んで使ってるのとあまり変わらんと思われ

俺はそういう方向性でいいと思うんだけどね

でもここでは流れ見るに中間言語系は対象外のようなんで確実にクロック数が
わかるようなスクリプトしか実装しないと思う

それの出来はどうであれ、いわゆる再開発好きが集まってるところだと認識している


296:親父PG
04/05/03 16:28 +yioKA00
>>新人PGさんへ
色々と議論が進んでいますね。レスが遅れてすみません。

FOR文についてですが、FOR文命令トークンがあればそれに従って、VM側が行います。
ご指摘のとうり問題はその意味なんですよね。orz...

シナリオライターがあったほうがいいと感じるか? ということになります

単純に繰り返したいだけなのか
カウント用の数字を何かにつかうのか
カウントの何番目にかによって条件をいれかえるのか?

いずれにしてもVMは一命令ずつ解釈実行なので、(1命令はある程度豪華ではあるけれど)
命令が矛盾無く組み立てられるのであれば、大丈夫だと思います。
ということで、この命令にはこんなトークンの組み合わせではどうか?
という提起がスクリプト側から提示されると考えています。

その中から実現方法の[取り決め]を造って行きましょう。最初からそこまでこちらで決めると
スクリプト側の設計が窮屈になると思って、いままでその話はおいて置きました。

>>其の他の方
いろいろと貴重な意見ありがとうございます。大変助かっています。これからも暖かいご支援をお願いします。




297:親父PG
04/05/08 01:09 h8sVtZGZ
>>293
計算式が消えそうな理由:
計算をする事が出来るかどうか怪しいため。
あくまでゲーム中イベント処理の記述のみをスクリプトで作る手筈なので。

ADD SUB というトークンと数字の並び替えの規則さえあれば、こちらでぞれを実装しますよ^^;


今、開発マシンにトラブルが発生orz..
修理に出すので今止まってます すみません 汗

298:名前は開発中のものです。
04/05/08 19:42 cNPB2s8D
スレ一通り読んでみたんだけど一つ質問
今作ってるのはライブラリですか?

初心者の俺にはそれすらわからないy=ー( ゚д゚)・∵.ターン

299:名前は開発中のものです。
04/05/08 19:58 dkKvY2dU
>>298
>>1

300:名前は開発中のものです。
04/05/09 18:20 gB+UjQaV
>修理に出すので今止まってます

このままフェードアウトの悪寒・・・。

301:名前は開発中のものです。
04/05/11 19:53 yHM5YZkv
親父PG=47氏だったら・・・。

>今、開発マシンにトラブルが発生orz..
>修理に出すので今止まってます すみません 汗

実は押収されたの。



と、妄想してみる。

302:名前は開発中のものです。
04/05/11 20:30 UgvJm544
親父PGさんタイーホされたのか。


とか言ってみる。

303:名前は開発中のものです。
04/05/11 23:30 yHM5YZkv
結局、2chで企画立てて実現かつ成功した
例は・・・

304:名前は開発中のものです。
04/05/12 00:01 F6gUxLXe
ゲーム作るのにだって根気と忍耐は必要なのに1~2週間くらい待てないのか?
仮に企画倒れだったとしても当人達以外に何か被害被った訳でもなし。
うだうだ言う奴に限って自分では何もでk(ry

もうちょっとマターリ待ってみようや(´_ゝ`)y─┛~~

305:名前は開発中のものです。
04/05/12 00:37 Sy7h6rok
>>304
別に誰も作業を「直接的に」急かしてる書き込みして無いでしょ?


306:名前は開発中のものです。
04/05/12 13:40 F6gUxLXe
>>305
???
よくワカランが俺の書き込みちゃんと読んだ?
本人がPC修理って言ってるんだから下手な煽りはイラナイだろって言いたいんだがな
>>300>>303とか。ドッチに転がっても何か損するわけじゃないしね
見ててダメだと思ったならここ見なきゃ良い話しだし

俺は変な煽りに対して言ったんだが、レス番付けなかったからちとわかり難かったか

307:名前は開発中のものです。
04/05/12 15:02 KHeRBBvL
そうではなく2chなんだから煽りにいちいち反応するな
ってことが言いたいのでは?

このスレの住人も当人達以外はヲチしてるだけでしょ。
既存のゲーム開発ライブラリなんてたくさんあるし
ゲーム製作したことが無い素人が作るライブラリの
完成を待ってる人なんているとは思えん。

308:名前は開発中のものです。
04/05/12 21:23 B+KWN/WZ
>>307
当人たちのやる気を削ぐような、刺のありすぎる言葉だな。
まあ、言ってる事は同意だが最後の二行は書くべきではなかったと思うぞ。

309:名前は開発中のものです。
04/05/12 22:58 gxCJLa/h
>>307
漏れニヤニヤしながら待ってるよ
使いたいからじゃなくて、見てみたいから

特に、豪華固定長命令セットの威力に期待


310:新人PG
04/05/15 16:36 0t0FzjJn
お疲れさんです。ずいぶんさがりましたな。
仕事の引越しの関係でインターネットが新居に繋がってません。今月中に何とかします。

スクリプトは機能を大幅に削って、ある程度完成しました。どうにかゲームの進行ができる程度です。
計算処理は復活させました。限定的な(非汎用的な)命令語が増えています(汗
現在C# + DirectX9にてデバッグ用のインタプリタプログラムを作成中です。
動作するものができたと判断した段階(6月初頭を目途)で一度公開します。
スクリプトレビューはその時に行ってもらいます。
現在作成できるゲームの限界はSFCのドラゴンクエストⅢ+αとしています。
オーソドックスな2DのRPG(俯瞰)としていますがRPGツクールと差別化したいかな~とも思ってます。

311:親父PG
04/05/15 23:46 n956sXSw
現在IBMに修理出してます。すんません。orz...

問題は...サルベージが必要かも知れません(涙
でも諦めませんので^^;まだまだ頑張ります。


312:親父PG
04/05/15 23:48 n956sXSw
>>310
こちらも事実上止まっていますので、ゆっくりかかってください。
サルベージにHDDの基盤交換が必要やも知れないorz...

巻き戻ったソースは残っているのですが....
で逮捕はされていませんよw


313:名前は開発中のものです。
04/05/16 23:37 XGd16B+k
タイーホされてなかったのか・・・よかったよう。
早く復帰してねー

314:親父PG
04/05/19 08:49 DXpNx74z
まだ修理から戻ってこないorz...

315:名前は開発中のものです。
04/05/19 12:12 OYSXu2wF
IBMのノートって壊れやすい?

316:名前は開発中のものです。
04/05/19 12:43 wKTG0vf1
そりゃもう踏んだだけで壊れます

踏んで壊れなかったのはLet'sだけだった・・・


317:名前は開発中のものです。
04/05/21 04:10 GxmUKizO
踏みすぎ

318:名前は開発中のものです。
04/05/24 19:14 8F9Ymse0
保守

319:親父PG
04/05/24 20:54 o3eQYwoe
ところで HDDなのですが、だんだんおかしくなって
最後にWINDOWSまで起動したあと、認識不能になったので
おそらく基盤故障かモーター故障だと思うのですが、
サルベージでよいとこ知ってる方いませんかね?

これもある意味 ネタにもなるし(苦笑

IBMに当初修理を依頼したところ落下判定されていました(笑
かばんに入れて持ち歩いていたので、チャックの部分とこすれて傷だらけなのがいけなかった...
状況を説明して 落下判定は取り消されました。
やはりちゃんと説明しないといけないんですね。落下だと「保障」が効かなくなります。
当初6万の請求が、修理範囲をHDDに絞ったことで「無料」
また壊れたHDDの引き取り代金だけになりました。
壊れたHDDの引取りにもお金がかかります。まぁこれは仕方の無いことですが^^;

320:名前は開発中のものです。
04/05/24 21:15 GTVh4I4h
俺なら新しいの買う

321:名前は開発中のものです。
04/05/24 22:31 npejv8oY
サルベージの話だろ?

ところで
>壊れたHDDの引取りにもお金がかかります。まぁこれは仕方の無いことですが^^;
知らんかった。なぜに?

322:名前は開発中のものです。
04/05/25 01:31 /brKs1IB
俺の場合、壊れたハードディスクは表面を透明プラスチックとかに変えて
部屋の隅っこに飾ってる。
ちょっとかっこいい。

323:名前は開発中のものです。
04/05/25 03:37 aIdTCCHF
パソコンリサイクル法とかでいろいろと理由付けて金とるんだなぁ。

漏れもIBMのHDD(ノートじゃないが)使ってたけど2年しないで
起動するたびに遅くなったり、認識しなくなったりしてとうとう逝ってしまった。
まぁ、前兆が2,3日に続けてでてたからあわててバックアップとったが、
親父PG氏はバックアップとってないのん?

開発マシンが逝っちゃうとカナーリショックだと思う。

324:名前は開発中のものです。
04/05/25 10:17 MYIRdGjF
PCやHDDは消耗品。万が一の時のために
バックアップはまめにとるのは開発者の常識。
個人でも何枚かのDVDRAMやRWに焼くだけでも
安心感が違うから、面倒でも最低2~3日に1回は
全ソースのバックアップをとったほうがいい。

325:名前は開発中のものです。
04/05/25 10:41 2BcRF3mj
確かに必死こいて書いたプログラムが2日分
消えたときはしばらく放心状態だった

326:親父PG
04/05/25 19:41 srpPWafA
壊れたHDDを引き取るのにお金がかかる理由は、交換により新品をHDDを提供。
交換後の壊れたHDDは「IBMの資産」扱いなのだそうです。
なので引取りにはお金がかかるようです。
当初は新品と同じ額かもしれないと言われていましたが、結局は9000円
になりました。

高いなと感じる方もいるかもしれませんが、ノートの発送代金はすべてIBM持ち
(保険付き)サービスであるとかを考えると、それほど高いとは思っていません。
簡単なチューニングもしていただきました(発熱対策)

あまり参考にしたくない事例ではありますが(汗
なにかの参考なれば幸いです^^;


327:名前は開発中のものです。
04/05/25 20:34 aH+42FE9
家にサーバ一台置いて、CVSなんかでバージョン管理。
これ最高

328:名前は開発中のものです。
04/05/25 23:08 j22upQOo
サイト用アカウントにpassがけアーカイブをうpしてる。

329:名前は開発中のものです。
04/05/26 00:47 ALBjE7I0
>325
でもめちゃ苦労して、ある程度できあがってたものは
一度消えても仕事とかで納期が迫っていると、一気にその段階までもっていけるようなw

俺プログラマーじゃないけど、フォトショとかで1日かかりで作ってたようなのを
納品数時間前にアポーン->一気にそこまで作り上げ。みたいのはあるな。

フォトショの画面作りにしても、プログラムにしても、時間かかってるのは
頭つかって試行錯誤してる部分だけだから、一度形にできてると、
そこまで復帰させるのは、どうとでもなるよね。

・・・まああまり参考にしたくない話しですけど。

330:名前は開発中のものです。
04/05/26 06:51 pH6Xv3G7
>>329
デザインとプログラムは違うよ。
実際に経験してみないとこの違いはわからん。

331:名前は開発中のものです。
04/05/26 07:21 AGJ88VBR
>時間かかってるのは
>頭つかって試行錯誤してる部分だけだから
ここらへんがど素人なのね

332:名前は開発中のものです。
04/05/26 10:02 DwvFe2iA
まあ、かなり特殊な処理だったりするとわからんでもないな。
ただ、手馴れてくればそういう「試行錯誤」より
単なる物量が多いだけの場合が殆どであることに気が付く。

333:名前は開発中のものです。
04/05/26 10:05 iZv6MyYs
ノートのHDDが壊れたときは、とっとと新しいHDDを買ってきて付け替えたけど。
有償なら自分でやった方が、安いし早い。

334:親父PG
04/05/26 14:01 FihDUxqm
>>333
交換の部分は無償なんですよ^^ 普通は壊れた部品引き取る人いませんからね。
で目の前に壊れたHDDがあります。どうやってサルベージするか思案中です

335:名前は開発中のものです。
04/05/26 14:59 9IQYkxl7
クラッシュしちゃったり基盤交換が必要など物理的に
壊れてるHDのサルベージは結構な料金とられるので
多少巻き戻ってもバックアップから作業開始しちゃったほうが
いいと思いますよ。
ソースが必ずしも復旧出来るとも限らないし…

336:名前は開発中のものです。
04/05/26 18:57 JnixpBgL
壊れたってのがどういう壊れ方なのかもわからないなあ。
カラカラ鳴ってアクセスできなくなるタイプ?

337:名前は開発中のものです。
04/05/26 19:12 mhiAytbl
  ∧ ∧  カタ       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (,,゚Д゚),__カタ_ _< このスレは親父PGのHDDをサルベージするスレになりました・・・と。
  ./ つ_|| ̄ ̄ ̄ ̄ ̄| \_____________
 (,  |\||  VAIO   |
     '\,,|==========|

338:名前は開発中のものです。
04/05/27 06:55 J/CU7f8p
いやはや、これだけ書き込みがあって、まとめサイトも作ってないし・・
できたツールを片っ端から上げってったほうが良いんじゃないの?
(と言ってみるテスト)

やっぱしデータ構造は問題になるとは思ってたけど・・
オヤジ?さんが考えてる流れは例えば
ある地形上を歩く→どこかに着くと何番のフラグを立てる→
他のフラグもあわせて条件判断→フラグデータにあったイベントの発生
みたいな流れを考えてると思われる。(いかにも初代から3までのドラクエみたいだけど)

最近のゲームを見るに分業が進んで、たぶん上記の方法はあんまり使われてないかも?
だからシナリオが一本道になってるともみえる。でも、開発はこっちの方が容易。
シーン1(シーン1内での簡単なフラグ)→シーン2(シーン2内での簡単なフラグ)
 →シーン3(シーン3内での簡単なフラグ)→・・・
全シーン共通のフラグがこの他にあって、
またキャラクター(登場人物)データや持ち物データは別にある。

最初の方法だとフラグを管理するツールは必須だね。
何個かの条件を関連づけて表示したり、どのフラグがどのデータに関連してるかというのが
明示されて無いと、あとあとわけわかんなくなるし。
2番目の方法なら、フラグについてはほとんど問題無い。(だから最近のゲームはつまらん)

339:名前は開発中のものです。
04/05/27 13:56 T7P3bbBG
確認してみたがまとめぺーじきえてないぞ?

340:名前は開発中のものです。
04/05/27 16:56 5pnCAZfx
このスレにまとめのトップページURL二回しか出てきてないよ。
そりゃ気付かなくてもしょうがないんじゃないかな。

URLリンク(www.geocities.jp)
まとめページ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch