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).
- Create Entity ?Water ?River; set Preset to Stream.
- Place 8?2 spline points downhill. Keep Elevation Mode =
Spline Z; set each point 0.1?.3 m below the banks. - 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.
- Bed: PolyTerrain ?enable Carve Terrain ?Carve Terrain. Heightfield terrain ?brush a ditch.
- 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).
- Material
WaterSurface_StreamClear; leave Waves empty. - 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.
- Create Entity ?Water ?Lake; fit a closed spline to the contour (8?4 points).
- Snap To Terrain Lowest, then add 3? m Water Level Offset.
- Waves:
Waves_CalmLake. Material:WaterSurface_LakeGreen. - Debris: Rigid Body + Collider + Water Buoyancy (auto samples OK for crates).
- Optional islands: Excluded Regions entities; set Exclusion Fade Band if floaters cross island edges over another body.
- 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.
- Create Entity ?Water ?Ocean; add
WorldStreamingMemberComponent, keep AlwaysLoaded. Sea Level = 0; WavesWaves_OceanModerateorWaves_OceanSpectrumModerate; materialWaterSurface_OceanDeep.- Default
Grid Extent 8192/ 6 LOD levels. For a calm lagoon, add exclusion rings and a Lake at sea level withWaves_CalmLake. - Bake Shore Distance where terrain exists.
- Boat: 6? buoyancy samples,
Wave Sample Mode = Full, raise Angular Drag (~0.8) to tame roll. - 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.
- Build Ocean per Open ocean.
- Create Entity ?Water ?River with GreatRiver preset; extend the end into the ocean coverage; converge end-point Z to sea level.
- 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.
- River Blend Band 20?0 m so height / depth / flow smoothstep into the ocean (
0keeps hard winner-takes-all). - 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.
- Author each segment as its own River entity; align endpoints with Align To Adjacent Segments.
- Add Water River Network; list segments under River Segments.
- Add Junctions: Upstream River, Downstream River, Blend Fade Length.
- Optional Align Network on the editor component.
- 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.