Making Swarm work in Unreal Engine 4.24

Wed, 15 Apr 2020 17:34:00 +0000
VR, virtual reality, real-time, Unreal Engine, UE

If you have ended up here because you're trying to render your lightmaps via Swarm on multiple machines, you just might be in luck. Here's how I got it working with my system/network:

Caveats:

As of this writing, I'm using Unreal Engine version 4.24.3, installed via the Epic Games installer (not built from source). That may or may not have an impact on how well this works for you. If you have built from source, you might want to take a look at Zag's Blog if you have problems. There are a couple files to make sure get rebuilt.

TLDR:

The UE manual is fairly clear, but I missed a couple key things (if they are mentioned):
Don't run Coordinator on your workstation. Use a network machine.
Let the UE Editor 'internal' agent start up Swarm rendering (setup Agent params first, though).
Check your sharing permissions and pings.

Step One:

Do what Epic/Unreal tell you to do, at this manual page. I.e., run the "Prerequisite Installer" to get the necessary software on each of your rendering (worker/agent) machines. You'll find it in '{your install directory}/Engine/Extras/Redist/en-us'.

Step Two:

Then (as per the same page of the UE manual), on one of your machines, ! not your workstation !, copy the needed files for the Swarm Coordinator. Then, copy the recommended files to a directory on each of your agent machines. You can run an agent (the rendering software) and the coordinator (the manager software) on the same machine, as long as it is not your workstation.

Step Three:

Make sure the project directory on your workstation/development machine is shared appropriately on your network, so the 'agent' machines can read/write to it.

Step Four:

For each Agent Machine: Run the Swarm Agent, bring up the window (it starts hidden with an icon in your tray) and change the data on the following lines under Distribution Settings:
AgentGroupName : MyGroupName (can be anything you like)
AllowedRemoteAgentGroup : MyGroupName (must be the same as the name above!)
AllowedRemoteAgentNames : * (I used a single asterisk wildcard to allow any name, you can try restricting if you feel a need to)

CoordinatorRemotingHost : machineName of your Coord. Machine (or IP Address)

You'll want to do this on your workstation as well, so it will know who to talk to for launching the renderings. But, exit the Agent software (via the tray icon) after you do the setup. To repeat: Don't run the Agent software on your workstation when actually building a project. You want the Editor software to lauch it (Agent) for you.

Step Five:

Running the whole mess - You will probably want to install the Agent software on your workstation as well as the remote machines. That's a way to see what's rendering on the network. But, here's what I found: Do Not start your workstation Agent. That will get you a FAIL. Instead, start the Coordinator software and the Agent software on your remote machines. Then, if you are...