Terrain Generation¶
Shape your world’s mountains, plains, and water. The terrain page also prepares height bands that later guide your climate/paint and spawning filters.
This page explains the Editor Terrain tab (parameters, workflow, tips) and how it interacts with flora/fauna seeding.
In this article¶
- Prerequisites
- Quick start
- UI tour
- Parameters
- Water level & height bands
- Noise & seeds
- Recommended workflows
- Examples
- Troubleshooting
Prerequisites¶
- A Unity scene (2022.3 LTS or Unity 6).
- The add-on imported and the Terrain Generator window opened from the menu.
- Optional: a Water prefab/plane in the scene for visual reference.
Tip
You can Undo terrain changes with the editor’s standard Undo (⌘Z on macOS).
Quick start¶
- Open Terrain tab.
- Set Width/Length, Min Height, Max Height, and Water Level.
- Pick a Seed (or click Randomize) and tweak Noise (Frequency, Octaves, Roughness).
- Click Generate.
- (Optional) Switch to Climate/Paint after generation to assign materials by height bands.

UI tour¶
- Terrain Size: world dimensions in meters (Width × Length).
- Height Range:
Min Height(floor) andMax Height(peaks). - Water Level: world Y where water is considered to begin. Areas below this are “underwater” for seeding filters.
- Seed: controls the noise pattern deterministically.
- Noise: Frequency / Octaves / Roughness (fractal shaping).
- Buttons:
- Generate — builds/updates the heightmap in-place.
- Randomize Seed — picks a new seed and regenerates immediately (optional, depending on your setup).
- Flatten / Clear — (if provided) reset the heightmap to a baseline.
Parameters¶
| Group | Field | What it does | Typical range | Notes |
|---|---|---|---|---|
| Size | Width / Length | Horizontal size of the terrain in meters | 256–2048 | Bigger → more triangles/LOD considerations |
| Heights | Min Height | Vertical floor | -50 to 50 | Keep near 0 for flat worlds |
| Max Height | Vertical ceiling (mountain tops) | 100–600 | 200–400 feels natural for open worlds | |
| Water | Water Level | World Y treated as water | -20 to 60 | Underwater spawn is skipped by default during seeding |
| Seed | Seed | Deterministic randomness | any int | Same seed → same shape |
| Noise | Frequency | Base wavelength | 0.5–3.0 | Higher = more, smaller features |
| Octaves | Fractal layers stacked | 2–6 | More detail, higher cost | |
| Roughness | Amplitude falloff per octave | 0.35–0.7 | Lower = smoother; higher = rugged |
Important
Water Level is a rule, not just visuals. Seeding logic reads it to avoid underwater flora/fauna, unless you explicitly override that in the seeding tab.
Water level & height bands¶
- Anything with sampled height \< Water Level is considered water for spawning.
- You can paint climate/texture with height bands, e.g.:
- Top 10% → Rock
- Next 40% → Soil
- Bottom 50% → Grass
- Later, flora can be configured to prefer specific bands (e.g., grass-only plants) and fauna can be filtered with min/max height when spawning (e.g., no deer underwater).
Note
Height bands are calculated after generation. If you re-generate the heightmap, repainting may be needed depending on your pipeline.
Noise & seeds¶
- The generator uses a fractal noise (octaves layered) to form landmasses:
- Frequency sets the base feature size.
- Octaves adds finer detail each layer.
- Roughness controls how strongly each octave contributes.
- Seed feeds the noise PRNG. Use a seed you like and keep it noted to reproduce the same map later.
Tip
Click Randomize Seed a few times to browse candidate worlds quickly. When you like one, write down the seed before switching tabs.
Recommended workflows¶
Coastal archipelago¶
- Min Height: -10, Max Height: 200, Water Level: 0
- Frequency: 1.2, Octaves: 5, Roughness: 0.55
- Many small islands with shallow shores—great for birds (pollinators) and shoreline plants.
Rolling plains¶
- Min Height: 0, Max Height: 120, Water Level: -5
- Frequency: 0.8, Octaves: 4, Roughness: 0.45
- Gentle slopes, ideal for herbivores and broad grass coverage.
Mountain valley¶
- Min Height: -20, Max Height: 400, Water Level: 10
- Frequency: 1.6, Octaves: 6, Roughness: 0.62
- High ridges with narrow riverbeds; predators get natural chokepoints.
Examples¶
| Biome flavor | Size (m) | Heights (min/max) | Water | Noise (F/O/R) | Notes |
|---|---|---|---|---|---|
| Archipelago | 1024×1024 | -10 / 220 | 0 | 1.2 / 5 / 0.55 | Shallow bays; shoreline flora |
| Plains | 1024×1024 | 0 / 140 | -5 | 0.8 / 4 / 0.45 | Stable herbivore population |
| Valley | 2048×2048 | -20 / 420 | 10 | 1.6 / 6 / 0.62 | Strong vertical contrast |
(F/O/R = Frequency / Octaves / Roughness)
Troubleshooting¶
“Most of my map is underwater.”
- Raise Min Height or Water Level.
- Reduce Max Height if cliffs look too extreme.
- Try a lower Frequency for broader landmasses.
“Seeding still puts things under water.”
- Ensure the seeding tab has “skip underwater” enabled (default).
- If you manually spawned objects, the filter doesn’t apply retroactively.
“Performance dips when I crank octaves to 8+.”
- High octaves add detail but cost CPU during generation. 4–6 is usually enough.
- For very large terrains, consider chunking and LOD for runtime visuals.
“My water plane is at Y=200 but Water Level is 0.”
- Either move the plane to match your configured Water Level or set Water Level to that Y.
- The logic uses Water Level (not the plane), so keep them consistent.