- 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)
77 lines
4.1 KiB
Markdown
77 lines
4.1 KiB
Markdown
# Roadmap
|
||
|
||
One milestone ≈ a chunk of working sessions. Each ends with something you can
|
||
actually run and see. Timelines assume solo dev + heavy AI assistance, steady
|
||
(not full-time) pace.
|
||
|
||
## M0 — World skeleton (single-player) · ~2–4 weeks
|
||
**Goal:** walk around a lit, atmospheric terrain. Prove the look.
|
||
- [x] Project scaffold, git repo, docs
|
||
- [x] Godot installed, project opens
|
||
- [x] First-person / third-person character controller (move, jump, mouse-look)
|
||
- [x] One flat/heightmap terrain chunk with a material
|
||
- [x] Atmospheric lighting: directional sun, sky, volumetric fog, tonemapping
|
||
- [x] Place one low-poly tree + rock to set the mood
|
||
- **Done when:** you load the game and walk around a Valheim-ish lit field.
|
||
|
||
### M0.5 — Scenery & world bounds (done)
|
||
- [x] Mountain-rim boundary (steep cliffs + invisible wall + respawn safety net),
|
||
covered by `tests/test_boundary.gd`
|
||
- [x] Procedural terrain shader (grass/dirt/sand/rock strata/snow), lake + water shader
|
||
- [x] 5 procedural tree types, faceted mossy rocks, cliff outcrops, bushes, logs, stumps
|
||
- [x] Streamed wind-animated grass + flowers; cloud sky; swimming
|
||
|
||
## M1 — Survival loop (single-player) · ~3–5 weeks
|
||
**Goal:** the core game verbs.
|
||
Detailed plan in `docs/SURVIVAL_DESIGN.md` (phases M1a–M1d).
|
||
- [x] Resource nodes: chop tree → wood, mine rock → stone *(M1a)*
|
||
- [x] Inventory + simple hotbar UI, chests *(M1a)*
|
||
- [x] Crafting (recipe: wood → tools / building pieces) *(M1a)*
|
||
- [x] Pause menu, title screen, world slots, save/load, autosave *(M1a)*
|
||
- [x] Health / stamina / hunger / warmth, day-night cycle, fire fuel, cooking, foraging, torches, death + grave *(M1b)*
|
||
- [x] Weather (rain, storm, snow), wet/shelter *(M1c)*
|
||
- [x] Snap-together building: floor/wall/door/roof/gable, resource cost, support + collapse, dismantling *(M1c)*
|
||
- [x] Bed spawn point and sleeping, resource regrowth *(M1c)*
|
||
- [x] Creatures (rabbit, deer, boar), hunting, club/spear/bow, butchering, cooked-food buffs, hide cloak *(M1d)*
|
||
- [x] Wolves at night with a den and a 3-day grace period, wolf cloak *(M1e)*
|
||
- [x] Fishing (rod, perch and trout, grilling) and a mixed diet *(M1e)*
|
||
- [ ] Hide armour, more recipes, sea fishing *(later M1 polish)*
|
||
- **Done when:** gather → craft → build a tiny shelter, single-player.
|
||
|
||
## M2 — Multiplayer · ~2–4 months
|
||
**Goal:** self-hosted, authoritative, 2–8 players.
|
||
Detailed plan in `docs/MULTIPLAYER_PLAN.md` (hosting on UDP 24242 via Tailscale
|
||
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)*
|
||
- [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.
|
||
|
||
## M3 — Addon SDK + sandbox · ~2–3 months
|
||
**Goal:** the differentiator. Easy, safe mods.
|
||
- [ ] Embed sandboxed Lua VM in the server
|
||
- [ ] Capped API surface (events + safe world queries/commands)
|
||
- [ ] Per-addon CPU/time + memory quotas
|
||
- [ ] Addon manifest format (declare items/recipes/prefabs as data)
|
||
- [ ] 2–3 example addons (a new craftable item; a "welcome" message on join; a
|
||
custom spawn rule)
|
||
- [ ] SDK docs for modders
|
||
- **Done when:** a modder drops an addon folder in and it safely adds content,
|
||
and a deliberately-malicious test addon is contained (can't read files,
|
||
can't hang the server).
|
||
|
||
## M4 — Content & polish · ongoing
|
||
- More biomes, creatures, items, building pieces
|
||
- PvP / raiding rules, building damage
|
||
- Better UI, settings, controls
|
||
- Audio, music, weather
|
||
- Packaged builds for Win/Mac/Linux (+ Mac signing/notarisation)
|
||
|
||
## Honest overall estimate
|
||
A genuinely playable **self-hosted survival game with a working sandboxed addon
|
||
SDK** is roughly **6–12 months** of steady solo work with AI help. The M0–M1
|
||
vertical slice (a few weeks) is what proves the concept and keeps you motivated.
|