はじめに
UE4 FASTBuildでC++やシェーダーを分散ビルドするによると, 4.26ではうまく動かないらしく, 実際に設定してみても動いていないように見えます.
4.26でFASTBuildの環境を作る
4.27からFASTBuildのバイナリをコピーしてくると動作します.
依存バイナリのダウンロード部分だけを追いきれなかったため, Setup.bat
で全てダウンロードしています.
4.27のFASTBuildバイナリを用意する
$ mkdir Unreal4.27 & Unreal4.27
$ git clone -b 4.27 https://github.com/EpicGames/UnrealEngine.git
$ Setup.bat
4.27から4.26へバイナリをコピーする
4.27から4.26へ次のディレクトリをコピーする.
Engine\Extras\ThirdPartyNotUE\FASTBuild
共有ディレクトリを用意する
全てのホストとワーカから見える共有ディレクトリを用意します.
ビルド設定を用意する
ビルド設定にFASTBuildの設定を追加します.
ビルド設定を使う理由
UnrealBuildToolはFASTBuildが有効な場合, FBuildWorker
をGUIなしで起動しています. 実行済みのFBuildWorkerがある場合は, FBuildWorker.copy
を作成して起動しているように見えます.
つまり, ホストのFASTBuildの設定を変更したいためにFBuildWorkerを自力で起動しても反映されません.
また, チームで設定を共有するためでもあります.
次の内容のBuildConfiguration.xml
を
<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
<BuildConfiguration>
<bAllowFASTBuild>true</bAllowFASTBuild>
</BuildConfiguration>
<FASTBuild>
<FBuildBrokeragePath></FBuildBrokeragePath>
</FASTBuild>
</Configuration>
次のいずれかに置きます.
- Engine/Saved/UnrealBuildTool/BuildConfiguration.xml
- User Folder/AppData/Roaming/Unreal Engine/UnrealBuildTool/BuildConfiguration.xml
- My Documents/Unreal Engine/UnrealBuildTool/BuildConfiguration.xml
FBuildBrokeragePath
は共有ディレクトリを指定します. その他の設定は, 公式
Build Configurationを参照してください.
ワーカでFBuildWorkerを起動する
FBuildWorker
を起動しておくだけです. ホストのFBuildWorker
はUnrealBuildTool
が起動しています.
プラットフォームごとのFASTBuild
現状でプラットフォームごとにFASTBuild利用の可否や設定を切り替える方法を見つけていません. BuildConfigurationのXMLスキーマでも, FASTBuildの設定はプラットフォームの子になっていません.
FASTBuildを正しく動作させるためにはコンパイラを統一することが重要で, コンシューマ機など固有のコンパイラを使うプラットフォーム向けビルドでFASTBuildを使う場合, もうひと手間必要です (WIP).
監視ツールについて
- 次の2つに共通する事項
- モニタリングに関しては, FASTBuildのログを監視して表示しています
- FASTBuild-Dashboard
- スタンドアロン型
- 自身のFBuildWorkerを起動する
- FBuildWorkerのプロセスが重複した場合の動作は追っていません
- FASTBuildMonitor
- Visual Studioの拡張, マーケットプレイスに上げていない
- ログを監視してモニタリングするだけなので, FBuildWorkerの設定項目はない
- Visual Studio 2019に対応していなく, プルリクエストも放置されている
- FASTBuildMonitorをベースに自分でビルドする
シェーダコンパイル
シェーダのビルドは分散されていないように見えます.
(TRY) 4.27で次のファイルに変更があるため, 上書きして試す.
Engine\Source\Programs\UnrealBuildTool\Executors\Experimental\FASTBuild.cs
まとめ
シェーダコンパイルができない, プラットフォームごとに設定変更できない, と現状実用的と言い難いと思います.