エンティティ・コンポーネント・システム
エンティティはIDとコンポーネントのコンテナのみで構成される。 この考えは、ゲームメソッドをエンティティに埋め込まないようにするためのものである。 コンテナはエンティティと物理的に連続して配置される必要は無いが、発見とアクセスが容易であるべきだ。
各エンティティにユニークなIDをもたせるのが一般的な方法である。 これは必須要件ではないが、以下の優位性を持っている:
エンティティをポインターではなくIDで参照できる。こうすることで、ポインタが不正なメモリ領域を指すことなくエンティティを廃棄することができ、より堅牢である。
状態を外部に保存することが容易になる。状態を再び読み込んだとき、ポインタを再構築する必要がない。
必要に応じて、データのメモリ上の順序を変更できる。
ネットワーク越しに通信する際、エンティティIDを使ってエンティティを指すことができる。
これらの優位性のうちいくつかは、スマートポインタを使用することでも同様に得られる。
1998年のゲーム Thief: The Dark Project は、公に知られているECSを使った最古のゲームである。ただし、技術的詳細の公開は他よりもずっと行われていない。
2002年のゲーム ダンジョン・シージ は、初めてECSの実装について明快に説明したものの1つである。同年のGDCにおいて、Scott Bilasが講演を行った記録がある。
Bilasの講演はコンポジションのためのデータベースの今日の標準的な概念となっている、「データ駆動」スキーマについて明確に言及した。それは単なるプロパティでなく、「自己充足」のアイテムとしてのコンポーネントなどである。
2007年、Operation Flashpoint: Dragon Rising の開発に携わっているチームが、ECSの設計の実験を行った。Bilas(ダンジョン・シージ)と、Adam Martinが後に書いた詳細なECSの解説に触発された。Martinの解説は中心的な用語と概念の定義を含んでいる。