日別アーカイブ: 2019年4月14日

UE4 UnrealBuildTool の設定 BuildConfiguration.xml

UE4 のビルドツール UnrealBuildTool はビルドファイルの定義に *.Target.cs や *.Build.cs を使います。それとは別に、デフォルトパラメータを定義できる BuildConfiguration.xml があります。

UE4 Programming Guide / BuildTools / UnrealBuildTool / Build Configuration

例えば次の内容で BuildConfiguration.xml を作り、Documents のフォルダ “Unreal Engine\UnrealBuildTool” に入れておくと UnityBuild を無効化することができます。



	
		false
	

※ UnityBuild を off にするとビルドが極端に遅くなるのでお勧めしません。

BuildConfiguration.xml のチェックが行われている場所は以下の 4 つです。

(1) Engine\Programs\NotForLicensees\UnrealBuildTool\BuildConfiguration.xml
(2) Engine\Saved\UnrealBuildTool\BuildConfiguration.xml
(3) C:\Users\<USERNAME>\AppData\Roaming\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml
(4) C:\Users\<USERNAME>\Documents\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml

この順番で読み込まれるため、下の方が優先順位が高くなります。

(3), (4) はすべてのエンジンに対して有効になります。UE4 のバージョンによって設定項目に若干違いがあるので、複数のエンジンを併用している場合は注意が必要です。エンジンによってエラーが出る場合は (2) のようにエンジン毎のフォルダに入れておいた方が良いかもしれません。

たとえば ProcessorCountMultiplier は UE4 4.20 までは BuildConfiguration に含まれていました。4.21 では無くなっており、代わりに Executor 毎の個別パラメータを使うようになっています。

UE4 4.20 の場合



	
		2.0
	

UE4 4.21 の場合



	
		2.0
	
	
		1.0
	

ParallelExecutor は 4.21 で新しく追加されたものです。以前の LocalExecutor も残っていますが、分散ビルドを使わない場合 4.21 以降はデフォルトが ParallelExecutor になります。

LocalExecutor の場合、4 core 8 thread の CPU ではデフォルトでビルドに 4 thread 使います。ProcessorCountMultiplier を 2.0 にすると 8 thread 全部使うようになります。8 core 16 thread の CPU ではなぜかデフォルトで 12 thread、ProcessorCountMultiplier を 2.0 にすると 16 thread になります。計算が合わないように見えるのは、5 core 以上で計算式が変わるからです。

// UBT LocalExecutor の計算式
if( ProcessorCountMultiplier == 1.0 ){
   if( Core数 > 4 ){
       ビルドに使う thread 数 = ( Core数 + Thread数 ) / 2;
   }else{
       ビルドに使う thread 数 = Core数;
   }
}else{
   ビルドに使う thread 数 = Core数 * ProcessorCountMultiplier;
}

4.21 から追加された ParallelExecutor では特に ProcessorCountMultiplier を設定しなくても、最初からハードウエアと一致する 8 thread や 16 thread でビルドが行われています。まとめると下記の通り。

Executor LocalExecutor ParallelExecutor
Multiplier 1.0 2.0 1.0 2.0
Skylake i7-6700K ( 4C8T ) 4 8 8 16
CoffeeLake i7-8700K ( 6C12T ) 9 12 12 24
Ryzen 7 1800X ( 8C16T ) 12 16 16 32

つまり以前の LocalExecutor の場合、ProcessorCountMultiplier = 2.0 は効率を上げるために有効でしたが、ParallelExecutor では本来の倍のスレッドが走ってしまいます。古い設定を継承するとスレッド数が過剰になるため BuildConfiguration から削除されたのかもしれません。ちなみに ParallelExecutor は下記の設定で無効化できます。



	
		false
	

このように UnrealBuildTool には様々な設定があります。オプションの種類は下記のファイルを見るとわかります。

Engine\Saved\UnrealBuildTool\BuildConfiguration.Schema.xsd

このファイルを見ると UE4 4.22 からは cpp のオプションが増えている事がわかります。下記のような設定もできるようになりました。



	
		Cpp14
	

関連エントリ
UE4 UnrealBuildTool VisualStudio の選択を行う
UE4 UnrealBuildTool *.Build.cs のコードを共有する