Go と Entity-Component-Systems の両方を調査しています。私は ECS がどのように機能するかを理解しており、ECS の頼りになるドキュメントと思われるものを複製しようとしています。
パフォーマンスのために、このドキュメントでは、すべてのコンポーネント タイプの静的配列を使用することを推奨しています。つまり、コンポーネント インターフェイスの配列 (ポインターの配列) ではありません。Go でのこれに関する問題は、循環インポートです。
私は 1 つのパッケージecsを持っています。これには、 Entity、Component、およびSystemのタイプ/インターフェイスとEntityManagerの定義が含まれています。別のパッケージecs/componentsには、さまざまなコンポーネントが含まれています。明らかに、ecs/componentsパッケージはecsに依存しています。ただし、 EntityManagerで特定のコンポーネントの配列を宣言するには、ecsはecs/componentsに依存するため、循環インポートが作成されます。
これを回避する方法はありますか?通常、上位システムは下位システムに依存すべきではないことを認識しています。また、ポインターの配列を使用することはおそらく私の目的には十分高速であることを指摘したいと思いますが、可能な回避策に興味があります(将来の参考のために)
ご協力ありがとうございました!