One of the most interesting aspects of working in the game industry is watching how the creativity that inspired many developers to go into the industry is exhibited so well technically.
Take game engine development for instance. New game engines emerge all the time in the game industry, as they push the envelope of what is needed in the game they are making. The net effect of this hyper focus on a specific challenge invariably leads developers to seek, create or even reuse previous advanced techniques in computer graphics. When a developer creates a game engine they are specifically developing techniques and tools to achieve the effect and performance they want. It is this dedication to pushing the tech window that has other 3D graphics industries continuing to look to the game industry for advances in technology.
One such example is the team behind the Nitrous engine from Oxide Games, who along with investor Stardock, are set to deliver a new 64-bit real-time-strategy (RTS) game. GBR recently had the pleasure of interviewing Oxide Games on their game Ashes of the Singularity, available on Early Access on Steam today.
With a focus on supporting a big strategy game with lots of action, Tim Kipp and Dan Baker of Oxide are both veteran game developers previously from Firaxis where they worked on Civilization V. They knew their new Nitrous engine needed to address the complexity and large scope that comes with sharing entire in-game worlds, not just individual scenes in a world. According to Tim, their team was small enough and agile enough to be able to take some risks, and write a game engine with the ability to scale quickly in a real time strategy sense, but not be limited to just one particular genre.
First Oxide looked to current state-of-the art graphics API technology such as Microsoft’s DirectX 12 (and soon Khronos’ standard API Vulkan™ – from the folks who brought us OpenGL® ES) to get the most performance out of modern hardware. By using every available CPU core and the multi-threading software techniques in DirectX12, Nitrous became the first commercially available engine to deliver a DirectX12 game.
Next up, after realizing the gains they could get from state-of-the art explicit APIs (such as DirectX12, Mantle, Vulkan, etc.) they rethought the direction many game engines take today. Instead of the more common deferred rendering techniques mostly found in the game engine development community, Oxide chose to implement an object space renderer.
This is the interesting bit. Object space rendering, arguably the opposite of deferred rendering, is nothing new to the CG community (recall Renderman?). Renderman’s Reyes (literally meaning “render everything you’ve ever seen”) and the micropolygons algorithm that processes the geometry for the Renderman renderer, suggestive of processes connected with object imaging systems, is exactly the object-space renderer the Oxide team chose for Nitrous.
With hardware performance gains evidenced by using explicit APIs such as DirectX12, anything old can be new again, or more precisely, anything linear can now work non-linearly (think watching movies vs. video gaming) thanks to those performance gains. Using their DirectX12 expertise, Dan and Tim decided to give the REYES renderer a chance to work in real-time. It worked, so they adopted it for Nitrous. “One cool aspect to employing something like REYES is that game developers sidestep significant rendering artifacts seen in traditional renderers”, according to Dan Baker of Oxide.
Oxide also had to solve a big AI problem; traditionally RTS style games have pretty bad AI, and the team didn’t want any AI techniques used to either slow down the game or rely on outdated tech. So, again visiting the advances now available in modern hardware, they were able to take advantage of a multicore custom scheduler, using four cores minimum and a custom scheduler to handle AI requests.
With all CPU cores now being able to talk to the graphics card, DirectX12 allowed Nitrous’ custom work scheduler to support the game’s AI going wide, while the graphics card is no longer sitting idle waiting for instructions.
Net-net: all cores talking to the graphics card. Thus, they now have the first asynchronous multi-core real-time AI available in any commercially available game engine.
The Oxide team also wrote a custom shading language on top of HLSL, one good for Direct12, but with plans to compile to SPIR-V, for porting to Vulkan in due time. Nitrous is also “tool-chain agnostic” – a common enough ideology these days for game engines. This basically means game engines load industry standard format files directly, don’t mandate custom tools, and try to adopt industry standards as needed. In that vein, Oxide adopted film industry standard ACES (Academy Color Encoding Specification) to support state-of-the-art cinema photography in engine. This means the standardized color space supported in HDR monitors and found in professional coloration tools will work well in the Nitrous tool chain.
According to Oxide’s Dan Baker, “We think Oxide’s Nitrous engine is a pretty big leap for the digital entertainment market.” The Nitrous engine could a formidable new entry into the game middleware licensing arena. When, if and how Oxide will license their engine are all still open questions. For more information on licensing Nitrous, send an email to email@example.com and an Oxide representative will get back to you shortly, according to their web site.
Many game engines today are built to support FPS games or are designed for indies and the uninitiated, so it’s cool to see a licensable game engine become available for developing large scale real time strategy games, as well as any other kind of games that require large scale AI, extremely high performance rendering and a state of the art tool chain.
Ashes of the Singularity, will launch on Steam Early Access on Oct 22, 2015 for $39.99 (a 20% discount off its regular price of $49.99). Built on the incredibly advanced Nitrous Engine, Ashes of the Singularity is the first 64-bit RTS, the first to use DirectX 12, and includes the first asynchronous multi-core real-time AI.