Play In Editor (PIE) モードでゲームを実行中に、以下の stat コマンド をコンソールに入力することで、開発中の Unreal Engine (UE) プロジェクトをプロファイリングすることができます。
エディタの [Stat (統計データ)] メニューから stat コマンドを使用するには、[Viewport Setting (ビューポート設定)] ボタンの横にあるドロップダウン矢印をクリックします。
エディタの実行時に LOG
コマンドを使用すると、stat dump からの有益な情報を記録することができます。こうするには、エディタを LOG
コマンドとともに実行し (例: UnrealEditor.exe -silent LOG=MyLog.txt
)、エディタ (ゲーム プロジェクト) でログ ファイルを生成できるようにします。
Stat コマンド テーブル
stat
の後にスペースと以下のコマンドのいずれかを入力してアクティブ化します。
コマンド名 | コマンドの説明 |
---|---|
AI | Perception システムと、全体的な AI のパフォーマンス情報を表示します。 |
AI_EQS | Environment Query System (EQS) のパフォーマンス、デバッグ、メモリに関する統計情報を表示します。 |
AIBehaviorTree | ビヘイビア ツリーのパフォーマンスとメモリに関する統計情報を表示します。 |
AICrowd | Crowd Manager のパフォーマンスとステップに関する情報を表示します。 |
Anim | ティックごとのスキン メッシュの計算時間を表示します。 |
AsyncLoad / AsyncLoadGameThread | 非同期のロードに関するパフォーマンスの統計情報を表示します。 |
Audio / AudioThreadCommands | Wave インスタンスやバッファ パフォーマンスなど、オーディオ関連の統計情報を表示します。 |
Canvas | タイルや境界線、テキストなどの Canvas ユーザー インターフェース アイテムのパフォーマンスを示す、Canvas の統計情報を表示します。 |
Collision / CollisionTags | コリジョンのパフォーマンス、デバッグ、メモリに関する情報を表示します。 |
CommandListMarkers | 一連のコマンドとそのパフォーマンス情報を表示します。 |
Component | 一連のコンポーネントとそのパフォーマンス情報を表示します。 |
Compression | 圧縮に関する統計情報を表示します。 |
CPULoad | CPU 使用率を表示します。 |
CPUStalls | CPU ストールに関する情報を表示します。 |
D3D11RHI | Direct3D 11 RHI に関する統計情報を表示します。 |
DDC | 派生データ キャッシュ (DDC) に関する統計情報を表示します。 |
DumpHitches | t.HitchFrameTimeThreshold に基づいて「ヒッチ (処理落ち)」が検出された場合、これがログに記録されます。 |
Dumpticks | ティック関数に関する情報をダンプします。 |
Engine | フレーム時間や、レンダリング中のトライアングルの数に基づくカウンターなど、レンダリングに関する全般的な統計情報を表示します。 |
FPS | フレーム/秒 (FPS) カウンターを表示します。 |
Game | さまざまなゲームプレイ ティックにかかる時間に関するフィードバックを提供します。 |
GameplayTags | ゲームプレイ タグの情報を表示します。 |
GC | ガベージ コレクションに関する統計情報を表示します。 |
GeometryCache | ジオメトリ キャッシュ システムのパフォーマンスとメモリに関する統計情報を表示します。 |
GPU | フレームに対する GPU の統計情報を表示します。 |
GPUParticles | GPU パーティクルのパフォーマンスに関する情報を表示します。 |
Help | すべての統計コメントをリストします。 |
Hitches | t.HitchFrameTimeThreshold を設定して、ヒッチ (処理落ち) とみなす時間を秒単位で定義します。また、すべてのヒッチをログ/Visual Studio デバッグにダンプします。例: [0327.87] LogEngine:Warning:HITCH @ 00m:01s:643ms,1643,72,2. |
IMEWindows | Windows のテキスト インプット メソッド システムに関する情報を表示します。 |
InitViews | 可視性カリングにかかった時間とその効果に関する情報を表示します。レンダリング スレッド パフォーマンスに関しては、Visible のセクションの数値が最も重要な統計情報です。STAT INITVIEWS では Visible Static Mesh Elements (可視スタティック メッシュ要素) が多くを占めていますが、Visible Dynamic Primitives (可視の動的プリミティブ) も関係しています。 |
KismetCompiler | Kismet コンパイラに関する情報を表示します。 |
KismetReinstancer | Kismet リインスタンサに関する情報を表示します。 |
Levels | レベル ストリーミングに関する情報を表示します。 |
LightRendering | ライティングとシャドウのレンダリングにかかる時間に関するフィードバックを提供します。 |
LinkerCount | リンカ カウンターを表示します。 |
LinkerLoad | リンカ ロードに関する情報を表示します。 |
List | 一連の統計情報、保存されたセット、または <Groups/Sets/Group><br> の形式で指定したグループ内の統計情報を表示します。 |
LLM | 低レベル メモリ (LLM) トラッカーのカウンターを表示します。 |
LLMFull | LLM カウンターの完全なグループを表示します。 |
LLMOverhead | LLM オーバーヘッド カウンターを表示します。 |
LLMPlatform | LLM プラットフォーム カウンターを表示します。 |
LoadTime / LoadTimeVerbose | ロード時間のパフォーマンスに関する情報を表示します。 |
MapBuildData | マップのビルド データを表示します。 |
MathVerbose | 数学演算のパフォーマンスに関する情報を表示します。 |
Memory | Unreal Engine のさまざまなサブシステムで使用されているメモリ量に関する統計情報を表示します。 |
MemoryAllocator | メモリの割り当てに関する情報を表示します。 |
MemoryPlatform | メモリのプラットフォームに関する情報を表示します。 |
MemoryStaticMesh | スタティック メッシュに関するメモリの統計情報を表示します。 |
NamedEvents | 外部のプロファイラに対して名前付きイベントを有効にします。 |
Navigation | ナビゲーション システムのパフォーマンスとメモリに関する情報を表示します。 |
NET | ネットワーキング システムに関する統計情報を表示します。 |
Object / ObjectVerbose | オブジェクト メモリとパフォーマンスに関する情報を表示します。 |
Online | オンライン システムのカウンターを表示します。 |
Pakfile | Pakfile システムに関する統計情報を表示します。 |
ParallelCommandListMarkers | 一連の並列コマンドとそのパフォーマンス情報を表示します。 |
Particles | パーティクル システムのパフォーマンスに関する情報を表示します。 |
Physics | 物理のパフォーマンスに関する統計情報を表示します。 |
PhysXTasks | PhysX タスクに関する情報を表示します。 |
PhysXVehicleManager | PhysX Vehicle Manager に関する統計情報を表示します。 |
PlayerController | PlayerController のパフォーマンスに関する情報を表示します。 |
Quick | 全体的なパフォーマンスに関する一連のデータを迅速に表示します。 |
RenderTargetPool | レンダー ターゲット プールのメモリとパフォーマンスに関する統計情報を表示します。 |
RenderThreadCommands | レンダー スレッド コマンドとそのパフォーマンス情報をリスト表示します。 |
RHI | RHI メモリとパフォーマンスに関する統計情報を表示します。 |
RHICMDLIST | RHI コマンドとそのパフォーマンスの統計情報をリスト表示します。 |
SceneMemory | シーン メモリのカウンターを表示します。 |
SceneRendering | 全般的なレンダリングに関する統計情報を表示します。レンダリング プロセスにおいて全般的に低パフォーマンスの領域を調べるための足がかりとなる情報です。 |
SceneUpdate | ライトの追加、更新、削除にかかる時間や、シーン内のプリミティブの追加と削除にかかる時間など、ワールドの更新に関する情報を表示します。 |
Script | スクリプトに関する統計情報を表示します。 |
ShaderCompiling | シェーダのコンパイルに関する情報を表示します。 |
Shaders | シェーダの圧縮に関する統計情報を表示します。 |
ShadowRendering | stat LightRendering で示される実際のシャドウ レンダリング時間とは別に、シャドウの計算にかかっている時間を表示します。 |
Slate / SlateVerbose | スレート メモリのカウンターを表示します。 |
SlateMemory | スレート メモリのカウンターを表示します。 |
SoundCues | アクティブな SoundCues を表示します。 |
SoundMixes | アクティブな SoundMixes を表示します。 |
Sounds |
|
SoundWaves | アクティブな SoundWaves を表示します。 |
SplitScreen | 分割画面に関する情報を表示します。 |
StartFile | 統計情報のキャプチャを開始し、「Profiling」ディレクトリ内に新しいファイルを作成します。 注意: この操作を停止するには、stat StopFile コマンドを使用します。 |
StatSystem | Stat システムのパフォーマンスとメモリに関する情報を表示します。 |
StopFile | stat StartFile コマンドによって開始された統計情報キャプチャを終了し、「Profiling」ディレクトリ内に作成されたファイルをクローズします。 |
Streaming | ストリーミング テクスチャのメモリ使用量や、シーン内に存在するストリーミング テクスチャの数など、ストリーミング アセットに関する基本的な統計情報を表示します。 |
StreamingDetails | テクスチャ ストリーミングの全般的な情報をより細かくグループ化 (ライトマップ、スタティック テクスチャ、ダイナミック テクスチャなど) して、ストリーミングに関するより詳細な統計情報を表示します。 |
StreamingOverview | ストリーミング アセットに関する統計情報の概要を表示します。 |
TargetPlatform | ターゲット プラットフォームに関する情報を表示します。 |
TaskGraphTasks | TaskGraph タスクに関するパフォーマンス データを表示します。 |
Text | テキストのパフォーマンスに関する統計情報を表示します。 |
TextureGroup | テクスチャ グループ メモリのカウンターを表示します。 |
Threading | スレッド化に関する情報を表示します。 |
ThreadPoolAsyncTasks | ThreadPool Async タスクのカウンターを表示します。 |
Threads | スレッドに関する情報を表示します。 |
Tickables | Tickables のパフォーマンスに関する統計情報を表示します。 |
TickGroups | Tickables のパフォーマンスに関する統計情報を表示します。 |
UI | UI のパフォーマンスに関する情報を表示します。 |
Unit | 全体のフレーム時間や、ゲーム スレッド、レンダリング スレッド、GPU 時間が含まれます。 注意: この Stat コマンドは基本的な情報を提供し、デベロッパーによるプロファイリング作業を支援する優れたコマンドです。 |
UnitGraph | Stat Unit データを含むグラフを表示するには、stat Raw を使用してフィルタリングされていないデータを表示します。 |
UObjectHash | ハッシュ化された UObject に関する情報を表示します。 |
UObjects | ゲーム内の UObjects のパフォーマンスに関する統計情報を表示します。 |
コマンド選択
レベル
stat levels コマンドは、パーシスタント レベルでグループ化されたレベル ストリーミングに関する情報を表示します。
ユースケース
これは、開発時にレベルの可視性や、事前ロード/ロード/アンロードされるかどうかなどの情報も含めて、現在アクティブなレベルのリストを表示するときに非常に有用なコマンドです。さらにこのコマンドでは、ロードのリクエストからロードの完了までにかかった時間も秒単位で表示されます。
使用方法
ストリーミング レベルの情報を表示するには、PIE コンソール に「stat levels
」と入力します。
レベル カラー コード
カラー コード | 説明 |
---|---|
Green | レベルはロードされて可視の状態です。 |
Red | レベルはアンロードの状態です。 |
Orange | レベルは可視化プロセス中の状態にあります。 |
Yellow | レベルはロードされていますが、可視にはなっていない状態です。 |
Blue | レベルはアンロードの状態ですがメモリ内には存在し、ガベージ コレクションの動作時にクリーンアップされます。 |
Purple | レベルが事前ロードされている状態です。 |
StartFile
stat startfile コマンドは統計情報のキャプチャを開始し、「Profiling」ディレクトリ内に新しいファイルを作成します。通常、統計情報のキャプチャはエンジンによって [Unreal Engine のプロジェクト フォルダ][プロジェクト名]\Saved\Profiling\UnrealStats
に保存されます。
ユースケース
プロジェクトのパフォーマンスを Session Frontend Profiler でプロファイリングするには、統計情報のサンプルをキャプチャして「*.uestats
」ファイルに記録します。
使用方法
統計情報をキャプチャして「*.uestats
」ファイルに記録するには、PIE コンソール に「stat startfile
」と入力します。
StartFile で作成される大規模な「uestats
」ファイルによってディスクが肥大化することを回避するには、stat StopFile を実行します。さらに、PIE モードを閉じた場合でも StartFile は引き続きバックグラウンドで実行され、これによってログ ファイルが肥大化するため、必ず StopFile コマンドを実行して、プロジェクト パフォーマンスの記録を停止してください。
統計情報をロードする
統計情報を [Session Frontend (セッションフロントエンド)] プロファイラ にロードするには、次の手順に従います。
- Unreal Editor のメニューバー で [Tool (ツール)] > [Session Frontend (セッション フロントエンド)] を選択します。
- [Session Frontend (セッションフロントエンド)] が開いた状態で、[Profiler (プロファイラ)] タブ (1) を選択します。
- プロファイル対象のタイルを開くには、て [Load (ロード)] をクリックします。
uestats
ファイルを選択したら、[Open (開く)] をクリックして、ファイルをロードします。
最終結果
[Session Frontend (セッションフロントエンド)] でファイルがロードされるとキャプチャ データが [Profiler (プロファイラ)] ウィンドウに表示されて、さらなる分析を行うことができます。Session Frontend でプロファイル キャプチャをレビューする方法の詳細は「プロファイラ ツール リファレンス」を参照してください。
StopFile
stat stopfile コマンドは、StartFile コマンドによって開始された統計情報のキャプチャを停止します。また、StopFile コマンドは「Profiling
」ディレクトリ内に作成されたファイルをクローズします。
ユースケース
StartFile で作成される大規模な「uestats
」ファイルによってディスクが肥大化することを回避するには、stat StopFile を実行します。さらに、PIE モードを閉じた場合でも StartFile は引き続きバックグラウンドで実行されます。これによってログ ファイルが肥大化するため、必ず StopFile コマンドを実行して、プロジェクト パフォーマンスの記録を停止してください。
使用方法
統計情報のキャプチャと記録を停止するには、PIE コンソール に「stat stopfile
」と入力します。
Unit
ユースケース
開発においては、Game スレッド、Draw (レンダリング) スレッド、または GPU 上にボトルネック (パフォーマンスに対するマイナスの影響) となるものが存在するかどうかを確認することは当然のことです。
stat unit コマンドは、プロジェクトの Frame、Game、Draw、GPU、RHIT そして DynRes スレッドのパフォーマンスに関する情報を表示します。
統計情報
名前 | 説明 |
---|---|
Frame | Frame 時間とは、ゲームの 1 フレームを生成するのにかかる合計の時間数です。フレームを完了する前に Game スレッドと Draw スレッドの両方が同期されるため、多くの場合、Frame 時間はこれらのいずれかのスレッドで表示される時間に近くなります。 |
Game | Frame 時間が Game 時間に近い場合、Game スレッドがボトルネックとなり、ゲームのパフォーマンスに悪影響を及ぼす可能性が高くなります。 |
Draw | Frame 時間が Draw 時間に近い場合、Rendering スレッドがボトルネックとなり、ゲームのパフォーマンスに悪影響を及ぼす可能性が高くなります。 |
GPU | GPU 時間では、ビデオ カードによるシーンのレンダリングにかかる時間を測定します。GPU 時間はフレームに同期されるため、Frame 時間に近くなる傾向があります。 |
RHIT | 通常、RHI Thread 時間はフレームに同期されるため、Frame 時間に近くなる傾向があります。 |
DynRes | サポートされる場合 (さらに有効になっている場合) は、 Dynamic Resolution により、Primary Screen Percentage (プライマリ スクリーン比率) と Secondary Screen Percentage (セカンダリ スクリーン比率) が表示されます。 |
使用方法
プロジェクトのボトルネックを調べるには、非デバッグ ビルドでゲームを起動して、PIE コンソール に「stat unit
」と入力します。