# Terrain Authoring Foundation > **Historical plan — not current implementation guidance.** Use the [documentation index](../../docs/README.md) for current behavior and architecture. Working implementation plan for Gitea [`#22`](https://git.spacetrainclubhouse.com/Falling-Metal-Interactive/Blacksite/issues/22). This establishes the persistent and hydrated terrain contract required by sculpting `#23`, layer painting `#24`, physics placement `#25`, and the regression pack `#32`. ## Authored Contract - Add reflected `TerrainDesc` authoring data with a version, square height-grid resolution, inline finite heights, horizontal sample spacing, vertical scale, chunk quad size, optional shared Material/Material Instance reference, collider generation, and shadow flags. - V1 stores the compact height grid in the scene so save/recovery/history/prefab behavior is exact. A later external heightmap asset migration must be explicit and versioned rather than silently changing ownership. - Validate resolution, exact sample count, finite values, positive scale, and chunk bounds before hydration or publication. ## Hydration - Partition the grid into deterministic non-overlapping quad chunks with shared boundary samples. - Generate triangle-list meshes with normals, UVs, U32 indices, and tangents; each generated child carries owner/chunk coordinates and remains runtime-only. - Use the authored shared material when resolvable and an explicit terrain fallback otherwise. - Optionally attach `ColliderConstructor::TrimeshFromMesh` per chunk. - Rebuild only the owning terrain's generated chunks when descriptor/material/active state changes; disabling/removing terrain cleans every generated child. ## Editor Integration - Register Terrain as a stable authoring component and ActorKind with conflicts against primitive, brush, static renderer, and skinned renderer geometry sources. - Add an inspector for resolution, world scale, chunk size, collider/shadow state, material summary, validation, and a guarded flat-grid resize action. All mutations are one typed history step. - Include terrain bounds in selection framing and generated chunks in authored-parent picking. - Expose Add Terrain through the existing component shelf; no new permanent toolbar is added. ## Verification - Tests cover descriptor validation, deterministic chunk coverage/mesh topology, hydration and cleanup, generated-child stripping, serialization, and history round-trip. - Source-only workspace format/check/strict-Clippy/tests and level validation run. Packaged tests remain deferred by project-owner direction. - Live native-Wayland acceptance creates or loads a terrain actor, verifies chunk rendering and selection/inspection, changes scale/chunking, exercises undo/redo, and inspects a saved scene to confirm generated chunks are absent.