euca-terrain) is a chunked heightmap world: raise/lower/flatten/smooth brushes, splat
layers, per-cell heightfield colliders, and LDtk/Tiled level import. Foliage scatters instanced meshes
across an area. Authoring, collider generation, mesh generation, and import all run headless; only
drawing the terrain and foliage needs a GPU host.
Headless authoring + physics, GPU display. Heightmap edits, splatting, collider generation, mesh
generation, and LDtk/Tiled import run on the
:3917 server. Displaying the terrain and
the scattered foliage needs a render host.What it does
- Heightmap & chunks —
Heightmap(row-major[0,1]data, cell size, max height) drives a chunk grid;generate_chunk_meshbuilds mesh data andselect_chunk_lodpicks density by distance. - Brush editing —
raise/lower/flatten/smoothwith falloff (apply_brush). - Splatting —
SplatMappaints per-cell layer masks. - Physics —
generate_heightfield_collidersproduces per-cell AABB tiles that integrate with physics. - Import —
ldtk_importandtiled_importturn LDtk/Tiled maps into level data. - Foliage —
POST /foliage/scatterplaces an instanced layer (mesh + material, density, scale range, distance-based LOD).
Endpoints
| Method | Path | Description |
|---|---|---|
POST | /terrain/create | Create a flat heightmap terrain (returns entity + extents) |
POST | /terrain/edit | Raise / lower / flatten / smooth at a world position |
POST | /foliage/scatter | Scatter an instanced foliage layer across an area |
GET | /foliage/list | List scattered foliage layers with instance counts |
Example
Status
- ✅ Heightmap sampling + normals, chunked mesh gen, distance LOD, brush editing, splatting, heightfield colliders, LDtk + Tiled import, instanced foliage scatter — shipped and headless (for authoring).
- 🟡 A GPU terrain-generation path exists but is feature-gated and
unimplemented!()— the shipped path is CPU mesh generation.
Terrain & foliage endpoints
Create, edit, and scatter endpoints with schemas.