|
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. Find them on the web at www.bizarrecreations.com.
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.
|