Making waves: developing realistic water mechanics for Still Wakes the Deep in UE5

November 7, 2024
Hi everyone! I’m Joe Wheater—a Programmer at The Chinese Room—and I recently worked as part of a team on water mechanics for our narrative-horror game Still Wakes the Deep. The game launched in June for PC, PlayStation 5, and Xbox Series X|S and puts players aboard an oil rig in the North Sea in 1975, where an unknowable horror has come aboard. Cameron ‘Caz’ McLeary must navigate the collapsing structure and search for a way home.
The game’s primary setting means players find themselves surrounded by water at (almost) all times—whether it’s the flooded levels of the rig or the perishing North Sea beneath them— and our goal was to make every droplet feel as menacing and realistic as possible. Here, I share the journey of creating realistic water mechanics in Unreal Engine 5, the results, and top tips for other developers looking to dive into aquatic adventures.

Our challenge

Our challenge was to create water which felt ever-present, pushed players to their extremes, and felt realistic and punishing but never impossible. In the game, there are two types of water: that which has crept inside of and is taking over the rig and the colossal North Sea which surrounds it. 

Both have a role to play to bolster the atmosphere and tension within the game and to tap into some of the players’ most primal fears, including: claustrophobia (fear of small spaces), submechanophobia (fear of human-made objects submerged in water), thanatophobia (fear of death), autophobia (the fear of isolation), thalassophobia (fear of large bodies of water), nyctophobia (fear of the dark), and acrophobia (fear of heights).
Players find themselves trapped upon a crumbling oil rig in one of the most perilous environments in the world. With the North Sea waves thrashing below, how will they escape?
While they both contribute to the game’s overall sense of story and scare, they are very different in their appearance, mechanics, and function. Here, we’re going to share how we worked on the internal water within the rig—its levels rise and flow in tandem with the tension of the game and players all too often find themselves getting up close and personal with it.

A sinking feeling: developing the look

As you play through Still Wakes the Deep, the secrets and story begin to unravel and reveal themselves: crew members begin to transform, the rig is falling apart as chunks of metal go hurtling into the choppy waves of the sea below, and water begins to creep in and submerge lower levels of the rig. Unfortunately for Caz—and for the player—he’s going to have to crawl into the belly of the beast and explore the rig’s flooded levels in order to progress.
Throughout ‘Still Wakes the Deep’, players will find themselves having to navigate the flooded lower levels of the rig as they swim to escape, trigger mechanics, or find objects.
 
It was a distinct level design choice to have several chapters of the game take place in water. We wanted to give the player new mechanics to explore and master, and it presented interesting and enjoyable challenges for our team. Knowing that water is one of the major threats of the game, we wanted its appearance to match its power and give it detail, depth, and darkness.

To create this appearance, we developed a two-dimensional shallow water simulation using Unreal’s Niagara VFX system. The 2D simulation only simulates the surface of the water and calculates equations that describe its movements, so as water flows quickly (primarily during flooding sequences), it creates changes in the surface height which generates waves and ripples to give it a wild and menacing look. 

These sequences feel frantic and out of control, but in reality we have set up water volume systems to account for this. We tagged wall and floor meshes so they can be baked into a heightmap texture. This heightmap texture represents the space where water can flow, enabling these meshes as boundaries within the simulation so water can bounce and reflect upon impact.
 
The player often has to submerge themselves and navigate through broken and collapsing rooms or pull themselves against a roaring current to reach the next section. The setting for Still Wakes the Deep is dark and metallic. We wanted to make sure that levels heavily focused on using water as an obstacle, adding an extra degree of difficulty without becoming impossible or frustrating.

To do this, we relied on post processing to create the feeling of being underwater. To add extra dimensions to the water and make it appear as if objects were out of focus, we also used fog volumes, particles, caustic light patterns, depth of field, blur, and bloom effects.
 
The vision of the player is intentionally blurred as they go under the water surface. This not only adds an interesting gameplay dynamic and level of challenge, but is helpful in the player identifying that they are underwater and need to move before they run out of breath.
We also added extra fog volumes and particle systems into the water to give it the appearance of having other contaminants within it and to make it feel murky and thick. We added layers of dust, debris, and bubbles to further obscure the vision. These particle systems proved especially helpful for creating a sense of movement, as players moving through the water cause bubbles to spawn and float to the surface, dust to gently swirl, and the current to flow.

The post-processing and particle systems in action. From left to right, we see no post-processing/particles/fog/light, then no post-processing with fog, light, and particles all on, and finally the finished product which has all systems running.

Diving Deep: developing the feel

We wanted to ensure that rising water levels felt every bit as urgent as those on dry land, and that the gameplay mirrored the tension and horror happening in the story. To do this, we developed and implemented a pump system which added velocities and currents into the water, not only giving the water a sense of speed and thrill, but to support the movement of the player.

The pump system is formed of capsule-shaped objects that inject velocities into the water simulation and create waves and ripples that move across the water surface to show direction. We then attached several pumps to the arms, hands, and feet of the protagonist character which caused the pumps to intersect and created a realistic, real-time flow to the player’s in-water actions.
 
To heighten the immersion, we wanted to have water which not only moved dynamically to the player’s actions but influenced the objects that were submerged within it. We found that the water simulation wasn’t causing physical objects like oil barrels or rebar from the rig to react to the surface movement. 

To address this, we utilized Niagara’s GPU readback functionality which enabled us to query the simulation and know the flow direction, strength, and surface height at specific locations. Using this data, we could then apply buoyancy forces to make the object float and use water flow forces to make the object move in line with the surface simulation, therefore giving the impression that objects were moving in direct correlation to the player.
 
There were other mechanics we tried throughout development which would have heightened the immersion and authenticity even further but unfortunately they proved detrimental to the gameplay experience. 

For example, we investigated emulating how it would feel to be wearing overalls that would become waterlogged while swimming. This would have an impact on our main character Caz—who is an engineer in one of the coldest environments on the planet and would be wearing this heavy-duty clothing—by slowing down his swim speed and decreasing his buoyancy, just as it would in a real-world situation like this.
 
The uniform worn by the crew of the Beira D. We played with the idea of adding a realistic waterlogging mechanic to Caz so the player would take on water in real time when swimming. Due to a combination of heavy materials and layering, this made him sink extremely quickly and added too much challenge to the water levels.
We tried implementing this but found it was frustrating to play and difficult for us to convey to the player what was happening. Additionally, this slow swim speed placed limits on how far the player could swim underwater in one breath and restricted the size of the space the Design team developed swimming gameplay for. We removed it in the end for a smoother experience, but it was an interesting idea! 

Tools for creating realistic water

We found that Unreal had a suite of built-in tools and tech that we could use and draw inspiration from when creating the water for Still Wakes the Deep, including: 
 
  • Single Layer Water Shading Model: This was great for getting realistic-looking water in Unreal Engine, and we learned a great deal from Epic’s existing resources about its implementation and effectiveness.
 
  • Content Examples Sample Project: This contains a ton of useful examples for all parts of the engine and was vital in us learning Niagara and Fluid simulations. 
 
  • Material Editor: We used the material editor to layer on texture-based effects on top of the simulation data. This was extremely practical for us to add effects to the visuals of the water and helped us with our storytelling as the game progressed.
 
  • Niagara: We used Niagara for the simulation itself and also for many of the particle systems—from burst pipes to debris in water. We also found the available Niagara simulation stages learning helpful. They were vital in helping us understand how Fluid simulations are put together for Unreal.
 
  • Water System: Our water system reads back simulation data from Niagara using a Niagara data interface. This allows other systems in the game to react dynamically to the current state of the simulation.
 
  • Fog Volumes: We used a volumetric material to render fog in our water volumes, meaning the material was able to obtain information from the water simulation by sampling a 2D array render target.

Choosing Unreal Engine 5

I’m Nick Slaven, Studio Technical Director for The Chinese Room.

Unreal was the natural choice for Still Wakes the Deep. The fidelity and control over the process of creation that Unreal provides and its capabilities as an engine were exactly what we needed to realize the game concept envisioned by our then Creative Director, Dan Pinchbeck.

The team’s existing Unreal expertise was mixed but through our partnership with Epic, we were able to arrange training to bring them up to speed with Unreal 4.26, before then moving to Unreal Engine 5. The upgrade between engine versions allowed us to leverage Epic’s new technology such as Nanite and Lumen, which have not only elevated the look and atmosphere of the game but bolstered our workflow efficiency. Features like real-time lighting in Lumen mean we’re able to see the effect of changes to the lighting setup immediately without having to wait for shadow maps to bake.

Additionally, the water tech provided by Unreal gave us good simulation of the North Sea, and its shader tools provided us with the building blocks for our internal water simulation. We also made extensive use of MetaHuman for all of the rig workers within the game, which provided a new level of realism and storytelling.

Finally, we were able to leverage the technology of Control Rig for the transformed crew of the Beira D oil rig, which helped us create believable otherworldly creatures to scare and intrigue the player.

Get Unreal Engine today!

Get the world’s most open and advanced creation tool.
With every feature and full source code access included, Unreal Engine comes fully loaded out of the box.

Similar blogs


Games

Unreal Engine 5.5 is now available

This release brings major enhancements to animation authoring, rendering, virtual production, mobile game development, and developer iteration toolsets—and much, much more.

News

Fab, Epic’s new unified content marketplace, launches today!

Today, Epic launches Fab, a one-stop destination where you can discover, buy, sell, and share digital assets. This new marketplace supports all types of creators with content for use across Unreal Engine, Unity 3D, UEFN and other digital content creation tools.

Games

Catch up on the big news from Unreal Fest Seattle 2024

Dive into Epic Games’ announcements from Unreal Fest Seattle 2024 to find out about Unreal Engine royalty rate savings through the Epic Games Store, new features in UE 5.5, Teenage Mutant Ninja Turtles in UEFN—and much more.