Deliverable #8 · 2026-08-04
3D people walking — the browser world gets bodies
Delivered 2026-08-04, from a voice session with Kris (and Mindy). The ask: the multiplayer world worked, but everything in it was a coloured block teleporting one grid cell at a time — how big a job is it to make them basic 3D people who walk? Answer: a rendering-only change, done the same evening. The director, world server, protocol, prediction, and reconciliation are all untouched.
What changed
- The people are the object-gallery humanoid (deliverable #2) — the capsule-and-sphere person, reused as-is. No rig, no baked animations.
- Walking is procedural. A new client node glides each entity toward its current grid cell at constant speed instead of snapping, swings legs and arms in opposite phase while moving (pivoting at hip and shoulder, injected at runtime), settles to standing when it stops, and turns the shortest way to face its direction of travel. Jumps bigger than a few cells — portals, respawns — still snap instantly, because a glide across the map would misrepresent what happened.
- The flat grid became a scene: grass ground plane, grey wall blocks, sunlight with shadows, sky, and a chase camera that follows your character. Tap-to-move on a phone still works the same way.
- Colour rules carried over: you are green, other players get a colour hashed from their id, and the Stage 4 creatures render small and dark red.
Because server movement arrives one adjacent cell at a time, the constant-speed glide toward the latest cell is the interpolation — the old explicit timestamp-lerp code for remote entities came out entirely.
Verified
- All three existing suites pass unmodified: director end-to-end (30/30), Godot client acceptance — prediction, reconciliation, portal crossings (15/15), and the world-server’s pure-logic tests (64/64).
- Two windowed desktop clients against a local director: both windows showed both humanoids walking smoothly, each seeing itself green and the other in its hashed colour.
- The rebuilt web export was deployed to the droplet (git fast-forward of
/opt/lor/game-server, same bundle-over-SSH method as deliverable #6) andverify-public-worldre-run live against it over TLS: 5/5 — two strangers, no world id exchanged, same Commons, mutual movement observed.
Known limits
- The Android APK still carries the 2D block client — re-exporting it is a follow-up, not part of this deliverable.
- Creatures use the same walking node but weren’t visually exercised this session — only players were on screen.
- The people are deliberately basic — the point was proving walking bodies in the live world, not character art. Fancier models drop into the same node.
Artifacts
- Live link: the button above — the same Commons world as deliverable #6, now with bodies. Open it in two tabs and the two of you can watch each other walk.
- Implementation notes:
land-of-lor/pocs/multiplayer-poc/handoff/3d-walkers.md - Client code:
land-of-lor/pocs/multiplayer-poc/world-server/client/(commits86d0733,0ebc694in land-of-lor)
Sources & artifacts
land-of-lor/pocs/multiplayer-poc/world-server/client/humanoid_node.gdland-of-lor/pocs/multiplayer-poc/world-server/client/basic_humanoid.tscnland-of-lor/pocs/multiplayer-poc/handoff/3d-walkers.md
← related epic: server-architecture
Also available as raw markdown.