0

デザイン パターンに関する優れた書籍を探していますが、リアルタイム ストラテジー ゲーム (Starcraft など) の MVC に推奨する特定のパターンを教えてください。.

いつか Flash で基本的な RTS を作成したいと考えており、これに最適なパターンの研究を開始したいと考えています。

乾杯!

4

3 に答える 3

4

この種の質問の問題は、答えが完全に設計に依存することです。RTS ゲームは単純なゲームでも複雑です。連携する必要がある多くのシステムがあり、それらのシステムのそれぞれは、共通の目標を持って個別に設計する必要があります。

しかし、それについて少し話すと、ここに行きます。

RTS の AI システムには、通常、いくつかの異なるレベルがあります。スイッチ ベースのステート マシンからフル スケールのビヘイビア ツリー (コンポジット/デコレータ) まで、単純なユニット レベルの AI があります。また、通常、戦略レベルの AI には、ある種の高レベルの計画システムも必要です。(コマンダー レベルと AI プレーヤー) 通常、それらの間にいくつかのレベルがあり、リソース マネージャーなどのいくつかの側面もあります。また、フラッシュのイベント ベース モデルとうまく連携するイベント ベース システムを使用することもできます。

メインのゲーム エンジン自体については、基本的なステート マシン (スイッチ ベースから機能ベース、クラス ベースまでのあらゆるもの) を簡単に実装して、すべてを結び付け、それをメニュー システムに結び付けることができます。

個々のプレイヤーにとって、Model-View-Controller は非常に自然なパターンです。なぜなら、人間のプレイヤーがアクセスできるすべてのものに AI プレイヤーを公開したいからです。したがって、唯一の変更は、明らかにビューを必要としないコントローラー (脳) です。

私が言ったように、これは通常のスタックオーバーフローの質問のように答えられるものではなく、設計と実装方法に完全に依存しています。(ほとんどのものと同じように) RTS ゲーム デザインに関するリソースはたくさんありますが、それをすべて取り入れることが、私が本当にできる唯一のアドバイスです。単純な RTS でさえ、複雑なシステムです。

幸運を祈ります。この投稿で、それについてどのように考えるかについてのアイデアが得られることを願っています。(RTS では残高がすべてであることを忘れないでください)

于 2011-07-04T00:55:59.153 に答える
0

多くのユニットをサポートするには、FlyweightObject Poolを使用できます。Flyweight オブジェクトは、大きな ByteArray の数バイトに完全に格納できます。使用可能なオブジェクトを取得するには、対応するバイトを読み取り、空のオブジェクトを取得して、それらのバイトのデータで埋めます。オブジェクトプールは、これらの使用可能なオブジェクトを保持して、一定の割り当て/ガベージコレクションを防ぐことができます. このようにして、何千ものユニットを ByteArray に保持し、プールされた多数のオブジェクト シェルを介してそれらを管理できます。
ただし、これはユニットのタイル プロパティを保存するのにより適していることに注意してください。タイルは多かれ少なかれ静的ですが、ユニットは定期的に作成および破棄されます。

于 2011-07-03T18:05:40.327 に答える