- 締切済み
C++でゲームを作る時
私はC++を開発環境にしてDirectXでゲームを作っているのですが、開発途中でMainのソースがゴチャゴチャで見辛くなってしまったり、後から修正しようにもクラス同士が密接に結びついてしまい、手の施しようがなくなってしまうときがあります。 みなさんはどのように設計されているのでしょうか? 自分は他人が作ったゲームのソースを見たことが無いので、おおまかな設計や細かい技など何でも教えてもらえると嬉しいです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- machongola
- ベストアンサー率60% (434/720)
こんばんは。 C++の使い方や手法はごまんとあるのですが、そろそろ通常の書籍では語られる事の無い側面を知る時期が来たのではないでしょうか。 ゲームとは関係無いのですが、C++で話を進めていく上で、以下の書籍をお勧めします。 http://www.asahi-net.or.jp/~yf8k-kbys/ecppsup.html 旧アウトラン見たいな擬似3Dのレースゲームは幾つか作った事があります。其のゲームを作成した時の手法は、エディタの部分から作成しました。 とあるゲームに付属していたアンリアル2エディタで、ゲームが改造出来る様に成っていたのですが、そのエディタにはUCC言語と言う、C++からポインタを取り払った様な、筆舌に尽くし難いスクリプト言語があり、其れによってゲームキャラや進行の制御を行っていました。 其の形状が、Actorと言うスーパークラスが最上位にあり、下に向かって下っていく形で様々なクラスが形成され、クラスの参照同士でお互いに遣り取りしていました。 そう言った部分に習って、IGameObjectを最上位に置き、下に向かって下っていく手法で形成しました。 前述のゲームエディタ内に有った事を例にとれば、Pawn(人間クラス)の中には、AIControllerクラスがあり、AIControllerクラスを仲介して、Pawnの挙動を決める・・・、と言った具合です。 勿論、AIControllerクラスも又、下に向かって派生クラスを持ち、Pawnクラスに入れ替えを行う事で、Pawnクラスの人間性を変化させる事が出来ます。此れをC++で書けば、AIController*を内側に持つ事になります。 場合によっては、その場に物体を複製しなければいけない状況も出てきます。全てはポインタを使用している訳ですから、コピーコンストラクタでは対処出来ません。なのでクローンメソッドを用意する事に成るかもしれません。 後、その様なクラスを単位にまとめて扱う事において、STLと言うモノの存在が重要に成って来ます。STLと言う言葉を初めて耳にしたのであるならば、検討されてみる事をお勧めします。 結局は実践的なゲーム書籍を買って読む事でしょうか。どれ程抽象論をコネクリ回しても、事例に基づいて考えない限り、処方箋は見つからずじまいになってしまいます。
- 5S6
- ベストアンサー率29% (675/2291)
まずはスーパークラスから作る。 大きな物ならUMLなどを作っておく。 見にくいのはコーディング規約がないからでは? 変数もただのループカウントなら int i,j,k; でOKですが、敵の攻撃カウントとかなら int nEnemyAttack; とかにしましょう。 整数 n~ longならnl~で最初大文字 文字列 s~ オブジェクト o~ などのルールを決めます。 あとはコメントはきちんと書くこと。 その場では覚えてられるけど後でわからなくなるから。 参考までにソース付きのゲームです。 探せばいくらでも出てきますよ。