openvibers/openvibe.games ROADMAP.md
ROADMAP.md
| 1 | # Roadmap |
| 2 | |
| 3 | Status legend: **done** = playable and tested, **partial** = real but |
| 4 | incomplete, **next** = current development target, **future** = not started. |
| 5 | A system is never "done" because a schema exists — it must have at least one |
| 6 | real playable vertical implementation. |
| 7 | |
| 8 | ## Phase 0 — Vertical slice ✅ done |
| 9 | |
| 10 | Proved every major system cooperates end-to-end (verified by |
| 11 | `apps/server/scripts/sliceTest.ts` on every change): authoritative server, |
| 12 | Babylon client (WebGPU/WebGL), Source-style predicted movement, interest- |
| 13 | managed replication, physics props with sleep-aware snapshotting, gathering, |
| 14 | inventory, data-driven crafting, physgun building, persistence across |
| 15 | restart, zone rules, logs//metrics//healthz. |
| 16 | |
| 17 | ## Phase 0.5 — City, skills, tools, protection ✅ done |
| 18 | |
| 19 | Scrap City safe city (map-authored, zone-enforced), tool capability system, |
| 20 | gathering professions with respawning typed nodes, 6 skills with XP/levels/ |
| 21 | recipe gates, building content, prop protection with persistent trust, |
| 22 | weld constraint foundation (engine + persistence — no player-facing tool). |
| 23 | |
| 24 | ## Phase 0.75 — Survival & sandbox life ✅ done (was undocumented) |
| 25 | |
| 26 | Shipped after 0.5, ahead of the old roadmap: hunger/thirst/stamina/health |
| 27 | vitals with eating/drinking, food items + burn-barrel cooking, fall damage, |
| 28 | death/respawn; melee PvP with weapon capability, knockback, zone gating; |
| 29 | container props (storage box) with trusted access; hinged doors; planter |
| 30 | farming prototype (berry seeds, timestamp growth); merchant trades (bottle |
| 31 | caps); supply-drop crates (hardcoded event v1); day/night clock; guest |
| 32 | identity + openvibe.network SSO ranks; map editor as a mature authoring subsystem |
| 33 | with live world reconciliation. |
| 34 | |
| 35 | ## Phase 1 — Sandbox depth ✅ done (Stage 2) |
| 36 | |
| 37 | - Player-facing constraint toolset on a clean ConstraintDefinition/Record/ |
| 38 | Service architecture: weld, rope, hinge, slider, spring, axis, motor |
| 39 | - Constraint visuals (endpoints, ropes), two-click tool UX, unweld/cut |
| 40 | - Constraint islands: settled structures sleep as units; island metrics |
| 41 | - Placement ghost preview + optional surface/grid snapping (free placement |
| 42 | stays; modifier for precise unrestricted placement) |
| 43 | - Physgun precision polish (snap angles, translation snap) |
| 44 | - Prop health/damage/repair capability (melee + impact; zone-gated |
| 45 | destruction; repair materials; destroy loot) |
| 46 | - Hostile-input tests for every new message |
| 47 | |
| 48 | ## Phase 2 — Item, container & survival depth ✅ done (Stage 3) |
| 49 | |
| 50 | - Container domain module shared by boxes/machines/vehicles/merchants; |
| 51 | quick transfer, split, sort; container-to-container |
| 52 | - Equipment slots + stack metadata (durability, instances) where gameplay |
| 53 | needs it — no speculative fields |
| 54 | - Temperature (environment/wetness/shelter/clothing/heat sources) with |
| 55 | understandable rules; generic timed status-effect framework |
| 56 | - Server-authoritative environment state: time of day, weather |
| 57 | (clear/cloudy/rain/storm/fog), temperature — client renders, gameplay |
| 58 | consumes |
| 59 | |
| 60 | ## Phase 3 — Farming, utilities & production ✅ done (Stage 4) |
| 61 | |
| 62 | - Data-driven crop definitions (several materially different crops: |
| 63 | stages, water/fertility needs, temperature ranges, regrow) — timestamp |
| 64 | progression, never per-tick |
| 65 | - Irrigation/fertilizer/farm props via logical utility connections |
| 66 | - Generic utility networks: power (producer/consumer/storage), fuel |
| 67 | (items), water (tanks/pipes/pumps) — cheap when sleeping |
| 68 | - Machine production chains: inputs → machine + time (+power/fuel/water/ |
| 69 | skill) → outputs; crop processing feeds the same crafting economy |
| 70 | |
| 71 | ## Phase 4 — Combat foundation ✅ done (Stage 5; hitscan pistol, armor, medical) |
| 72 | |
| 73 | - Generic damage pipeline (source/target/type/amount/position/impulse); |
| 74 | blunt/cutting/projectile/explosive/environment/fall types; zone gating |
| 75 | - Server-authoritative ranged weapons (fire intent → validate equipped/ |
| 76 | ammo/cadence/direction → server raycast); small test weapon set |
| 77 | - Armor/clothing damage reduction; bandage/medical consumables |
| 78 | |
| 79 | ## Phase 5 — Spatial world foundation ✅ done (Stage 6) |
| 80 | |
| 81 | - Uniform spatial hash replacing the linear interest scan and prop |
| 82 | proximity scans (workstations, shops); one index, many consumers |
| 83 | - Region/cell activation concept (players, active NPCs, awake physics per |
| 84 | region) — the seam for simulation LOD and later streaming |
| 85 | |
| 86 | ## Phase 6 — NPCs ✅ done (Stage 7; straight-line nav v1) |
| 87 | |
| 88 | - Server-authoritative NPC domain: composition capabilities (npc, health, |
| 89 | inventory, faction, perception, combat, merchant, job) — no subclass |
| 90 | towers |
| 91 | - Archetypes: civilian, city guard, merchant, bandit/scavenger, wildlife |
| 92 | (content-defined loadout/behavior/loot/importance) |
| 93 | - NavigationService boundary (request path/waypoints/repath/invalidation) |
| 94 | - Modular perception: vision (distance/FOV/LOS), hearing (bounded sound |
| 95 | events from gameplay), threat |
| 96 | - Behavior state modules (idle/wander/patrol/investigate/trade/guard/ |
| 97 | chase/attack/retreat/return) — deterministic/testable |
| 98 | - Simulation LOD tiers: full / simplified / abstract (no engine objects |
| 99 | far from players); persistence of abstract state |
| 100 | |
| 101 | ## Phase 7 — Factions, reputation, economy ✅ done (Stage 8) |
| 102 | |
| 103 | - Data-driven factions + relations; persistent player reputation with |
| 104 | thresholds (stock, prices, jobs, access) |
| 105 | - Markets generalizing the fixed trade sheet (stock, restock, pricing, |
| 106 | reputation requirements) behind a transactional economy API |
| 107 | - Production chains as player businesses, legal and underground, on the |
| 108 | same machinery; player specialization emerges from skills/machines/ |
| 109 | geography — never class locks |
| 110 | |
| 111 | ## Phase 8 — World events & extraction ✅ done (Stage 9) |
| 112 | |
| 113 | - Generic server-owned event engine (scheduled/announced/active/ |
| 114 | completed/cleanup); supply drops migrated onto it as proof |
| 115 | - Extraction events: countdown, capacity, in-zone validation, contest |
| 116 | rules; explicit at-risk vs secured loot semantics owned by the server |
| 117 | - High-risk regions via zone/event rules (better loot, hostile NPCs, |
| 118 | hazards) |
| 119 | |
| 120 | ## Phase 9 — Progression & jobs ✅ done (Stage 10) |
| 121 | |
| 122 | - Skills unlock capabilities (constraint tools, machines, crops, |
| 123 | components), not just recipes |
| 124 | - Blueprint/discovery: persistent unlock state fed by skill, merchants, |
| 125 | jobs, found blueprints, dangerous regions, extraction, reputation |
| 126 | - Job/contract foundation (deliver/gather/transport/kill/repair/escort) |
| 127 | with data-driven objectives and rewards |
| 128 | |
| 129 | ## Phase 10 — Vehicles ✅ done (Stage 11; scrap cart prototype) |
| 130 | |
| 131 | - Modular vehicle prototype from the SAME item + physics + constraint |
| 132 | architecture: chassis/wheels/suspension/engine/seat/storage/lights |
| 133 | - Assembly recognition + activation; server-authoritative driving; fuel; |
| 134 | cargo containers; damage/repair; persistence + replication |
| 135 | |
| 136 | ## Phase 11 — Scale 🔜 next (Stage 12) |
| 137 | |
| 138 | ADR-0007 M4 now covers several rooms of one place in one process, PostgreSQL |
| 139 | leases, in-process transfer, cell interest and a socketless load probe. This |
| 140 | phase still covers streaming, multi-host routing and larger load profiles. |
| 141 | |
| 142 | - Region persistence/streaming when the authored world justifies it |
| 143 | - Network measurement first (bytes/client, snapshot sizes, entity counts); |
| 144 | binary snapshot codec only when measurements demand it |
| 145 | - Synthetic load tests: hundreds of sessions/props/constraints/NPCs — |
| 146 | hunting algorithmic scaling problems, not benchmark vanity |
| 147 | |
| 148 | ## Phase 12 — Content & hardening (Stage 13) |
| 149 | |
| 150 | - Interconnected content web (forest→sawmill→lumber; mine→forge→ |
| 151 | components; farm→processing→trade), geography with economic meaning |
| 152 | - Cross-system acceptance scenario (farm → process → haul → job → combat |
| 153 | → extraction → sell → blueprint → restart-verified persistence) |
| 154 | - Hostile-client test sweep across every network action |
| 155 | |
| 156 | ## Platform integration (network roadmap Wave 12) — partial |
| 157 | |
| 158 | - done: canonical Network subjects as account keys; `games` service |
| 159 | principal; durable events via outbox; Media copies of map-editor assets; |
| 160 | mod manifest validation, registry (install / grant / enable / disable / |
| 161 | revoke, audit) and the capability-checked runtime seam for declarative |
| 162 | `games-content@1` packs |
| 163 | - waiting on the platform: mod principals and grants in OpenVibe.Network; |
| 164 | sandboxed executable mods (OpenVibe.Host Stage C); `games.progress.summary` |
| 165 | user-module writes are granted but not implemented |
| 166 | |
| 167 | ## Standing engineering rules |
| 168 | |
| 169 | - The slice test must stay green; new systems extend it |
| 170 | - Content changes never require engine changes |
| 171 | - No system may read another's internals — protocol/events/repositories only |
| 172 | - The map editor is load-bearing infrastructure: run `pnpm audit:editor` |
| 173 | and `pnpm test:editor` when map/content schemas change |
| 174 | - Plants, machines and networks progress by timestamp/state transition, |
| 175 | never per-tick simulation |
| 176 | - Every new network action ships with hostile-input tests |
| 177 |