openvibers/openvibe.games ROADMAP.md

ROADMAP.md

main 8.6 KB · 177 lines · markdown

1# Roadmap
2
3Status legend: **done** = playable and tested, **partial** = real but
4incomplete, **next** = current development target, **future** = not started.
5A system is never "done" because a schema exists — it must have at least one
6real playable vertical implementation.
7
8## Phase 0 — Vertical slice ✅ done
9
10Proved every major system cooperates end-to-end (verified by
11`apps/server/scripts/sliceTest.ts` on every change): authoritative server,
12Babylon client (WebGPU/WebGL), Source-style predicted movement, interest-
13managed replication, physics props with sleep-aware snapshotting, gathering,
14inventory, data-driven crafting, physgun building, persistence across
15restart, zone rules, logs//metrics//healthz.
16
17## Phase 0.5 — City, skills, tools, protection ✅ done
18
19Scrap City safe city (map-authored, zone-enforced), tool capability system,
20gathering professions with respawning typed nodes, 6 skills with XP/levels/
21recipe gates, building content, prop protection with persistent trust,
22weld constraint foundation (engine + persistence — no player-facing tool).
23
24## Phase 0.75 — Survival & sandbox life ✅ done (was undocumented)
25
26Shipped after 0.5, ahead of the old roadmap: hunger/thirst/stamina/health
27vitals with eating/drinking, food items + burn-barrel cooking, fall damage,
28death/respawn; melee PvP with weapon capability, knockback, zone gating;
29container props (storage box) with trusted access; hinged doors; planter
30farming prototype (berry seeds, timestamp growth); merchant trades (bottle
31caps); supply-drop crates (hardcoded event v1); day/night clock; guest
32identity + openvibe.network SSO ranks; map editor as a mature authoring subsystem
33with 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
138ADR-0007 M4 now covers several rooms of one place in one process, PostgreSQL
139leases, in-process transfer, cell interest and a socketless load probe. This
140phase 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