UE5 のビルドを速くする、分散ビルド UnrealBuildAccelerator を使う

UE5 5.4 には UnrealBuildAccelerator (以下 UBA) という分散ビルドツールが付属しています。家に複数台の PC がある場合は、それぞれインストールしておくとことでビルド時間を大幅に短縮することができます。

実際に空いている PC を使って UE5 のビルドがどれくらい速くなるの比較してみました。以下の表は UE5 5.4.2 Win64 Development Editor のエンジンリビルド時間の比較です

CPUARCHCoRE数THREAD数単独ビルド時間分散ビルド利用時ビルド速度
Core i7-13700RaptorLake162448m 00s15m 21s3.1 倍
Ryzen 5 3600Zen261291m 28s16m 28s5.6 倍
UE5 ビルド時間の比較、ビルド時間が短い方が高速

Core i7-13700 では 48分かかっていたビルドが分散ビルド利用時でわずか 15分。単独でビルドしていた場合の 1/3 の時間で完了しています。

コア数が少ない Ryzen 5 3600 の場合はさらに効果が大きく、ビルド速度は 5.6倍にもなります。91分から 16分まで短縮できており、スタンドアロンの場合は Core i7-13700 の倍の時間がかかっていたものが、分散ビルドを使うとほぼ同じ時間で完了しました。

今回分散ビルドで使用した PC は以下のとおりです。

CPUARCHCORE数THREAD数RAM容量
Ryzen 5 2600Zen1+61232 GB
Ryzen 5 3600Zen261264 GB
Ryzen 5 5560UZen361232 GB
Ryzen 7 4750GZen281632 GB
Ryzen 9 3950XZen2163232 GB
Core i7-13700RaptorLake162464 GB
合計58108
ビルドに使用したヘルパー (Agent) PC 一覧

全部で PC 6台、合計 58コア 108スレッド使用しています。

Core i7-13700 でビルドした場合は他の 5台がビルド用のヘルパー (Agent) になります。本体 16コア 24スレッドで、加えて外部の PC が Agent として 42コア 84スレッド分追加される形になります。同じように Ryzen 5 3600 の場合は本体 6コア 12スレッドに対して外部の PC が 52コア 96スレッドです。

非常に効果が大きかったので、PC が複数台ある場合は UBA を使うことでビルド時間をだいぶ短縮できそうです。

以下分散ビルド UBA のインストール方法の詳細です。

インストール手順

インストールにあたってこちらのページを参考にさせていただきました。UBA について詳しくはこちらのページも参照してください。

(1) HordeServer インストール

どれか 1台の PC に HordeServer をインストールします。この手順は GitHub のソースコード版エンジン UE5 5.4 のものです。

  1. UnrealHordeServer.msi を実行してインストールします
    • GitHub 版のエンジンをビルドしている場合は Engine/Extras/Horde/UnrealHordeServer.msi にあります。
    • GitHub からダウンロード直後は Extras フォルダがないので、先に Setup.bat を実行しておく必要があります。
  2. このマシンに Port 13340 でアクセスできるようにしておきます
    • Firewall で制限がかかっている場合は、TCP Port 13340 でアクセスできるように設定しておいてください

(2) HordeAgent のインストール

ビルドに使いたい PC それぞれに Agent をインストールします。HordeServer と同じマシンにインストールしても構いません。

  1. ブラウザで HordeServer をインストルした PC にアクセスします
    • 「 http://サーバーPCのIPアドレス:13340/tools 」を開きます
  2. ダウンロードページが開くので「Horde Agent (Windows Installer) 」をダウンロードします
  3. ダウンロードした UnrealHordeAgent.msi を実行してインストールします
    • 「Horde Server URL:」には「 http://サーバーPCのIPアドレス:13340」を入力します
      • 注意: サーバーが自分自身の場合でも絶対に「localhost」や「127.0.0.1」を使わないでください。ここで接続に使用したアドレスが他の PC に配布されるので、localhost だとこの Agent にアクセスできなくなります。
    • 「Sandbox directory: 」はキャッシュとして使うフォルダを指定します
      • 空き容量の多い SSD ドライブをおすすめします。問題なければそのままでも構いません。
  4. インストールが終わると、ブラウザで自動的に「Agent Enrollment」のページが開きます
    • もし開かない場合は、タスクトレイの「U」アイコン (Unreal Engine のロゴ) 右クリックから「Enroll with Server…」を選択してください
  5. しばらくすると Agent Enrollment のページに PC 名が表示されるので、選択して右上の「Enroll Agents」をクリックします
    • PC が表示されるまで時間がかかる場合があります。数分待ってみてください。
  6. 登録が終わったら、「http://サーバーPCのIPアドレス:13340/agents」を開いて PC が表示されていることを確認してください
  7. タスクトレイに UnrealEngine ロゴのアイコン (UnrealHordeAgent) が登録されているので、右クリックして Status を「When Idle」に変更します
    • Status → When Idle
  8. Agent PC に Port 7000~7010 でアクセスできるようにしておきます
    • Firewall の設定で TCP Port 7000~7010 で受信できるようにしておきます

同じ手順で各 PC にそれぞれ HordeAgent をインストールしておきます。今回のテストでは 6台の PC 全てに Agent をインストールしています。

なお VisualStudio などビルド環境のセットアップは不要です。

(3) ビルドするための設定

ビルドを行う側の PC にもさらに追加の設定が必要です。

  1. BuildConfiguration.xml を作成します
    • 特定のエンジンだけで使用する場合は、エンジンフォルダ内の Engine/Saved/UnrealBuildTool/BuildConfiguration.xml に保存します
    • もし全部のエンジンで同じ設定を使いたい場合は、自分のドキュメントフォルダの中に 「ドキュメント\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml」のように入れてください
  2. BuildConfiguration.xml の内容は以下のとおりです
    • xml 内の「サーバーPCのIPアドレス」の部分は置き換えてください。
    • すでに BuildConfiguration.xml が存在する場合は内容を追加してください。
<?xml version='1.0' encoding='utf-8'?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
    <BuildConfiguration>
        <bAllowFASTBuild>false</bAllowFASTBuild>
        <bAllowUBAExecutor>true</bAllowUBAExecutor>
    </BuildConfiguration>
    <Horde>
        <Server>http://サーバーPCのIPアドレス:13340</Server>
        <WindowsPool>Win-UE5</WindowsPool>
    </Horde>
    <UnrealBuildAccelerator>
        <bLaunchVisualizer>false</bLaunchVisualizer>
        <bForceBuildAllRemote>false</bForceBuildAllRemote>
    </UnrealBuildAccelerator>
</Configuration>

これで完了です。この設定をした PC 上で UE5 の C++ ビルドを行うと分散ビルドが行われます。

ビルドを行う場合の注意点

ステータス切り替えについて

HordeAgent には PC の Idle 状態かどうか判定して Status を動的に切り替える機能があります。

ですが負荷の高い作業やゲームのテストプレイ、負荷の調査などを行う場合は、意図しないビルドタスクが割り当てられてしまわないように予め手動でステータスを切り替えておくことをおすすめします。

  1. タスクトレイの「U」(UnrealEngine ロゴ)アイコン右クリック → Status
  2. 普段は「 When Idle 」にしておく
  3. テストプレイ前に「 Disabled 」に切り替え、終わったら「When Idle」に戻す

Horde Agent の設定変更

サーバーの URL やキャッシュフォルダなど、インストール時に入力したパラメータをあとから UI 上で変更する方法が見つかりませんでした。変更したい場合は、もう一度インストーラーを実行し直すのが確実なようです。