2021年8月1日日曜日

Unreal Eengin 4 でFASTBuildを利用する

はじめに

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を起動しておくだけです. ホストのFBuildWorkerUnrealBuildToolが起動しています.

プラットフォームごとの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

まとめ

シェーダコンパイルができない, プラットフォームごとに設定変更できない, と現状実用的と言い難いと思います.