The Tester’s Notebook will be a series of posts based on real-life notes taken during the development of Treyarch’s Call of Duty 3. The title is “loosely based” on Ernest Adams' outstanding columns and website The Designer’s Notebook.
I was in the Call of Duty 3 multiplayer team from May 2006 until November 2006 – from Alpha to Gold and beyond. We were 10 to 14 production testers at Treyarch’s headquarters in Santa Monica, CA.
Although I currently work in tech and game PR, I’m proud of the work we did in COD3. The MP is still fairly popular in Xbox Live – even going against Call of Duty: Modern Warfare and COD5… And fun as hell :)
I’m sure these notes will be a great help to those interested in becoming game testers and anyone with an interest in game development.
(1) Of Stuck Spots, Zone Popping and Freezes
The date: August 2, 2006
Development stage: Beta
• Freeze when selecting “Instant Action” (PlayStation 2)
• Can’t go up in session list (PlayStation 2)
• Zone popping (Xbox)
• Stuck spot (Xbox)
The notes make it obvious: this particular page of the Tester’s Notebook is about testing current-gen ports of Call of Duty 3. Of course, as spoiled testers that we were, everyone HATED testing on the PS2 and a little less so on the Xbox. I still remember the headaches induced by the PS2 version’s low FPS (frames per second).
But testers don’t get to choose.
To be honest, Call of Duty 3 on the PS2 is a feat of engineering. When you add multiplayer to that, it becomes a miracle because the PS2 did not play nice in networked MP. The two bugs I described in the notebook perfectly illustrate it.
“Instant Action” on the PS2 is the same as “Quick Match” on Xbox Live – merely joining a game by means of Instant Action would result in a freeze.
At first, this bug seems like a though one, but if you can reproduce it five in five times (testing uses a scale of five or ten to measure reproducibility), all you have to do is output a memory dump and give it to the programmers.
(of course, you would need a PS2 devkit to do that)
“Can’t go up” is another easy bug to spot and report. Make sure it happens every time, file a bug report, BOOM! You’re done. Now, if the bug only happened from time to time, this would be a totally different story.
“Zone popping”: when a zone suddenly appears from nowhere instead of quietly loading before the player gets there.
In next-gen machines, zone popping is not really a problem anymore (correct me if I’m wrong!) On the Xbox 360, devs have 512MB shared by system plus video to play with. On the PS3, it’s 256MB system, 256MB video. Well, on the Xbox, all you have to work with is 64MB. With Call of Duty 3 being a multi-platform title, Treyarch’s programmers had to find a way to make a level running on the 360 run on the 1st generation Xbox. The answer was zones. So in COD3, whole levels were split up in zones and loaded according to the player’s position.
(That’s exactly how a game like Grand Theft Auto III runs on a PS2. They divide that huge world in zones that stream from the DVD drive)
Here, describing things properly is essential. A good description will help level designers identify the offending zone. Then a programmer can jump in – if necessary – and fix it.
Our final bug for the day is a “Stuck spot.” Note: not a “sticky spot,” which is nowhere as serious as a stuck spot. Notice that I wrote the coordinates by hand on the notebook. That’s the professional way to pinpoint a stuck spot. If your devkit has coordinates (it should), make good use of it.
Stuck spots are High bugs because they interrupt gameplay. They’re easy to fix though; most of the time, the problem is in the level’s geometry. Make sure to take lots of screenshots, make them into a nice ZIP file and file a detailed bug report. That should do it.
In our book Game Development Essentials: Game QA & Testing, we go over the most important elements of game testing including, of course, stuck and sticky spots. The book has much more than I could fit in a blog post, but these notebook scans are exclusive to Gamasutra. So, enjoy the ride and see you next time!