Many moons ago, I worked on an awesome project called “Dungeon Keeper 2”, one of the systems I was responsible for was the creation of the Imp artificial intelligence. The imps basically kept your dungeon running smoothly, they would dig out new tunnels and rooms, bring the gold to the treasury, reinforce the walls, etc… The system had to enable the imps to organize themselves and work as a team, a team that could contain anywhere from 4 to 100+ imps. They had to respond quickly and efficiently to not only the direct commands the player would be indicating but also the tasks that the other game systems would generate, after all who else was going to drag the unconscious creatures to the prison or their rotting corpses to the graveyard?
One of the stress tests we used on this project was to leave the game running over night, in the morning we would either find everything working correctly or a crash. Occasionally we would find something completely un-expected, as illustrated by these examples;
We had left the game running on a test level, the player’s dungeon heart was in the middle with a cleared area around the heart. We had expected to come in and find the entire area bricked up and paved with 4 imps randomly idling. Instead the area around the heart was still dirt and it was littered with the dead bodies of imps, a lot of imps. Watching for a few minutes we watched imps spawning in, then attack and kill each other, after a bit of debugging we tracked the problem down. The combat system worked off of a “Fear and Threat” behavior, normally creatures on the same team would ignore each other when doing these calculations but a minor change had meant that they were threatened by their team mates to the point that they would attack each other and the bodies were being left behind because someone had increased the amount of time that bodies remain before disappearing, which is good for normal creatures but not for imps that auto-spawn quickly.
In another instance the game had been left running on the front end menu, inside this mini-level was a caged area where we put different creatures for show. In this test it had been left with a dwarf pacing the floor behind the bars. When the monitor was turned on in the morning, we found a dead dwarf and a dungeon that had been smashed to pieces. The first thought was that the dwarf had starved to death over night, however if he had he would of turned into a skeleton warrior. A little poking around and the problem was found…the front end menu system is actually a game level with a special camera and GUI overlay, the one thing that all levels are required to have is a player heart on them, and a player heart means there are imps... A quick debug camera around revealed, the imps had dug their way into the front end area in search of new land to claim and upon finding the dwarf had attacked and killed him! The fix, was to surround the entire front end section of the level with impenetrable walls.
During the course of developing our games we see a fair amount of unexpected behavior and some small percentage of those results are hilarious and occasionally poignant. About six years ago I started grabbing screen shots and making mini-movies of things going wrong during development and even today they still make me laugh. Obviously because of legal issues they will never see the light of day, but still I want to encourage other developers to start gathering project bloopers and outtakes. I don’t have any screen grabs or movies from the examples above, but I wish I had.
I wonder which game will be the first game to display bloopers in the credit sequences like “Monsters, Inc” or a Jackie Chan film?