A deep dive into the tech powering Codemasters’ racing sim.
Codemasters has had a strong run the past couple years. With the well-received Dirt Rally 2.0, the UK-based studio showed the world that they were masters at what they do—crafting racing games straddling the interstice between sim-racers and more casual experiences. Their racing stable—with multiple franchises are all built on the old but reliable Ego Engine. This year’s annual update to the F1 series, F1 2019 lives up to its expectations and, with enhancements to the Ego Engine, delivers a good visual experience with consistent 60 FPS performance across platforms.
A bit of context about the F1 series, first. Codemasters acquired the official license to Formula 1 in 2008 and since 2010, has released more or less annual updates to the franchise. As it’s an officially licensed franchise, the F1 games incorporate real-world Formula 1 tracks, cars, and players. Because of the annual release cycle, there’s not a lot that can be iterated on technically. Nevertheless, F1 2019 is an impressive step ahead of last year’s title.
PS4 Pro vs Xbox One X vs PC Comparison
Performance is the EGO Engine’s strong suit and we’re happy to report that, at least on this front, F1 2019 delivers. The game scales wonderfully across the PS4 Pro and Xbox One X. On the console front, we analyzed the game’s performance by taking some sample scenes from the game and running it through trdrop, an open source software. Note that this tool gives us a mere demonstration of the game’s performance, because an exact 1:1 representation of performance can only be provided by the developers themselves since they have access to vast of array of tools and profilers.
Both enhanced consoles target a 4K/60 FPS update and the situation is as expected. They reliably hit the 60 FPS target, combined with the excellent motion blur, meaning that in practice, F1 2019 is plenty smooth. While 4K is the resolution target for both enhanced consoles, Xbox One X output is definitely sharper than the Pro, suggesting that dynamic resolution scaling or a checkerboard solution is at work here. We also noticed minor differences in LOD scaling across the platforms but this isn’t something you’ll notice unless you’re actually doing a side-by-side comparison.
The PC version of F1 2019 is, unsurprisingly, the best way to experience the game, both in terms of visuals and framerate. Our test PC includes a GTX 1080Ti, 16GB of GDDR4 memory and Ryzen 1700 CPU. F1 2019 provides a decent number of graphical settings to tinker with including but not limited to post process, lighting quality, shadows, smoke shadows, anti-aliasing, screen space reflections, crowd quality and weather effects. An in-game benchmark tool is also provided which provided a decent overview of the kind of performance you can expect from your hardware.
Our set up had no problems at all, handing in a very consistent 60fps with every setting maxed out. Mainstream hardware performs admirably well, too. As expected, the PC version is noticeably better than what’s available on the base consoles. Overall, while we’re not particularly impressed with the visuals (more on this in a bit), the game scales well across multiple hardware configurations and it’s understandable that some things had to give in order to hit that 60 FPS target reliably.
F1 2019, along with all of Codemaster’s other racing games, is built on the in-house EGO Engine. EGO has seen multiple iterations ever since its first appearance in 2008’s GRID: Autosport, each building substantially on the other. Ten years and one and half console generations later, Codemaster’s iterative additions to the now-ageing engine have been just about enough to allow it to keep pace with modern racers on a technical level.
Because it was built primarily with sim racers in mind, the EGO Engine places a strong focus on hitting a 60 FPS target across platformsWe won’t lie by saying that there were no compromises made to get there. Stacked side by side with the likes of Gran Turismo 7 or any of the Forza Horizon titles, the EGO engine’s mid-2000s roots are all too easy to see. We have a run-of-the-mill deferred renderer here, albeit with a minimum number of dynamic light sources.
The EGO Engine made the transition to deferred rendering with 2015’s F1 iteration. The move to full dynamic lighting was accompanied by a decline in image quality, though. MSAA allowed for a very clean presentation in the earlier F1 titles. However, the dynamic lighting plays a big role in enabling some of F1 2019’s more compelling visual features, including smoke shadows. Realistic weather effects are one of F1 2019’s big draws and the relatively flat lighting isn’t a deal-breaker, at least during cloudy weather conditions. However, lighting is noticeably worse in comparison to other current games
What about material rendering? This is one of F1 2019’s definite weak points. While a physically based material rendering pipeline was integrated into the EGO Engine with its F1 2018 outing, Codemasters’ implementation of PBR is one of the least convincing we’ve seen this generation. Material properties just don’t look right. PBR algorithms differentiate between metallic and non-metallic surfaces. This is in order to accommodate the differences in how metallic and vitreous objects in the real world reflect light differently, even if they’re equally glossy. Car surfaces don’t look right, while other metal objects, such as fences to a combination of poor material quality, low-res textures, and the flat lighting. When it comes to non-metallic surfaces, tarmac is represented faithfully—screenspace reflections in rainy conditions help here—while other surfaces like concrete and plastic are not. Materials are very much a mixed bag with most surfaces looking quite poor.
As we’d mentioned earlier, lighting quality in F1 2019 isn’t that great. The move to a deferred renderer means that multiple light sources should theoretically be casting light. However, what we noticed is that F1 2019 primarily makes use of pre-baked light maps. This is understandable considering the static nature of light sources in the game. However, car models—both yours and other cars—just don’t appear to sit correctly in the scene, missing out on the shadows they should be casting under bright street lighting. While cloudy conditions see the best use of post-processing effects, they also bring out the worst in F1 2019’s lighting, leading to sterile, flat look.
Model Quality, Texture Quality, And Post Processing
Model quality is a mixed bag. As with many racers, car models are a strong point. Car models aren’t quite up to par with what we’ve seen in Project CARS, Forza and the like. Still, we’re talking about poly counts in the upper five digits. This means smooth models with minimal blockiness and a relatively detailed cockpit camera experience. When viewed up close, we did notice some blockiness in the safety halo and steering wheel but this isn’t something you’ll likely pay attention to in the midst of the action. NPC models are an entirely different matter. It’s clear that NPC modelling had a limited budget: Characters are blocky with low poly-counts, and animations are stiff. Facial animations are reasonably expressive, but low-resolution character textures undermine this. Subsurface scattering is deployed for NPC skin, but because of the low quality of the skin texture itself, it simply makes what would otherwise be a glossy mess slightly duller.
Car texture quality is great and cockpit textures aren’t a blurry mess. This is in contrast to environmental textures which range from passable—in the case of road surfaces—to downright terrible when it comes to character and incidental environmental details.
The post-processing pipeline is F1 2019’s strong suit as we’d mentioned earlier. It’s evident that Codemaster’s technical compromises to get the game up and running at 60 FPS across platforms is most evident here: Where lighting and material quality are weak-points, smoke-and-mirrors post-processing effects are leaned on quite heavily. Per-object motion blur is utilized with a high sample count. It’s easiest to see this on the individual wheels of your car when you’ve pulled the camera back.
Together with the smooth 60 FPS update, this allows F1 2019 to really convey a fluid sense of motion. Screen space ambient occlusion is present, but SSAO is rudimentary, even in the maxed-out PC version of the game. AO around some objects, like grass, has noticeable haloing. AO coverage isn’t very comprehensive either, with some parts of the scene not being occluded when they should be. Screen-space reflections really shine in F1 2019, though (no pun intended). Car models appear to use SSR instead of cubemaps.
This has a major impact on visuals, particularly when you’re in cockpit view: while, as mentioned, material quality itself is poor, car reflections are high res and detailed. The F1 series has boasted of dynamic environmental rendering and this is reflected in the post-process pipeline, too. During rainy scenes, a subtle raindrop effects on the HUD, not enough to obscure the track, but enough to convey the sense of racing through a downpour.
In terms of the backend, Codemasters has finally committed to DX12. F1 2018’s DX12 implementation was something of an afterthought and didn’t actually yield significant performs gains, even after being patched in. In F1 2019, DX12 mode offers meaningful performance gains, especially with lower end CPUs.
From a technical perspective, F1 2019 is a good, not great successor to F1 2018. With the arrival of the new consoles next year, we’re excited to see how Codemasters will take the F1 franchise to the 9th gen. Will the EGO Engine ride again, or will we finally see Codemasters craft an engine that’ll make full use of the next-gen consoles capabilities?