Enabling Unreal Build Accelerator in Horde
Install Universal Foundry BuildGraphs
Section titled “Install Universal Foundry BuildGraphs”If you haven’t already, add the Universal Foundry BuildGraphs to your Perforce depot using the instructions here: https://github.com/universalfoundry/BuildGraph.
Using QuickStart.xml
Section titled “Using QuickStart.xml”If you are using the Universal Foundry Quickstart.xml BuildGraph, you do not need to do anything to enable UBA.
Using BuildAndTestProject.xml
Section titled “Using BuildAndTestProject.xml”If you are using the Epic-supplied BuildAndTestProject.xml directly, you will need to edit that file to include the UF CommonProperties.xml which is designed to be compatible with BuildAndTestProject.xml.
Include the CommonProperties.xml graph after the <Include Script="Inc/CommonProperties.xml" /> by adding this line to your script:
<Include Script="$(RootDir)/UniversalFoundry/Support/CommonProperties.xml" />Because this involves editing a file within ./Engine you may find it easier long-term to create a new BuildGraph that includes BuildAndTestProject.xml and CommonProperties.xml. The two are designed to work together so no changes will be necessary to the Engine if you go this route.
Using custom BuildGraph
Section titled “Using custom BuildGraph”If you have created your own BuildGraph from scratch, a couple of changes are necessary to enable UBA.
Within your BuildGraph, include CommonProperties.xml:
<Include Script="$(RootDir)/UniversalFoundry/Support/CommonProperties.xml" />Inside of each Compile element, add GenericCompileArguments to the Arguments parameter. If necessary you can just append this argument to your other arguments. For example:
<Compile Target="$(EditorTargetName)" Platform="$(EditorPlatform)" Configuration="Development" **Arguments="$(GenericCompileArguments)** $(YourOtherArguments)"/>UBA Options
Section titled “UBA Options”In the new Job Dialog you will see options for toggling UBA for compiling on and off:

- On - Enable UBA. Builds will distribute C++ compilation.
- Force Local Compile - Do not use UBA for C++ compilation. (UBA will still be enabled for shader compiling if you have configured your environment to use it)
Shader Compilation
Section titled “Shader Compilation”As of 5.6, there is a bug preventing shader compilation from working. Applying this small patch will correct the issue:
==== //uf/lyra-56/Engine/Source/Developer/UbaCoordinatorHorde/Private/UbaHordeAgentManager.cpp#2 (text) ====
@@ -369,6 +369,9 @@ ClusterInfo = Future.Get().Value; UE_CLOG(!ClusterInfo.ClusterId.IsEmpty(), LogUbaHorde, Verbose, TEXT("Received resolved cluster ID from Horde: %s"), *ClusterInfo.ClusterId); }+ else {+ ClusterInfo.ClusterId = Config.HordeCluster;+ }
// Request Horde machine for UBA agent TSharedPtr<FUbaHordeMetaClient::HordeMachinePromise, ESPMode::ThreadSafe> Promise = HordeMetaClient->RequestMachine(HordeRequestJsonBody, *ClusterInfo.ClusterId);We’ve requested Epic apply this change and expect to see it corrected in 5.7.
Next, add this to DefaultEngine.ini:
[Uba.Provider.Horde.CI]Enabled=BuildMachineOnlyCluster=ciMaxCores=256
[UbaController]BuildMachineProviders=Uba.Provider.Horde.CI