Water recipes

End-to-end recipes for common level setups. Prerequisites: Water Gem enabled, /O3DE/Gems/Water/Enabled=true. Matching sample levels live under AutomatedTesting/Levels/WaterSamples/.

Mountain stream ?lake

Goal: ~200 m hillside creek joining a basin lake. Sample: WaterSamples/Stream (+ Lake).

  1. Create Entity ?Water ?River; set Preset to Stream.
  2. Place 8?2 spline points downhill. Keep Elevation Mode = Spline Z; set each point 0.1?.3 m below the banks.
  3. Per-point curves: upstream narrow/fast (Width ~0.8 m, FlowSpeed ~2.0); downstream wider/slower (Width ~2.5 m, FlowSpeed ~1.0). Allow Z drops for small falls.
  4. Bed: PolyTerrain ?enable Carve Terrain ?Carve Terrain. Heightfield terrain ?brush a ditch.
  5. Join the lake: end-point Z within ±0.05 m of the lake water level; overlap the lake by 2? m (Stream priority 160 wins over Lake 128).
  6. Material WaterSurface_StreamClear; leave Waves empty.
  7. Verify: Debug overlay flow arrows; no unexpected uphill red segments.

Calm lake

Goal: ~300×200 m basin lake with micro-waves and floating debris. Sample: WaterSamples/Lake.

  1. Create Entity ?Water ?Lake; fit a closed spline to the contour (8?4 points).
  2. Snap To Terrain Lowest, then add 3? m Water Level Offset.
  3. Waves: Waves_CalmLake. Material: WaterSurface_LakeGreen.
  4. Debris: Rigid Body + Collider + Water Buoyancy (auto samples OK for crates).
  5. Optional islands: Excluded Regions entities; set Exclusion Fade Band if floaters cross island edges over another body.
  6. Verify: underwater fog deepens with depth; half-immersed camera shows a waterline; debris rights itself and can sleep.

Open ocean

Goal: Infinite sea, moderate waves, AlwaysLoaded for streaming. Sample: WaterSamples/Ocean.

  1. Create Entity ?Water ?Ocean; add WorldStreamingMemberComponent, keep AlwaysLoaded.
  2. Sea Level = 0; Waves Waves_OceanModerate or Waves_OceanSpectrumModerate; material WaterSurface_OceanDeep.
  3. Default Grid Extent 8192 / 6 LOD levels. For a calm lagoon, add exclusion rings and a Lake at sea level with Waves_CalmLake.
  4. Bake Shore Distance where terrain exists.
  5. Boat: 6? buoyancy samples, Wave Sample Mode = Full, raise Angular Drag (~0.8) to tame roll.
  6. Verify: roam across cell boundaries without seams; after origin shift, waves do not slide; crest foam appears in storms.

Estuary

Goal: GreatRiver into Ocean with continuous height / depth / flow. Sample: WaterSamples/Estuary.

  1. Build Ocean per Open ocean.
  2. Create Entity ?Water ?River with GreatRiver preset; extend the end into the ocean coverage; converge end-point Z to sea level.
  3. Mouth Fade Length ?1?× mouth half-width (e.g. end half-width 40 m ?60?0 m): river waves fade out; ocean waves damp in the mouth disc.
  4. River Blend Band 20?0 m so height / depth / flow smoothstep into the ocean (0 keeps hard winner-takes-all).
  5. Verify: mouse-pick probe along river→sea shows continuous surfaceHeight; floaters do not hop; waves calm at the mouth and recover offshore.

River network

Goal: Tributaries joining a main stem. Sample: WaterSamples/RiverNetwork.

  1. Author each segment as its own River entity; align endpoints with Align To Adjacent Segments.
  2. Add Water River Network; list segments under River Segments.
  3. Add Junctions: Upstream River, Downstream River, Blend Fade Length.
  4. Optional Align Network on the editor component.
  5. Verify: flow arrows at confluences; no priority pops if Blend Band / junction fade are set.

Transparent sorting review

Sample: WaterSamples/TransparentSorting ?cross-waterline glass, underwater / above-water transparent quads, and particles. Use it when sorting or waterline refraction looks wrong; treat as an art/QA checklist rather than a gameplay template.

Next steps


Copyright © 2026 DawnEngine. All rights reserved.

DawnEngine is a commercial 3D engine distributed under the DawnEngine end-user license agreement. Engine binaries and source are proprietary and are not covered by the licenses below.

Documentation only: the prose and templates on this site are a derivative work of Open 3D Engine (O3DE) documentation by the O3DE Contributors, used under CC BY 4.0 (documentation content), Apache 2.0 (site code), and the MIT license (inline code samples).

The open-source 3D engine that DawnEngine is built on top of is Open 3D Engine . DawnEngine is not affiliated with, endorsed by, or sponsored by The Linux Foundation or the O3DE project. “O3DE” and “Open 3D Engine” are trademarks of The Linux Foundation.