Game Development Reference
automated. By setting up a procedure whereby the route to committing new code is
via a test machine, and by automating the tests that the machine carries out before
clearing new code for a commit, you can trap just about all common errors well before
they have any chance of tainting your main game code. The test scripts you run on this
test machine can look for common errors and automate an email notice program that
notifies all key personnel of the new code, its new features, and so on—using the notes
that each programmer is required to attach to new code they submit to the test
machine. Another advantage of automating this system is that you can track the mis-
takes that are being made and take steps to prevent them going forward.
“One rule you have to have when you allow sloppy submits is this: don't submit if you're going to
leave work soon. It's very tempting when you get to the end of the day, and you've put the finish-
ing touch on that feature you were implementing, to submit it and go home. But then you might
break the build and someone else is going to have to fix it. Either be willing to wait until the auto-
build machines have validated your submit, or wait until the next morning to submit.�?
Jamie Fristrom, programmer on Spider-Man2
Integrate Testing with Building
The practice of ensuring that all new code gets submitted for testing before a coder
can make a commit is a significant step in the right direction. It's also essential to a
well-ordered system that you ensure your team is working on the same build version
and that at any given time the build version is as stable and bug-free as possible. You
can achieve this by doing the following:
At least once a day, automate the creation of a build that also coordinates all
new and existing assets and executables. Automated testing can be used to
ensure that new assets do not break the existing code and to test new code
snippets, audio, and so on.
Make sure the system embeds version numbers and any other meta-data that
might prove useful in the smooth running of the development cycle, such as
asset and code source data and so on.
Make sure the system runs automated regression tests.
Once a day, have someone run the latest version of the game to check for
obvious errors the automated system may have missed.