M2.2: player bodies, name tags, shared island and checked movement

- Joining loads the server's island (seed, spawn, clock); the server
  generates the same terrain from its seed and keeps a world clock that
  pauses when empty
- Other players are procedural low-poly characters in their chosen colours
  with name tags (hidden by walls, fading with distance), walk/run/swim
  animation and held items
- Movement: local and instant, sent at 20 Hz stamped with the sender's
  clock; the server refuses impossible moves (speed, rising, leaving the
  island, underground) and sends the player back; flagged respawns allowed
- Avatars drawn 100 ms behind and interpolated, with brief extrapolation
- Online: no pausing, player list in the Esc menu, Disconnect back to the
  title (with the reason); animals off and world changes local-only until
  M2.3-M2.5, shown on the HUD
- test_net_world: real server + walking and cheating bots at 100 ms +/-
  30 ms simulated latency (27 checks)
This commit is contained in:
Paul Bailey
2026-11-04 15:08:14 +00:00
parent f62f71658f
commit d0f473e57b
14 changed files with 1093 additions and 29 deletions

View File

@@ -45,7 +45,7 @@ or port forwarding, player identity and names, server rules for co-op/PvP, and
phases M2.0-M2.7).
- [ ] Refactor state to server-authoritative (single-player becomes loopback server)
- [x] Headless dedicated server, joining, identity handshake, names, player list *(M2.1)*
- [ ] ENet transport, client prediction for local movement, interpolation for others
- [x] ENet transport, player bodies and name tags, local movement checked by the server, interpolation for others *(M2.2)*
- [ ] Replicate resource nodes, inventory, building, health
- [ ] Persistence: world save/load on the server
- **Done when:** a friend joins your self-hosted server and you build together.