← Ground look and levels · all tasks
The look — unshaded ground, sink depths, tile pointers with a flat fallback
ground-look-and-levels/001 · created 2026-08-18 · updated 2026-08-18
What to do
Decisions 1, 2 and 10 of the workshop note (land-of-lor/docs/design/2026-08-18-ground-look-and-levels-workshop.md).
game/world/client/ground.gdshader:render_mode unshaded; the shading the ground needs is drawn here — darken by slope (the normal is available), a darker rim where a surface steps down (bank of water/lava/sand; later the cliff faces of 002), so a step reads as a drawn edge.game/shell/elements.js(sync-elements.shafter): the ground type carries asink(cells: water and lava 0.25, sand 0.125, the rest 0) in place ofkind: sunken; keepkindformountainonly if something still needs it — prefer one field with one meaning. Each hexagram’sgroundVariantgains an optionaltile(a<lower>/<upper>file id; several hexagrams may point at one file); notile→ the flatcolour. Delete thepatternfields and the procedural pattern painter inground_atlas.gd(draw_tile) — dead the moment tiles are pointers; the atlas is: PNG if pointed at and present, else a flat fill.ground_mesh.gd/world_units.gd:SUNKEN_DEPTHbecomes the per-type sink; the standing height on sand is the sand’s own surface (no submerging —ENTITY_SINKis for water/lava).- Shots:
_shots.gdgainsLOR_SHOTS_ONLY=ground(only the ground shots) — the lab in the workshop session needed it; note ingame/README.mdthat Godot re-imports changed PNGs only from the editor orgodot --headless --path world --import.
Definition of done
test_runner.gd green (mesh rules updated for sink), the ground shots on the Badlands and the
Village show sand a step down with a drawn rim and no lighting lift, sync-elements.sh run,
director tests green (the TS table reader follows the field change). Committed and pushed.
Where the work lands
land-of-lor/game/world/client/, game/shell/elements.js, game/director/src/groundTypes.ts.
What was done (2026-08-18, laptop workshop session)
Built and shipped the same day (APK v15, /play at e34e8ba). The ground shader is
unshaded — painted = seen — and shades banks, ramps and cliff faces itself; sand sinks an
eighth (sink per type in elements.js, kind: flat|liquid|mountain, plain per type); tiles
are tile pointers (28 named; no tile = flat colour, deliberately) and the pattern painter is
gone; bodies carry a blob shadow and the sun’s shadow pass is off (an unshaded ground can’t
receive shadow maps — the build’s call, in the handoff); LOR_SHOTS_ONLY=ground, and the
re-import gotcha is in game/README.md. Handoff: land-of-lor/docs/handoff/ground-look-and-levels.md.
View source in repository · also available as raw markdown.