
Water has been one of the oldest pain points in Luminids.
I spent well over 100 hours across multiple iteration cycles pushing it toward something that felt right. For a while I had the strange combination of green checks and bad screenshots. Parts of the system looked healthy on paper. In the game, rivers would vanish, lakes would behave strangely, and whole areas would fall apart the moment you moved through them.
That gap was the issue.
The reports were telling me one story. The world was telling me another.
Setting the north star
Before I changed the architecture, I wrote down what water actually needed to be in Luminids.
Rivers needed to read clearly and stay inside their channels. Lakes needed to fill properly and sit cleanly in their basins. Ocean needed to feel present where it belonged. The whole thing needed to stay stable across the biome rings and hold up in actual gameplay, not just in isolated tests.
Writing that down cut through a lot of the noise.
I was dealing with overlapping versions of a water system.
The older authored path was still hanging around. The newer field runtime was partly in place. Validation could go green while the player-facing render path still looked wrong. That explained a lot of the confusion.


Changing the architecture
At that point I stopped trying to patch the old shape of the problem and changed the architecture instead.
The big shift was simple: give the hydro field one job, be the source of truth.
Instead of letting separate water bodies and the terrain bake pull against each other, I pushed everything toward one shared source of truth. The field owns the truth, the renderer reads from it, and the rest of the game hooks into the same system.
That was the turning point.
It also made the debugging much cleaner. Suddenly the right questions were obvious:
- Is the field correct?
- Is the renderer reading it properly?
- Is the shader helping the world read better?
- Is the validation actually testing what the player sees?
Simple on paper. Huge in practice.
What was actually blocking it
Even after the pivot, the first pass still looked broken. The final blockers were smaller than the architectural problem, but they stacked on top of each other in a nasty way.
Three things were really doing the damage:
- a legacy sweeper in the world runtime was hiding the new renderer
- the mesher was taking an expensive sampling path and burning huge frame time
- the custom shader was making the water read as a dark ribbon instead of actual water
Once those moved, the rest became much easier to read.
This was the moment it finally landed.
Average frame time dropped from 1461 ms to 9.08 ms. Estimated FPS moved from 0.7 to 110. Water was finally visible on screen, the world became responsive again, and the system stopped fighting itself.
That was the first point where this felt like a real breakthrough rather than another temporary fix.
Making it feel like Luminids
Getting the renderer working was the breakthrough.
Making it feel like it belonged in Luminids was the real craft phase.
After that I pushed through a whole series of passes that made the water feel like part of the world instead of a layer sitting on top of it.
Biome-aware styling was a big one. Rivers and lakes now carry some of the identity of the ring they move through. A river in meadow space feels different from a river in tundra or volcanic highlands. That matters in Luminids because atmosphere is never just decoration. It is part of how the world communicates.
Then came softer carvings, cleaner shore bands, stronger bank materials, and more believable lake floors. I widened and deepened rivers in the harsher outer biomes where the earlier versions were too small to really read from standing height. I added pool and riffle variation so the river floor has more life without breaking the surface.
One of the stranger bugs was lakes. In some cases the surface was effectively sloping by tens of metres across its own footprint. On flatter terrain you could get away with that for a while. In highland, tundra, and volcanic rings it broke the illusion instantly. Fixing lake surfaces so each basin respects a true level waterline changed those spaces overnight.
From there I pushed into outlet corridors so lakes could start feeling connected to the wider water system, then baked those outlets into the carve so the terrain and the water finally agreed with each other.






Underwater got a full rethink too. Earlier versions were moving in the right direction. The feeling still was not there. So underwater became its own proper visual layer with biome-aware colour, depth, density, and mood. Plains water feels calmer. Tundra stays clearer and colder. Volcanic water feels heavier. Going below the surface now feels like entering a different part of the world.
Then came rapids and foam.
I wanted movement to appear where the land earns it. Meadow rivers stay soft and calm. Mountain, tundra, and volcanic drops pick up more whitewater and energy. After that I tuned the foam again so it reads as flowing patches and streaks instead of visual noise.
That kind of restraint matters. Luminids works best when motion feels meaningful.
Where it landed
What I like most about where the system sits now is that water has stopped feeling like an isolated feature.
It sits with the terrain instead of floating above it.
It carries more of the biome it moves through.
It supports the calm when the world needs space to breathe.
It carries movement when the land calls for it.
It reads better from above, on the ground, and underneath the surface.
It is easier to test, debug, and improve without guessing.
That last point matters a lot. I have much better probes, much better visibility into what the system is doing, and a far healthier separation between truth, rendering, and polish. That gives me a stronger base for every future pass.










What comes next
There is still more I want to do here.
Waterfalls and rapids can go further. Lake outlets can keep evolving. There is still room for more polish in how shorelines transition and how far water carries into the distance.
But the foundation is finally right.
This is the first time the water in Luminids has felt like it truly belongs to the world.
More soon.
Nick





