Unreal Engine の コマンドライン引数 は、追加の起動パラメータ とも呼ばれ、エンジンの起動時の実行方法をカスタマイズします。コンソール コマンド と同様に、コマンドライン引数は、プロジェクトのテストおよび最適化に有効なツールとして利用できます。その設定の範囲は、Unreal Editor をフルエディタ モードではなくインゲーム モードで実行するよう強制するなどの高度な操作から、ゲーム内で特定の解像度およびフレームレートで特定のマップを選択して実行するなど、より詳細なオプションを選択することにまで及びます。
コマンドライン引数をパスする
Unreal Engine プロジェクトまたは実行可能ファイルにコマンドライン引数をパスする一般的な方法は、3 つあります。これらの方法は、以下に示す、プロジェクトの異なる実行方法に対応しています。
コマンドラインから
コマンドラインから、コマンドライン引数を実行可能ファイルに追加するための一般的な構文は次のとおりです。
<EXECUTABLE> [URL_PARAMETERS] [ARGUMENTS]
構成要素
EXECUTABLE
は、実行可能ファイルの名前です。- 例:
UnrealEditor.exe
、MyGame.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 (追加のサーバー起動パラメータ):ここでは、その他の追加コマンドライン フラグまたはキー/値のペアをパスできます。

追加の起動パラメータは、Unreal Editor の [Editor Preferences (エディタの環境設定)] でカスタマイズします。
ゲーム引数
Unreal Editor 内から起動されるスタンドアローン ゲームにコマンドライン引数をパスするには、次の手順に従います。
- [Edit (編集)] > [Editor Preferences] に移動します。[Editor Preferences] というタイトルのタブに新しいウィンドウが開きます。
- 左側で、[Level Editor (レベル エディタ)] > [Play (プレイ)] を選択します。
- 右側で、[Play in Standalone Game] というタイトルのセクションを見つけます。
- このセクションには、追加の起動パラメータ のためのテキストボックスがあります。ここに、コマンドライン引数を貼り付けます。次に、これらの追加のパラメータは、コマンドライン引数としてスタンドアローン ゲームにパスできます。
サーバー引数
[Launch Separate Server (別のサーバーを起動)] をオンにし、[Run Under One Process (1 つのプロセス下で実行)] を無効にした場合は、[Server Map Name Override]、[Additional Server Game Options]、[Additional Server Launch Parameters] を指定できます。Unreal Editor 内から起動されるサーバーにコマンドライン引数をパスするには、次の手順に従います。
- [Edit (編集)] > [Editor Preferences] に移動します。[Editor Preferences] というタイトルのタブに新しいウィンドウが開きます。
- 左側で、[Level Editor] > [Play] を選択します。
- 右側で、[Multiplayer Options (マルチプレイヤー オプション)] というタイトルのセクションを見つけます。
- 次の手順をまだ実行していない場合は、このセクション内から実行します。
- [Launch Separate Server] を有効にします。
- [Run Under One Process] を無効にします。
- [Multiplayer Options] > [Server] に移動します。
- このセクションには、専用サーバーに異なるタイプのコマンドライン引数を指定できる [Server Map Name Override]、[Additional Server Game Options]、および [Additional Server Launch Parameters] という 3 つのテキスト ボックスがあります。
- [Server Map Name Override] テキスト ボックスを使用し、マップ名 を URL パラメータ としてパスします。
- [Additional Server Game Options] テキスト ボックスを使用し、追加の URL パラメータ をパスします。
- [Additional Server Launch Parameters] テキスト ボックスを使用し、追加のコマンドライン引数をパスします。
追加のサーバー起動パラメータは、[Launch Separate Server] を選択し、[Run Under One Process] を無効にした場合にのみ、利用できます。[Run Under One Process] を無効にすると、各クライアントで Unreal Editor の個別のインスタンスがスポーンするため、クライアントの実行速度が低下します。
実行可能ファイルのショートカットから
実行可能ファイルのショートカットにコマンドライン引数をパスするには、次の手順に従います。
- 実行可能ファイルのショートカットを作成します。
- このショートカットを右クリックして、[Properties (プロパティ)] を選択します。
- [Shortcut (ショートカット)] セクションで、コマンドライン引数を [Target (ターゲット)] フィールドの末尾に追加します。
- このショートカットを実行すると、ショートカットが指す元の実行可能ファイルにコマンドライン引数がパスされます。
独自のコマンドライン引数を作成する
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\Misc
の CommandLine.h
を参照してください。
コマンドラインからエンジンのコンフィギュレーションをカスタマイズする
エンジンのコンフィギュレーションは、エンジン コンフィギュレーションの .ini
ファイルに通常設定されます。コマンドラインからエンジンのコンフィギュレーションをカスタマイズすることもできます。詳細については、コンフィギュレーション ファイル のドキュメントを参照してください。
コマンドラインからコンソール コマンドをカスタマイズする
コンソール コマンドは、Unreal Editor のコンソールから通常実行されます。コマンドラインからコンソール コマンドをカスタマイズすることもできます。詳細については、コンソール変数 のドキュメントを参照してください。
コマンドライン引数のリファレンス
URL パラメータ
URL パラメータは、ゲームの起動時に特定のマップをロードすることを強制します。URL パラメータはオプションですが、入力した場合は実行可能ファイルの名前またはモード フラグ (存在する場合) にすぐに従う必要があります。
URL パラメータは、次の 2 つの部分で構成されます。
- マップ名 または サーバー IP アドレス。
- 一連のオプションの 追加のパラメータ。
マップ名
マップ名は、「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.uproject
:MyGame
プロジェクトを実行します。/Game/Maps/BonusMaps/BonusMap.umap
:ゲーム内でBonusMap
を開きます。これは URL パラメータ です。-server
:エディタを専用サーバーとして実行します。-port=7777
:ポート7777
を使用し、クライアントの接続をリッスンします。これは Unreal Engine のサーバーのデフォルト ポートです。-log
:サーバーのアクティビティを監視できるようにサーバー ログを表示します。
- ゲーム クライアント
MyGame.uproject
:MyGame
プロジェクトを実行します。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
使用可能なコマンドライン引数のリスト
使用可能なすべてのコマンドライン引数のリストについては、「コマンドライン引数のリファレンス」を参照してください。