コードでゲームのキャラクターを表す方法は?


7

前のゲームで、ゲームのキャラクタークラスがあると書きました。このクラスは、位置、速度、および一連の状態を追跡しました。状態がアニメーションに非常に近いことを除いて。各状態には、他の状態に遷移できるボタンのリストと、その状態に連動するアニメーションがあります(非常に具体的なタイミングのパンチや、何か)。キャラクターのすべての衝突データは、アニメーションフレームごとに行われました。これは格闘ゲームのために行われたので、当時はアニメーションと衝突をキャラクターの状態に非常に密接に関連付ける必要があったようです。

しかし、私のプログラマーは、これが責任の混合だと感じています。そして今、私はそれよりも少し一般的になりたいゲームエンジンを作成しています。キャラクターに関連する構造、それらがどのように描かれるか、それらがお互いに、そして世界とどのように相互作用するかなどを通常どのように整理しますか?

これは私が作りたいゲームの種類に依存する漠然とした質問のようなものだと思いますが、他の人がこれをどのように処理するかを見ることは有用だと思います。

(そして、それが重要であれば、これはすべて2Dゲームの場合です。)

回答:


8

ゲームの動作とアニメーションが密接に関連している場合(格闘ゲームの場合など)、これは必ずしも責任の混合ではありません。

munificent が「MVCとTDDがゲームアーキテクチャで採用されない理由」で述べたように?ゲームでは、[モデルとビュー]は非常に近くなります。ゲームの世界(モデル)は通常、仮想空間に配置されたエンティティのセットです。ゲームビューは、仮想空間に配置されたエンティティのセットでもあります...最終的に、ゲームのモデルとビューの間の線は任意であり、役に立たなくなります。それらの間で多くの状態を複製することになります。

言い換えると、抽象化の目的が小包の責任を助け、保守性を向上させていない場合、それは抽象化ではなく、単なる部門です。

必要なすべてのモデルをサポートするゲームエンジンを作成する方法について-アニメーションと物理ビットを密接に結び付けているか、オブジェクトの相互作用とレンダラーを完全に分離しているか、または同じゲームのさまざまな目的で両方を使用しているか-標準的な答えを与えます。コンポーネントベースのエンティティで階層進化させます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.