概要
Mass Entity は、Unreal Engine で利用可能なデータ指向の計算のフレームワークです。このフレームワークは、このシステム内で特定の機能を担ういくつかのプラグインに分かれています。
Mass Gameplay プラグインは Mass Entity プラグインから直接派生しており、ワールド内の表現、スポーン処理、詳細度 (LOD) メカニズム、レプリケーション、StateTree 向けの機能が含まれています。
このドキュメントでは、MassGameplay プラグインで利用可能なサブシステムについて説明します。MassEntity の詳細については、「MassEntity の概要」を参照してください。
サブシステム
Mass Representation
Mass Representation サブシステムは、Mass Entity のさまざまなビジュアル面の管理を担っています。
各表現の LOD 値に対して、このサブシステムは次の 4 つの表現タイプの選択肢を提供します。
高解像度のアクタ
低解像度のアクタ
インスタンス化スタティック メッシュ (ISM)
表現なし
ISM は、アクタを表現する最も負荷が小さい方法であり、頂点アニメーションを使用して動かすことやアニメートすることができます。ISM アクタがどのようにアニメートされるかの詳細については、Unreal Engine マーケットプレイスから City Sample をダウンロードして参照してください。
インスタンス化スタティック メッシュ アニメーションは、まだすべてのユースケースで完全にサポートされているわけではないため、MassGameplay での実験的機能です。
このサブシステムは、各表現タイプ間の遷移を処理し、MassActorSpawner サブシステムおよび MassLOD サブシステムと直接連動します。また、このサブシステムは、スポーンされたアクタを自動的に再利用およびプールすることができます。
Mass Spawner
Mass Spawner サブシステムは、MassSpawner オブジェクトとプロシージャル呼び出しに基づいてエンティティをスポーンおよび管理します。このサブシステムは、利用可能なエンティティ テンプレートに関する情報をホストする Mass Entity Template Registry インスタンスを所有します。
このサブシステムの使用を開始するには、MassSpawner アクタを作成してレベルに配置します。Mass Entity 定義アセット を追加して、どのアクタ タイプをスポーンするかを指定し、Mass Entity 分布インスタンスジェネレータ を追加して、それらのアクタをどこにスポーンするかを指定します。
Mass LOD
Mass LOD サブシステムは、各 Mass Entity に必要な詳細度 (LOD) を算出します。
このサブシステムは 4 つの LOD 値High、Medium、Low、Off のいずれかを出力します。各 LOD レベルに対して、そのレベルに関連する距離と、レベルあたりの最大エンティティ数を設定できます。
このサブシステムのクライアントとして次の 3 つのサブシステムがあります。
Mass (Representation/Visualization) LOD
MassSimulationLOD
MassReplicationLOD
MassLOD は、0.0f (High) ~ 3.0f (Off) の範囲の浮動小数点値である LOD の重要度も算出することができます。
Mass (Representation/Visualization) LOD
Mass (Representation/Visualization) LOD は、ビジュアルの LOD を処理できるように特別に設計されています。距離から LOD を算出するだけでなく、可視または非可視のどちらであるかも算出します。エンティティがカメラの錐台内にあるかどうかに応じて異なる LOD 距離を指定することもできます。
このシステムは、距離でカリングされるか、錐台でカリングされるか、可視であるかに応じて、すべてのエンティティを異なるチャンクにグループ化します。次のグラフは、そのようなグループ化を表しています。
Mass Simulation LOD
Mass Simulation LOD は、すべてのエンティティ計算の負荷を分散するための実装です。このシステムは、すべてのエンティティを LOD が同じチャンクにグループ化するため、クエリでフィルタを使用する場合に便利です。また、すべての計算に対して可変の頻度で更新するオプションも提供します。
Mass Replication LOD
Mass LOD Replication は LOD フレームワークを使用して、レプリケーションのために各エンティティの関連度を把握します。Mass (Representation/Visualization) LOD および Mass Simulation LOD とは異なり、このシステムは接続しているクライアント (ビューア) ごとの各エンティティに対して LOD を算出します。このシステムは、ネットワークでの帯域幅を最適化することに役立ちます。
Mass Replication (実験的機能)
Mass Replication サブシステムは、ネットワーク経由のクライアント サーバー方式でエンティティをレプリケートします。サーバーからクライアントへの一方向のレプリケーションを行います。
このサブシステムは、Mass Replication LOD システムを介して帯域幅の消費量が制限されるように、エンティティの関連度と更新頻度を処理します。
Mass Replication は Unreal Engine 5.1 では実験的機能です。このシステムでカスタム値をレプリケートするには C++ での実装が必要です。
Mass StateTree
Mass StateTree サブシステムは、StateTree システムを Mass Entity に組み込むために使用されます。このサブシステムを使用すると、各エンティティ用に StateTree を設定し、他の Mass システムから送出される信号に基づいて各エンティティの StateTree を更新することができます。
StateTree のロジックは、特定の動作に対して適切なプロセッサが実行されるように、エンティティを設定するか、エンティティに対してデータを設定するためにのみ使用されています。
Mass Signal
Mass Signal サブシステムは、指定された信号を送出して、行うべき何らかの処理があることをエンティティに伝えます。このサブシステムは現時点では、行うべき何らかの処理があるときに Mass StateTree を稼働させるために Mass StateTree で使用されています。
この信号は、イベントに似ていますが、エンティティに送出するペイロードはありません。Mass フレームワークは主にプル パターンに重点を置いているため、このサブシステムは何かを頻繁に更新する必要がある場合に非常に便利です。
Mass Movement
Mass Movement サブシステムは、Mass エージェント用の単純な移動モデルを定義します。フラグメントとプロセッサは、他のトレイトがベロシティまたはフォースを直接変更できるようにセットアップされています。これらの値は、Mass エージェントで使用される最終移動値と組み合わされます。
たとえば、エージェントのステアリング時に、このシステムは初期ステアリング フォースを設定し、回避によって、移動中のコリジョンを避けるようにそのフォースを変えることもできます。
Mass SmartObject
Mass SmartObject サブシステムは、SmartObject システムを Mass Entity に組み込むために使用されます。このサブシステムは、MassEntity で表されるエージェントで、スマート オブジェクトのクエリを行って単純な動作を実行するために必要となるトレイト、フラグメント、プロセッサを提供します。