Terminal Reality Interview
After years of delays (including one cancelation), developer change-ups, and a lot of hard work, Terminal Reality succeeded in bringing a Ghostbusters game to market for the PS3, XBox 360, Wii, and PC. Terminal Reality committed to building their own graphics engine—dubbed the Infernal Engine—to facilitate game development; we recently had a chance talk with them about the game, the new engine, and the future of multi-core gaming. The questions listed below were answered by Mark Randel, President and Founder and Joe Kreiner, VP of Sales and Marketing...
HotHardware: Implementing effective multi-core support in a video game has historically been a challenge, particularly in fast-paced action games. The Infernal Engine is built to take advantage of multi-core availability on both PCs and consoles, but how does optimizing for one multi-core architecture (say, the PS3) differ from optimizing for the PC?
Mark Randel: The PS3 is a lot different from the PC or 360 as the SPUs cannot access main memory – so you are limited by what you can thread on them. Data has to be manually gotten from the main memory via DMA rather than a CPU cache, so that is what makes the SPUs so fast. So for every program we want to thread on the PS3, we have to write a special version of it to load/store the data. That is the most efficient way of running code on the PS3 – write code specifically for it.
HH: While we're on the topic of the PS3, how many SPEs can the Infernal Engine keep busy simultaneously in a real-world gaming scenario? What's the typical number of SPEs in use at any given time?
MR: The Infernal Engine uses one full SPU just for real world sound on the PS3. The rest of the SPUs can become fully busy during a huge explosion where a lot of physics objects have to be simulated.
HH: It's been four years since AMD and Intel began championing the virtues of multi-core CPUs, but the number of games that effectively utilize even two processors is quite small. Ghostbusters actually takes full advantage of a second core, will future versions of the Infernal Engine scale well across four or even eight x86 cores?
MR: The current PC version of Ghostbusters can keep a Core2 Quad fully utilized. As our AI, pathfinding, and physics get more complicated in the future, we will be able to keep even more cores busy.
HH: Did any of the various platforms pose a unique challenge or force you to think outside the box to solve a problem?
MR: Just being able to run the Infernal Engine on multiple platforms forces us to think outside the box. One issue we’ve talked about quite a bit lately is supporting hyperthreaded processors. You need to throw away all you’ve learned in Computer Science class about multithreading to be able to efficiently run code on this type of CPU.
HH: You said "You need to throw away all you've learned in Computer Science class about multi-threading to be able to efficiently run code on this type of CPU." Is there a thread-collision problem if two threads that ought to be executed on separate cores end up on the same HT-enabled chip?
MR: Hyperthreading is a very powerful tool to increase the performance of the CPU – we’re seeing up to 50% greater throughput on a processor with it. When two very important threads wind up on the same core, you can have a serious problem with synchronization if you are not aware of how hyperthreading works. If those same two threads are on two separate cores, things run just like you have been taught...
HH: Why did the developers of the Infernal Engine opt to keep physics running on the CPU, as opposed to implementing the GPU-based physics both ATI and NVIDIA offer?
MR: Infernal Engine can fully utilize the GPU. If we put our physics on the GPU, then we’d have a slower frame rate!!! Plus you would then have a lot of the CPU be underutilized. It is natural to use the GPU to render – that is what it is best at. We can keep a GPU and four cores 100% utilized with Ghostbusters today. Not fully utilizing one or the other would slow things down.
HH: There's no shortage of game engines already on the market, many of which come complete with documentation as well as scripting and modeling tools. Why did Terminal Reality opt to design its own engine in the first place? What are the benefits of using the Infernal Engine as opposed to Unreal 3, CryEngine, Dunia, X-Ray (used in S.T.A.L.K.E.R.) or even the venerable Doom 3 engine? At what point did you stop considering pre-built options and decide to go it yourselves?
MR: We’ve always worked on our own engines, but we realize that it can take a significant part of development time to do this, so we did look at other engines and technologies, and you’ve listed some of the best. It always came back to the third party products not doing quite what we needed. For example, Velocity, the physics engine in Infernal can support collisions between objects of different masses. To this date, other physics engines still have problems with it. It makes the destruction in Ghostbusters subtly more realistic.