Skip to main content
← Roadmap
🏞️ RiverologyPlanned3.0.0

Built on the Oceanology Pro core

Riverology 3 runs on the same rebuilt foundation as Oceanology Pro, with the river and lake half of it as the product. One codebase instead of two.


Riverology and Oceanology have been separate codebases with separate bugs, separate engine-upgrade work and separate release schedules. Riverology 3 ends that. It is built directly on the Oceanology Pro core, the same rebuilt foundation Pro ships on, and it releases right after Pro rather than months behind it. The practical consequence is that a fix or an engine upgrade that lands in the core lands in both products, and the two behave the same way everywhere they overlap.

What the core already contains

  • A water zone and a quadtree water mesh with GPU-driven tessellation, LOD and a dedicated vertex factory, built for open worlds.
  • River, lake, ocean, island and custom water body actors sharing one water component base, each with its own collision components.
  • A water info texture that encodes surface height, ground depth and flow velocity across the zone, which materials, buoyancy and Niagara all read from instead of querying bodies one by one.
  • Three wave systems selectable per body — spectral Gerstner, classic Gerstner and FFT — each runnable live or baked, with dedicated wave bakers and compute shaders.
  • A GPU shallow water 2D solver with contributor, force, source and wave components, plus a baked rest-state cache for worlds carrying hundreds of water bodies.
  • Buoyancy with spherical pontoons, ramp and damping curves, and a separate river behaviour block, coordinated by a buoyancy manager.
  • A swimming module that resolves which water body type it is in rather than assuming an ocean, with voxel flotation maths, a wave sampler and ragdoll handling.
  • Underwater rendering as a scene view extension with its own exclusion-depth pass and rendering settings, plus a separate water audio module.
  • Jump-flood distance field passes for shore and brush work, HLOD support for water bodies, water exclusion volumes, and a Niagara water data interface.

Rivers and lakes are not an afterthought in it

The core models rivers and lakes as first-class body types, not as ocean with a mask applied. The river component generates one spline mesh per spline point, evaluates river width and depth from per-point spline metadata, and carries dedicated transition materials for the two cases that always look wrong in other systems: river meeting lake, and river meeting ocean. That is precisely the half of the core Riverology exists to sell, and it is already built.

Coexistence with Oceanology

Riverology and Oceanology are designed to sit in the same level. Because they share the core, a river and an ocean can belong to the same water zone, be rendered by the same water mesh, and hand off to each other through the river-to-ocean transition material instead of meeting at a visible seam. Riverology stays inland — rivers, streams and lakes — and Oceanology owns the open water. You buy the one that matches your scene, or both, and they do not fight.

The Riverology 2 codebase against the Pro core

BeforeOceanology Pro
Runtime modulesOne runtime moduleFive runtime modules plus a separate editor module
Where the logic livesMostly one Blueprint actor with a thin C++ helper library beneath itC++ components, subsystems, global shaders and render passes
Platform support declaredWin64 only, via a platform whitelist in the plugin descriptorNo platform whitelist in the descriptor
Wave systemsFour fixed Gerstner wave slots plus one global displacement blockSpectral Gerstner, Gerstner or FFT, live or baked, chosen per body
Water body typesA single river spline actorRiver, lake, ocean, island and custom bodies; Riverology exposes the inland ones
Interaction and simulationFlow maps and distance field masking in the materialA GPU shallow water solver with impulse, force and source components

Numbers from the core

Modules in the Pro plugin5 runtime plus 1 editor
Engine version targetedUnreal Engine 5.8
Water info render target, default512 x 512
Water mesh tile size, default2400 units
Water mesh tessellation factor, default6
FFT wave map resolutions256, 512, 1024 or 2048
Shallow water solver resolution, default512
Shallow water solver rate, default60 Hz, Courant number 0.45, up to 8 substeps per step
Shallow water live render target budget48 MB by default
Maximum flow velocity encoded in the water info texture1024 units per second

This is one entry on the Galidar roadmap. For what already shipped in each release, see the Changelog.