Docs: loop re-shape to expedition-driven (DR-042) + consolidate; fix enemy health-bar fill

- DR-042 (new): canonical loop re-shape — win-driver moves from base-siege
  survival to expedition clears; blind scheduled siege retired; base siege
  becomes retaliation consequence. Build order A (coherence) -> B (retaliation)
  -> C (legibility) -> D (Slice 4 persistent meta).
- Backlog/Path_to_Fun/Home reconciled to the expedition-driven direction;
  Slice 3 + Combat Depth marked built.
- DR-036 (END-2) flagged superseded-in-part; DR-034 (END-1) repurposed (Core
  is a consequence, not the win-gate); DR-037 forward-pointer to DR-042.
- CombatFeedbackSystem: fix enemy health bar (sprite-less Filled Image ignored
  fillAmount -> size via anchorMax.x).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-25 20:07:33 -07:00
parent e32dadbc66
commit 03f778085b
8 changed files with 114 additions and 12 deletions
+14 -2
View File
@@ -21,8 +21,20 @@ Last decluttered 2026-06-08 (removed all shipped `[x]` items; their context is p
- **Slice 1 — Combat Readability & HUD Declutter** ✅ **BUILT + engineering-validated 2026-06-17 ([[DR-038_Slice1_Combat_Readability_HUD_Declutter]])** — on-damage-sticky **enemy health bars** (+fade, <25 %HP always-on) in `CombatFeedbackSystem` (`Health.Current` already replicated); **telegraph fix** (per-enemy baked `EnemyTelegraph` windup ramp replacing the hard-coded `22f` + windup 18→22 + a scale-pulse); **build-mode toggle** (client `BuildPaletteState.PaletteOpen` gates the palette + a "Tab/Y — BUILD" chip); **Charger committed-lunge tell** (`[GhostEnabledBit] IsLunging` derived once/tick — one Charger re-bake). 345/345 EditMode; Play-validated (handshake intact, bake correct, no runtime errors). **Open: operator visual fun-gate.**
- **Slice 2 — Two Classes (Warrior / Ranger)** ✅ **BUILT + validated 2026-06-18 ([[DR-039_Slice2_Two_Classes_Warrior_Ranger]])** — DRG-asymmetric (Warrior melee bruiser tankier/slower; Ranger ranged faster/squishier + co-op auto-assist hook); aim-directed Warrior cone (Cone archetype inline in `AbilityFireSystem`, server-only damage, same-tick); class carried on `GoInGameRequest.ClassId` (the per-world-`ConnectionConfig` blocker fixed) → `ClassTraits` seeds at spawn; character deltas via replicated `StatModifier` seeds on Default (no per-class blob); melee asymmetry folds in `MeleeComboSystem` (`StatTarget.MeleeDamage`/`MeleeRange`); menu class picker. 348/348 EditMode; Warrior Play-validated server==client (re-bake handshake intact). **Deferred polish:** cone client VFX + slash-arc reach. **Open: fun-gate (operator).**
- **Slice 3 — Expedition Combat Spine** 🔬 **REVIEWED + scope-locked 2026-06-18 ([[DR-040_Slice3_Expedition_Combat_Spine]]) — build is next.** Minimal v1 loop: walk gate → fight an epoch-seeded enemy wave in the expedition → clear → return + Ore → escalated base siege. New `ZoneEnemyTag`/`ZoneEnemyDirector`/`ZoneEnemyState` + `ZoneEnemySpawnSystem` (reuse Grunt/Charger prefabs, `RegionTag{Expedition}`, ring math, one-per-interval, Calm-only). **4 netcode blockers fixed:** `EnemyAISystem` per-region target lists (+ no base-structure/Core fallback for expedition husks); `WaveSystem` cleared-check → `RegionTag{Base}` only (+ ThreatDirector cull); RegionRelevancy `MaxAlive` cap; reward double-fire gated by `CycleRuntime.LastRewardedEpoch` + a real clear. **Deferred to v2:** arena-layout pool/authoring, zone-theme byte + HUD, `TimedModifier` buff, SaveData v6, mini-boss. **Open fork:** optional (default) vs required sortie.
- **Slice 4 — Persistent Meta-Progression** *(review-gated)*: **SaveData v6** (meta-currency, unlocked classes, persistent epoch); a between-runs growth surface at the hub; persist-the-seed-regenerate-the-layout (pure-function generator).
- **Slice 3 — Expedition Combat Spine** **BUILT + verified 2026-06-21 ([[DR-040_Slice3_Expedition_Combat_Spine]]).** v1 loop: walk gate → fight an epoch-seeded enemy wave in the expedition → clear → return + Ore → escalated base siege. New `ZoneEnemyTag`/`ZoneEnemyDirector`/`ZoneEnemyState` + `ZoneEnemyDirectorSystem` (reuse Grunt/Charger prefabs, `RegionTag{Expedition}`, ring math, one-per-interval, Calm-only). All 4 netcode blockers landed; 368/368 EditMode + clean Play smoke (post-impl review caught a region-blind Core-breach cull → fixed Base-only). **Open: fun-gate playtest.**
- **Combat Depth (MC-2 + MC-3)** ✅ **BUILT + post-impl-reviewed 2026-06-24 ([[DR-041_Slice_Combat_Depth_Enemy_Variety_Impact]]).** *(Inserted, not a numbered slice — operator: "the combat needs a lot more work.")* Two new enemy questions — **Spitter** (ranged reposition) + **Swarmer** (surround) — + a 4-type weighted mix in both directors (fork-4a base siege too, mandatory `MaxAlive`) + MC-3 impact (magnitude-scaled hit punch + Spitter aim-lane). Real rigged models (Spitter = re-skinned Kaiju, Swarmer = Undead-Werewolf). 388/388 EditMode + two Play smokes. **Open: fun-gate playtest.**
- **Slice 4 — Persistent Meta-Progression** — **RE-FRAMED as phase D of the Loop Re-shape ([[DR-042_Loop_Reshape_Expedition_Driven]]).** **SaveData v6** (meta-currency, unlocked classes, persistent epoch); a between-runs growth surface at the hub; persist-the-seed-regenerate-the-layout. *Builds AFTER the loop-coherence phases AC below.*
### NEXT (operative) — Loop Coherence Re-shape: Expedition-Driven ★ ([[DR-042_Loop_Reshape_Expedition_Driven]], 2026-06-24)
A 5-subsystem loop evaluation found the loop has **two conflicting win-models bolted together**: the only path to victory is "survive 4 base sieges" (passively/AFK-reachable — scheduled sieges auto-arm + a 60 s timeout auto-clears them), while the **expedition (the stated combat spine, where all the new enemy variety lives) advances nothing toward winning.** Root cause: the END-1/END-2 base-siege win is a leftover from the superseded jam slice ([[DR-035_End_Of_Month_Slice_Adoption]]/[[DR-036_END2_Final_Siege_Win_Lose]]) that DR-037 never retired. **Operator chose (2026-06-24): commit to the expedition-driven vision.** Build order:
- **A — Coherence core (first):** move the win-driver from *base sieges**expedition clears* (`GoalProgress.Charge` +1 on a cleared sortie); **kill the AFK win** (disable the blind scheduled siege as a progression source); final beat reached through the spine. *Netcode-touching → design-review first.*
- **B — Retaliation connect:** post-expedition siege becomes THE base-siege source (fix the interference) — defending what you built becomes a *consequence* of sortieing, not the goal. *Netcode-touching → design-review.*
- **C — Legibility fixes:** walls actually block (structures on the enemy collision filter); Aether-upgrade HUD button + cost; Biomass sink (or cut); cold-start ledger seed; hide dead Harvester/Conveyor/Pylon; expedition objective UI + gate prompt; reward scales with depth.
- **D — Persistent meta (= Slice 4):** SaveData v6 + between-runs growth (above).
**Consolidation:** [[DR-036_END2_Final_Siege_Win_Lose]]'s "survive-4-base-sieges" win is **superseded** (win-driver → expedition clears; the charge-cadence "siege-survived-only" lock is reversed); [[DR-034_END1_Losable_Core]]'s Core stays but as a **consequence of the retaliation siege**, not the win-gate. The health-bar fill bug-fix (sprite-less `Image.Filled` ignores `fillAmount` → size the RectTransform) rides the first commit.
**Per-slice forks to lock at each review:** expedition depth (one zone vs sequential+boss); shared expedition region vs per-party instances (shared recommended); zone-clear reward shape; class-select moment (menu vs at-base); meta unlock surface.
+3 -1
View File
@@ -7,12 +7,14 @@ tags:
- endgame
- north-star
status: active
updated: 2026-06-08
updated: 2026-06-24
permalink: gamevault/06-roadmap/path-to-fun
---
# Path to Fun — the north-star roadmap
> **[LOOP RE-SHAPED 2026-06-24 → [[DR-042_Loop_Reshape_Expedition_Driven]]]** A 5-subsystem loop evaluation found the game had **two conflicting win-models bolted together**: the only path to victory was "survive 4 base sieges" (passively/AFK-reachable — scheduled sieges auto-arm + a ~60 s timeout auto-clears them), while the **expedition combat spine — where all the new enemy variety lives — advanced nothing toward winning.** The operator locked the **expedition-driven** direction: the win-driver moves to **expedition clears**, the blind scheduled siege is retired, and base sieges become **retaliation consequence** (the reason your build-defense matters). This **supersedes the END-2 base-siege win** ([[DR-036_END2_Final_Siege_Win_Lose]]) as the progression driver and demotes END-1's losable Core ([[DR-034_END1_Losable_Core]]) to a *consequence* rather than the win-gate. Committed build order — **A** coherence core → **B** retaliation connect → **C** legibility fixes → **D** persistent-meta (Slice 4) — lives in [[Backlog]] ("Loop Coherence Re-shape" section). Everything below this banner is **historical context**; the operative plan is DR-042 + Backlog.
> **[DIRECTION EVOLVED 2026-06-17 → [[DR-037_Procedural_Expedition_Spine_Two_Classes_Persistent_Meta]]]** Path A's spine is COMPLETE and the slice [[End_Of_Month_Game_Jam_Slice]] was *playtested* — and found **stale in a single arena** ([[Scratch Notes 6152026]]). The operator **answered the [Decision Gate](#the-decision-gate-mandatory-stop-after-end-2) as *continue/expand*** (not "ship the minimum"): re-scope off the fixed deadline and build a **co-op roguelite-ARPG** — a **procedural Expedition combat spine + persistent meta-progression home base + two classes (Warrior/Ranger)**, readability fixed first. This **fulfils** the long-locked pillar-#4 "procedural expeditions" and **reverses** [[DR-031_Base_Mining_Loop_Cohesion]]'s pause; it is **pillar-safe** (Mission-as-Sortie: the base never resets). The committed milestone list now lives in [[Backlog]] (Slices 14); the build notes / netcode homework below remain the engineering substrate (the dash/`SourceTick`/`StatModifier`/region/relevancy/save patterns all carry forward). Path B's combat-depth rows (MC-2/3/5/6) are **absorbed** into the new class + expedition slices.
> **[HISTORICAL — the slice, June 1330]** Path A's spine is **COMPLETE** — all **14/14 systems shipped** (MC-0/1/4 · EB-1/2 · END-1 · **END-2 built 2026-06-13 as slice SL-3**, [[DR-036_END2_Final_Siege_Win_Lose]]). The operator answered the [Decision Gate](#the-decision-gate-mandatory-stop-after-end2) **early, as *ship the minimum***: the immediate target is the **[[End_Of_Month_Game_Jam_Slice]]** ("Awakening Engine Last Stand"), a compact single-arena base-defense demo due June 30. With END-2 in, the slice is **winnable end-to-end**; the remaining slice work is **tuning + polish, not code** (SL-1/2/4/5/6/7) — and the final-siege **fun-gate** is the one open operator validation. This doc stays the **north-star for the full game**; the slice scopes Path A to a deliverable. Milestone breakdown: [[Backlog#NEXT — Awakening Engine Last Stand (End-of-Month Slice) ★]] · adoption: [[DR-035_End_Of_Month_Slice_Adoption]]. *(Path B is untouched and provisional; the formal ship-vs-continue note is logged after June 30.)*