Projects · 07 of 08
OceanSim
A native Godot sailing simulation with a reactive ocean, boat wake, volumetric sky, and a beach shaped by receding waves.
- Year
- 2026
- Built with
- Godot 4.6, GDScript, GLSL
OceanSim is a sailing simulation for the desktop, built in Godot. You sheet in, take the tiller, and sail a sloop across a sea that runs from flat calm to a gale, under clouds and weather that move through on their own. The hull pushes the water aside and leaves a wake that rocks the buoys it passes, and on the beach the sand stays wet and keeps footprints where a wave has reached and drawn back.
It does not run in a browser. The waves and the clouds are computed on the graphics card in ways the web version of the engine cannot do, so what is on this site is recorded. The clip above is seven short takes of one day, from noon through a squall and a gale to the next morning, with a script at the helm so that each take repeats. There is also a showcase of captures across sea states, cameras, and times of day.
The hard part
Open water is the worst case for a renderer. Most of what makes the sea glitter is ripples smaller than a pixel, and a pixel that catches one bright ripple in this frame and misses it in the next will sparkle and crawl. The usual cure is temporal anti-aliasing, which blends each frame with the ones before it. On a sea that never holds still, that blend left trails across the water every time the camera turned.
How I solved it
I turned the blending off and moved the fix into the water itself. The game renders with 2× MSAA and SMAA, and the water’s shader works out how much wave slope it is failing to draw at each pixel. Where that hidden roughness is high, it softens the reflection and the brightness of the sky in it. The reflection term follows the ocean lighting paper by Bruneton, Neyret, and Holzschuch. Fine detail can still shimmer more than it would with the blending on, and I chose that over the trails.