Changelog
Version history for the Dynamic Real Water (DRW) plugin. Major features lead each release; smaller improvements and fixes are grouped underneath. Future plans live on the Roadmap.
(New) Update 2.0
Section titled “(New) Update 2.0”Theme: a near-total rewrite of the visual layer (foam, caustics, water interactions), full data-driven configuration, and serious authoring/debug tooling on top of the v2.0 foundation.
Every feature in this release is replication-ready out of the box. Multiplayer works across the full stack with no extra wiring.
Major features
Section titled “Major features”Foam system (full rewrite)
Section titled “Foam system (full rewrite)”Foam went from “stub” to a complete physically motivated pipeline.
- Generation driven by Jacobian data, so foam appears in breaking-wave regions.
- Foam accumulates, decays over a configurable lifetime, and advects with the water flow so trails persist behind moving wave peaks.
- Foam parameters (color, strength, contrast, normal strength) live on
VisualDataAssetfor runtime authoring.
Caustics system (full rewrite)
Section titled “Caustics system (full rewrite)”The old caustics path was a placeholder. The new one is physically based.
- Chromatic aberration for prismatic light dispersion through wave peaks (
CausticsChromaticonVisualDataAsset). - Interaction-coupled: the same interaction layer that drives ripples and wakes also displaces caustics, so a boat’s wake casts moving light patterns (
CausticsInteractionStrength).
Water interaction system
Section titled “Water interaction system”A new world subsystem renders ripples, wakes, splashes, and foam onto a scrolling render target that follows the camera.
PhysicsBodyComponents register themselves automatically whenbEnableWaterInteractionis true. Gameplay code does nothing.- Buoyancy reads the same interaction layer, so wakes can push other floating objects around.
InteractionHeightMultiplieron theBuoyancyComponentmixes interaction contribution; set to 0 for visual-only ripples. InteractionDataAssetexposes ripple, wake, and splash tuning as a single shareable asset.- The interaction layer also feeds the new caustics and foam passes, so visual systems stay coupled instead of drifting against each other.
Data-driven configuration
Section titled “Data-driven configuration”Every tunable surface is now backed by a Data Asset.
- Ocean:
WaveDataAsset(spectrum, wind, cascades),VisualDataAsset(lighting, color, foam, caustics),OceanPresetDataAsset(combined wave + visual preset). - Vessels:
VesselDataAssetaggregatingHullDataAsset,HydrodynamicsDataAsset,StabilityDataAsset,PropulsionDataAsset[], andControlSurfaceDataAsset[]. - Water bodies:
WBVisualDataAssetfor per-body looks. - Effects:
InteractionDataAsset(ripple/wake/splash) andSprayDataAsset(spray FX tuning). - The shipped library includes wave presets (
DA_DefaultWaves,DA_P_SmallWaves,DA_P_MediumWaves,DA_P_HighWaves), visual presets, and full vessel stacks for the three reference vessels. - Authoring a “stormy ocean” or a “calm pool” is a one-click swap. Construction-Script-only configuration is no longer the default path.
Energy-preserving wave blending
Section titled “Energy-preserving wave blending”Wave blending now conserves total energy across frequency bands.
- Switching
WaveDataAssets blends naturally across spectra (Phillips, Pierson-Moskowitz, JONSWAP), large amplitude swaps no longer spike, and superpositions of multiple cascades stay stable. - Each of
Gamma,Alpha,SigmaLow,SigmaHigh,PeakOmegais now a per-cascadeFVector4, so different LOD bands carry different spectral shapes within the same blend. - Pierson-Moskowitz is now wired in as a third selectable spectrum alongside Phillips and JONSWAP.
Runtime preset blending with curves
Section titled “Runtime preset blending with curves”SetWaveData and SetVisualData blend between any two assets over a configurable duration.
- Linear, ease-in, ease-out, and ease-in-out are built in via
BlendEasing; a customUCurveFloatcan override the easing entirely. IsWaveBlending,IsVisualBlending, and progress getters expose the state for HUDs and audio crossfades.- An
OnDRWReadydelegate fires when the grid has spawned and the depth map is ready, useful for HUDs that gate on water availability.
Discrete water bodies
Section titled “Discrete water bodies”Bounded water that lives alongside the open ocean.
BP_DRW_Pooluses Global Distance Field clipping. Hand-modelled pool basins (curved sides, harbour walls, jacuzzi steps) keep water inside the geometry instead of bleeding through the mesh.BP_DRW_Lakeis a free-form bounded body. Drop one anywhere a lake or pond should be.- Each body carries its own
WBVisualDataAsset(independent caustics, color, transparency, fog). - Buoyancy transitions automatically when an actor overlaps a body. No per-actor wiring.
- Underwater post-process and caustics route through whichever body the camera is inside.
Vessel system, expanded
Section titled “Vessel system, expanded”A full modular vessel stack ships in this release.
- Five hull types: Displacement, Semi-Displacement, Planing, Hydrofoil, Multihull. Each picks a physics model and tells the movement component how to behave.
- Four movement regimes: Displacement, Transition, Planing, Foiling. The
VesselMovementComponentreports the current regime throughOnMovementStateChangedso audio, FX, camera, and HUD can react. - Four seat types: Helm (full control), Passenger (camera only), Gunner (future), Engineer (future). Multi-crew ships work without extra wiring.
- Modular configuration:
VesselDataAssetaggregatesHull,Hydrodynamics,Stability,Propulsion[], andControlSurfaces[]data assets. Build a speedboat, a sailboat, or a kayak by swapping sub-assets. - Three reference vessels ship: Dinghy (small displacement), Runabout (planing powerboat), TallShip (multi-crew with seats).
VesselCameraComponentfor vessel-attached cameras. Spring-arm based, with horizon stabilization that holds the camera level against vessel roll and pitch, speed-based FOV widening for the “fast feel” at high speed, position lag for a cinematic feel, and camera collision against world geometry. Only third-person mode is functional in this release; first-person and orbit modes are reserved for a future release.VesselInputComponentfor vessel input. Enhanced Input handling that auto-binds keyboard, gamepad, or both viaInputSource(or a fully custom config), with analog smoothing, dead zones, and quantized replication that mixes unreliable analog channels with reliable zero-input and critical-state sends. Pairs withVesselCameraComponentbut does not require it.
Spray system (Experimental)
Section titled “Spray system (Experimental)”A new Niagara-driven spray system reads velocity, submersion, and hull geometry from the buoyancy runtime to spawn fine spray particles for strong wave impacts and object interactions.
- Niagara is now a plugin dependency.
- API may shift before stabilizing.
Debug subsystem
Section titled “Debug subsystem”Replaces ad-hoc Print Strings with categorized force visualization.
- Categories:
Buoyancy,Gravity,Damping,Drag,Thrust,Steering,Stability,Velocity. Bitmask filter, toggle in the editor or at runtime. - Per-shape force arrows with magnitude readouts (Newtons) and per-body velocity vectors.
- Shape visualization (box, sphere, capsule) for hull tuning.
- Per-actor filtering via
DRW.Debug.filter.
Blueprint Library
Section titled “Blueprint Library”UDRW_BlueprintLibrary exposes one-node convenience access to the GridManager from any Blueprint.
GetDRWGridManager,SetOceanWaveData,SetOceanWaveDataInstant,SetOceanVisualData,SetOceanVisualDataInstant, and matching getters.- World-context aware: no need to manually find the GridManager actor first.
- Useful for character pawns, widgets, and cinematics that need to query or drive water state.
Improvements
Section titled “Improvements”BuoyancyComponentextensions. Heave / pitch / roll / yaw damping, lateral added mass, slamming impulses and exit damping, anUpdateModetoggle (FixedOnlyvs legacyEventTick), volume-percentageInWaterThreshold, smooth client reads viaGetInterpolatedOutput+InterpolationStrength, and water-body overlap accessors (OverlappingWaterBody,IsInWaterBody,GetWaterBody).ADRW_DronePawnships asBP_Drone. Default spectator/control pawn withFlyingandControllingVesselstates, built-in seat occupation viaSeatOccupantComponent, vessel possession viaVesselPossessionComponent, and pre-wired Enhanced Input (IMC_DRWInput,IMC_DRWVesselInput,IA_VesselThrottle). Drop into a level and play immediately.- Distance-prioritized Task Subsystem. Buoyancy ticks, async readbacks, and depth-trace batches near the camera run first; distant work defers without dropping. Critical-priority tasks have a per-frame cap to prevent low-priority starvation.
- Multi-instance buoyant actor optimization. Many buoyant actors in one level share data pools and compute, reducing per-actor overhead.
Update 1.3
Section titled “Update 1.3”Major features
Section titled “Major features”DRW_SmoothReplicationComponent (new)
Section titled “DRW_SmoothReplicationComponent (new)”Client-side transform smoothing for networked actors. This component smooths the visual position and rotation of objects that are controlled by the server. It does not change physics, apply forces, or influence authoritative simulation. The server still determines the real motion. On the client, the component reconstructs and interpolates the actor’s transform from incoming network updates to produce stable, smooth movement, even when packets arrive late or irregularly.
DRW_BuoyancyComponent: complete networking overhaul
Section titled “DRW_BuoyancyComponent: complete networking overhaul”- Fixed timestep accumulator with spiral-of-death prevention and more predictable replication
- Double-buffered
FBuoyancyStateSnapshotfor smooth interpolation between calculation frames - New
CalculationRateHzproperty (1 to 120 Hz) to match network replication rates - New smooth velocity damping to prevent excessive velocity
bIsInWaternow works properly- Much more accurate usage of the Task Subsystem
- Around 50 to 60 percent performance increase
General improvements and bug fixes
Section titled “General improvements and bug fixes”- Fixed underwater effects bleeding between players in listen server / multiplayer
- Each player now has an isolated rendering pipeline
- Fixed server player not receiving waterline effects in listen server mode
- Fixed waves not generating on clients in multiplayer
- WaterlineCubeMesh is always invisible now
- LineTrace support for LOD0 and LOD1 meshes on the
Visibilitytrace channel - AsyncReadback now costs 0.07 to 0.08 ms on 85 calls
- Task Subsystem now performs at 0.03 to 0.04 ms on 300 tasks
Update 1.2
Section titled “Update 1.2”Theme: stability and Task Subsystem hardening.
Improvements
Section titled “Improvements”- PhysicsBodyComponent: improved center-of-mass calculations
- BuoyancyComponent: improved async task distribution
- Task Subsystem: Render Thread task support, low-priority starvation prevention (per-frame caps on Critical-priority tasks), and overall stability gains so results stay consistent across runs
- AsyncReadback is now fully compatible with the Task Subsystem
- Task Subsystem “Open Level” initialization bug fixed
Update 1.1
Section titled “Update 1.1”Theme: networking, skeletal meshes, and the first big performance pass.
Major features
Section titled “Major features”Full multiplayer support
Section titled “Full multiplayer support”The entire water system is now replicated across clients and server. Buoyancy outputs are exposed as replicated arrays, so swimming components, character water-state, and HUD work cleanly in networked play.
Skeletal mesh buoyancy
Section titled “Skeletal mesh buoyancy”Skeletal meshes are first-class buoyant objects. Bone attachment and per-bone buoyancy work out of the box, and a single Blueprint can carry multiple static or skeletal meshes with no per-mesh overhead.
Async waterline system
Section titled “Async waterline system”Waterline capture runs asynchronously, removing a per-frame stall that previously gated visual quality.
Improvements
Section titled “Improvements”- Replicated underwater masking for caves
- Simple mask to prevent water from leaking into solid objects
- Improved physics prediction
- Improved top-down LOD transition
- Improved underwater shader
- New detail normal texture
- New example Blueprints for buoyancy
- About 57 percent overall performance increase
- 12 small bug fixes
Future releases
Section titled “Future releases”See the Roadmap for the priority-ordered list of planned features and improvements.