コマンドライン引数

エンジンの実行可能ファイルにパスし、エンジンの起動時の実行方法をカスタマイズできる引数です。

Unreal Engine の コマンドライン引数 は、追加の起動パラメータ とも呼ばれ、エンジンの起動時の実行方法をカスタマイズします。コンソール コマンド と同様に、コマンドライン引数は、プロジェクトのテストおよび最適化に有効なツールとして利用できます。その設定の範囲は、Unreal Editor をフルエディタ モードではなくインゲーム モードで実行するよう強制するなどの高度な操作から、ゲーム内で特定の解像度およびフレームレートで特定のマップを選択して実行するなど、より詳細なオプションを選択することにまで及びます。

コマンドライン引数をパスする

Unreal Engine プロジェクトまたは実行可能ファイルにコマンドライン引数をパスする一般的な方法は、3 つあります。これらの方法は、以下に示す、プロジェクトの異なる実行方法に対応しています。

コマンドラインから

コマンドラインから、コマンドライン引数を実行可能ファイルに追加するための一般的な構文は次のとおりです。

<EXECUTABLE> [URL_PARAMETERS] [ARGUMENTS]

構成要素

  • EXECUTABLE は、実行可能ファイルの名前です。

    • 例:UnrealEditor.exeMyGame.exe

  • URL_PARAMETERS は、任意のオプションの URL パラメータ です。

    • 例:MyMap/Game/Maps/BonusMaps/BonusMap.umap?game=MyGameMode

  • ARGUMENTS には、追加のオプションのコマンドライン フラグ または キー/値のペア が含まれます。

    • 例:-log-game-windowed-ResX=400 -ResY=620

たとえば、次の入力は、Windows で MyGameMode ゲーム モードのフルスクリーンで MyGame プロジェクトを BonusMap で実行します。

UnrealEditor.exe MyGame.uproject /Game/Maps/BonusMaps/BonusMap.umap?game=MyGameMode -game -fullscreen

エディタから

Unreal Editor は、コマンドライン引数を使用したスタンドアローン ゲームのカスタマイズをサポートしています。Unreal Editor では、コマンドライン引数は 追加の起動パラメータ と呼ばれます。追加の起動パラメータは Play in Standalone Game (スタンドアローン ゲームでプレイ) モードでのみサポートされます。Unreal Editor では、マルチプレイヤー ゲームをテストするために個別の特定の専用サーバーにパスされるコマンドライン引数もサポートされます。個別のサーバーへのコマンドライン引数は、Unreal Editor の次の 3 つの異なる場所にパスされます。

  • Server Map Name Override (サーバー マップ名のオーバーライド):ここでは、マップ名を URL パラメータとしてパスできます。

  • Additional Server Game Options (追加のサーバー ゲーム オプション):ここでは、追加の URL パラメータをパスできます。

  • Additional Server Launch Parameters (追加のサーバー起動パラメータ):ここでは、その他の追加コマンドライン フラグまたはキー/値のペアをパスできます。

Additional Launch Parameters

追加の起動パラメータは、Unreal Editor の [Editor Preferences (エディタの環境設定)] でカスタマイズします。

ゲーム引数

Unreal Editor 内から起動されるスタンドアローン ゲームにコマンドライン引数をパスするには、次の手順に従います。

  1. [Edit (編集)] > [Editor Preferences] に移動します。[Editor Preferences] というタイトルのタブに新しいウィンドウが開きます。

  2. 左側で、[Level Editor (レベル エディタ)] > [Play (プレイ)] を選択します。

  3. 右側で、[Play in Standalone Game] というタイトルのセクションを見つけます。

  4. このセクションには、追加の起動パラメータ のためのテキストボックスがあります。ここに、コマンドライン引数を貼り付けます。次に、これらの追加のパラメータは、コマンドライン引数としてスタンドアローン ゲームにパスできます。

サーバー引数

[Launch Separate Server (別のサーバーを起動)] をオンにし、[Run Under One Process (1 つのプロセス下で実行)] を無効にした場合は、[Server Map Name Override][Additional Server Game Options][Additional Server Launch Parameters] を指定できます。Unreal Editor 内から起動されるサーバーにコマンドライン引数をパスするには、次の手順に従います。

  1. [Edit (編集)] > [Editor Preferences] に移動します。[Editor Preferences] というタイトルのタブに新しいウィンドウが開きます。

  2. 左側で、[Level Editor] > [Play] を選択します。

  3. 右側で、[Multiplayer Options (マルチプレイヤー オプション)] というタイトルのセクションを見つけます。

  4. 次の手順をまだ実行していない場合は、このセクション内から実行します。

    1. [Launch Separate Server] を有効にします。

    2. [Run Under One Process] を無効にします。

  5. [Multiplayer Options] > [Server] に移動します。

  6. このセクションには、専用サーバーに異なるタイプのコマンドライン引数を指定できる [Server Map Name Override][Additional Server Game Options]、および [Additional Server Launch Parameters] という 3 つのテキスト ボックスがあります。

    1. [Server Map Name Override] テキスト ボックスを使用し、マップ名URL パラメータとしてパスします。

    2. [Additional Server Game Options] テキスト ボックスを使用し、追加の URL パラメータ をパスします。

    3. [Additional Server Launch Parameters] テキスト ボックスを使用し、追加のコマンドライン引数をパスします。

追加のサーバー起動パラメータは、[Launch Separate Server] を選択し、[Run Under One Process] を無効にした場合にのみ、利用できます。[Run Under One Process] を無効にすると、各クライアントで Unreal Editor の個別のインスタンスがスポーンするため、クライアントの実行速度が低下します。

実行可能ファイルから

実行可能ファイルのショートカットにコマンドライン引数をパスするには、次の手順に従います。

  1. 実行可能ファイルのショートカットを作成します。

  2. このショートカットを右クリックして、[Properties (プロパティ)] を選択します。

  3. [Shortcut (ショートカット)] セクションで、コマンドライン引数を [Target (ターゲット)] フィールドの末尾に追加します。

  4. このショートカットを実行すると、ショートカットが指す元の実行可能ファイルにコマンドライン引数がパスされます。

独自のコマンドライン引数を作成する

Unreal Engine には、コマンドラインをパースするための便利な C++ 関数がいくつか用意されています。他のコマンドライン引数と同様に、目的のフラグまたはキー/値のペアをコマンドラインにパスすることで、独自のコマンドライン引数を作成できます。パスしたコマンドライン引数を使用するには、コード内のコマンドラインからそれらを読み取る必要があります。プロジェクトのコードでカスタム仕様のコマンドライン引数の読み取りとパースが行われない場合、その引数は無視されます。

フラグ

フラグは、コマンドラインでの存在の有無によって設定のオンとオフを切り替えるスイッチです。たとえば、次のようになります。

UnrealEditor.exe MyGame.uproject -game

この例では、-game 引数は、コマンドラインに存在することでゲーム モード内で Unreal Editor 実行可能ファイルに MyGame を実行するように指示しているため、フラグです。

フラグをパースする

コマンドラインからフラグをパースするには、FParse::Param 関数を使用します。

たとえば、次のようにコマンドラインを介し、ブールのフラグである -myflag を実行可能ファイルにパスしたいとします。

UnrealEditor.exe MyGame.uproject -myflag

このフラグは、プロジェクト内で次のコードを使用し、存在するかどうかをチェックできます。

bool bMyFlag = false;
if (FParse::Param(FCommandLine::Get(), TEXT("myflag")))
{
    bMyFlag = true;
}

-myflag がコマンドラインに存在する場合、bMyFlag の値は true です。-myflag がコマンドラインに存在しない場合、bMyFlag の値は false です。

キー/値のペア

キー/値のペアは、特定のスイッチの値の指定を切り替える設定です。スイッチの存在に加えて、スイッチの設定が入力される必要があります。たとえば、次の例のようになります。

UnrealEditor.exe MyGame.uproject -game -windowed -ResX=1080 -ResY=1920

引数 -ResX=1080-ResY=1920 は、各スイッチが設定を伴っている必要があるため、キー/値のペアです。具体的には、これらのキー/値のペアは、Unreal Editor の実行可能ファイルに特定の解像度で実行するように指示します。

キー/値のペアをパースする

キー/値のペアをパースするには、FParse::Value 関数を使用します。

たとえば、次のようにコマンドラインを介し、キー/値のペアである -mykey=42 を実行可能ファイルにパスしたいとします。

UnrealEditor.exe MyGame.uproject -mykey=42

このキー/値のペアは、次のコードを使用してパースできます。

int32 myKeyValue;
if (FParse::Value(FCommandLine::Get(), TEXT("mykey="), myKeyValue))
{
    // プログラムがこの「if」文を入力した場合、mykey がコマンドラインに存在していたことになります
    // myKeyValue には、コマンドラインを介してパスした値を含んでいます
}

-mykey=42 がコマンドラインに存在する場合、myKeyValue の値は 42 です。-mykey=42 がコマンドラインに存在しない場合、myKeyValue の値は設定されません。

コマンドラインでインタラクト可能な関数の詳細については、Engine\Source\Runtime\Core\Public\MiscCommandLine.h を参照してください。

コマンドラインからエンジンのコンフィギュレーションをカスタマイズする

エンジンのコンフィギュレーションは、エンジン コンフィギュレーションの .ini ファイルに通常設定されます。コマンドラインからエンジンのコンフィギュレーションをカスタマイズすることもできます。詳細については、コンフィギュレーション ファイルのドキュメントを参照してください。

コマンドラインからコンソール コマンドをカスタマイズする

コンソール コマンドは、Unreal Editor のコンソールから通常実行されます。コマンドラインからコンソール コマンドをカスタマイズすることもできます。詳細については、コンソール変数のドキュメントを参照してください。

コマンドライン引数のリファレンス

URL パラメータ

URL パラメータは、ゲームの起動時に特定のマップをロードすることを強制します。URL パラメータはオプションですが、入力した場合は実行可能ファイルの名前またはモード フラグ (存在する場合) にすぐに従う必要があります。

URL パラメータは、次の 2 つの部分で構成されます。

マップ名

マップ名は、「Maps」ディレクトリ内にある任意のマップを参照できます。オプションで、.umap ファイル拡張子を含めることができます。「Maps」ディレクトリ内にないマップをロードするには、絶対パスを使用するか、「Maps」ディレクトリに対する相対パスを使用する必要があります。この場合は、.umap ファイル拡張子が必要です。

サーバー IP アドレス

サーバー IP アドレスを URL パラメータとして使用し、ゲーム クライアントを専用サーバーに接続することができます。

追加のパラメータ

パラメータをマップ名またはサーバー IP アドレスに追加することで、追加のパラメータ オプションを指定できます。各オプションは、? (疑問符) であらかじめ確認し、 = (等号または代入) を使用して設定できます。オプションの前に - (ダッシュ) を付けると、キャッシュされた URL オプションからそのオプションが削除されます。

「Maps」ディレクトリ内にあるマップを使用してゲームを開く
MyGame.exe MyMap
「Maps」ディレクトリ外にあるマップを使用してゲームを開く
MyGame.exe /Game/Maps/BonusMaps/BonusMap.umap
Unreal Editor の「Maps」ディレクトリ外にあるマップを使用してゲームを開く
UnrealEditor.exe MyGame.uproject /Game/Maps/BonusMaps/BonusMap.umap?game=MyGameMode -game
ゲーム クライアントを専用サーバーに接続する

プロジェクト MyGame があり、/Game/Maps/BonusMaps/ 内のマップ BonusMap.umap を使用してサーバーを稼働したいとします。

次のようにして、専用サーバーを稼働し、クライアントをローカルに接続することができます。

UnrealEditor.exe MyGame.uproject /Game/Maps/BonusMaps/BonusMap.umap -server -port=7777 -log
UnrealEditor.exe MyGame.uproject 127.0.0.1:7777 -game -log

この例の引数は、以下のとおりです。

  • サーバー

    • MyGame.uprojectMyGame プロジェクトを実行します。

    • /Game/Maps/BonusMaps/BonusMap.umap:ゲーム内で BonusMap を開きます。これは URL パラメータ です。

    • -server:エディタを専用サーバーとして実行します。

    • -port=7777:ポート 7777 を使用し、クライアントの接続をリッスンします。これは Unreal Engine のサーバーのデフォルト ポートです。

    • -log:サーバーのアクティビティを監視できるようにサーバー ログを表示します。

  • ゲーム クライアント

    • MyGame.uprojectMyGame プロジェクトを実行します。

    • 127.0.0.1:7777:IP アドレス 127.0.0.1 にポート 7777 経由で接続します。これは、サーバー IP アドレスです。

    • -game:エディタをゲーム クライアントとして実行します。

    • -log:クライアントのアクティビティを監視できるようにゲーム クライアントのログを表示します。

フラグおよびキー/値のペア

このセクションには、コマンドライン引数をパスする方法についてまとめたセクションのいずれかの方法を使用し、Unreal Engine の実行時に利用できる、役に立つコマンドライン引数のリファレンスを掲載しています。

ファイルからコマンドライン引数を読み取る

場合によっては、非常に多くのコマンドライン引数を使用したり同じ引数のセットを再利用したりしなければならないことがあります。利用しやすいように、テキスト ファイルにコマンドライン引数を保存し、このファイルをコマンドラインでパスすることができます。これは、テスト中に Windows のコマンドラインの長さの制限に到達した場合にも便利です。

コマンドライン引数を含むテキスト ファイルをパスするための構文は、次のとおりです。

<EXECUTABLE> -CmdLineFile=ABSOLUTE\PATH\TO\FILE.txt

MyCmdLineArgs.txt」という名前のファイルをディレクトリ「D:\UnrealEngine」に保存していて、それを「UnrealEditor.exe」にパスする場合、次のコマンドによってこれを行うことができます。

UnrealEditor.exe -CmdLineFile=D:\UnrealEngine\MyCmdLineArgs.txt

役に立つコマンドライン引数

全般

名前

フラグまたはキー/値のペア

説明

-log

フラグ

クライアントまたはサーバーの実行中にログ ウィンドウを表示します。

-game

フラグ

ゲーム クライアントを起動するためのモード フラグ。

-server

フラグ

専用サーバーを起動するためのモード フラグ。

-newconsole

フラグ

専用サーバー用のコンソール コマンドを実行するためのコンソールへのアクセス権を持つウィンドウにサーバー ログをラップします。

-notimeouts

フラグ

クライアント ターゲットの行で使用し、サーバーへの接続試行中にクライアントのタイムアウトを防ぎます。

-windowed

フラグ

ウィンドウ モードでクライアントを起動します。-ResX=<HORIZONTAL_RES> -ResY=<VERTICAL_RES> と組み合わせて使用します。

-fullscreen

フラグ

フルスクリーン モードでクライアントを起動します。

-ResX=<HORIZONTAL_RES> -ResY=<VERTICAL_RES>

キー/値のペア

クライアントの水平 (X) および垂直 (Y) の解像度サイズを指定します。例:-ResX=1920 -ResY=1080

レンダリングおよび GPU

名前

フラグまたはキー/値のペア

説明

-d3d11

フラグ

DirectX 11 RHI でエディタを実行します。

-d3d12

フラグ

DirectX 12 RHI でエディタを実行します。

-vulkan

フラグ

Vulkan RHI でエディタを実行します。

-D3Ddebug

フラグ

DirectX RHI で非表示の問題および詳細なログを公開するためのデバッグ レイヤー。

-VulkanDebug

フラグ

Vulkan RHI で非表示の問題および詳細なログを公開するためのデバッグ レイヤー。

-gpuCrashDebugging

フラグ

DirectX 12 で Aftermath のログを NVIDIA GPU で有効にするか、または AMD と NVIDIA の両方の Vulkan で同等のログを有効にします。

-rhiValidation

フラグ

低レベルの RHI の問題を取得するために RHI レイヤーの上部に固定されるデバッグ レイヤー。すべてのプラットフォームで有効ですが、テスト ビルドおよびシッピング ビルド コンフィギュレーションでは利用できません。

-DumpGPU

フラグ

現在のフレームの内部リソースのすべてを、デバッグために調査できる形式のディスクにダンプします。レンダリングのクラッシュが発生すると、毎回これを行う必要があります。

-gpuValidation

フラグ

DirectX 12 および Vulkan 向け。インストルメンテーションをシェーダー コードに追加し、GPU での追加の検証を通じてハングについての詳細情報を提供します。

-ForceRHIBypass

フラグ

-NoRHIThread と組み合わせて使用します。RHI の呼び出しは、後から実行するためにキューに入れられるのではなく、インラインで実行されます。

-NoRHIThread

フラグ

ForceRHIBypass と組み合わせて使用します。個別の RHI スレッドのキューに入れられるのではなく、レンダリング スレッドで実行中の RHI の呼び出しを使用し、実行されます。

-noshaderworker

フラグ

分散シェーダー コンパイルを使用せずにエディタを実行します。1 つずつシェーダーの問題を分離するため、一度に 1 つのシェーダーがコンパイルされます。これは、ランタイム時に大幅な速度低下を引き起こします。

-ddc=NoShared

キー/値のペア

派生データキャッシュ (DDC) のコンパイル済みバイナリ情報を利用することなくエディタを実行します。これには、ネットワークの DDC にキャッシュされた情報、キャッシュされたアニメーション、マテリアル、テクスチャ、マテリアル関数などが含まれます。

-ddc=cold

キー/値のペア

ローカルの DDC も無視されること以外は、-ddc=NoShared と同じです。DDC の問題をテストによって診断またはルールで除外する場合に役立ちます。

-logcmds="LogDerivedDataCacheVerbose"

キー/値のペア

より詳細な DDC ロギングを提供します。

CPU およびメモリ

名前

フラグまたはキー/値のペア

説明

-StompMAlloc

フラグ

後続のメモリ割り当てがすでに使用中のメモリ アドレスを上書きしないようにチェックします。

Debugging

名前

フラグまたはキー/値ペア

説明

-DebugCoreRedirects

フラグ

コア リダイレクトの問題を特定するための追加情報を UE ログに追加。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル