Skip to main content
← Labs
Real-Time Ocean & Hydrodynamics Simulation

WAVE-X

In Development

Lucky 7 Entertainment's proprietary ocean simulation framework for Roblox. Real-time wave physics, dynamic water displacement, buoyancy and environmental interactions let water react naturally to gameplay.

Designed for projects including BATTLESHIP: RIMPAC Games, WAVE-X delivers a level of naval simulation not traditionally achievable on Roblox.

The problem with water on Roblox

Roblox ships a terrain water system that is convincing when it is standing still and unconvincing the moment anything interacts with it. It has no concept of a wave train, no notion of a hull displacing volume, and no way to communicate surface state between clients. For a tower defence or an obby that is entirely acceptable. For a naval simulation where the ocean is the primary play surface, it is the single largest gap between what the platform provides and what the experience requires.

WAVE-X exists to close that gap. It treats the ocean as a simulated field rather than a decorated plane, and it treats every floating object as a participant in that field rather than a prop resting on top of it. The design constraint throughout has been that it must run acceptably on a mid-range mobile device while remaining synchronised across a server full of players.

Wave synthesis and displacement

The surface is built from a sum of directional wave components, each with its own amplitude, wavelength, phase and heading. Summing several of these produces a surface that never visibly repeats, which matters because a looping ocean reads as fake almost immediately. Amplitude and steepness are driven by a sea-state parameter, so the same code produces a flat calm or a heavy swell without swapping assets.

Because the wave function is analytic rather than baked, any point on the ocean can be queried for height and surface normal at any time without sampling a texture or reading back from the GPU. That property is what makes everything downstream possible: buoyancy, wake generation and camera behaviour all reduce to evaluating the same function at different positions.

Buoyancy, wakes and WTR-TON

Vessels float because a set of sample points distributed across the hull are each tested against the wave height and pushed with a force proportional to their submerged depth. Distributing the samples rather than using a single centre of buoyancy is what produces pitch and roll for free: a wave passing under the bow lifts the front sample points before the rear ones, and the hull rotates because the forces are genuinely unbalanced.

WTR-TON is the reverse coupling. Rather than the ocean only acting on the ship, the ship displaces the ocean in proportion to its speed, heading and tonnage. A heavy vessel under way generates a broader, longer-lived wake than a light one at the same speed, and turning drags the wake into a curve. This is what makes the water feel like it has mass instead of behaving like an animated texture.

Keeping it synchronised

The naive approach is to simulate the ocean on the server and replicate surface state to clients, which is immediately impractical at any useful resolution. WAVE-X instead replicates only the wave parameters and a synchronised clock. Every client evaluates the same deterministic function against the same time value and therefore renders the same ocean without any per-frame surface traffic.

Object state, which is genuinely divergent, is replicated conventionally and reconciled against the locally computed surface. The result is that bandwidth scales with the number of vessels rather than with the size or detail of the ocean, which is the property that makes large open-water maps viable.

More from Labs