実験的および進行中のC ++ 14マルチスレッドコンパイル時間エンティティ - コンポーネントシステムヘッダーのみのライブラリ。
複雑なリアルタイムアプリケーションとゲームの開発に成功するには、柔軟で効率的なエンティティ管理システムが必要です。プロジェクトがより複雑になるにつれて、コードの繰り返しを防ぎ、モジュール性を改善し、強力な最適化の可能性を開くために、オブジェクトを構成するエレガントな方法を見つけることが重要です。
エンティティコンポーネントシステムアーキテクチャパターンは、データをロジックから分離することにより、前述の利点を達成するように設計されました。
エンティティは、小さく、再利用可能な、一般的なコンポーネントで構成できます。
コンポーネントは、連続したメモリ領域に保存できるため、データの局所性とキャッシュに優しさを改善できます。
アプリケーションロジックは、オブジェクト自体とそのストレージポリシーから簡単に並列化および抽象化することができます。
アプリケーションの状態は、より少ない労力でネットワーク上でシリアル化および共有できます。
よりモジュール式、一般的で、簡単にテスト可能なコードベース。
「ECST」は、私のBCS卒業プロジェクトとして開発されました。
指示を作成します
コードサンプル
ライセンス
それに伴う論文
スライド
エンティティ: Adam Martin(論文を参照)により、コンクリートアプリケーションを表すシステムの「基本的な概念ビルディングブロック」として定義されています。アプリケーション固有のデータやロジックはありません。
コンポーネント:エンティティを構成する小さく、再利用可能なタイプ。繰り返しになりますが、コンポーネントタイプであるAdam Martin (論文を参照)を引用して、「特定の側面を所有するエンティティをラベル付け」。コンポーネントはデータを保存しますが、ロジックは含まれていません。
システム:特定のコンポーネントタイプセットを所有するエンティティの実装ロジックのプロバイダー。
外側の並列性: ECSTで使用される用語は、並行して互いに依存しない複数のシステムを実行するという概念を定義します。その実装の詳細は、第10章で分析されます(論文を参照) 。概念的には、システム依存関係の知識のおかげで、暗黙の指示的な非環式グラフがコンパイル時に作成されます。暗黙のDAGの実行は、設定定義中に指定されたシステムスケジューラタイプによって処理されます。
内部並列処理:並列で個別のシステムを実行する他のECSTは、単一のシステムを複数のサブタスクに分割することをサポートします。これは、個別のスレッドで実行できます。機能的に純粋なコンテストを表すものなど、多くのシステムは、独自の状態を変更したり、購読されたエンティティ間の相互作用を定義する副作用を含んでいません。これらは「恥ずかしいほど並行」計算の主要な例です。
「APIのドキュメントはどこにありますか?」
「デフォルトの構成可能ではないコンポーネントがありますか?」
「私は自分のコンポーネントへの間で読み取り/書き込もうとしていますが、コンピレーションエラーが発生しています。何が起こっているのですか? 」
「システムのプロセス関数の内側にない限り、エンティティに接続されたコンポーネントを反復することは可能ですか?」
「システムが並行して実行されるのか、単一のスレッドとして実行されるかを制御するにはどうすればよいですか? 」
「私のシステムを単一のスレッドと内側のパラレリズムを無効にすることの違いは何ですか?」