Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 ライティングを複数PCで分散ビルドする

UE4でライティングを行う際に可動性(Mobility)をスタティック、またはステーショナリーにすることで、ライティングビルドを実行すると、ライトマップ(光と陰の情報)のベイク(焼き付け)を行うことが可能です。

ライティングそのものについては公式ドキュメントを参照してください。

docs.unrealengine.com


しかしライティングビルドというものはとても時間がかかります。短い場合でも数分、長いと数時間以上かかってしまいます。

そこで複数PCを活用することで、ライティングビルドを分散化してビルド時間を短縮することが可能です。

前提として、複数PCが同一ネットワーク内に存在する必要があります。複数PCが同一ネットワークにあるのを確認したら早速やってみましょう。


ビルドマシン全てでSwarm Agentを起動する


複数のライティングビルドを行う場合、必ず"Swarm Agent"というプログラムを起動させる必要があります。分散させたいマシン全てでこのプログラムの起動が必要となります。

"Swarm Agent"はUE4のライティングビルドを行う時にライトマスというライトマップを生成する仕組みを動作させる際に必要となる外部プログラムです。

ネットワークで通信するために、ファイアウォールなどでブロックされていないかを確認しておく必要があります。そして一般的には以下のフォルダー以下にプログラムが存在しています。

UE4Install\UE_4.1X\Engine\Binaries\DotNET\SwarmAgent.exe


"UE4Install"やバージョンは各自のインストールフォルダーや番号に置き換えてください。

自分でSwarmAgentを起動させる際には上記の場所から起動します。もし必ず分散ビルドを行わせたいのであれば、バッチファイルに登録し、PCのスタートアップに走るようにするなどしてください。

SwarmAgent自体はUE4のエディター内で"ビルド"ボタンを押すことでも自動的に起動します。

起動するとWindowsのタスクバーにアイコンが出現します。

f:id:alwei:20170708165200p:plain


このアイコンをダブルクリックすることで、SwarmAgentの詳細を開くことが可能です。

f:id:alwei:20170708165342p:plain


"Swarm Status"というタブを開くことでビルド状況を確認することが可能です。普通にライティングビルドを実行していれば単一PCでの処理になっているはずです。

ホストマシンでSwarm Coordinatorを起動する


ホストマシン(分散ビルドを行うことを指示するマシン)のみ、"Swarm Coordinator"という特別なプログラムを起動させる必要があります。

"Swarm Coordinator"は同一ネットワークで"Swarm Agent"が起動しているマシンを監視しているプログラムです。起動させた後は基本的に何も操作する必要はありません。

Swarm Agent同様に以下のフォルダーに存在しています。

UE4Install\UE_4.1X\Engine\Binaries\DotNET\SwarmCoordinator.exe

起動すると以下のようなウィンドウが開きます。

f:id:alwei:20170708170158p:plain


各マシンの細かい情報が表示され、分散ビルドに参加可能なマシンがリストアップされます。

分散ビルド用の設定をする


分散ビルドを行うためには各ビルドマシン上のSwarm Agent内での設定が必要です。ウィンドウ内にあるSettingsタブを開きます。

主に以下の設定が必要です。

f:id:alwei:20170708170644p:plain

"AgentGroupName"と"AllowedRemoteAgentGroup"の名前は同一である必要があります。デフォルトの情報では名前が違うので注意しましょう。

"AllowedRemoteAgentNames"には分散ビルドに参加する同一ネットワーク内のPC名を記載します。アスタリスク(*)を指定することで全てのPCを対象にすることが可能ですが、必要であればカンマなどで区切ることで限定的にすることが可能です。※問答無用で分散ビルドに参加することはありません。あくまでもSwarm Agentを起動しているPCのみが対象です。

最後に"CoordinatorRemotingHost"にSwarm Coordinatorを起動しているホストマシンのPC名を記載します。これで全て準備完了です。

分散ビルドをしてみる


上記の設定が完了し、分散対象PC全てでSwarm Agentを起動している状態であれば、Swarm Coordinatorが以下のような具合になります。

f:id:alwei:20170708171417p:plain


実際に利用可能なCPUコア数やリアルタイムのState情報などが表示されます。では実際にライティングの分散ビルドを行ってみましょう。

UE4ツールバー上からビルドボタンを選択し、ビルドを行い、しばらく経ってからSwarm AgentのSwarm Statusを覗いてみます。

f:id:alwei:20170708173731p:plain


今回はデスクトップPCとノートPCで分散を行ったので、実際に処理していた時間で差があります。なるべく多くのPCで、よりCPUの速いものが多ければ多いほどうまく分散してくれるはずです。

分散ビルドができない場合に確認


様々な理由で分散ビルドがうまくいかないケースがありえます。以下によくありそうなケースをまとめてみました。

ファイアウォールなどでネットワークからブロックされている
・Swarm Agentを必要なPCで起動していない
・Swarm Coordinatorを起動していない
・グループ名の設定が同一の名前になっていない
・別処理により、分散ビルドPC側のCPUが空いていない
・省電力モードなどでCPUが全力で動かない設定になっている
・他ネットワーク上でブロックするものが動いている可能性がある


これ以外にも考えられることはありますので、もし分散ビルドが動かない場合には様々な条件を疑ってください。正しく設定を行っていても動かない場合はCPUの空きがなかったり、ネットワークのセキュリティによるものが多いと考えられます。

ちなみにノートPCの場合は、電源に繋いでいない状態でビルドを行うと、分散ビルドを行ってくれませんでした。このような細かいことでも動かないことがあるので注意が必要です。