このプロジェクトについて

Frentは、エンティティ・コンポーネントの合成を中心にゲームやシミュレーションを構築するためのC#ライブラリです。READMEでは、単なるECSではなく主にEC(Entity Component)フレームワークとして説明されています。コンポーネントに振る舞い、ライフタイム管理、イベントを含めることができ、コードの再利用は最小限のボイラープレートで継承ではなく合成によって実現されます。従来のECSスタイルでエンティティをクエリするためのオプションのSystems APIも提供されています。 ストレージはアーキタイプとスパースセットのハイブリッドであり、エンティティはこれらのストレージ戦略間をシームレスに移動できるとプロジェクトは述べています。READMEには、8バイトの小さなエンティティ構造体、エンティティあたり最大127コンポーネントのサポート、構造体とクラスの両方のコンポーネント、deltaTimeなどのユニフォームデータの自動受け渡し、リフレクション不要のAOT対応、エンティティ関係(リンク)、タグ、イベント、コマンドバッファ、マルチスレッド、自動的な構造変更管理、コマンドバッファなしでいつでもエンティティを作成できる機能が列挙されています。より高速なアクセスのためにEntityMarshalとWorldMarshalが提供されています。 簡単な例では、Worldを作成し、PositionとVelocityコンポーネントを持つエンティティを生成し、world.Update()を呼び出して、更新されたPositionを読み戻す方法が示されています。READMEは、Frentがまだベータ版であり、完全に安定しているわけではないと注記しています。ドキュメント、インタラクティブデモ、MonoGame、Unity、Godot向けのサンプルへのリンクがあります。ベンチマークへのリンクも提供され、FrentはほとんどのC# ECS実装より高速であると主張されています。この主張はプロジェクト自身によるものであり、ここで独立して検証されたものではありません。コントリビューションのガイダンスでは、バグの報告、APIの提案、大規模な機能を始める前にissueを開くことが求められています。