I first became aware of the guys behind Power of 2 Games from a post one of them made comparing the speed of various c++ compilers; speed being important in the feedback loop that CI provides you. Their blog is pretty low volume and is generally aimed at the c++ and game worlds but is generally pretty high quality when they get around to making a post.

One of them from this month was a reprint from a game industry magazine in which they talk about using a playback system to aid in their testing. The second part of the article deals mainly with the problems that can trip up your playback system and I think apply even to those who are not using playback techniques for games. Here are the choice bits (with my commentary):

  • Middleware libraries will often have slightly different behaviors in debug and release mode – Lower environments almost always run with debug symbols, etc. installed. Production rarely does. Think about how, where and why your scripts will be run before trying to get value from them.
  • As a general rule, treat debug and release builds as if they were different versions
  • Cranking up the compiler warning level to the maximum will allow it to catch some of the most obvious cases of reading uninitialized variables. For extra checks, I recommend a static code analysis program such as PC Lint. That’s almost guaranteed to catch every use of uninitialized variables (along with ten thousand other things, some of them extremely useful, though most of them you probably won’t care about at all). – Be sure to spend the time to tune what the tool checks for to get rid of the ten thousand things fast or people will ignore the list quickly
  • … it’s considered a good practice to avoid using pointer values for anything other than dereferencing them and accessing the data they’re pointing to
  • Data received from the network most definitely influences the game itself, so it’s another input to the game. – I am reminded of a graphic in the BBST course (slide 17) which can be attributed back to Doug Hoffman.
  • ReplayDIRECTORappears to be a record/playback tool on some serious steroids