Bizarre Creations

12/3/09

JAM Code Builds

December 3, 2009 - Roger Perkins, Bizarre Creations

Abstract

The article describes our switch from our previous legacy build system based on a number of different technologies to our current unified system accelerated with the XGE platform. We wanted a system that is easy to maintain, works the way we want it to and is fast enough to comfortably compile up code changes no matter how major the change. We now have a system that provides us with distributed builds for the Xbox 360, Playstation 3 and Games for Windows, all accelerated using a single system for ease of support, maintainability and enhancement.

Contents

Challenges

Our previous legacy code build pipeline was based on a Microsoft VCProj file for each platform we worked upon. The coders would have to remember to edit all the platform projects when adding/removing files and would have to switch between projects to compile up code. This frequently introduced discrepancies between the platforms resulting in constant compilation issues between platforms and slowing down the workflow for the coders. Editing the project files also tended to result in fighting with many conflicts when trying to commit changes back into our source control system.

Alternatives

We'd previously been using a combination of Xoreax IncrediBuild and another third party tool, but this did not provide us with a unified cross platform build solution. The third party tool only has support for building Playstation 3 code, which ruled it out of being used for all our needs. Other investigations of both hard-drive and processing power concluded that it was brute force CPU power that was needed most to accelerate the build process, with the easiest and most cost effective way to achieve this being to distribute the work out to other machines that had spare processing power available.

Solution

Our goal was to find a system flexible enough to meet our demanding needs. We had settled upon a system based upon JAM to handle the management of files, which allowed us to specify in a single place the files for all the platforms we wanted and also easily specify platform-specific options for their compilation on a global or individual basis. This would also generate project files which could be easily opened within Visual Studio to allow the coders to use a familiar interface to work with and compile their code.

Fortunately, it was around this same time that XGE first appeared as a product which appeared to meet our needs. XGE was very rapidly up and running to accelerate code compilation for the Xbox 360. One of the major benefits for us was that we didn't have to pick a system to use from a list supported by whatever software we wanted to distribute compilation with, XGE just worked out of the box with our system by intelligently intercepting stages of the build process so that it could distribute the parts of the process over the network to multiple other computers. From here we worked closely with Xoreax to improve the support level for both the Playstation 3 and Windows through the XGE interface to the point where all three are now at parity.

Benefits

We already had what we considered an optimised build process to some extent with just using JAM, in that we batch a number of code files together to reduce the pre-processing and compilation times, however as you can see in the chart below we were able to realise more dramatic speed decreases when using XGE in addition to our existing work.

In the example above you can see that when compiling part of our codebase for the Playstation 3 we get a signficant speed increase from utilising all the cores on a quad-core processor, however this also renders the entire PC unusable for much else during the 25 minute duration of the build. With XGE, we can achieve an additional 3x speedup with very little cost and effort, while maintaining the building machine's responsiveness and usability.

Summary

We have a single easy to maintain system that is easily configurable to adapt to our current and future needs. The XGE interface is flexible enough to distribute many stages of both our code and content pipeline and utilise the spare resources of other machines on the network as they become available.

About Bizarre Creations

Bizarre Creations is a mid-sized video game developer, based in Liverpool, UK. Established in 1994, the company is famed for such high profile franchises as Formula 1, Fur Fighters, Geometry Wars, Project Gotham Racing, and The Club. Bizarre prides itself on providing high-quality next-generation gaming experiences that excel in gameplay, graphics, audio and technology.

About the Author

Roger Perkins is a lead programmer at Bizarre Creations and has worked on such titles as MSR, the Project Gotham Racing series and more recently the upcoming Blur.