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」を使えば、まだリストに追加していない全エンジン変数を検索可能です。

利用手順

  1. プラグインの有効化: Console Variables Editor プラグインを有効にし、エディタを再起動します。
  2. ウィンドウを開く: メインメニューの Window > Console Variables を選択します。
  3. 変数の追加: (+) Add Console Variable からコマンドを検索してリストに追加します。
  4. プリセットの保存: 右上の Presets から設定をアセットとして保存します

Console Variable Collection

複数のコンソール変数とその設定値をひとまとめにして保存・管理できるアセットファイルです。

Console Variables Editor プラグインの機能で、これを利用することで、プロジェクトの状況に応じた設定の「プリセット」を簡単に切り替えたり、チーム内で共有したりすることが可能になります。

概要

  • 機能: 複数のコンソールコマンド(CVar)とそれぞれの設定値(Value)を1つのアセットとして保存します。
  • アセット形式: コンテンツブラウザ上では Console Variable Collection という種類のアセットとして扱われます。
  • 主な用途:
    • 画質プリセットの切り替え: 「シネマティック用(高画質)」「ゲームプレイ確認用(軽量設定)」などを瞬時に切り替える。
    • デバッグ設定の共有: 特定のバグ再現に必要な設定や、レンダリング機能(LumenやNanite)のデバッグ表示設定をチームメンバーに配布する。
    • Multi-User Editing: マルチユーザーセッションにおいて、参加者全員の設定を同期させる。

作成と基本操作

このアセットは以下の2通りの方法で作成・保存できます。

  1. Console Variables Editor ウィンドウから:  - エディタ上で必要な変数をリストに追加し、値を調整します。  - ウィンドウ右上の [Presets] ボタンをクリックし、[Save Preset] を選択すると、現在リストにある内容がアセットとして保存されます。
  2. コンテンツブラウザから:
    • コンテンツブラウザで右クリックし、[Miscellaneous (その他)] > [Console Variable Collection] を選択して空のアセットを作成します。
    • 作成したアセットをダブルクリックすると Console Variables Editor が開き、変数を追加・編集できます。

レベルごとの自動適用 (Editor Utility Blueprint)

「特定のレベルを開いた瞬間に、そのレベル専用の Console Variable Asset を自動的に適用する」 という仕組みを構築できます。

これは標準機能だけでは実現できませんが、Editor Utility Blueprint を利用することで実装可能です。情報源にある手法の概要は以下の通りです。

  1. レベル用のアセットを用意:  - 各レベルに必要な設定を保存した Console Variable Asset を作成します。
  2. EUBP でイベントを検知:  - 「Editor Utility Blueprint」を作成し、エディタ起動時(Run on Start-up)に実行されるように設定します。  - OnMapOpened などのイベントをバインドし、レベルが開かれたことを検知できるようにします。
  3. アセットのロードと実行:  - レベルが開かれた際、そのレベル名に対応する Console Variable Asset をロードし、コマンドを実行する処理をBPで記述します。  - 重要: 設定されていないレベルを開いた際は、設定をデフォルトに戻す(リセットする)処理も組み込むことで、設定の意図しない残留を防げます。

DefaultEngine.ini との違い

これまでの DefaultEngine.ini への記述と比較すると、以下のようなメリットがあります。

特徴DefaultEngine.iniConsole Variable Asset
適用タイミングエディタ/ゲーム起動時任意 (クリック時、イベント時)
変更の容易さ書き換えて再起動が必要エディタ上で即座に反映・編集可能
管理単位プロジェクト全体で1つ用途ごとに複数作成可能
共有ファイル配布やバージョン管理アセットとしてバージョン管理可能

このように、Console Variable Asset は、従来の手法よりも柔軟かつ動的な設定管理を可能にする強力なツールです。特にレンダリング設定が複雑化しているUE5においては、デバッグ効率を上げるために活用できます。

参考