Unreal Engine (UE) の初期設定は コンフィギュレーション ファイル または コンフィグ ファイル によって提供されます。これらには、最も基本的なレベルで、セクションごとに整理されたキー / 値のペアのリストが含まれます。これらのファイルは、すべてのビルドとプラットフォームでの Unreal Engine の起動時にロードされるオブジェクトとプロパティのデフォルト値の設定に使用されます。コンフィギュレーション ファイルには .ini ファイル拡張子が使用されます。
構文
コンフィギュレーション ファイルの構造は次のとおりです。
[SECTION1]
<KEY1>=<VALUE1>
<KEY2>=<VALUE2>
[SECTION2]
<KEY3>=<VALUE3>
すべてのコンフィグ変数は [SECTION] に分けられて、= シンボルが後に続く KEY で構成されている必要があります。たとえば、「BaseEngine.ini」では次のとおりです。
[Core.Log]
LogTemp=warning
コンフィグ変数では VALUE を空白にすることもできるため、次のように設定することも可能です。
[Core.Log]
LogTemp=
セクション名
セクション名は、あらゆる値に設定可能なアルファベット文字列です。コンフィグ システムでは、コンフィグ変数がプロジェクト コード内に存在するかどうかにかかわらず、コンフィギュレーション ファイルに含まれるすべての宣言がロードされます。
モジュール
モジュールに含まれる設定可能なオブジェクトのセクション見出しでは、次の構文を使用します。
[/Script/ModuleName.ClassName]
構成要素
ModuleName:設定可能なオブジェクトを含むモジュールの名前。ClassName:設定可能なオブジェクトを含むModuleNameモジュール内にあるクラスの名前。
プラグイン
プラグインに含まれる設定可能なオブジェクトのセクション見出しでは、次の構文を使用します。
[/Script/PluginName.ClassName]
構成要素
PluginName:設定可能なオブジェクトを含むプラグインの名前。ClassName:設定可能なオブジェクトを含むPluginNameプラグイン内にあるクラスの名前。
ブループリント
ブループリントに含まれる設定可能なアセットのセクション見出しでは、次の構文を使用します。
[/PathToUAsset/UAssetName.UAssetName_C]
構成要素
PathToUAsset:アセットへのパス。UAssetName:設定可能なオブジェクトを含むPathToUAssetにあるアセットの名前。
カスタム仕様のセクション名
カスタム仕様のカテゴリ名として、あらゆるアルファベット文字列を使用できます。たとえば、「MyConfigSection」という名前のカテゴリが必要であれば、次のように記述します。
[MyConfigSection]
カスタム仕様のセクション名を使用する場合は、そのセクションに含まれるコンフィグ変数に対して手動でクエリを実行する必要があります。詳細については、「コンフィギュレーション設定を変数に適用する - 手動」セクションを参照してください。
コメント
コンフィギュレーション ファイル内の行の先頭にセミコロン ( ; ) を付けることで、コメントを作成することができます。この機能を利用して、キー / 値のペアをファイルから削除する代わりにコメントアウトすることもできます。
[Core.Log]
; このセクションを「DefaultEngine.ini」で使用すると、次のような行を使って、さまざまなログ カテゴリの表示レベルをオーバーライドできます。
; LogTemp=warning
キー / 値のペア
コンフィギュレーション キーでは、異なるタイプのさまざまな情報を表現できます。
- 文字列
- 数値
- 配列
- 構造体
配列
コンフィギュレーション ファイルの配列構造体では、コンフィギュレーション ファイル階層内にある複数のコンフィギュレーション ファイルにわたって情報の結合、蓄積、オーバーライドを行うためのメカニズムが提供されます。たとえば、階層に含まれる複数のファイルにわたって (エンジン ディレクトリに含まれる「BaseEngine.ini」や「DefaultEngine.ini」、プロジェクト ディレクトリに含まれる「DefaultEngine.ini」など)、複数のエントリを 1 つのコンフィギュレーション配列オブジェクトに追加することができます。
コンフィギュレーション ファイルでは次の配列処理がサポートされています。
| 名称 | 演算子 | 説明 | 例 |
|---|---|---|---|
| Empty | ! |
配列のコンテンツを空にします。= の後の値はすべて無視されます。明確にするために、!MyVar=ClearArray などと、= の後には記述的なものを加えることを推奨します。 |
!MyArray=ClearArray |
| Append | + |
値が配列内にない場合に値を配列に追加します。値が配列内に存在する場合は何も行われません。 | +MyArray=Value |
| Remove | - |
配列から値を削除します。完全一致する必要があります。 | -MyArray=Value |
| Append Duplicate | . |
値が配列内に存在する場合でも、値を配列に追加します。 | .MyArray=Value |
配列の例
MyConfigArray=7
!MyConfigArray=ClearArray
+MyConfigArray=2
+MyConfigArray=3
+MyConfigArray=4
.MyConfigArray=2
-MyConfigArray=4
上記の例の各行では次の処理が行われます。
MyConfigArray=7:配列内のすべてのエントリを削除して、「7」を追加します!MyConfigArray=ClearArray:配列内のすべてのエントリをクリアします+MyConfigArray=2:配列に「2」を追加します+MyConfigArray=3:配列に「3」を追加します+MyConfigArray=4:配列に「4」を追加します.MyConfigArray=2:配列に、重複する可能性のある「2」を追加します-MyConfigArray=4:配列から「4」を削除します
最終的に、MyConfigArray には [2,3,2] が含まれます。
構造体
コンフィギュレーション ファイルでは、コンフィグ オブジェクトでの構造体プロパティの変更がサポートされています。構造体の設定に使用する構文は次のとおりです。
[/Script/MyModule.MyClass]
MyStruct=(MyStructProperty1=Value1,MyStructProperty2=Value2,...)
文字列
特殊エスケープ文字、16 進数、および UTF シーケンスの使用は引用符によってサポートされており、ローカリゼーションや国際化に有用です。たとえば、「BaseEngine.ini」には次のセクションが含まれています。
[Internationalization]
; これらはコア エンジン自体をローカライズするためのパスであり、ローカライズされたゲーム コンテンツ設定は *Game.ini にあります
+LocalizationPaths=../../../Engine/Content/Localization/Engine
+CultureDisplayNameSubstitutes="ja;\u53f0\u6e7e;\u30c1\u30e3\u30a4\u30cb\u30fc\u30ba\u30bf\u30a4\u30da\u30a4"
+CultureDisplayNameSubstitutes="\u53f0\u6e7e;\u4e2d\u534e\u53f0\u5317"
プロジェクトのコンフィギュレーション ファイル
プロジェクトのコンフィギュレーション ファイルを使用する際は、重要な検討事項がいくつかあります。次のような事項があります。
- コンフィギュレーション ファイルのどのカテゴリが Unreal Engine で認識されるのか?
- 同じカテゴリ内のそれぞれのファイルは互いにどのようにやり取りするのか?
コンフィギュレーション ファイルのカテゴリ
Unreal Engine では、コンフィギュレーション ファイルの「一般的に知られている」いくつかのカテゴリを認識します。
全般
EngineGameInputDeviceProfilesGameUserSettingsScalabilityRuntimeOptionsInstallBundleHardwareGameplayTags
エディタのみ
EditorEditorPerProjectUserSettingsEditorSettingsEditorKeyBindingsEditorLayout
デスクトップのみ
CompatLightmass
コンフィギュレーション ファイルの階層
それぞれのカテゴリには、複数の異なるコンフィギュレーション ファイルを含めることができます。たとえば、「Engine」ディレクトリには次が含まれています。
Engine\Config\BaseGame.iniEngine\Config\Windows\WindowsGame.ini
これらのファイルは Game コンフィギュレーション ファイル カテゴリの一部であり、それぞれによってさらなるカスタマイズが可能になります。
同じカテゴリ内のコンフィギュレーション ファイルはそれぞれ階層構造に整理されます。同じカテゴリ内のファイル間に重複するキー / 値のペアが存在する場合は、階層内で先にあるファイルに含まれるキー / 値の割り当てが、後のファイルに含まれるキー / 値の割り当てでオーバーライドされます。「Engine」ディレクトリに格納されているコンフィギュレーション ファイルは、このエンジン ディストリビューションを使用するすべてのプロジェクトに適用されます。「<PROJECT_DIRECTORY>」にあるコンフィギュレーション ファイルはそのプロジェクトのみに適用されます。同じように、「<PLATFORM>」ディレクトリにあるコンフィギュレーション ファイルはそのプラットフォームのみに適用されます。
カテゴリのコンフィギュレーション ファイルは次の順序でロードされます。
Engine/Config/Base.iniEngine/Config/Base<CATEGORY>.iniEngine/Config/<PLATFORM>/Base<PLATFORM><CATEGORY>.iniEngine/Platforms/<PLATFORM>/Config/Base<PLATFORM><CATEGORY>.ini<PROJECT_DIRECTORY>/Config/Default<CATEGORY>.iniEngine/Config/<PLATFORM>/<PLATFORM><CATEGORY>.iniEngine/Platforms/<PLATFORM>/Config/<PLATFORM><CATEGORY>.ini<PROJECT_DIRECTORY>/Config/<PLATFORM>/<PLATFORM><CATEGORY>.ini<PROJECT_DIRECTORY>/Platforms/<PLATFORM>/Config/<PLATFORM><CATEGORY>.ini<LOCAL_APP_DATA>/Unreal Engine/Engine/Config/User<CATEGORY>.ini<MY_DOCUMENTS>/Unreal Engine/Engine/Config/User<CATEGORY>.ini<PROJECT_DIRECTORY>/Config/User<CATEGORY>.ini
「Engine」ディレクトリ内で設定されたコンフィギュレーションは、このエンジン ディストリビューションを使用するすべてのプロジェクトに適用されます。可能であれば、コンフィギュレーションの変更をより細かく制御できるように、プロジェクト ディレクトリにあるコンフィギュレーション ファイルを使用してください。
コンフィギュレーション ファイルの階層の詳細については、「Engine/Source/Runtime/Core/Public/Misc」にある「ConfigHierarchy.h」ヘッダ ファイルを参照してください。
階層の例
階層の仕組みをお見せするために、「MyExampleProject」という名前のプロジェクトがあり、「Engine/Config/BaseEngine.ini」コンフィギュレーション ファイルに次が記述されていると仮定します。
[/Script/EngineSettings.GameMapsSettings]
GameDefaultMap=/Engine/Maps/Templates/OpenWorld
「MyExampleProject/Config/DefaultEngine.ini」に次のコンフィグ設定が記述されているとします。
[/Script/EngineSettings.GameMapsSettings]
GameDefaultMap=/Game/ThirdPerson/Maps/ThirdPersonMap.ThirdPersonMap
プロジェクト ディレクトリにある「DefaultEngine.ini」ファイルがエンジン ディレクトリにある「BaseEngine.ini」ファイルよりも優先されるため、プロジェクトを起動する際の GameDefaultMap の値は /Game/ThirdPerson/Maps/ThirdPersonMap.ThirdPersonMap になります。
コンフィギュレーション変数をコード内で使用する
コンフィグ変数は UPROPERTIES と USTRUCTS に自動的に適用するか、コンフィグ マネージャーから手動で読み取ることができます。
コンフィギュレーション設定を変数に適用する
自動
クラスを定義して、コンフィグ ファイルの階層から値を自動的にロードすることができます。
セクションの形式
モジュール コードに含まれるコンフィグ設定を自動的にロードするには、[Section] を次の形式で記述します。
[/Script/ModuleName.ClassName]
構成要素
ModuleNameは、ClassNameクラスが定義されているモジュールの名前です。ClassNameは、当該の変数が定義されているクラスの名前です。
ClassName は、U または A プレフィックスを含まないクラスの名前です。
コンフィグ変数を自動的にロードするための手順
AMyConfigActor という名前のクラスを含む MyGameModule というモジュールがあり、その AMyConfigActor クラスに、コンフィギュレーション ファイル内で変更できるようにしたい MyConfigVariable という名前のメンバー変数が含まれているとします。
-
読み取るコンフィグ ファイル カテゴリを
UCLASS宣言で設定します。この例ではGameカテゴリを使用します。UCLASS(config=Game) class AMyConfigActor : public UObject -
クラスに含まれる、設定可能にしたいすべてのメンバー変数を
Configとしてマークします。UPROPERTY(Config) int32 MyConfigVariable; -
選択したコンフィグ ファイル カテゴリの階層内の任意の場所で、先行する変数を設定します。たとえば、この例では
Gameカテゴリを使用するため、プロジェクト ディレクトリの「DefaultGame.ini」ファイル内で次のコンフィギュレーションを設定できます。[/Script/MyGameModule.MyConfigActor] MyConfigVariable=3
クラスは次のようになるはずです。
UCLASS(config=Game)
class AMyConfigActor : public UObject
{
GENERATED_BODY()
UPROPERTY(Config)
int32 MyConfigVariable;
}
手動
前述のとおり、コンフィグ システムでは、実際にコンフィグ変数が C++ コード内に存在するかどうかにかかわらず、コンフィギュレーション ファイルに含まれるすべての宣言がロードされます。これは、あらゆるセクションのコンフィグ変数に対してクエリを実行できることを意味します。たとえば、「DefaultGame.ini」ファイルに次のコンフィグが設定されているとします。
[MyCategoryName]
MyVariable=2
この値は、次のコードを使ってあらゆるファイルに読み込むことができます。
int MyConfigVariable;
GConfig->GetInt(TEXT("MyCategoryName"), TEXT("MyVariable"), MyConfigVariable, GGameIni);
ゲーム コードの MyConfigVariable の値が「2」になります。
手動での読み取りのオプション
変数を取得する関数と、指定された変数の取得元であるコンフィギュレーション ファイル カテゴリにはいくつかのオプションがあります。
関数
「Engine/Source/Runtime/Core/Public/Misc」にある「ConfigCacheIni.h」には、次の関数が含まれています。
GetBoolGetIntGetInt64GetFloatGetDoubleGetStringGetTextGetArray
コンフィギュレーション カテゴリ
コンフィギュレーション カテゴリは G<CATEGORY>Ini として識別されます。たとえば、Engine カテゴリは GEngineIni として参照されます。それらの値は、「Engine/Source/Runtime/Core/Public」の「CoreGlobals.h」にあります。
コンフィギュレーション設定を編集する
コンフィギュレーション設定は次のいずれかの方法で変更できます。
- 適切な
.iniファイル内でコンフィギュレーション値を編集する。 - Unreal Editor の [Project Settings (プロジェクト設定)] に公開されているコンフィギュレーション値を編集する。
Unreal Editor の [Project Settings] には、すべてのコンフィギュレーション値が公開されているわけではないことに注意してください。
コンフィギュレーション設定をコードで保存する
コンフィギュレーション設定は、SaveConfig を使ってゲーム コードから保存することができます。
コンフィギュレーションを保存する例
「コンフィグ変数を自動的にロードするための手順」セクションの例と同じコードを使用します。
UCLASS(config=Game)
class AMyConfigActor : public UObject
{
GENERATED_BODY()
UPROPERTY(Config)
int32 MyConfigVariable;
}
コードのいずれかの部分で、この設定可能な変数を編集するとします。
AMyConfigActor *Settings = GetMutableDefault<AMyConfigActor>();
Settings->MyConfigVariable = 42;
絶対パスの PathToConfigFile を使って、この新しいコンフィグ値を次のようにコンフィグ ファイルに保存できます。
FString PathToConfigFile;
Settings->SaveConfig(CPF_Config, *PathToConfigFile);
関連するコンソール コマンド
GetIni コンソール コマンドを使用すると、あらゆるコンフィギュレーション設定の値を確認することができます。このコマンドは、現在使用しているプラットフォーム以外のプラットフォームの設定を含む、あらゆるコンフィギュレーション設定の値を確認する際に便利です。このコマンドではロード済みのコンフィギュレーション ファイルのみを対象として検索を実行するため、ロードされていないコンフィギュレーション ファイルに目的の設定がある場合は、クエリが失敗することがあります。
コマンド
GetIni [Platform@]IniFile:Section Key
Platform@ 引数は任意です。これを指定しない場合、Platform はデフォルトで現在使用しているプラットフォームに設定されます。
例
Windows の Engine 階層にある URL セクションの Protocol キーの値を確認するには、次を実行します。
GetIni Windows@Engine:URL Protocol
コマンドラインからコンフィギュレーションをオーバーライドする
Unreal Engine には、コマンドライン引数を使ってコンフィギュレーション設定をオーバーライドするメカニズムが備わっています。
コマンドラインによるオーバーライドは配列には使用できません。
特定のコンフィグ ファイル プロパティ
コマンド
-ini:<CATEGORY>:[SECTION_1]:<KEY_1>=<VALUE_1>,[SECTION_2]:<KEY_2>=<VALUE_2>,...
説明
特定の KEY を、指定された SECTION のコンフィギュレーション ファイル CATEGORY に含まれる、指定された VALUE でオーバーライドします。利用可能なすべてのコンフィギュレーション ファイル カテゴリについては、このページの「コンフィギュレーション ファイルのカテゴリ」セクションを参照してください。
例
-ini:Engine:[/Script/Engine.Engine]:bSmoothFrameRate=False,[TextureStreaming]:PoolSize=100
以前の値にかかわらず、Engine カテゴリ階層の [/Script/Engine.Engine] セクションに含まれる bSmoothFrameRate の値をオーバーライドします。PoolSize についても同様です。
カテゴリのデフォルト ファイル
コマンド
-Def<CATEGORY>Ini=<FILE_NAME>
説明
「Default<CATEGORY>.ini」ファイルを、CATEGORY がオーバーライドする特定のコンフィギュレーション ファイル タイプである「<FILE_NAME>」ファイルでオーバーライドします。利用可能なすべてのコンフィギュレーション ファイル カテゴリについては、このページの「コンフィギュレーション ファイルのカテゴリ」セクションを参照してください。
例
-DefGameIni=FooGame.ini
「FooGame.ini」によって「DefaultGame.ini」コンフィギュレーション ファイルがオーバーライドされます。利用可能なすべてのコンフィギュレーション ファイル カテゴリについては、このページの「コンフィギュレーション ファイルのカテゴリ」セクションを参照してください。
カテゴリのすべてのファイル
コマンド
-<CATEGORY>Ini=<FILE_NAME>
説明
特定の CATEGORY 内のコンフィギュレーション ファイルをすべてオーバーライドします。利用可能なすべてのコンフィギュレーション ファイル カテゴリについては、このページの「コンフィギュレーション ファイルのカテゴリ」セクションを参照してください。
例
-EngineIni=FooEngine.ini
「FooEngine.ini」によって他のすべての *Engine.ini ファイルがオーバーライドされます。利用可能なすべてのコンフィギュレーション ファイル カテゴリについては、このページの「コンフィギュレーション ファイルのカテゴリ」セクションを参照してください。
一致するサフィックスを含むコンフィグ ファイル
コマンド
-iniFile=<PATH/TO/FILE_NAME>
説明
一致するサフィックス パスを含むコンフィグ ファイルをオーバーライドします。
このコマンドでは、パスのサフィックス ディレクトリ構造が、コンフィギュレーション ファイルのエンジン ディレクトリ構造と一致する必要があります。
例
-iniFile=C:/MyAdditionalConfigFiles/Engine/Config/BaseEngine.ini
「C:/MyAdditionalConfigFiles/Engine/Config/BaseEngine.ini」によって「<PROJECT_DIRECTORY>/Engine/Config/BaseEngine.ini」コンフィギュレーション ファイルがオーバーライドされます。利用可能なすべてのコンフィギュレーション ファイル カテゴリについては、このページの「コンフィギュレーション ファイルのカテゴリ」セクションを参照してください。
すべてのコンフィグ ファイル
コマンド
-IniBootstrap=<FILE_NAME>
説明
ロードされてパースされるすべてのコンフィグ ファイルをオーバーライドします。読み取り専用です。
例
-IniBootstrap=Foo.ini
「Foo.ini」がロードされる唯一のコンフィギュレーション ファイルです。
コンソール変数をコンフィギュレーション ファイルで設定する
コンフィギュレーション ファイルでは、コンソール変数を指定するための別のメカニズムが提供されます。一部のコンソール変数は全般的なコンフィギュレーション カテゴリで設定でき、その他のコンソール変数は特定のコンフィギュレーション カテゴリで設定します。全般的に、コンソール変数は、プロジェクト ディレクトリに含まれる「DefaultEngine.ini」の [ConsoleVariables] セクションで設定されます。
特定のカテゴリ
次の表では、特定のセクションで設定する必要があるコンソール変数の特定のカテゴリを示します。
| タイプ | セクション | 説明 |
|---|---|---|
| Rendering | [/Script/Engine.RendererSettings] |
r. で始まるあらゆるコンソール変数 |
| Rendering Override | [/Script/Engine.RendererOverrideSettings] |
r.SupportAllShaderPermutations コンソール変数専用 |
| Streaming | [/Script/Engine.StreamingSettings] |
s. で始まるあらゆるコンソール変数 |
| Garbage Collection | [/Script/Engine.GarbageCollectionSettings] |
gc. で始まるあらゆるコンソール変数 |
| Network Settings | [/Script/Engine.NetworkSettings] |
n.VerifyPeer、p.EnableMultiplayerWorldOriginRebasing、NetworkEmulationProfiles の各コンソール変数専用 |
| Cooker Settings | [/Script/UnrealEd.CookerSettings] |
cook. で始まるあらゆるコンソール変数 |
詳細を含む役立つソース ファイル
次のエンジン ファイルには、コンフィグ システムとそのコンポーネントに関する詳細が含まれています。
- ConfigCacheIni
- CoreGlobals
- ConfigHierarchy