Democratising the Build Process

Making Builds Easy for Content Creators in Unreal Engine

Ross Beardsall
XRLO — eXtended Reality Lowdown
5 min readOct 14, 2020

--

It is a common problem in the industry that the ability to test local changes in a build is often solely the privilege of the programmer. All other disciplines (artists, designers, etc.) are left in the cold and are dependent on first committing their changes to source control before waiting on the next build to be published.

We have solved this at REWIND by building an Unreal Engine plugin that gives everyone on the team, programmer or not, the ability to trigger their own personal builds with local changes via continuous integration.

In this article, we explain the plugin’s origins, how it works, and how to use it. With the understanding that this is a global problem that many studios in our industry face, we have also made this plugin freely available to use by all and give instructions on where to find it at the end of the article.

The Backstory

A continuous integration system is primarily a means of triggering processes that are commonly automated. At REWIND, we depend heavily on our continuous integration systems, the backbone of which is the excellent TeamCity CI from JetBrains. We use this to manage the generation of builds for all of our projects.

By offloading build generation to TeamCity build agents, we free up the time and computational resources required of developers to build on their local machines. We have a ‘ground truth’ environment free of any idiosyncrasies from a developer’s machine with all of the latest committed changes and we can even build our changes on different operating systems.

An example of a TeamCity project interface, REWIND

One TeamCity feature that we have recently started using more heavily at REWIND is the ‘personal builds’ feature. This is a means of embedding local changes on the build machine without having to commit changes to source control, and it is trivial to trigger these via the ReSharper plugin for Visual Studio (the TeamCity portion of the plugin is free to use for all users).

It is an excellent way to test your features, especially if the target platform is different from your development device (Say, an iPhone when developing on Windows), without either building locally (potentially resulting in false positives/negatives), or living with the shame of your commit breaking the build and having to coyly back out your change.

This works great for our programming team who are armed with their Visual Studio licenses. However, for our design and art teams, they would still need to commit their changes to be able to view their work in a packaged build; be it a blueprint-scripted gameplay mechanic or a fancy shader that needs to be reviewed on the target device.

We wanted to empower our other development departments to be able to take advantage of the personal build feature, in a way that was familiar to them as Unreal Engine developers — and so the TeamCity personal builds plugin was born!

Getting RESTful

RESTful APIs are a collection of web URIs that allow applications to invoke functions, retrieve values, and generally communicate with cloud-based services.

Historically, the use of RESTful APIs is not something that REWIND has had to be particularly familiar with. It just hasn’t come up all too often when building real-time immersive experiences. That has changed over the past two years, with more and more industry focus on developing connected experiences that persist across sessions, RESTful APIs are becoming increasingly prevalent.

TeamCity exposes an entire RESTful API for programmers to interface with to build whatever third-party TeamCity applications they want, and thankfully, this includes the ability to upload personal changes to the server, and to trigger builds directly from the API. With our new-found experience with RESTful APIs, we were able to leverage the built-in support for HTTP requests in UE4 to directly communicate with our TeamCity server using no additional dependencies.

With that in place, we just needed to build the editor-facing widgets to expose the features to our team!

Running Personal Builds in Unreal Engine

The means by which a developer triggers their own TeamCity personal build in Unreal is much like the one found in ReSharper. We list the tracked changes according to your source control provider and you are able to select all of the changes that you want to include in your personal build.

This is also where you log in to the TeamCity service by clicking the ‘Connections’ button at the top right.

When you have selected your changes, you can hit the ‘Run personal build’ button at the top left.

Example of the Personal Build tab

You are then presented with a view of all of the compatible TeamCity build configurations for your project. You can select as many configurations as you like to test your changes on. So, depending on your available agents, you can run all of your personal builds concurrently.

An example of selecting your build configurations

The plugin uses TeamCity’s web API in order to invoke personal builds, passing the binary data for all the changes in the payload. The plugin then makes use of Unreal’s notifications system to display the status of the builds in a way that is familiar to Unreal editor users.

An example of a build notification as surfaced in Unreal

From the notification, you can go directly to the TeamCity build log to check on the build progress, or you can cancel it.

The Build History Tab

As a quality of life addition, we added a build history tab too. Users can track their personal builds for this project configuration, with the personal build description shown to help easily identify changes (another reason to write coherent descriptions if ever you needed one!)

An example of the Build History tab

It is still early days for our TeamCity personal builds plugin for Unreal, but internal feedback so far has been positive as we enter a future of democratised personal builds!

You can find the source for the plugin along with precompiled binaries for UE4.25 over on https://github.com/REWIND-co/Unreal-Engine-TeamCity-Plugin.

XRLO: eXtended Reality Lowdown is brought to you by REWIND, an immersive design and innovation company. If you want to talk tech, ideas, and the future, get in touch here.

Your claps and follows help us understand what our readers like. If you liked our articles, show them some love! ❤️

We’d also love to hear from you. If you’re passionate about all things XR, you can apply to contribute to XRLO here. ✍️

--

--