Track every update, fix, and feature across all Oceanology products. From the first wave to the latest build.
v1.3.1Latest
Packaging Fix & Volumetric Fog Material Correction
March 15, 2026
✨ Fixed fatal CDO construction crash that prevented project packaging on source builds
✨ Fixed VolumetricFog underwater material not rendering (incorrect Shading Model)
Bug Fixes
Fixed CDO construction crash (GEngine not initialized) in OceanologyBattleShipPawn — SetPhysMaterialOverride now guarded with RF_ClassDefaultObject check to prevent physics material queries during CDO creation
Fixed VolumetricFog underwater material (M_UnderOcean_VolumetricFog) not rendering — Shading Model corrected from Unlit to DefaultLit
Fixed Fab Store build: added missing TimerManager.h and LocalPlayer.h includes
v1.3.0
Ship Navigation, PredictiveInterpolation & Standalone Game Support
March 10, 2026
✨ Complete C++ ship navigation system with spline-based FlowController and two flow modes
✨ PredictiveInterpolation with CubicInterp for butter-smooth vessel replication at 30Hz
✨ Standalone Game & Dedicated Server buoyancy fully operational without rendering
Ship Navigation System
New OceanologyFlowController C++ actor — defines water currents via spline with configurable speed and width
Two flow modes: Force (Legacy) for simple current push, Navigation (Natural) for realistic ship handling
Navigation mode three-phase control: steering via AddTorque, propulsion via AddForce, lateral drag for sideslip prevention
Speed-dependent look-ahead steering — ships begin turning before reaching curves for natural cornering
Force mode mass-proportional scaling — vessels of any size respond naturally to the same current
FlowController automatic tag-based assignment to vessels on BeginPlay
BattleShip C++ Actors
Migrated BattleShip from Blueprint to pure C++ for performance and reliability
OceanologyBattleShipPawn — full-featured Pawn with camera, input, and player control
OceanologyBattleShipBase, Box, and Custom variants for AI and flow-driven ships
Player input: W/S for forward/reverse, A/D for rudder with speed-dependent steering
VisualSmoothRoot for client-side frame interpolation without double smoothing
Force-based propulsion replaces SetVelocity — works correctly with physics and buoyancy
AutoConfigure Systems
Shape-aware AutoConfigurePontoons — detects collision geometry and places pontoons accordingly
AutoConfigureBuoyancy — 6-pontoon layout (Bow, Midship, Stern) with mass-proportional tuning
Automatic linear/angular damping: scales with MassFactor for vessels of any weight
Default mesh density (620 kg/m³) and water fluid density (1030 kg/m³) for realistic floating
PredictiveInterpolation
Temporal CubicInterp using server state buffer for smooth vessel movement on clients
Override PostNetReceiveLocationAndRotation to prevent UE5 snap-to-server competing with interpolation
ETeleportType::TeleportPhysics for zero physics overhead on interpolated clients
30Hz NetUpdateFrequency provides equivalent smoothness to 60Hz with linear interpolation at half bandwidth
InterpolationBackTime auto-calculated: >= 3x server send interval (0.1s at 30Hz)
Standalone Game & Dedicated Server
Fixed wave time frozen at 0 on dedicated servers — automatic fallback to GetWorld()->GetTimeSeconds()
Buoyancy activation via fallback timer with OverlapComponent check when overlap events fail
Water Volume SetGenerateOverlapEvents(true) ensures overlap detection in Standalone Game
Works correctly in PIE, Standalone Game, and Packaged Builds without configuration changes
Multiplayer
bDisableClientPhysicsSimulation enabled by default — eliminates client gravity fighting server corrections
Flow properties (spline, speed, width) replicated with push-based networking
Server-authoritative flow forces — client changes silently ignored for security
VerifySetup validator checks NetUpdateFrequency and MinNetUpdateFrequency on replicated actors
Rendering & Waves
Removed hardcoded distance culling from wave shaders for user-controlled LOD