Brick & Mortar

How It's Made · Step 10 of 27

Step10

The navy arrives - and the explosion that burned the sea bed

· 3 min read

unrealnavywatervfx

A RUSSIA Dreadnought with red rocket pods and its guns firing, with the USA shore behind it.

We added ships in early October: destroyers, a carrier, submarines, battleships, and later a whole third faction's fleet. A navy changes what a game has to get right. The sea is a very large part of the screen, it is always moving, and everything that happens on it is judged against a real-world intuition that nobody has about tanks.

The screenshot

On 9 October the owner sent a screenshot of a ship being hit. A flat ring of dust sat under the ship, a long way below it, like a crater on the bottom of the sea. It was precisely what it looked like.

The cause was a single function. Every effect asked the effects pool "where is the ground here?", and over water the answer was the sea bed. So the dust ring, the scorch mark and the crater were all drawn on the bed, deep under the ship, and shifted sideways by the camera's tilt. Nothing was wrong with the effects. They were just on the wrong floor.

The fix was in one place: over water, "ground" is now the water surface, and the recipes for explosions, impacts, cannon blasts and dirt turn their dust, rings and clods into white spray at the surface. Open-water hits throw water, not fire. A hit on a hull keeps its fireball at the hull and puts a ring on the waterline.

While we were in there

The owner's note that week was blunt: make the water look good, make the boats splash waves as they travel, and give hits and explosions ripples. The old surface had two moving normal maps and a flat sky colour. Ships left nothing on it.

We built it in two parts:

A naval hit seen from above, with large fireballs over dark water and a messy foam patch
Before: fireballs and a foam patch that does not belong to the surface.
The same naval hit after the change, a smaller fireball with white spray and rings on the surface
After: the hit stands on the surface, with spray and rings around the hull.

The projectiles

The same day, the glowing blocks that stood in for ammunition were replaced. Shells, rockets, missiles, bombs and torpedoes are now small shaped models with trails and smoke, flying on their own arcs. The owner approved the shapes from a board, one verdict per row.

Filming a fleet that does not exist

The owner asked to see the ships shoot at each other. We added a demo mode, -NavyBattleDemo: two small fleets on open water, a script that gives them orders at set seconds, and a scripted camera: a wide shot, a low follow of one rocket from launch to impact, a broadside, an orbit of a ship going down. It runs the real units with their real weapons; the script only gives orders. Captured on the fixed-step recorder at 1920 by 1080, twenty seconds, one USA ship and four RUSSIA ships lost.

A later, 4K capture of the same idea: two fleets, the real simulation, a fixed-step camera. Muted.

What we would do differently

Try it yourself

When a screenshot looks wrong, ask what the code believes the ground is. Many of our visual bugs have been a function answering a slightly different question than the one the picture was asking.

Next: What the AI did, what it did not, and where the humans decided (13 October 2026)

Start at Step 1All 27 steps

Written afterwards from our project notes and commit history; dated to when the work happened.