このような大規模なエンティティシステムのパフォーマンスを測定および最適化する場合、2つの異なる点を考慮する必要があります。
低レベルでは、すべてのアクティブなエンティティの反復と更新のコストを削減するために、SoA(配列の構造体)などの効率的なストレージレイアウトを使用するように煮詰める傾向があるエンティティの物理表現があります。
より高いレベルでは、意思決定ロジック、一般的なゲームロジック、AI、パスファインディングがあります。これらはすべて、レンダリングと同じ更新レートで実行する必要がないという共通のタスクです。
Nフレームごとにこれらのタスクを実行するという単純なアプローチをとると、フレーム時間が不均一になるため、いくつかのフレームにわたってコストを償却することは有益な傾向があります。
タスクが本質的に増分である場合、アルゴリズムの一部をフレームごとに実行し、部分的な結果を更新で使用できます。
タスクが主にモノリシックであるがエンティティごとに分離可能である場合、フレームごとにゲームエンティティのサブセットに対してそのタスクを実行し、ラウンドロビン方式でそれらの間でローテーションできます。これには、全員が一度に行動する必要がないため、パスファインディングやAIなどの複雑さを軽減するという利点があります。
私が取り組んだ大規模な戦術RTSでは、ゲームエンティティの近傍を見つけるために、高レベルのアルゴリズムで低レベルの表現をクエリするための堅牢なデータ構造に焦点を当てました。低レベルの更新プロセスは、ゆっくりと更新される高レベルのシミュレーションによって提供されるインテントに作用し、最終的には安価なパーティクルシミュレーションに煮詰められ、数千にスケールアップしました。