2

私はstackoverが初めてで、これが初めての投稿なので、優しくしてください:-)

私はマルチレベルのシューティングゲームを開発している最中で、明示的に弾丸を管理するために、私の目的に最適な OOP 設計について質問しています。

通常、ゲームには複数のプレイヤーと複数の敵がいて、それぞれが弾丸を発射する銃を持っています。複数の弾丸、その位置、アニメーション、レンダリングなどを適切に管理する Bullet クラスがあり、これらは正常に動作します。

私の質問は、敵ごとにこれらの弾丸クラスのインスタンスをインスタンス化する方がよいですか、それともすべての弾丸を管理するレベルのインスタンスを 1 つインスタンス化する方がよいでしょうか (誰が発射したかに関係なく)?

単一のインスタンスの利点は、弾丸の管理とレンダリングを一度に最適化できることですが、どの弾丸が誰に属しているか、各敵に存在できる弾丸の数などを覚えておくために、追加の状態情報が必要です。疎結合ではありません。敵ごとに個別のインスタンスを使用する利点は、弾丸ごとに保存する必要がある状態情報が少なくて済みますが、敵またはプレイヤーごとに個別の呼び出しで管理およびレンダリングされることです。弾丸同士の衝突もより難しくなりますが、幸いなことに、これはこの特定のゲームの要件ではありません。

他の誰かが似たようなものを書いたことがありますか?どのように構成しましたか? 決定する前に考慮すべき要素と、そのためのゲーム デザインの原則はありますか?

よろしくニック

4

1 に答える 1

0

一般的なゲーム構造については、こちらをお読みください。


私の個人的な見解かもしれませんが、弾丸のレベル全体のハンドラーはもっと普遍的であるべきだと思います。プレイヤーが弾丸を発射すると、Bullet-handler オブジェクトに信号が送信され、弾丸の数が 1 つ減ります。弾丸は、どのプレーヤーがそれを撃ったかを保存する必要があるため、どのプレーヤーがどのプレーヤーを撃ったかを振り返ったり、統計を増やしたりすることができます。言うまでもなく、レベル全体の弾丸ハンドラーを後で拡張して、手榴弾、地雷、爆発する火薬で満たされた狂暴なイタチなどを処理できます。

于 2013-01-05T12:36:41.533 に答える