BLOGブログ

2014.12.25UE4/Debug

[UE4] コンソールコマンドの使い方&よく使うコマンド一覧

改訂バージョン: Unreal Engine 4.19

コンソールコマンドとは

UE4にはコンソールコマンドと呼ばれる、テキストでコマンドを打ち込みゲームの挙動を変化させる機能があります。これを使いこなせば、通常のエディターのメニューに無いとてもたくさんの機能を使うことが出来ます。特にデバッグに便利な機能ですが、あまりまとまったドキュメントにはなっていないので、今回はヒストリア社内Wiki(Confluence)にあるコマンド集を大公開しちゃいます!

※一部古い情報があるかもしれません。

 


 コンソールコマンドの用途

コンソールコマンドの用途には、主に次のようなものがあります。

1. デバッグ用情報を画面上にUIとして表示
↓例: stat fps / stat unit / stat unitgraph。いまどのくらい処理時間がかかっているかを表示する。

↓例: stat particles。パーティクルの統計情報。いまどのくらい出ていて、どのくらい処理がかかっているのかを表示。

2. デバッグ用に描画を変更する
↓例: show bounds。各Actorのバウンディングボックスの表示。

3. デバッグ用に動きを切り替える
↓例: ToggleDebugCamera。デバッグ用のカメラを自由に動かせる。また、画面中央にあるActorやマテリアルの情報も表示。

4. ゲーム中の処理を行う(例: RestartLevel)

5. エディターの挙動を変更する(例: culture=ja)

 


 コマンドを打ち込む方法

コマンドを入力する方法にはいくつか方法が存在します。主な方法は次の4つです。1番と2番はよく使うので覚えておきましょう。

1. OutputLog(出力ログ)ウィンドウから打ち込む
↓手順1: Output Log(出力ログ)ウィンドウを表示する。

↓手順2: 出てきたウィンドウの一番下に入力する。

2. ゲーム実行中にConsole Keyを押すと出現する入力欄に打ち込む
↓手順1: プロジェクト設定->入力->Console->Console Keysでキーを追加。
デフォルトで「`」が割り当たっているが、日本語キーボードだと打つことが出来ないため、「@」キーを追加しておく。
他のキーでも良いが、UE3時代からの風習を踏襲するのであれば「@」がオススメ。

↓手順2: ゲーム実行中に「@」キーを押すとこのようにコマンドを打ち込む欄が表示される。

3. BlueprintのExecute Console Commandノードから入力する

4. C++から入力する
次の方法でC++からもコマンドを送れる。PCはPlayerController。

PC->ConsoleCommand(<Command>, true);

 よく使うコマンド一覧

特に使うものは赤字にしてあります。
一部ブラウザ上で改行されているコマンドがありますが、スペース区切り、1行で打ち込んでください。

 Basic

DumpConsoleCommands コンソールコマンド一覧をOutput Logに出力する。すべてのコマンドが出力されるわけではないので注意。

操作

Open <LevelName(MapURL)> 以前の設定を維持したまま、指定したレベルを開く。 (Persistent Levelの読み替え)
以前の設定とは何のこと? 要検証。
Travel <LevelName(MapURL)> すべての設定をリセットし、指定したレベルを開く。(Persistent Levelの読み替え)
RestartLevel 現在のレベルを再読み込み。
slomo <PlayRate> スローモーション/早送りにする ex. slomo 0.5
quit もしくは exit ゲームを終了する

 一般的なDebug系コマンド

getall <Class name> <Property name> 対象クラスのプロパティをOutputLogウィンドウに一欄で出力する。
obj list OutputLogウィンドウに各オブジェクトの数と使用メモリ量を出力する。

周回プレイのメモリリーク(オブジェクト数の増加)チェックに使える。

DisableAllScreenMessages 2Dスクリーン上のデバッグ表示を無効化
stat levels 現在読み込まれているLevelの表示。読み込みにかかった時間も表示される。

緑:Unload状態

赤:Load状態

ViewMode <ViewModeName> 描画の仕方を切り替える。実行中にしか効かない?

ViewModeNameには以下のものがある。

Lit / Unlit / Wireframe / LightingOnly / ShaderComplexityなど

ToggleDebugCamera ゲーム中のカメラを離れ、デバッグ用の別カメラに切り替える。

同時に注視点のアセットの情報を画面に表示する。

log list ログ出力のカテゴリー一欄を表示する
log <category> <level> categoryのログ出力レベルを変更する。
<ログレベル一欄>
NoLogging
Fatal
Error
Warning
Display
Log
Verbose
VeryVerbose
All<便利コマンド>
log LogStreaming Verbose  <-アセットのロード関連のログをすべて出力
ce <EventName> 表示されている全レベルの、<EventName>のカスタムイベントを呼び出す。
KismetEvent <Object名 or *> <EventName> Blueprintのイベントを直接呼ぶことが出来る。<Object名>を指定する場所には「*」を指定すると、全BPに飛ばせる。

省略形:ke <Object名 or *> <EventName>

 

Memory

stat MemoryPlatform 総合的な現在のメモリ使用量と残り量の表示
stat MemoryAllocator
stat Memory
stat MemoryStaticMesh
stat ParticleMem
stat SceneMemory
mem Detailed ログにメモリの使用状況をまとめて出力する
memreport (-full) メモリ状況をSaved/Profiling/MemReportsフォルダ以下にファイルとして出力する。拡張子はmemreportだが、ただのテキスト。
rhi.DumpMemory RHIリソースメモリのダンプ。すべての項目がmem Detailedに含まれている?

rhi: Render Hardware Interface

 

Performance(共通)

stat fps 画面上にFPSを表示
stat unit 画面上にGameスレッド、Drawスレッド、GPUスレッドの1フレームあたりの所要時間を表示
stat unitgraph stat unitの内容をグラフで表示
stat Raw stat unitgraphの内容をフィルタリングせずに、生データを使用するようにする
stat hitches ヒッチを検知してログに出力する
stat dumphitches ヒッチ時にログに対してダンプする。デフォルトでは75ms以上だが、「t.HitchThreshold 0.075」とすることで値を変更できる
stat game 全体的なTick時間をいくつかの項目に分類して表示。Navi Tick Time / Net Tick Time / Post Tick Component Update / World Tick Time etc…
StartFPSChart / StopFPSChart Saved/Profiling/FPSChartStats以下にFPS情報のログを出力する。出力されるCSVを使うことでグラフ化も出来る。

 

Performance(CPU Time)

stat startfile / stat stopfile ※Session Frontendが使える状況では、Session Frontendから同様の操作が可能。

startからstopまでの間のプロファイル結果をファイルにue4stats形式で出力する。

Output Logに出力パスが表示される。

出力されたファイルは、Session Frontend(EditorからWindow→Developer Tools→Session Frontend)のProfilerタブで見ることができる。

おそらくUFUNCTIONになっている関数がプロファイル対象だが、C++のコード中にQUICK_SCOPE_CYCLE_COUNTERマクロを仕込むと、ピンポイントでプロファイル出来る。

ここもあわせて読みたい。公式ドキュメント:CPU Profiling

 

Performance(GPU Time)

ProfileGPU GPUのstats情報をグラフで表示。また、Output Logウィンドウにもプロファイル結果がテキストで表示される。

Ctrl+Shift+,(カンマ)にショートカットが割り当てられている。

stat SceneRendering Draw call etc…
stat Cnvas
stat LightRendering
stat ShadowRendering
stat Particles
ViewMode ShaderComplexity Viewport上でShader負荷がかかっているところを赤く表示する
show <ElementName> ↓ElementNameには 以下の項目が使える。

AmbientOcclusion
AntiAliasing
Bloom
Decals
DeferredLighting
DirectionalLights
PointLights
SpotLights
DynamicShadows
GlobalIllumination
LightFunctions
Particles
PostProcessing
ReflectionEnvironment
Refraction
Rendering
ScreenSpaceReflections
Landscape
Brushes
StaticMeshes
SkeletalMeshes
ShadowFrustums
(↑動的な影を生成しているフラスタムを表示。EditorViewportのShow->Advanced->Shadow Frustumsでも表示できる)
Landscape
Translucency
Tessellation

 

※他にもある。「show」だけ入力したときにログウィンドウに一覧が表示される

※Pauseをかけて、いろいろShowコマンドで表示/非表示を行うと、何が原因で重くなっているかわかりやすい。

ここもあわせて読みたい。公式ドキュメント:GPU Profiling

 

Maniac

ParticleSystemAudit Particleの監視?
culture=[CultureID] エディタ(?)の地域/言語設定を即座に変更する。

CultureIDには北米/英語なら”en”、日本/日本語なら”ja”。

 

Tips

  • stat系はStats2.hを見ると何があるか分かる。
  • コンソールコマンドの処理はソースコードのいくつかの場所に散っている。「”コマンド名”」で検索すると結構出てくる。
  • 公式ドキュメント:Stat Commands
  • 公式ドキュメント:Performance and Profiling
  • 公式ドキュメント:CPU Profiling
  • 公式ドキュメント:GPU Profiling
  • [UE4] コンソールコマンドを追加する方法
  • Console Commandの類似として、「r.~」などのConsole Variablesというものがある。それらは「r.xxx=1」と、スペースでなくイコールで繋いで指定する。(上記のcultureコマンドは正確にはこっちの分類)