8.7 KiB
tags, updated, permalink
| tags | updated | permalink | ||
|---|---|---|---|---|
|
2026-06-08 | gamevault/06-roadmap/backlog |
Backlog
Open / candidate work only. Done items live in Milestones + their DR / session log (this file is intentionally
kept to the forward-looking pool — promote an item to Milestones when committed, then drop it here).
Last decluttered 2026-06-08 (removed all shipped [x] items; their context is preserved in the linked records).
NEXT — Combat-depth track (the fight, made fun)
The forward plan is Path_to_Fun (direction DR-028_Combat_Primary_Verb_Depth_First, refined 2026-06-08): combat is the primary braided verb; depth-before-breadth, with a falsifiable fun-gate per milestone. The roadmap is split into a committed Path A and a provisional, NOT-scheduled Path B, with a mandatory logged Decision Gate between them.
- Path A — the committed scope (a shippable game-with-a-point): MC-0 instrument the box → MC-1 dash + committed-punishable Charger → MC-4 melee cone → [Demo A: the Duel] → EB-1 machines can die (structure loss-state) → EB-2 the felt spend (turret ammo from the factory) → [Demo B: the Loop] → END-1 a losable Core → END-2 final siege / win-lose → [Decision Gate — log ship-vs-continue].
- Status 2026-06-09: MC-0 + MC-1 CODE-COMPLETE, fun-gate pending (2026-06-09_MC1_Implementation) — 259/259 EditMode + clean netcode Play sessions + post-build adversarial review (2 confirmed findings fixed); the operator feel pass (dash snap test, telegraph read, Charger feet) + the bench (timed vs spam) + friend read are the open gate. MC-4 starts only after the MC-1 gate passes.
- Path B — provisional (pick ONE after the gate, re-estimate first): MC-2 ranged + swarm + mix-director · MC-3 pure juice · MC-5 downed/revive · MC-6 multi-slot kit · EB-3 base repair · EB-4 tool-gated harvest (braided) · EB-5 craft combat power · END-5 1–4p scaling + NG+. (END-3 Echo narrative + END-4 content-treadmill are CUT until Path A is fun and the operator wants to author.)
Every milestone ends with a play/fun-gate, not a test count. Path A forks are LOCKED (2026-06-09 — DR-029_Path_A_Fork_Locks · Path_to_Fun#Locked decisions (Path A)); Path B forks stay open, locked via the same present-the-forks ritual at the Decision Gate.
PAUSED — Inventory · Equipment · Progression (roadmap DR-026_Inventory_Equipment_Progression_Foundation / DR-027_Equipment_Slots_Phase1)
Paused 2026-06-08 (DR-028_Combat_Primary_Verb_Depth_First): Phases 2–4 are more breadth on systems whose payoff is combat power — resume once the fight is fun. Phases 0–1 shipped and stand.
Phases 0 (inventory backbone) + 1 (equipment slots) shipped 2026-06-08. Remaining phases, in order:
- Phase 2 — tool-gated harvesting (NEXT): bake
RequiredToolType/RequiredToolTieronResourceNode/BlightClutter;ResourceHarvestSystemgates + scales yield by the owner's equipped Tool-slot tier (the Tool slot is already reserved + baked). The gear-tier progression loop. "Need a [tool]" HUD cue. - Phase 3 — crafting + per-player persistence: extend the Fabricator to craft items into a player's inventory; equip-tier gates; additive
SaveDatav3 that restores inventory + equipment AND replays equip on load (effects are event-driven, so a buffer restore alone wouldn't re-add the StatModifiers). - Phase 4 — (optional) multi-slot spell loadout: expand the single
AbilityRefinto primary + 2–3 hotkey ability slots (subsumes the old "multi-ability slots" item). Per-slot cooldowns/inputs. - Items/abilities UI pipeline (was the deferred M3 item): icons + descriptions via a managed lookup keyed by
ItemId/AbilityId, off the blob (the HUD inventory/equipment panels show names only today). - Multi-prefab ability variants — partly addressed by Phase 1 (DR-027_Equipment_Slots_Phase1): different weapons already swap the projectile prefab via
AbilityRef.Id+ the catalog. Only multiple cosmetic prefab variants per single ability remain (needsProjectileClassificationSystemgeneralized beyond one shared prefab).
Combat / enemies
- Live interactive fire test (focused Play: press fire → predicted projectile + dummy/Husk HP drop) — the server loop + replication are validated; the input→
AbilityFireSystem→predict-spawn→classify path is only validated structurally. - Ranged Husk (Spitter) — a server-spawned enemy-projectile subsystem for dodge depth (melee-only today).
- Boss / per-wave composition weighting (brutes later, swarms early) instead of flat round-robin; a "broodmaker" that spawns.
- Server perf under wave load — validate in a real standalone build (in-editor multi-world cost ruled out Burst; single-process ServerWorld+ClientWorld+physics+waves is the likely factor).
- Projectile/pickup visuals — primitive meshes/materials today; optional predicted client-side auto-target if the soft server reconcile feels off.
Automation (M7 follow-ups)
- Throughput visuals (item-on-belt) — server-only machine buffers don't reach clients (they see only
PlacedStructure.Type); add one small replicated byte if live belt visuals are wanted. - Relevancy ceiling —
RegionRelevancySystem's O(structures×connections)/tick scan becomes load-bearing at high conveyor counts; batch it when counts grow. - Recipe depth — multi-input fabricator recipes; fabricator→conveyor output chaining (give the fabricator a
MachineOutput); per-machine distinct meshes (they reuse the Turret mesh as a placeholder).
Frontend / infrastructure
- Operator-run validation — launch the Windows build → menu → Single/Host/Join; a real 2-build LAN Host↔Join; MPPM co-op regression in default-editor mode.
- Controls settings + key rebinding (Input System rebinding UI) — out of the Graphics/Audio settings scope so far.
- Full base-state saves (placed structures done in M7; add threat/storage) —
SaveDatais versioned so this is additive. - Unity Relay for remote (non-LAN) Host/Join — swap the endpoint source feeding
ConnectionConfig(the frontend lifecycle is transport-agnostic). - Dedicated-server build — the
RequestedPlayType==Serverauto-host branch is in but UNTESTED. - Volume-slider theming — sliders render via the default runtime theme; swap to +/- cycle rows if a build shows them unstyled.
Physics / character controller (M5b)
- Multi-client CC interpolation validation — live two-build/thin-client run to confirm remote-peer smoothness (predicted-only
CharacterInterpolationvariant is in; only single-client validated). Pairs with the M4 real-LAN two-build test. - Player-vs-player collision — currently non-physical (
SimulateDynamicBody=false); enable + handle masses if mutual push is wanted. - Gravity / verticality — CC character is gravity-free + planar (no floor collider); add gravity + a ground collider + reconsider
SnapToGroundif terrain is introduced. - CC package version — 1.4.2 declares
entities/physics@1.3.x(resolves via SemVer floor); move to a CC build targeting Entities 6.x when published. - Physics-based hit detection (lag compensation
NetCodePhysicsConfig+PhysicsWorldHistorySingleton; projectiles as physics bodies; hard rotation lock viaPhysicsMass.InverseInertia=0) — only if the swept-segment server check is replaced.
World / visuals
- Base-side cohesion accents — cyan ordered-Aether lights + perimeter relief + tiled base ground (the Blightfield/biomes got the dressing budget; see DR-025_World_Environment_Redo_Natural_Frontier).
- Clearing as a spatial mechanic — cleared cells are juice + scrap only today; make them buildable / reveal hidden nodes (the "functional gating" fork).
- Per-
Variantclutter meshes —BlightClutter.Variantis replicated + round-robined but the prefab is single-mesh (additive, no schema change). - Ghost-prop Synty reskin — Storage / UpgradePickup ghosts still use placeholder meshes.
- Decor LOD → cosmetic-only — cosmetic prop LODs are world GameObjects; keep them off the server tick budget.
- VFX-Graph hit/beam packs + BioHorror corrupted-zone accent set (deferred art); material fidelity (ORM repack / small ShaderGraph + baked reflection probe).
Cleanup (low value, deliberately deferred)
- Optional code-tidy (no behaviour change):
SettingsServicemigrate-then-clamp ordering;ConveyorTransportSystem's 6 parallel snapshot arrays → one struct array;WorldFeedbackSystem.TintForResourceif-chain → lookup;PlayerInputGatherSystemdevice-active dedup. 2026-06-06_Cleanup_Alignment.