Destructible environment. That's one of the keywords of Red Faction: Guerrilla. PC Games Hardware interviewed the developers about the technological aspects of the game.
Red Faction: Guerrilla (7) [Source: view picture gallery]
Since early June console gamers are using sledgehammers and explosives to rearrange the environment in Red Faction: Guerrilla. The PC version of the game is said to be released in September and PC Games Hardware sent the developers some questions about the technological background and the GeoMod 2.0 Engine, which the game is based on. Our questions were answered by Matt Toschlog, President of Reactor Zero, Rick White, Producer at Volition, and the Physics Programmer Eric Arnold. PCGH:
Do you program your own engine for the game or do you utilize a middleware like the Unreal Engine 3? If you develop your own technology, why do you decide against a middleware solution?
Matt: Red Faction: Guerrilla uses a custom engine developed at Volition. There was really no other choice for RFG because the sophisticated destruction system is far beyond what any other engine can do. PCGH:
Rick: We started GeoMod with Red Faction and Volition has always wanted to take the engine to a whole new level, one that, in contrast to the original version, would allow the player to carve his own path. We have done that with GeoMod 2.0 and moving to the open world genre.
The game was developed for the consoles and the PC and the PS3 and Xbox 360 Version have already been released in June. What was the reason that the PC version was delayed? Did you face any problems porting the game to PC? Will the PC version be a pure cross platform product or did you use the extra time to offer a technically improved PC version?
Rick: We primarily needed to wait for final content and then focused on making the PC version of RFG "A PC Game” for PC players and just not another after thought port.
Matt: The biggest task for us was supporting both Direct X 9 and Direct X 10, and the wide variety of hardware configurations under DX9. Another challenge was maximizing concurrence on the PC, which has a different multithreading model than the consoles.
The PC version supports everything that's in the console versions, plus some extra graphical features such as Sun Shafts (God Rays) and Screen-Space Ambient Occlusion.
Red Faction: Guerrilla (9) [Source: view picture gallery]
If the PC version differs from the console game, what are the major differences? Are there any technical as well as visual features that can only be realized with the PC as developing platform?
Matt: As I mentioned earlier, we added some graphical features that take advantage of the latest and greatest PC hardware. But mostly the three platforms are pretty comparable. PCGH:
Destruction physics with stunning visuals play an important role in your game. But how important is the general visual quality? What would you mention as visual highlights of Red Faction: Guerrilla? Does the renderer utilize features like Parallax Occlusion Mapping, Soft Shadows, HDR Rendering, Screen Space Ambient Occlusion or post effects like Depth of Field or motion blur?
Matt: Visual quality is of course enormously important - we wanted Red Faction: Guerrilla to be as beautiful as it could be. PCGH:
The biggest visual highlight of Red Faction: Guerrilla is the sheer complexity of the rendered scenes. With RFG's destruction system, there is often an unbelievable amount going on in any particular scene - huge amounts of destruction debris, all animating with real physics. And RFG's particle system creates awesome looking smoke, fire, dust, and explosions.
Of the features you list, we have Soft Shadows, HDR Rendering, Screen-Space Ambient Occlusion, Depth of Field, and Motion Blur. Plus, we have sun shafts and a cool refraction effect for heat waves and camouflage.
An advertised PC technology is SLI or Crossfire. As far as the overall performance of the PC version is concerned, can players increase it remarkably by buying a second graphics card or a card with two GPUs? Did you have to add multi GPU support when developing the PC version?
Matt: Red Faction: Guerrilla supports both SLI and Crossfire on the PC, and users with these features will see a pretty good performance increase. Adding SLI and Crossfire support is mostly automatic, so only minor changes were required.
Red Faction: Guerrilla (6) [Source: view picture gallery]
Developing for Console and PC usually requires an engine that is strongly multithreaded. Is that the case with your engine? If yes how does the engine profit from dual or quad core CPUs? What different calculations can be or are split up into different threads and what is the expected performance gain resulting from two respectively four or more cores?
Matt: Red Faction: Guerrilla uses a multithreaded engine, and game's minimum spec is a dual-core machine. The two most important threads are the graphics and the simulation, so the game makes full use of a dual-core processor. Some additional threads will take advantage of additional cores, but users will not see a big performance increase on a quad-core or better machine. PCGH:
To realize your very special physics simulation you decided to utilize Havok and as we were told made a lot of modification to the engine. What were the necessary modifications to taylor Havoks technology to the requirements of Red Faction: Guerrilla? Will your physic simulation even feature a LOD-System to reduce the workload for the CPU?
Eric: Havok was used for the rigid body simulation, but the entire destruction system had to be built as a combination of customized Havok code (to represent our destroyable shapes) and fully internal code (for sections like the stress simulation). We worked closely with the Havok staff to squeeze every last bit of performance out that we could - for example we had to remove code from the SPU section on PS3 just to make room for our custom code. There are a number of sub-systems in the destruction code that monitor what is going on in the game and scale the simulation fidelity up/down as needed to maintain a solid frame rate. This required constant tweaking to get the right balance of speed and the feel of breaking through a wall with a sledgehammer.
Red Faction: Guerrilla (11) [Source: view picture gallery]
What were the reasons not to use Nvidia's Physx Engine? What is your opinion about calculating physics on the GPU? Wouldn't that have been a suitable alternative for a game like Red Faction Guerilla where physics are in the focus of gameplay?
Eric: We evaluated all the technology available when we started work on the engine (keeping in mind that we would need it to work on multiple platforms) and decided that Havok was our best option. Their support staff was very helpful and maintained a tight working relationship that allowed us to push well beyond what even they thought would be possible using their engine. As for pushing physics to the GPU that would not be remotely possible for us. Believe it or not in a lot of situations our engine is actually render bound. Introducing destruction creates many more faces than a normal game would for a similar scene, and since everything can be smashed to bits we can't take shortcuts to skip rendering buildings. In the end as long as your CPU and GPU finish a frame at roughly the same time you can't do much better than that and it doesn't really matter what you have running on each.
Red Faction: Guerrilla (10) [Source: view picture gallery]
Will the PC Version of your game offer a support for Direct X 10/DX10.1 or even DX11?
Matt: We're supporting Direct X 9 and Direct X 10. PCGH:
Since we're supporting both DX 9 and DX 10, the PC code was actually more complicated than if we'd just supported one API. That said, some things were easier under DX 10. In particular, we know that all DX 10 devices will support features such as hardware PCF shadow mapping.
The graphics are largely the same under DX 9 and DX 10. A few advanced features - such as Screen-Space Ambient Occlusion - only work under DX 10. As for speed, there isn't a big difference between the two APIs.
Many fellow developers report that in theory many DX10 effects can be realized with DX9 as well. Do you agree? Do you think DX10 or even upcoming DX11 are the Future of gaming graphics? Have you already thought about alternative displaying techniques like CUDA Compute Shader, Raytracing, Raycasting or Voxel Rendering for example?
Matt: It's true that most features can be done with both DX 9 and DX 10. Since Direct X is the dominant API on the PC, we expect to be using whatever new versions are available for years to come.
We've certainly spent some time thinking about the alternative techniques such as the ones you listed, but we're not yet ready to use them in a released game.