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.