Skip to main content

Shallow Water

Unreal Engine's Shallow Water plugin pairs naturally with Errant Paths to create fully procedural rivers. We automate the setup of the shallow water simulation and provide tools to shape every aspect of the river. You can modify the Path using Path Adjustments, including projecting it onto terrain, smoothing it, or adding natural variation by perturbing. The generated river can sculpt the Landscape by carving the river bed, applying falloff and detail noise, and can paint weightmaps. Its width can also vary along the Path using per-point PathSpline scaling — see Widening/Narrowing. Together, these features allow you to generate rivers whose shape, width, terrain deformation, and shallow water simulation are all driven from a single procedural Path.

Setup

We use a PathDescription with a single PathTemplate that spawns both the Shallow Water River and Water Body River Actors only once along the entire Path. Before performing the Landscape Adjustment, the MainPreSpawnSpline (after all Path Adjustments have been applied) is copied to the Water Body River's spline, ensuring the generated river follows the final Path shape. Once the Landscape Adjustment is complete, the two Actors are linked together and the shallow water simulation is triggered. Both steps are performed using Generation Callbacks: EGC_Setup_Water_Body_River_Spline, EGC_Setup_And_Trigger_Shallow_Water_Simulation, respectively).

image

Remove Shallow Water dependency

We include Unreal Engine's Water plugins as dependencies to ensure Errant Paths builds correctly out of the box and all water-related features are available. If your project doesn't use the Water plugins, and you prefer to avoid these dependencies, you can remove them by following the instructions below. Errant Paths will continue to build and function correctly, with only the water integration features disabled.

  1. Delete these assets
    • /ErrantPaths/Example/PathDescriptions/EPD_ShallowRiver,
    • /ErrantPaths/Example/PathTemplates/EPT_ShallowRiver,
    • /ErrantPaths/Example/GenerationCallbacks/EGC_Setup_Water_Body_River_Spline,
    • /ErrantPaths/Example/GenerationCallbacks/EGC_Setup_And_Trigger_Shallow_Water_Simulation,
    • /ErrantPaths/Example/Water/BP_Shallow_Water_River,
    • /ErrantPaths/Example/Water/BP_Water_Body_River.
  2. Remove this function UEpBlueprintFunctionLibrary::SetupAndTriggerShallowWaterSimulation from code.
  3. Remove Water and WaterAdvanced from the Plugins in ErrantPaths.uplugin.
  4. Remove Water and WaterAdvanced from the PrivateDependencyModuleNames in ErrantPathsRuntime.Build.cs.