UE4_SWARM

Anyone who’s tried to hitting the build button in Unreal Engine 4 in a level that’s got a lot of lighting going on will know that the build process can be pretty tedious. Building the lighting in the Sun Temple demo level that comes with UE4 at production level takes about an hour or so.

Being annoyed that I had to wait so damn long to build lighting, I figured Epic would have provided some way to distribute the computational load across multiple machines and did some research. It turns out that Epic did provide this functionality but all the documentation for it isn’t in the UE4 but rather in the older UDK documentation.

UDK SWARM DOCUMENTATION HERE

While it didn’t change a whole lot there really wasn’t a whole lot on the net that covered using Swarm across multiple machines so I figured I’d share how I managed to get it working for me.

This was tested on my workstation running a tetradeca core Intel E5-2683 v3(14 cores, 28 threads) and my Alienware 17 rocking the quad core Intel i7-4900MQ(4 cores, 8 threads). Engine versions were UE 4.12 on my workstation and UE 4.11 on my laptop (mostly just so I could see if it work!).

My workstation was setup as the primary client that had Unreal Engine 4 running as well as the Swarm Coordinator and the laptop as the secondary client running the SwarmAgent.

The SwarmCoordinator.exe and SwarmAgent.exe executables can be found at:
C:\Program Files (x86)\Epic Games\(engine.version)\Engine\Binaries\DotNET

All the settings are in the pic above, but to explain the different parts:

AgentGroupName -> The name of your group. It *IS* case-sensitive.
AllowedRemoteAgentGroup -> For simplicity, make it the same as AgentGroupName
AllowedRemoteAgentNames -> On the controller, put down the name or IP address of the secondary client. Additional names/IP addresses can be added seperated by a commas. On the secondary client, just put the name/IP address of the primary machine you’ll be sending the job from.
CoordinatorRemotingHost -> On the Primary machine that’s also running the controller, just put the hostname of your primary machine or the IP address(yes 127.0.0.1 works too). On the secondary add the name/IP of the machine that the co-ordinator is running.

I’ll have to revisit this later when I have more than 2 machines with the swarm agent running. Hopefully it’ll help someone else trying to speed up the process of building lighting in UE4. Adding additional machines is really just a matter of adding them to the AllowedRemoteAgentNames list. I’ll have a proper answers once I get my render farm built out.