
ビルドが遅いと感じたらコレ!Unreal Build Acceleratorの活用術
こんにちは!ゲームソリューション部の出村です。
Unreal Engine 5.5でいくつか新しい機能が提供されましたが今回は、正式リリースされた分散ビルド環境「Unreal Build Accelerator」について詳しく解説します。この分散ビルド環境を利用することで、ビルドを高速化することができます。
Unreal Build Acceleratorとは?
Unreal Build Accelerator(通称UBA)は、Unreal Engine 5.5で正式にリリースされた分散ビルドシステムです。
以前のバージョン(UE5.4)ではベータ版として提供されていましたが、ついに正式版となり、実用性が大きく向上しました。
UBAを使うことで、C++コードのコンパイルやシェーダーのビルドを複数のマシンに分散して処理できるため、ビルド時間を大幅に短縮できます。
このシステムは「Horde」という名前で提供されています。Hordeは、以下のようなマシン構成となります。:
- Hordeサーバー:Hordeエージェントに対してビルドの指示を管理する中枢PCのこと
- Hordeエージェント:実際にビルド作業を行うPCのこと
分散ビルド環境が構築した後は、UnrealEngineのプロジェクトに対して、Horde関連の設定ファイルを配置することで分散ビルドが実行できるようになります。
開発者のPC(クライアント)からビルドの指示が出されると、Hordeサーバーがエージェントに処理を振り分け、完了後に結果を返してくれます。
分散ビルドとは?
「分散ビルド」という言葉に馴染みがない方のために、簡単に説明します。
通常、ビルド処理は1台のPCで全てのソースコードをコンパイルしますが、分散ビルドでは処理を複数のPCに分担させます。
例えば:
- ソースコード1 → エージェントPC1でビルド
- ソースコード2 → エージェントPC2でビルド
- ソースコード3 → 自分のPCでビルド
このように複数のマシンで同時にビルドを行うことで、全体のビルド時間を大幅に短縮できるのです。
Unreal Engineのような大規模プロジェクトでは、ビルドに何十分、あるいは数時間かかることもあります。分散ビルドを活用すれば、こうした時間を大幅に削減できます。
分散ビルドを使うメリット
Unreal Engineで開発されるゲームは、AAAタイトルのような大規模なプロジェクトが多く、ソースコードやアセットも膨大です。
そのため、ビルドにかかる時間も長くなりがちです。UBAを使うことで、こうした大規模プロジェクトのビルド時間を大幅に短縮でき、開発効率がぐっと上がります。しかも、このツールは無料で利用可能です。
Unreal Engineに完全対応した分散ビルドシステムが無償で使えるのは、開発者にとって非常に大きなメリットです。
対応しているビルド対象
UBAは、以下のビルド処理に対応しています:
- C++のソースコードビルド
- シェーダーのコンパイル
対応OSは以下の通りです(機能のサポート状況はOSによって異なります):
OS | C++ビルド | シェーダーのビルド |
---|---|---|
Windows | ○ | ○ |
Mac/Linux | ○ | △(ベータ版) |
UBAのメリットとデメリット
他にも分散ビルドツールはありますが、UBAならではの特徴をまとめてみました。
メリット
- 無料で使える:ソフトウェア自体は無償で提供されています
- Unreal Engineと完全連携:UEのネイティブ機能として統合されており、公式サポートも充実
- ビルド時間の短縮:複数マシンによる並列処理で、ビルド時間を大幅に短縮可能
デメリット
- エージェントPCが稼働している前提:オンプレミス環境での利用前提のシステムであり、エージェントPCは常に起動している必要があります。
実際に構築してみた
では、UBAの構築手順を紹介します。今回はWindows環境上に構築してみました
詳しい手順はこちらの公式フォーラムにも掲載されています。
使用環境
- OS:Windows 11
- IDE:Visual Studio 2022
- エンジン:Unreal Engine 5.5
手順概要
- 【ホストPC】Unreal Engineのソースコードを取得し、setup.batを実行
- 【ホストPC】Hordeサーバーをインストール
- 【エージェントPC】Hordeサーバーに接続し、Hordeエージェントをインストール
- 【ビルドPC】プロジェクトでHordeサーバーを指定
順番に見ていきましょう。
1. 【ホストPC】Unreal Engineのソースコードを取得し、setup.batを実行
まず、Unreal Engineのソースコードを取得し、setup.batを実行します。詳しい手順は、ソースから Unreal Engine をビルドする | Unreal Engine 5.5 ドキュメンテーション | Epic Developer Communityに記事があります。
このsetup.batファイルが実行完了すると、Engine/Extras/HordeフォルダにインストーラーであるUnrealHordeServer.msiファイルファイルがあります。
2. 【ホストPC】Hordeサーバーをインストール
取得したインストーラーを実行し、Hordeサーバーをインストールします。設定項目についてはデフォルトのままで問題ありません。
インストール後、自動的にWebサーバーが起動します(URLは http://192.168.1.1:13340/docs/Lnading.md といった内容になります)。
HordeサーバーPCのIPアドレスを控えておきましょう。後の設定で必要になります。あと、Hordeサーバーは固定IPアドレスにしておくことを推奨します。
3. 【エージェントPC】Hordeサーバーに接続し、Hordeエージェントをインストール
次に、エージェントPCでブラウザを開き、先ほどのHordeサーバーのURL(先の例だとhttp://192.168.1.1:13340/docs/Lnading.md )にアクセスします。
右上にあるToolsをクリックすると、各種ツールがダウンロードできます。ここから Horde Agent(Windows Installer)を選択します。
すると、UnrealHordeAgent.msiファイルがダウンロードされますので、起動してAgentのインストールを行います。
インストール中に、ホストPCのIPアドレスを入力する箇所があるので設定してください。
4. 【ビルドPC】プロジェクトでHordeサーバーを指定
最後に、ビルドするプロジェクト側でHordeサーバーを使用する設定を行います。以下のXMLファイルを元に、{{ SERVER_HOST_NAME }}を先ほど取得したHordeホストPCのIPアドレスに置き換えてください。
このファイルを、UnrealEngineのプロジェクトに対してEngine/Saved/UnrealBuildTool/BuildConfiguration.xmlとして保存してください。
<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
<BuildConfiguration>
<!-- Enable support for UnrealBuildAccelerator -->
<bAllowUBAExecutor>true</bAllowUBAExecutor>
</BuildConfiguration>
<Horde>
<!-- Address of the Horde server -->
<!-- Server>http://{{ SERVER_HOST_NAME }}:13340</Server -->
<Server>http://{{ SERVER_HOST_NAME }}:13340</Server>
<!-- Pool of machines to offload work to. Horde configures Win-UE5 by default. -->
<WindowsPool>Win-UE5</WindowsPool>
</Horde>
<UnrealBuildAccelerator>
<!-- Enable for visualizing UBA progress (optional) -->
<bLaunchVisualizer>true</bLaunchVisualizer>
</UnrealBuildAccelerator>
</Configuration>
これで設定完了です。
設定が完了したら、ビルドを実行してみましょう!
ビルド中の様子
ビルド中は、分散ビルドが行われている様子がログや資格でみえるようになっています。VisualStudioのログ中にある[Remote Executor: pc1 ] と書かれているソースコードが、Hordeエージェントでビルドされているものとなります。
これの他に、視覚的に分散ビルドの様子をみることもできるようになっています。
AWS環境での課題
Hordeはオンプレミス環境(社内ネットワーク内)での利用を前提に設計されています。そのため、EC2上にHordeサーバーを設置、活用する場合にはいくつかの解決すべき課題があります。
先にも説明しましたが、常時稼働が前提でありクラウド上で常にエージェントPCを起動しておくと、サーバーコストが高くなりがちです。また、Hordeはクラウドに対応してないため、エージェントPCをEC2で構築した場合でも、自動起動・停止機能はありません。
解決方法としては以下の方法があるでしょう。
- サーバーの定刻起動、定刻停止であればであれば「opswitch」を活用
- より高度な制御が必要な場合は、AWS LambdaやCloudWatchを使って独自のスケジューラーを構築
まとめ
Unreal Engine 5.5で正式にリリースされたUnreal Build Acceleratorは、開発効率を大きく向上させる非常に有用なツールです。
特に大規模プロジェクトやチーム開発環境では、ビルド時間の短縮によるメリットが非常に大きいです。
無料で使えるこのツール、ぜひ一度試してみてはいかがでしょうか?