# terrain

> Talos 0.6 · Since 0.6

A terrain: a heightfield ground built from the op stack of a `.terrain.json` file, drawn, collided and navigated as one.

The entity's position is the terrain's origin; its rotation and scale must be identity. 3D projects only.

Use it in a scene entity's `components` list as `{ "type": "terrain", … }`. The contract writes the fields flat and refuses unknown keys.

## Fields

| Field | Type | Required | Default | Allowed values | Description |
|---|---|---|---|---|---|
| `source` | `string` | yes |  |  | Project-relative .terrain.json file. |
| `render` | `TerrainRenderMode` | no |  | `auto`, `off` | Default auto: HD draws VG, standard draws LOD meshes. |
| `collision` | `TerrainCollisionMode` | no |  | `heightfield`, `off` | Default heightfield: the terrain is solid ground. off: no collider. |
| `nav` | `boolean` | no |  |  | Feed nav's heightfield source. Default true when the scene has nav. |

## Rules that can refuse it

- `ground-cover-no-terrain`
- `ground-cover-source-unknown`
- `ocean-wave-mask-asset-missing`
- `physics.water.river-cap`
- `render.hd.ground-cover-no-height`
- `render.hd.water.river-flow-inconsistent`
- `render.hd.water.river-id-unknown`
- `terrain-extent-invalid`
- `terrain-in-2d-scene`
- `terrain-layer-unknown`
- `terrain-multiple`
- `terrain-op-id-duplicate`
- `terrain-sample-invalid`
- `terrain-transform`
- `terrain/entity-buried`
- `terrain/entity-floating`
- `terrain/spawn-slope`
- `terrainmod-no-terrain`
- `waterways-without-terrain`
