Console Variable (CVar)
Console Variable (CVar) は、Unreal Engine の設定値を開発コンソールから動的に変更・取得できる変数です。主にデバッグ、パフォーマンス調整、レンダリング設定(LumenやNaniteなど)の切り替えに利用されます。
厳密には以下の2種類に大別されますが、利用方法はほぼ同じであるため、便宜上まとめて「コンソールコマンド」と呼ばれることが多いです。
- Console Variables (コンソール変数):
r.Tonemapper.Sharpen 1のように数値を設定して挙動を変えるもの。「r.」で始まるレンダリング設定などが代表的。 - Console Commands (コンソールコマンド):
Stat FPSのように実行して特定の機能(デバッグ情報の表示など)を呼び出すもの。
利用方法
エディタやプレイ中の入力
- エディタ下部の Cmd 欄: エディタ画面下部にある「Cmd」入力欄にコマンドを入力し、Enterキーで実行できます。
- プレイ中のコンソール: プレイ中(PIE)に特定のキーを押すことで入力ウィンドウを開けます。日本語キーボードのデフォルトでは、数字キー
0の2つ右にある 「へ」 のキーなどが割り当てられています。 - Output Log: アウトプットログウィンドウからも入力可能です。
r.Tonemapper.Sharpen ?のように?を付けて実行すると、そのコマンドのヘルプや現在の値を確認できます。
ブループリント (BP) での実行
- Execute Console Command ノード: BP から
Execute Console Commandノードを使用することで、ゲームプレイ中に動的に設定を変更できます。Command ピンに実行したい文字列を入力します。
設定の保存 (恒久化)
コンソールで入力した変更はエディタを再起動するとリセットされます。設定を永続化したい場合は、プロジェクトの Config フォルダにある DefaultEngine.ini ファイルに記述します。
- 記述形式:
[セクション名]の下に変数名=値で記述します(コマンドラインとは異なり=が必要です)。- 例:
[/Script/Engine.RendererSettings]の下にr.Tonemapper.Sharpen=10と記述。
- 例:
- Read Only: 一部の変数は実行中に変更できず、
.iniファイルでの設定と再起動が必要なものがあります(例:r.Nanite.AllowTessellationなど
Console Variables Editor プラグイン
UE5からは、これら多数のコンソール変数を一元管理できる Console Variables Editor プラグインが標準で用意されています。これにより、毎回コマンドを入力する手間が省け、GUIで値を調整できるようになります。
主な機能
- 変数のリスト管理: 頻繁に使用する変数をリストに追加し、現在の値(Current Value)、プリセット値、起動時の値(Startup Value)を確認・編集できます。
- プリセット (Collection): 登録した変数のセットを「Console Variable Collection」というアセットとして保存できます。これにより、用途ごとの設定(例: 「高品質レンダリング設定」「軽量化設定」)を切り替えたり、チーム内で共有したりすることが可能です。
- スライダー操作: 数値型の変数はスライダーで直感的に調整可能です。
- マルチユーザー対応: Multi-User Editing セッションにおいて、他のユーザーと変数の変更を同期させることができます。
- 検索機能: 膨大なコマンドの中から、名前やヘルプテキストを元に検索できます。「Global Search」を使えば、まだリストに追加していない全エンジン変数を検索可能です。
利用手順
- プラグインの有効化:
Console Variables Editorプラグインを有効にし、エディタを再起動します。 - ウィンドウを開く: メインメニューの
Window>Console Variablesを選択します。 - 変数の追加:
(+) Add Console Variableからコマンドを検索してリストに追加します。 - プリセットの保存: 右上の
Presetsから設定をアセットとして保存します
Console Variable Collection
複数のコンソール変数とその設定値をひとまとめにして保存・管理できるアセットファイルです。
Console Variables Editor プラグインの機能で、これを利用することで、プロジェクトの状況に応じた設定の「プリセット」を簡単に切り替えたり、チーム内で共有したりすることが可能になります。
概要
- 機能: 複数のコンソールコマンド(CVar)とそれぞれの設定値(Value)を1つのアセットとして保存します。
- アセット形式: コンテンツブラウザ上では
Console Variable Collectionという種類のアセットとして扱われます。 - 主な用途:
- 画質プリセットの切り替え: 「シネマティック用(高画質)」「ゲームプレイ確認用(軽量設定)」などを瞬時に切り替える。
- デバッグ設定の共有: 特定のバグ再現に必要な設定や、レンダリング機能(LumenやNanite)のデバッグ表示設定をチームメンバーに配布する。
- Multi-User Editing: マルチユーザーセッションにおいて、参加者全員の設定を同期させる。
作成と基本操作
このアセットは以下の2通りの方法で作成・保存できます。
- Console Variables Editor ウィンドウから: - エディタ上で必要な変数をリストに追加し、値を調整します。 - ウィンドウ右上の [Presets] ボタンをクリックし、[Save Preset] を選択すると、現在リストにある内容がアセットとして保存されます。
- コンテンツブラウザから:
- コンテンツブラウザで右クリックし、[Miscellaneous (その他)] > [Console Variable Collection] を選択して空のアセットを作成します。
- 作成したアセットをダブルクリックすると Console Variables Editor が開き、変数を追加・編集できます。
レベルごとの自動適用 (Editor Utility Blueprint)
「特定のレベルを開いた瞬間に、そのレベル専用の Console Variable Asset を自動的に適用する」 という仕組みを構築できます。
これは標準機能だけでは実現できませんが、Editor Utility Blueprint を利用することで実装可能です。情報源にある手法の概要は以下の通りです。
- レベル用のアセットを用意: - 各レベルに必要な設定を保存した Console Variable Asset を作成します。
- EUBP でイベントを検知: - 「Editor Utility Blueprint」を作成し、エディタ起動時(Run on Start-up)に実行されるように設定します。 - OnMapOpened などのイベントをバインドし、レベルが開かれたことを検知できるようにします。
- アセットのロードと実行: - レベルが開かれた際、そのレベル名に対応する Console Variable Asset をロードし、コマンドを実行する処理をBPで記述します。 - 重要: 設定されていないレベルを開いた際は、設定をデフォルトに戻す(リセットする)処理も組み込むことで、設定の意図しない残留を防げます。
DefaultEngine.ini との違い
これまでの DefaultEngine.ini への記述と比較すると、以下のようなメリットがあります。
| 特徴 | DefaultEngine.ini | Console Variable Asset |
|---|---|---|
| 適用タイミング | エディタ/ゲーム起動時 | 任意 (クリック時、イベント時) |
| 変更の容易さ | 書き換えて再起動が必要 | エディタ上で即座に反映・編集可能 |
| 管理単位 | プロジェクト全体で1つ | 用途ごとに複数作成可能 |
| 共有 | ファイル配布やバージョン管理 | アセットとしてバージョン管理可能 |
このように、Console Variable Asset は、従来の手法よりも柔軟かつ動的な設定管理を可能にする強力なツールです。特にレンダリング設定が複雑化しているUE5においては、デバッグ効率を上げるために活用できます。