Mortal Kombat has always been about visceral, gratuitous action, with gore spatters rendered in as much terrible detail as the hardware of the day allows. At the cusp of the ninth-gen, at a time when home consoles are more powerful than the supercomputers from Mortal Kombat 2’s time, there’s nothing righter, more appropriate, than for such a long-lived franchise to send off the PS4 and Xbox One, not to mention the now-venerable Unreal 3 engine. Amidst the gore, stray eyeballs, and brain matter, it’s time to say goodbye. In this technical deep-dive, we’re going to have a look at how NetherRealm’s latest coaxes a remarkable visual spectacle from ageing hardware and an ageing engine.
Let’s get this out of the way: If you’ve not been paying attention to tech bylines over the past few weeks, Mortal Kombat 11 does not run on the modern Unreal 4 engine. Instead, just like Mortal Kombat X and the 2011 reboot, it’s running on the previous generation Unreal 3. Since the launch of the original Gears of War in 2006, Epic’s engine has had a surprisingly long lifespan, thanks in large part to a generous, source-available licensing policy. Thanks to its scalability, indie studios and mobile developers have used it to create remarkable experiences like Infinity Blade on iOS. At the other end of the spectrum, heavily customized versions of the engine beat at the heart of many visually arresting AAA titles such as Batman: Arkham Knight and the Borderlands series.
Thanks to the relatively open nature of the engine, with source code available to developers, it’s relatively easy to drop in specific modules to suit the needs of particular titles. This is the adaptability that has made everything from first and third-person shooters, to RTSs, to adventure games possible on the engine. And then, of course, there’s NetherRealm’s take on the engine, adapting it to fit the needs of the fighting game genre. Mortal Kombat 11 isn’t NetherRealm’s first Unreal 3-based fighting game. It’s not even the first Mortal Kombat the studio has handled. If we want to look at the technical underpinnings of NetherRealm’s particular fork of the engine, it makes sense to go travel back, nearly a decade to 2011’s Mortal Kombat, and then to the Injustice games. Delving back into source material from that time period, it’s evident that many of the key engine modifications seen in Mortal Kombat 11 have been around for quite a while on NetherRealm’s fork.
FRAME-RATE AND KEY OPTIMIZATIONS – REACHING 60 FPS
For starters, let’s talk framerates. Mortal Kombat 11 is a fighting game low input lag isn’t nice to have—it’s key to a competitive experience. The game and its predecessors were built around a rock-solid 60 FPS update. At first glance, Unreal 3 doesn’t look like the ideal engine for this kind of game: Unreal 3 was built with seventh-gen console shooters in mind. Typical workflows and frame budgeting in titles like Gears of War, and Borderlands target a 720p 30 FPS update, for an experience that’s high on visual spectacle, but not particularly responsive. This focus on visuals over framerate is evident in the kind of seventh-gen titles utilizing Unreal 3.
Unlike the idTech engine, for instance, few high framerate twitch shooters were made for console using Unreal 3. The bulk of first and third-person shooters built on the engine—from Mass Effect to Bulletstorm targeted a “cinematic” 30 FPS. Lavish alpha, relatively wide draw distances, and even Nvidia PhysX effects are perfectly acceptable if you’re not targeting the most responsive experience. Fighting games demand minimal input lag, silky smooth framerates, and rock-solid consistency, even at the expense of visuals and scale.
idTech 5, on the other hand, was built from the ground up on the premise of delivering responsive, 60 FPS gameplay on PS3 and Xbox 360, something that Rage definitely delivered on. (Ironically, The Evil Within was a third-person horror game that repurposed IdTech 5 to deliver a 30 FPS experience so cinematic, it was actually presented in 21:9 with black bars on the side.)
With Mortal Kombat’s hardcore competitive fanbase, there’s just no way the game could work as a 30 FPS experience. It has to be responsive and it has to hit 60 FPS, even on the base consoles, while still delivering a visual spectacle. This means that corners have to be cut. Optimization is crucial to handing in a consistent, high-framerate experience.
Going back to the 2011 reboot, it’s evident that many of NetherRealm’s design choices for the original carried over to Mortal Kombat 11 and the eighth-gen consoles. For starters, and unlike in earlier 3D outings in the series, most of the action takes place on a 2D plane. (The Krypt, of course, is in 3rd person, but with action considerably toned down). Constraining camera angles makes culling a much easier task. Quick technical recap here: Culling refers to selectively not rendering objects in order to improve performance. Unreal 3 titles tend to be shooters or semi open-world experiences, so distance culling is typically used. This is when geometry’s culled past a certain max view distance and replaced with sprites or low-poly LODs.
Mortal Kombat appears to use dynamic occlusion culling instead, where objects are culled when they are not in the camera’s view. In shooters with user-controlled camera movement, this tends to be more expensive than distance culling, since the camera visibility of objects has to be constantly updated. With a fixed view, however, dynamic occlusion culling is much cheaper since camera position is a predictable variable. This by itself can significantly boost performance as only a small, visible section of level—the part the camera’s fixed on—has to be rendered at a given time. The Unreal 3 SDK also has a function called precomputed visibility, which—as the name indicates—allows you to compute culling areas beforehand to free up even more GPU time. Mortal Kombat 11’s fixed camera positioning is a very good use case for this and precomputed visibility culling is a likely optimization in use.
ENHANCEMENTS – MODEL POLY COUNTS, SHADIN, LIGHTING, AND MORE
While the limited scope of the game plays a big role in allowing it to run at such a high framerate, this also allows headroom for some spectacular visuals. The focus here is on the character models. We’d be lying if we weren’t floored by the sheer density of detail. We’re approaching the point where focused experiences like fighting and sports games feature visuals that are just on the threshold of photorealism. When playing Mortal Kombat 11, you’d be forgiven for momentarily confusing an in-engine cutscene with CGI. Mesh detail plays a major role here. Polygon counts are in the high five digits here. Details such as the decorative whorls on Kotal Kahn’s helmet—which would’ve been normal mapped in other games—are are sculpted out of actual geometry.
It’s evident that the art team has made full use of the poly count, factoring in high model complexity in their workflow. Organic, curved objects feature prominently, even in places where sharp corners wouldn’t be immediately noticed. For instance, the leather straps on Cassie’s outfit curve sinuously. While aesthetically pleasing, these could easily have been substituted with a straight design with no one the wiser. Raiden’s belt rope has a tasselled end with each of the many segments moving independently. Two generations ago, the belt itself would’ve probably been a texture. Hair rendering also receives a boost in fidelity, thanks to the increased poly count. Characters don’t sport a “hair helmet” look, and hair strands are fine enough that don’t look artificially coarse.
Texture work is phenomenal and effectively complements the high-poly models. We’re looking at 2K and 4K textures across the board here. Unlike open world titles, where there large environmental textures can gobble up VRAM, the focus here is on quality over quantity. This has allowed the artists at NetherRealms to add high frequency detailing, from skin pores to the tarnish on metal, and scale this down to the VRAM-starved base platforms without compromising on texture resolution.
Skin and Material Rendering
The way skin is handled deserves special mention here. Skin rendering has always been difficult to pull off in-game. Subsurface scattering has been implemented to simulate light transport through skin. While it is a subtle effect, subsurface scattering can be seen easily in scenes where the faces of characters receive direct lighting—in many games, the lack of simulated light transport results in skin having a waxy cast to it. With subsurface scattering enabled, the interaction of skin with light is handled much more realistically. The high quality shader work here combines with high frequency textures that capture individual skin pores, and complex meshes that add natural irregularity and roughness to the surface, as well as providing depth to scars. This results in some of the most natural-looking skin we’ve seen in any game.
Other materials apart from skin also look great. Materials in-game are well-designed, with plenty of high frequency detail, and sit well in the environments.
Because of how constrained they are, environments are lavished with plenty of detail. The art style strays a bit away from photorealism. Character limb proportions are somewhat exaggerated, and the lighting (which we’ll talk about here in a bit), veers towards bright and shiny, as opposed to realism. The result is visuals that look more akin to CGI than live action.
Speaking about environments, let’s have a quick look at the Krypt. It offers an interesting change of pace, relative to the frenetic one-on-one fighting elsewhere in the game. While still very much a constrained space, relative to other games, the Krypt does allow you to explore a small part of Mortal Kombat 11’s environment from a standard third person view. The Krypt is all about about exploration—you can break things with the Warhammer of Shao Kahn, but it’s a simple, one-button affair. As we mentioned earlier, a good part of the framerate optimization in Mortal Kombat 11 derives from very effective culling in fixed camera angle scenarios. This obviously can’t be done in the Krypt as it out plays out in third person. We actually like the Krypt’s more contemplative pacing. Hints of From Software’s work come through in the environmental storytelling though, of course, there is no real combat as such.
Lighting is an area where Mortal Kombat 11’s design has helped it overcome the limitations of the ageing platform it’s built on. By default, Unreal 3 features a forward renderer which, while generally performant, introduces a penalty for multiple dynamic light sources. Forward rendering is a bit of problem when it comes to lighting in shooters, since not all light sources in the game can be made dynamic without suffering a massive performance penalty. Dynamic lighting is a very important part of the visual makeup of modern games. As such, some modern titles based on Unreal 3—such as Arkham Knight and Mortal Kombat 11—have a bespoke deferred rendering path added in. This allows for the large number of light-casting sources seen in the Krypt, as well as adding visual flair to regular maps, with backdrops like lava surfaces casting light.
Global illumination is visible here, and Unreal 3’s Lightmass solution has likely been utilized to precompute indirect lighting. Dynamic global illumination is expensive, but makes more sense in broad, interactive environments. Mortal Kombat 11’s constrained stages make it an ideal candidate for a precomputed solution like Lightmass. Almost all light-casting sources are static and can’t be interacted with, since they’re outside the plane of the playable area. Global illumination works well with the game’s art design: The environment receives indirect lighting from the large number of glowing objects in-game. Ambient occlusion handles indirect shadowing, helping to ground things further.
Particle effects are a step up from previous titles. Particle rendering is especially important in a gorefest like Mortal Kombat 11. hardware acceleration helps here, leveraging the compute power of the console’s Radeon GPUs. This allows for particles with at least a certain degree of persistence—metal sparks, for instance, actually fall to the ground and rest there before being culled. Along with blood spray, gore has a polygonal element with stray eyeballs and bits of brain matter rendered well enough to look decent when zoomed in on during fatalities.
Mortal Kombat 11 makes use of a post-process solution for anti-aliasing. This is necessary because of the use of deferred rendering—hardware AA just doesn’t play nice with deferred renders, at least without massive performance costs. On console, temporal anti-aliasing is utilized. While adding a bit of blur to overall IQ, TAA does a great job of smoothing out jaggies. PC players also have the option of either using cheaper FXAA, or combing it with TAA. Supersampling is also a possibility. Considering how well the game runs—4K/60 is doable on mainstream hardware, simply downsampling from a higher resolution may be enough to net great image quality at 1080p without sacrificing performance. This is obviously not an option on console unless, of course, you’ve got a Pro or One X hooked up to a 1080p television.
Animations are good, not great. The poor quality of in-game animations, the sense of tankiness, is an issue in all of NetherRealm’s recent fighting games, from older iterations of Mortal Kombat to the Injustice series. It is a stylistic choice—some might prefer the immediacy of 1:1 response to controller input, but in action, NetherRealm’s fighting games look and feel choppy. Thanks to a rejigged animation system, Mortal Kombat 11 characters move noticeably smoother than those in Injustice and the older Mortal Kombat titles. Idle animations have been overhauled from the frankly ridiculous slow-motion hip gyration in Mortal Kombat X. Best of all, skeletal animation is better with, for instance, foot positioning now correlating better with other movements like punching.
Lastly, let’s talk about cutscenes. From a visual point of view, Mortal Kombat 11’s real highlight is several hours of gorgeously rendered, in-engine cutscenes. Cutscenes are capped to 30 FPS. This serves two purposes: First, it allows the dynamic resolution scaler to deliver peak output for optimal image quality. And second, it offers enough headroom to present higher quality assets than those used during gameplay. Asset quality is fantastic here and the cutscenes are broadly comparable to CGI from about a decade ago.
All in all, Mortal Kombat 11 is a showcase of the power of the power of optimization. NetherRealms managed to squeeze a lot out of an ancient engine and ageing hardware. At 16.33 milliseconds a frame, there are always limitations in terms of what’s technically possible without sacrificing on that smooth 60 FPS update. But because Mortal Kombat 11 is s a fighting game with limited camera movement, a big chunk of that frame budget can be spent on maximizing frame quality. NetherRealms extensive modifications of the Unreal 3 engine show. Compared to older games built on the engine, such as those in the Gears of War franchise, Mortal Kombat 11’s visuals are a generation apart. The game compares also compares very favourably to recent titles built on Unreal 4. While the newer engine has a great selection of features that “just work” out of the box, the fundamentals—high quality artwork, dense, high-poly meshes, and a generous budget for alpha effects—shine through in Mortal Kombat 11. Even if it was built on an older engine, it’s one of the best-performing and best-looking titles on eighth-gen platforms.