- ベストアンサー
ゲームエンジンの実態
- ゲームエンジンの実態とは?その仕組みを解説!
- ゲームエンジンの基本的な動作や特徴について
- ゲームエンジンの利用方法と既存エンジンの特徴
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
テンプレートエンジンとかスクリプトエンジンの経験ですが、、、 ifかswitchでべた書きです。 たぶんNo.4と同じだと思いますが、 配列に関数を入れられる言語であれば、一応、単純な分岐を配列に書き換える方法もあります。 if(a==0){ funcA(); else if(a==1){ funcB(); else if(a==2){ funcC(); } という処理を、 funcs[]という配列に、それぞれの関数が入っているとして、 funcs[a](); とするだけで、funcA、funcB、funcCに相当する処理を一発でかけるようになります。 もちろんaが数値じゃないとか、3以上の時はどうとか、そういう例外処理も必要ですが。 コマンド(文字列)をハッシュなどを利用して数値に変換すれば、ifではなく配列で書けると思います。 (またはハッシュテーブルに関数を入れて、直接実行) コマンドの分岐・実行より、パーサーの方が大変ですけどね。。。(^^;
その他の回答 (4)
- zwi
- ベストアンサー率56% (730/1282)
C言語とDXライブラリの講座ならあります。 http://karetta.jp/book-cover/game-programming 講座が未完ですが、こっちのページの下の方に完成品があります。 http://www.usamimi.info/~guiprog/game/ http://www.usamimi.info/~guiprog/game/novel/novelgame.zip >既存のエンジンは、だいたいどんな動作をしているのでしょうか? >ご存知の方がいらっしゃいましたら、ご教授ください。 命令が多くなってきたらテーブル化してC言語なら関数ポインタで呼び出す関数を同じテーブルに入れる事で解決します。プログラミング言語毎に最適な方向性は変わるでしょう。
市販のアドベンチャーゲーム製作に関わった経験から。 文字だけでは話にならないので、音声データ、画像表示、文字表示という記述になっていました。 1シーンを例にして。 まずそのシーンの背景画像や画面構成のフレーム画像を表示用の記述をします。 次にキャラクター画像の表示。キャラクターを表示する場所には配置する場所毎に番号があり、そのゲームでは横に3体のキャラクターがこちら向きに配置できました。左からStage1からStage3まで、1と2にかぶるように後ろ側に4、2と3の後ろに5。 記述は Stage2,Body1 で、画面真ん中にBody1というキャラクターの画像表示という感じ。 テキストは""で囲んだ物を画面のテキスト表示位置に表示し、その後ろに「,」をつけて音声ファイルの再生など。 その他に画像のエフェクト(フェードイン/フェードアウト)や、画像の揺れ、目や口をパチパチさせたりいろいろな記述がありました。 その記述はすべてテキストファイルで記述し、中にはフラグ用のパラメータや選択肢の為の画面などかなりの数の記述ができました。 (全て作成した後に暗号化されて中身がわからないようになるのと、シナリオ、画像、音声ファイルずつに一纏まりになりますので、ユーザーが見たり推測する事は不可能) 同人ソフトのアドベンチャーように吉里吉里(きりきり)というアドベンチャーゲーム用のエンジンがあったと思うので、それの仕様書を読めばどれだけいろんな事ができるかわかるとおもいますよ。
- Wr5
- ベストアンサー率53% (2173/4061)
別にコンパイラを作って、"@textcolor"を文字列比較ではなく特定のバイナリ値にしている場合もあります。 そのゲームエンジン専用の中間コード…みたいなモノですね。 # その方が実行時の効率がいいですし。 そういうゲームエンジンを作ろう。 という書籍もあったような気がしますけど。
- Tacosan
- ベストアンサー率23% (3656/15482)
ゲームエンジンを作ったことはないので確たることは言えないのですが, おそらく本質的にその通りでしょう. もちろんそのまま if をならべるのはさすがにバカなので, 例えば「必要なデータを配列に入れてループで調べる」とか「連想配列を使うなど, データ構造を工夫する」とかはしてるでしょうが.