この記事では、ECS パターンと Flame Steel Engine ゲーム ツールキットでの実装について大まかに説明します。 Entity Component System パターンは、ゲームなどで使用されます。 Unityエンジン上で。ゲーム内の各オブジェクトはコンポーネントで満たされたエッセンスです。 OOP があるのになぜこれが必要なのでしょうか?
次に、ゲームの実行中にオブジェクトのプロパティ、動作、表示を直接変更します。このようなことは現実世界のアプリケーションでは見られません。パラメータ、オブジェクトのプロパティ、表示、サウンドの変化のダイナミクスは、会計ソフトウェアよりもゲームの特徴です。
バナナを渡さなかった
ゲームにバナナ クラスがあるとします。そしてゲームデザイナーはバナナを武器として使用したいと考えていました。現在のアーキテクチャでは、バナナは武器とは何の関係もないとしましょう。バナナを武器にする?全てのアイテムを武器に
しますか?ECS は、この差し迫った問題に対する解決策を提供します。ゲーム内のすべてのオブジェクトはコンポーネントで構成されている必要があります。以前はバナナは Banana クラスでしたが、今後はこれを作成し、他のすべてのオブジェクトを Entity クラスにして、それらにコンポーネントを追加します。バナナが次のコンポーネントで構成されているとします。
<オル>
現在、すべてのバナナに新しいコンポーネントを追加しています。これは、バナナが武器として使用できることを示すフラグです –武器のコンポーネント。ここで、ゲーム システムは、プレイヤーがバナナに近づいたことを認識すると、バナナに武器コンポーネントの存在を確認し、存在する場合は、プレイヤーにバナナを武装させます。
私のゲーム「Flame Steel Call Of The Death Mask」では、ECS パターンが全体的に使用されています。オブジェクトはコンポーネントで構成されており、コンポーネント自体にコンポーネントを含めることができます。一般に、オブジェクトの分割 < – >私の実装ではコンポーネントが欠落していますが、これはさらにプラスです。

このスクリーンショットのショットガンはプレーヤーのコンポーネントであると同時に、2 番目のショットガンは通常のオブジェクトとしてゲーム マップ上にぶら下がっているだけです。
このスクリーンショットでは、2 つのシステムが実行されています –シーンレンダラーとインターフェイスレンダラー。シーン レンダラーはマップ上でショットガン画像コンポーネントを操作し、インターフェイス レンダラーはプレイヤーの手の中でショットガン画像コンポーネントを操作します。
関連リンク:
https://habrahabr.ru/post/197920/
https://www.youtube.com/watch?v=NTWSeQtHZ9M