---
number: 10
title: The ground has types — 64 kinds of ground, a river through the Village, and mountains in the Badlands
date: 2026-08-17
summary: Every cell of every Area becomes one of the 64 hexagrams — grass, sand, snow, stone, water and lava sunk below the ground, and mountains standing up out of it — visible in the browser and on the phone, with soft edges between neighbouring types.
epic: ground-types
status: delivered
due-with: ground-types/008
artifacts: ["https://lor.kris.ai-task-runner.com/play","https://lor-server.cocreations.com.au/download/land-of-lor-v10.apk","land-of-lor/game/content/areas/","land-of-lor/docs/handoff/ground-types.md"]
cta: [object Object]
---

Promised 2026-08-17, the day Kris's ground-types spec landed and the epic was planned. Until
now the floor of every Area has been one flat green plane. This deliverable is the world getting
ground under it: each cell is a hexagram, the lower trigram says what the ground is, the upper
one gives it a flavour, and the game draws it.

## Acceptance criteria

- The live game (`/play` and the Android build) shows the Village of Lor with grass in several
  flavours and a river of Water running through the middle, and the Badlands with every one of
  the eight ground types on show in patches — including a mountain cluster with a taller peak,
  a volcano, and a pool of lava.
- Water and lava sit visibly lower than the ground around them, and a character walking onto
  them sinks part-way in.
- Where two ground types meet, the picture blends from one to the other — no hard block edges,
  corners included — while each cell is still exactly one type.
- Mountains and deep water cannot be walked into; water and lava can (creatures have no nature
  yet).
- Every player's home has its own scatter of grass flavours.
- The area map editor, opened from the world editor, paints any Area's ground and saves it as a
  reviewable file that `load-world` applies — the same three-step path as the world map.

## Delivered

2026-08-17, the same day it was promised — planned in the morning, built and live by
night, in eight tasks (`epics/ground-types/`).

- **Play it:** <https://lor.kris.ai-task-runner.com/play> — the web build at `b8dbdb1`, on
  the live server. Start in your home (grass in a scatter of flavours), walk out of the
  front door into the Village of Lor and cross the river; the Badlands, two doors on, has
  every ground type in patches, a mountain range with a peak core and a volcano at its
  centre, a lava pool, a deep-water lake, sand, snow, and stone floors around its doors.
- **On the phone:** <https://lor-server.cocreations.com.au/download/land-of-lor-v10.apk> —
  the same build, signed. (Older builds now say "update needed": the protocol moved to 4
  because a client that can't see a mountain would walk into an invisible wall.)
- **The ground itself, as files:** `land-of-lor/game/content/areas/<slug>.ground.json` — one
  hexagram number per cell, a row per line, applied by `load-world` like the world map;
  written by `npm run paint-ground` and edited in the new **area editor** (*Edit the ground →*
  in the world editor).
- **How it was built and checked:** `land-of-lor/docs/handoff/ground-types.md`, with
  screenshots beside it (`handoff/ground-types/`).

### Against the acceptance criteria

- Village grass flavours + river; Badlands patches with a peak-cored range, a volcano and a
  lava pool — **yes**, live: `npm run verify-ground` (15/15 against the droplet) reads the
  ground a real client receives in the Village and, walking through two doors, the
  Badlands, and finds the river, all eight types and the volcano.
- Water and lava sit lower and a character sinks part-way in — **yes**, on the mesh rules
  (`ground_mesh.gd`, tested) and in the shots (`badlands-wade-textured.png`).
- Blends between types, corners included, each cell still one type — **yes**: stage 1 by
  vertex colours, stage 2 by the four-cell shader; the cells on the wire are single
  hexagrams.
- Mountains and deep water cannot be walked into; water and lava can — **yes**, one shared
  `is_walkable` on server and client, covered by the director's tests (a step into a
  mountain is `BLOCKED`, into water lands); the live Badlands carries the impassable cells.
- Every player's home has its own scatter — **yes**, live (the verifier's own home; the
  migration painted 18 Areas on the droplet).
- The area editor paints any Area's ground and saves a reviewable file — **yes**, driven end
  to end in headless Chrome (`handoff/ground-types/area-editor.png`).

Not yet seen by a human on a phone: the v10 APK is up, the renderer override is in, the
same build passed on the web — but the on-device look and frame time on the Badlands are
Kris's to check.