Developer Diaries

Jak X: Combat Racing Dev Diary #3

It's Saturday afternoon in sunny Santa Monica, and while crowds of tourists and locals flock to the beaches, a few of us are still hard at work putting the finishing touches to Jak X. Actually, at this point the game itself is pretty much complete. We're in "code freeze," which means that the only changes we make from now on are bug fixes. Fortunately, the flow of bug reports seems to be drying up!

It's been a really exciting year. It seems that hardly any time at all has passed since Evan and Stephen (Naughty Dog's co-presidents) first raised the possibility of doing another Jak game. Since this was to be Naughty Dog's first foray into the world of online games, and I had some network programming experience, I wound up being the first programmer on Jak X.

The first thing this involved was looking into the Jak 3 code and figuring out the best way to get the game communicating over a network. Diving headfirst into a million lines of somebody else's code is always a daunting prospect. In this case, even more so, because Naughty Dog writes everything in "GOAL" -- a completely custom programming language, unfamiliar to newcomers like myself. GOAL is constructed almost entirely from parentheses and bits of duct tape, but it does actually make game development much faster and easier.

In a couple of weeks we had simple deathmatches and races up and running using the "Sand Shark" vehicle from Jak 3. At this point, the game was already fun to play -- a good sign! The vehicles were enormously cool to begin with, and the ability to blow other people up over the network only made things better.

Toward the end of 2004, the Jak 3 team returned from a well-earned break, and development on Jak X took off like a rocket. Within a few months the game had been transformed from a little network demo into a real game. The Jak rendering engine had held up exceedingly well - we were streaming polygons off the disc at an alarming rate, and the artists had, as with previous Jak titles, done a great job of really making the engine shine.

One of the decisions that we made fairly early on was that there should be one unified "game engine" for both online and offline play. This makes development a little trickier (because all game objects must be written to be "network-aware"), but it also means that almost all of the play modes, weapons, and objects that appear in the offline games are also available online. Coupled with the ability to take the vehicles that you've customized in adventure mode and play with them online adds a great deal to the multiplayer part of the game.

I'm still amazed at the amount of fun features we were able to implement in such a short space of time and with such a small team. It's been a great experience to work with such a talented, focused, and dedicated group. I can only hope that people enjoy the end result as much as we do.