openvibers/openvibe.games ROADMAP.md

ROADMAP.md

main 8.6 KB · 177 lines · markdown

Roadmap

Status legend: done = playable and tested, partial = real but
incomplete, next = current development target, future = not started.
A system is never "done" because a schema exists — it must have at least one
real playable vertical implementation.

Phase 0 — Vertical slice ✅ done

Proved every major system cooperates end-to-end (verified by
apps/server/scripts/sliceTest.ts on every change): authoritative server,
Babylon client (WebGPU/WebGL), Source-style predicted movement, interest-
managed replication, physics props with sleep-aware snapshotting, gathering,
inventory, data-driven crafting, physgun building, persistence across
restart, zone rules, logs//metrics//healthz.

Phase 0.5 — City, skills, tools, protection ✅ done

Scrap City safe city (map-authored, zone-enforced), tool capability system,
gathering professions with respawning typed nodes, 6 skills with XP/levels/
recipe gates, building content, prop protection with persistent trust,
weld constraint foundation (engine + persistence — no player-facing tool).

Phase 0.75 — Survival & sandbox life ✅ done (was undocumented)

Shipped after 0.5, ahead of the old roadmap: hunger/thirst/stamina/health
vitals with eating/drinking, food items + burn-barrel cooking, fall damage,
death/respawn; melee PvP with weapon capability, knockback, zone gating;
container props (storage box) with trusted access; hinged doors; planter
farming prototype (berry seeds, timestamp growth); merchant trades (bottle
caps); supply-drop crates (hardcoded event v1); day/night clock; guest
identity + openvibe.network SSO ranks; map editor as a mature authoring subsystem
with live world reconciliation.

Phase 1 — Sandbox depth ✅ done (Stage 2)

  • Player-facing constraint toolset on a clean ConstraintDefinition/Record/
    Service architecture: weld, rope, hinge, slider, spring, axis, motor
  • Constraint visuals (endpoints, ropes), two-click tool UX, unweld/cut
  • Constraint islands: settled structures sleep as units; island metrics
  • Placement ghost preview + optional surface/grid snapping (free placement
    stays; modifier for precise unrestricted placement)
  • Physgun precision polish (snap angles, translation snap)
  • Prop health/damage/repair capability (melee + impact; zone-gated
    destruction; repair materials; destroy loot)
  • Hostile-input tests for every new message

Phase 2 — Item, container & survival depth ✅ done (Stage 3)

  • Container domain module shared by boxes/machines/vehicles/merchants;
    quick transfer, split, sort; container-to-container
  • Equipment slots + stack metadata (durability, instances) where gameplay
    needs it — no speculative fields
  • Temperature (environment/wetness/shelter/clothing/heat sources) with
    understandable rules; generic timed status-effect framework
  • Server-authoritative environment state: time of day, weather
    (clear/cloudy/rain/storm/fog), temperature — client renders, gameplay
    consumes

Phase 3 — Farming, utilities & production ✅ done (Stage 4)

  • Data-driven crop definitions (several materially different crops:
    stages, water/fertility needs, temperature ranges, regrow) — timestamp
    progression, never per-tick
  • Irrigation/fertilizer/farm props via logical utility connections
  • Generic utility networks: power (producer/consumer/storage), fuel
    (items), water (tanks/pipes/pumps) — cheap when sleeping
  • Machine production chains: inputs → machine + time (+power/fuel/water/
    skill) → outputs; crop processing feeds the same crafting economy

Phase 4 — Combat foundation ✅ done (Stage 5; hitscan pistol, armor, medical)

  • Generic damage pipeline (source/target/type/amount/position/impulse);
    blunt/cutting/projectile/explosive/environment/fall types; zone gating
  • Server-authoritative ranged weapons (fire intent → validate equipped/
    ammo/cadence/direction → server raycast); small test weapon set
  • Armor/clothing damage reduction; bandage/medical consumables

Phase 5 — Spatial world foundation ✅ done (Stage 6)

  • Uniform spatial hash replacing the linear interest scan and prop
    proximity scans (workstations, shops); one index, many consumers
  • Region/cell activation concept (players, active NPCs, awake physics per
    region) — the seam for simulation LOD and later streaming

Phase 6 — NPCs ✅ done (Stage 7; straight-line nav v1)

  • Server-authoritative NPC domain: composition capabilities (npc, health,
    inventory, faction, perception, combat, merchant, job) — no subclass
    towers
  • Archetypes: civilian, city guard, merchant, bandit/scavenger, wildlife
    (content-defined loadout/behavior/loot/importance)
  • NavigationService boundary (request path/waypoints/repath/invalidation)
  • Modular perception: vision (distance/FOV/LOS), hearing (bounded sound
    events from gameplay), threat
  • Behavior state modules (idle/wander/patrol/investigate/trade/guard/
    chase/attack/retreat/return) — deterministic/testable
  • Simulation LOD tiers: full / simplified / abstract (no engine objects
    far from players); persistence of abstract state

Phase 7 — Factions, reputation, economy ✅ done (Stage 8)

  • Data-driven factions + relations; persistent player reputation with
    thresholds (stock, prices, jobs, access)
  • Markets generalizing the fixed trade sheet (stock, restock, pricing,
    reputation requirements) behind a transactional economy API
  • Production chains as player businesses, legal and underground, on the
    same machinery; player specialization emerges from skills/machines/
    geography — never class locks

Phase 8 — World events & extraction ✅ done (Stage 9)

  • Generic server-owned event engine (scheduled/announced/active/
    completed/cleanup); supply drops migrated onto it as proof
  • Extraction events: countdown, capacity, in-zone validation, contest
    rules; explicit at-risk vs secured loot semantics owned by the server
  • High-risk regions via zone/event rules (better loot, hostile NPCs,
    hazards)

Phase 9 — Progression & jobs ✅ done (Stage 10)

  • Skills unlock capabilities (constraint tools, machines, crops,
    components), not just recipes
  • Blueprint/discovery: persistent unlock state fed by skill, merchants,
    jobs, found blueprints, dangerous regions, extraction, reputation
  • Job/contract foundation (deliver/gather/transport/kill/repair/escort)
    with data-driven objectives and rewards

Phase 10 — Vehicles ✅ done (Stage 11; scrap cart prototype)

  • Modular vehicle prototype from the SAME item + physics + constraint
    architecture: chassis/wheels/suspension/engine/seat/storage/lights
  • Assembly recognition + activation; server-authoritative driving; fuel;
    cargo containers; damage/repair; persistence + replication

Phase 11 — Scale 🔜 next (Stage 12)

ADR-0007 M4 now covers several rooms of one place in one process, PostgreSQL
leases, in-process transfer, cell interest and a socketless load probe. This
phase still covers streaming, multi-host routing and larger load profiles.

  • Region persistence/streaming when the authored world justifies it
  • Network measurement first (bytes/client, snapshot sizes, entity counts);
    binary snapshot codec only when measurements demand it
  • Synthetic load tests: hundreds of sessions/props/constraints/NPCs —
    hunting algorithmic scaling problems, not benchmark vanity

Phase 12 — Content & hardening (Stage 13)

  • Interconnected content web (forest→sawmill→lumber; mine→forge→
    components; farm→processing→trade), geography with economic meaning
  • Cross-system acceptance scenario (farm → process → haul → job → combat
    → extraction → sell → blueprint → restart-verified persistence)
  • Hostile-client test sweep across every network action

Platform integration (network roadmap Wave 12) — partial

  • done: canonical Network subjects as account keys; games service
    principal; durable events via outbox; Media copies of map-editor assets;
    mod manifest validation, registry (install / grant / enable / disable /
    revoke, audit) and the capability-checked runtime seam for declarative
    games-content@1 packs
  • waiting on the platform: mod principals and grants in OpenVibe.Network;
    sandboxed executable mods (OpenVibe.Host Stage C); games.progress.summary
    user-module writes are granted but not implemented

Standing engineering rules

  • The slice test must stay green; new systems extend it
  • Content changes never require engine changes
  • No system may read another's internals — protocol/events/repositories only
  • The map editor is load-bearing infrastructure: run pnpm audit:editor
    and pnpm test:editor when map/content schemas change
  • Plants, machines and networks progress by timestamp/state transition,
    never per-tick simulation
  • Every new network action ships with hostile-input tests