I’m going to share with you now a behind-the-scenes look at what our team has been doing on the game, and when you play it, we hope that you will all love it as much as we do.
In the ever-evolving world of video game development, staying at the cutting edge is a continuous pursuit. With the release of Unreal Engine 5, the landscape has shifted dramatically, presenting game developers with an array of groundbreaking technologies and tools. I wanted to delve into our experiences and challenges with some of the experimental technologies that have come to define UE5: Nanite, Virtual Shadow Maps and Lumen. These technologies play a pivotal role in creating a realistic and dark world that aligns perfectly with the neo-noir art direction of our game.
An important milestone in our development was the upgrade from Unreal 4 to Unreal 5. It was a big risk because normally you lock in the version of your development engine early. The changes touched every part of the game, and all our scenes, lighting and assets had to be converted. All the dev teams communicated with us brilliantly to make sure the new tools were exactly what we needed to make the game look amazing and run smoothly.
Lumen is a new real-time global illumination tech. It brings a level of realism to game lighting with raytracing to simulate the path of light and how it interacts with surfaces and materials. It can simulate indirect (bounce) lighting and reflections. However, integrating Lumen into our games was no small feat. Ensuring consistent and smooth performance was the key to achieving the atmospheric lighting required for our world. Working with dynamic lighting and shadow has always been a challenge. In performance terms it was expensive, placing lights is an art and overlapping lights exponentially increase complexity and the costs of rendering the scene because a lot of calculation must be done for each pixel hit by each light. Normally, the solution is to “pre-bake” lights. All the shadows were saved to the level before release, and you couldn’t change them. This provided great quality results for a cheap cost, but the lights and shadows were... well... faked. You would then have to include other tricks like light probes to show that on objects moving inside that space.
Lumen lets us change the colour, position, and intensity of lots of lights that can change dynamically. So to figure out the best way to include these new lights, we spent a lot of time working with our artists. It works by storing all the surfaces hit by light in a memory cache. This cache is at a lower resolution than the output. This means it’s way faster to calculate the effects of lighting. Then, Lumen uses Temporal Upsampling which makes the lower resolution larger without losing quality and detail. None of this can work without Nanite, Cached Virtual Shadows and Temporal Super Resolution so we adapted all those technologies too!
Virtual Shadow Maps introduced a fundamental change in how we handle shadows in Unreal Engine 5. By decoupling the shadow resolution from screen resolution, this technology delivers razor-sharp shadows with minimal performance overhead. Implementing Virtual Shadow Maps required a rethinking of our shadow casting and rendering techniques, but the result was a marked improvement in the visual quality. This was especially crucial in creating the dark and mysterious shadows that are synonymous with the neo-noir genre.
If you want fast frame rates, Programmers have always had to contend with draw calls. Draw calls are instructions sent from the Central Processing Unit (CPU) to the Graphics Processing Unit (GPU). To understand it in simple terms, think of a draw call as a request to draw or render a particular set of graphics. Each draw call carries information about how to paint a part of the scene - this includes textures, shading information, and geometry (like vertices). However, too many draw calls can slow down a game because each call requires the CPU and GPU to communicate and process information, which is valuable time spent when one frame is a fraction of a second. Nanite marks a seismic shift in how we handle geometry in games. Rather than relying on traditional Level of Detail (LOD) systems, Nanite virtualises geometry, allowing for detailed assets and performance. With Nanite all the meshes that use the same material get placed in what is called a "bucket” and are processed on the same draw call, greatly reducing their number. It reduces the complexity of asset creation but also opens the door to photorealistic environments that were previously unattainable. Now we can have some ornate architecture and densely detailed environments in our scenes.
Debugging and optimising our code and the world environment became increasingly complex, and we were acutely aware of the constant need to stay up to date with frequent engine upgrades. These upgrades were essential for acquiring crucial fixes and performance improvements. This is a process that many studios might prefer to avoid, as such transitions rarely occur without their own costs. With limited documentation and a scarcity of experienced individuals to consult, our journey involved extensive research, talking with Epic, trials and errors.
It feels cheesy to say but making all this work for our team made everyone’s bond stronger because we all had to communicate constantly. The results were worth it because our art team used it to realise the neo-noir direction they were looking for. And because games are made with tools and technology developed during previous games, The Chinese Room’s future titles will benefit from this hard work too. Everyone did a great job to best use the new workflows. Personally, after many years on projects that used similar approaches, this was a fresh and exciting evolution!
Your experience of playing the game should be seamless. In a way, the less you think about the tech as you’re playing, the better we did our jobs. It’s been a pride of our careers to take on a project that is already so complex on many different levels, and to give it a chance to be ground-breaking in the realm of visual fidelity.
What’s Next
Following the holiday break, we’ll be back in January with more dev diaries and an extended gameplay reveal of Vampire: The Masquerade - Bloodlines 2.