---
number: 8
title: 3D people walking — the browser world gets bodies
date: 2026-08-04
summary: The live multiplayer world now renders 3D people who walk between cells — turning to face where they're going, arms and legs swinging — instead of flat coloured blocks teleporting a cell at a time. Same live server, same link, new eyes.
epic: server-architecture
status: delivered
due-with: null
artifacts: ["land-of-lor/pocs/multiplayer-poc/world-server/client/humanoid_node.gd","land-of-lor/pocs/multiplayer-poc/world-server/client/basic_humanoid.tscn","land-of-lor/pocs/multiplayer-poc/handoff/3d-walkers.md"]
cta: [object Object]
---

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](/deliverables/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](/deliverables/6))
  and `verify-public-world` re-run live against it over TLS: 5/5 — two strangers, no world id
  exchanged, same Commons, mutual movement observed.

## Known limits

- The [Android APK](/deliverables/7) 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](/deliverables/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/` (commits `86d0733`,
  `0ebc694` in land-of-lor)