人気のあるものがない場合は、なぜですか?
そのようなフレームワークがどのように機能するかについてコンセンサスに似たものは何もないからです。
Gamedev.netのスレッドで、人々がコンポーネントベースのゲームシステムについて話すとき、3つの異なる要因に基づいて、実際に彼らがどのように機能するかについて少なくとも8つの可能な順列があると判断しました:
機内対機外 -コンポーネントはエンティティに集約されるべきですか、それともサブシステムの一部であり、エンティティIDによってのみ関連付けられるべきですか?
静的構成と動的構成 -エンティティは、既知のインターフェイスを介してコードで通信できるコンポーネントの既知のセット(例:1物理、1アニメーション、1 AIなど)で構成されるか、エンティティに任意の量のコンポーネントを追加できますそれら(関心のある他のコンポーネントを見つけるための関連戦略とともに)
コンポーネントのデータ対エンティティのデータ -データは、主にその上で動作するコンポーネントによって保持されるべきですか?または、すべてのコンポーネントからアクセス可能な共有スペースのエンティティにデータを保存する必要がありますか?
さらに、コンポーネントの通信方法(共有データ経由?関数ポインター経由?信号/スロット経由?まったくない?)についてのさらなる質問があります。 -作成時に定義されたエンティティの順序?トポロジカルな種類のコンポーネントの相互依存性に基づいて?)など
これらの選択はそれぞれ完全に任意であり、1つのシステムでできることはすべて他のシステムで実行できます。しかし、コーディングの方法はそれぞれの場合でかなり異なります。そして、人々はどちらの方法が自分に最適かについて強い意見を持っているようです。
現在、人々はコンポーネントがオブジェクト指向の代わりになっているという考え(それはそうではない)にまだあまりにも追いついており、ゲームが伝統的に作られた方法からの大きな変化であると想像しています(これもそうではありませんでした) -人々は長い間、エンティティのさまざまなサブシステムを除外してきました)、それで多くの誇張があり、あまり合意がありません。たぶん数年後には物事は落ち着き、人々は1つか2つのかなり標準的なアプローチに落ち着くでしょう。