Ghostbusters was an unusually long project for us. We started in January 2006 with a prototype. For the first nine months of development, we were working on recreating the ballroom scene where Slim is captured from the first movie, obtaining the movie license and getting the green light to develop the project. At the same time, we knew we had something special with the Infernal Engine. A few former Terminal Reality employees wanted to use our technology to create a game for themselves; hence our engine licensing effort began as well.
We started off knowing we would be a cross-platform game. We had early PS3 hardware and early Xbox 360 hardware, and the dual-core PC was the fastest money could buy. Multithreaded game programming was just a concept; we had experience on the PS2 where you could get two coprocessors running independently from the main CPU, but nobody had made a game yet with multiple cores in mind. As the lowest common denominator, we chose the PS3 multithreading model, with one main CPU controlling the game loop and multiple coprocessors performing small tasks as the main game loop needed work done.
When we got final development hardware, we knew multiprocessing was the way to go. At this point, the consoles were faster than their PC counterparts, and we had to reinvent how the Infernal Engine worked. Ghostbusters was conceived and sold as a game with highly destructive environments, so our physics engine, Velocity, was the first part of the game to be multithreaded.
Threading Velocity was quite a fun task, and we are still making improvements to this date. Velocity consists of two main parts: collision detection and the physics solver. Collision detection is an obvious problem to thread -- if you had 5,000 processors and 5,000 bodies, you could do 5,000 collisions in one step. However, the rigid-body solver was a big challenge to thread. If you have multiple "islands" of bodies touching each other, then you can perform the islands’ solving in parallel. However, if you have one giant island of rigid bodies, like a huge pile of library books, things get really tricky as each body's accumulated forces depends slightly on its neighbors.
We also knew that for a game coming out in 2009, the bar would be quite high for particles and special effects. We set out to write our third particle engine, appropriately named Trifecta. Trifecta would be a material-driven particle system giving the artist more freedom than ever, with no code involvement.
One more challenge we had was to fit Ghostbusters on a single DVD-ROM not only for the Xbox 360, but for the PC version as well. In order to fit an hour's worth of HD video on the ROM where every bit counted, we would need a modern compression system. Luckily for us, the Open Video format was announced in November 2008, and we were able to quickly recode it to run in parallel on the Xbox 360 and PS3 in order to be fast enough. We now had high-quality 720p HD video at 6,000 Kbps with 10 channels of audio (5.1 audio with four extra center channel languages for those of you counting).
Ghostbusters was an expensive project to make, and it switched publishers twice. After the first publisher change, our lead-level designer took over the reins of the game and did a great job keeping the team focused on finishing it.
Mark Randel is the president and chief technology officer of Terminal Reality Inc., developer of Ghostbusters: The Video Game.