Unreal Cloud Docs
Guides

Choosing a build system for Unreal Engine

Jenkins, TeamCity, GitHub Actions, Horde and Unreal Cloud compared honestly, and which one fits your team.

At some point, every Unreal team gets tired of packaging builds by hand. Then comes the question: which build system should we use?

There's no single right answer. It depends mostly on two things: whether you have someone who can look after a build machine, and which platforms you ship on. We make one of the options on this page, so we've tried hard to be fair, including about where ours isn't the right choice.

The short answer

iOS, macOS, consoles or a custom engine

Use Horde, Jenkins or TeamCity. Unreal Cloud doesn't support those yet.

Big studio with build engineers

Horde is free, made by Epic and built for exactly that.

No build engineer

Shipping on Windows, Linux or Android? That's who Unreal Cloud is for.

Already run Jenkins or TeamCity

Adding Unreal to them makes sense, as long as someone owns the build machine.

At a glance

JenkinsTeamCityGitHub ActionsHordeUnreal Cloud
No build machine to maintainFor Unreal
Set up in minutes
Understands Unreal out of the boxWith plugin
Windows, Linux, Android
iOS, macOS, consolesComing soon
Custom build stepsComing soon
CostFree software + your build machinesFree for small setups + your build machinesFree minutes + your build machinesFree with engine source + your build machinesSeat-based, build minutes included, no machines

Jenkins

Jenkins is the old, free workhorse of build automation, and lots of Unreal studios still use it. You install it on a server, add build machines with the engine installed, and write a pipeline script that runs BuildCookRun.

Good: it's free, it can do anything, and there's a plugin for almost everything.

Watch out for: someone has to own it. Jenkins needs regular updates, its plugins break now and then, and you're writing and maintaining the Unreal pipeline yourself. On a small team, that's usually the one programmer who'd rather be working on the game.

See the full comparison: Unreal Cloud vs Jenkins.

TeamCity

TeamCity, from JetBrains, does the same job as Jenkins with a more polished interface and less fiddling. JetBrains also has an Unreal Engine plugin for it that understands Unreal builds and test results out of the box.

Good: easier to set up and live with than Jenkins, good Unreal support, and free for small setups.

Watch out for: you still need your own build machines with the engine and platform tools installed, and larger setups need a paid license.

See the full comparison: Unreal Cloud vs TeamCity.

GitHub Actions

If your code is already on GitHub, Actions looks like the obvious choice, and for most projects it is. Unreal is the exception: GitHub's standard hosted runners don't have the disk space, memory or preinstalled engine an Unreal build needs.

In practice, Unreal teams on Actions run a self-hosted runner: their own machine with the engine installed, which Actions sends jobs to.

Good: your builds live right next to your code, with pull request checks built in.

Watch out for: for Unreal, it's really "your own build machine with a nice front end". All the upkeep of a build machine is still yours.

Setting up a runner yourself? Unreal Engine CI with GitHub Actions walks through it. See the full comparison: Unreal Cloud vs GitHub Actions.

Horde

Horde is Epic's own build system. It's what Epic uses for its own games, and it comes free with the engine source.

Good: it's made for Unreal and handles everything: every platform, including consoles, distributed compiling, test automation, and very large teams.

Watch out for: it's built for studios with dedicated build engineers. You need engine source access, your own servers and machines, and the time to set it all up and run it. For a small team, it's a lot.

See the full comparison: Unreal Cloud vs Horde.

Unreal Cloud

Unreal Cloud is a hosted build service: we run the build machines, with the engine already installed. You connect a GitHub repo or Perforce depot, pick a platform and engine version, and every push (or every manual trigger) gives you a packaged build to download.

Good:

  • No build machine to buy, set up or maintain, and no engine installs or full disks to deal with.
  • Set up in minutes, not days.
  • Build results on your GitHub pull requests, automated tests, shareable build links, notifications and an editor plugin.
  • Predictable, seat-based pricing with build minutes included, and no hardware to buy. See pricing.

Not a fit if:

  • You ship on iOS, macOS or consoles. Today we build for Windows, Linux and Android.
  • You use a custom or source-built engine. We support the standard engine versions only, which also means no dedicated server builds.
  • You need custom build steps today. They're coming soon; until then, the build pipeline is fixed.
  • Your Perforce server can't be reached from the internet. We connect over SSL from one fixed IP address, so your firewall needs to allow it.

How to choose

Ask yourself two questions:

  1. Do we have someone who wants to own a build machine? If yes, Jenkins, TeamCity or a self-hosted GitHub Actions runner will serve you well, and Horde if you're big enough. If no, a hosted service saves you that job entirely.
  2. What do we ship on? If Apple platforms or consoles are on the list, you need your own machines today.

If you ship on Windows, Linux or Android and you'd rather spend your time on the game, try Unreal Cloud. If not, one of the others is the better pick, and the command-line packaging guide will help you set it up.

On this page