The Blame Game – Part 1
During the development of a new game it’s not uncommon for a level or two to occasionally fail to load. Maybe there’s some outdated built data on someone’s machine or perhaps a change went in that hasn’t been tested in every level yet. There’s all kinds of problems, and if you are on debugging machine, you’ll see the callstack and be able to tell the right person that needs to fix it what’s up. But artists, they don’t have a debugger, they don’t use a callstack. They rely on the output of warning messages to help them know who to go to when a level fails to load.
And Ricardo, one of our programmers, was getting a lot of visits from the artists.
You see, it just so happened that the last message that was seen by the artists when a level was crashing was this:
The HUD and its associated tools were his responsibility. Notice that its trying to tell you that it successfully completed – ie. there’s no problem. But that didn’t keep people from knocking at his desk with “well, the last thing that I saw on the TTY was something about the HUD database. Can you look at it?”
It was rarely (if ever?) actually the fault of the HUD code. It just happened to be that whatever was making the game crash was not printing a failure message to the TTY and people just incorrectly assumed that whatever the last thing that spit out text was what caused it to break. So Ricardo decided to “fix” the problem. In his own way:
If you are reading this as the last debug message, it does not necessarily mean that it was Ricardo's fault.
Fixed! And it did greatly reduce the incorrect placement of blame.
Of course, this could be where this tale ends, but you’d be wrong because, well… because programmers are a silly bunch. It only took a couple days for that message be slightly tweaked:
If you are reading this as the last debug message, it means that Ricardo broke the HUD, see him immediately.
Of course you know… this means war.
And Ricardo fought back with some style. He replaced the output message with one that was created via a madlib-style function that pieced together a string of ridiculous buzz words and a randomly chosen programmer’s name (selected from an array of targets personally created by Ricardo.)
To go with this outrageous function?? An outrageous function name, of course:
Some example output:
If you are reading this as the last debug message, it means that Matt's BLAST PROCESSING SYSTEM maliciously ** memory stomped ** the HUD, see Matt immediately.
If you are reading this as the last debug message, it means that Tyler's TRILINEAR FILTER BUFFER with no consideration ** runtime-instantiated ** the HUD, see Tyler immediately.
If you are reading this as the last debug message, it means that Justin's KEEN FASHION SENSE without a question ** dma starved ** the HUD, see Justin immediately.
The rebuttal went over very well and there was a lot of laughs. It was just so over the top that it was impossible not to appreciate.
The story could also end here, but remember: Programmers. Silly bunch. That half of the story, however, will just have to wait.