関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2014.12.25UE4UE/ Debug
改訂バージョン: 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. ゲーム実行中にConsole Keyを押すと出現する入力欄に打ち込む
↓手順1: プロジェクト設定->入力->Console->Console Keysでキーを追加。
デフォルトで「`」が割り当たっているが、日本語キーボードだと打つことが出来ないため、「@」キーを追加しておく。
他のキーでも良いが、UE3時代からの風習を踏襲するのであれば「@」がオススメ。
↓手順2: ゲーム実行中に「@」キーを押すとこのようにコマンドを打ち込む欄が表示される。
3. BlueprintのExecute Console Commandノードから入力する
4. C++から入力する
次の方法でC++からもコマンドを送れる。PCはPlayerController。
PC->ConsoleCommand(<Command>, true); |
特に使うものは赤字にしてあります。
一部ブラウザ上で改行されているコマンドがありますが、スペース区切り、1行で打ち込んでください。
DumpConsoleCommands | コンソールコマンド一覧をOutput Logに出力する。すべてのコマンドが出力されるわけではないので注意。 |
Open <LevelName(MapURL)> | 以前の設定を維持したまま、指定したレベルを開く。 (Persistent Levelの読み替え) 以前の設定とは何のこと? 要検証。 |
Travel <LevelName(MapURL)> | すべての設定をリセットし、指定したレベルを開く。(Persistent Levelの読み替え) |
RestartLevel | 現在のレベルを再読み込み。 |
slomo <PlayRate> | スローモーション/早送りにする ex. slomo 0.5 |
quit もしくは exit | ゲームを終了する |
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> |
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 |
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を使うことでグラフ化も出来る。 |
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
ここもあわせて読みたい。公式ドキュメント:GPU Profiling
ParticleSystemAudit | Particleの監視? |
culture=[CultureID] | エディタ(?)の地域/言語設定を即座に変更する。
CultureIDには北米/英語なら”en”、日本/日本語なら”ja”。 |