diff --git a/Docs/Vault/06_Roadmap/Roadmap_Lantern_Slice.md b/Docs/Vault/06_Roadmap/Roadmap_Lantern_Slice.md index f1331dd1f..fb0f79720 100644 --- a/Docs/Vault/06_Roadmap/Roadmap_Lantern_Slice.md +++ b/Docs/Vault/06_Roadmap/Roadmap_Lantern_Slice.md @@ -54,12 +54,16 @@ The primary verb first. No world, no lanterns — a gym. **Gate:** the gym is fun with two players for 15 minutes on kit alone; relevancy-light verified server-side (gamma test: nothing to see). -> **Phase 1 status (2026-07-15):** ✅ Group A (4-socket kit, [[2026-07-14_Lantern_Phase1_GroupA_Combat_Sockets]]) · -> ✅ Group B **systems + content + gym CODE** — the 5 Sparks (decoy / hook-reel / vortex / blink / light-zone), -> Aoe/Hitscan dispatch, `ReelSystem` / `ZonePulseSystem` / decoy aggro, 3 effect ghosts + 5 Spark defs, on-demand -> enemy-spawn tooling + `GymTag` clean-spawn (497 EditMode green). ◻ the fresh **`Gym.unity` scene assembly** + the -> **L3 feel gate** (operator's eyes; also closes the A1 in-game animated-pipeline confirmation) remain. See -> [[2026-07-15_Lantern_Phase1_GroupB_5Sparks_Systems]]. +> **Phase 1 status (2026-07-15):** ✅ Group A (4-socket kit) · ✅ Group B (5 Sparks: decoy / hook-reel / vortex / +> blink / light-zone; Aoe/Hitscan dispatch; `ReelSystem` / `ZonePulseSystem` / decoy aggro; 3 effect ghosts + defs; +> on-demand enemy-spawn tooling) · ✅ the **full remainder, code-complete** — **step 5** two-frame identity (FrameId +> signal + per-frame gym loadouts), **step 6** manual-aim windups, **step 8 ★** light-as-territory relevancy +> prototype, + the dedicated **`Gym.unity`** (re-based on DevSandbox: camera + DebugOverlay + world → streams the +> minimal `GymSub`). **500 EditMode green.** ◻ **Remaining = operator/L3 + focused passes:** the gym Play (feel + +> the A1 animated-pipeline confirmation + light-relevancy gamma test + induced-rollback), **step 7 underwater feel** +> tuning (substrate exists; = the operator's future visual pass), the legacy `AbilityRef` wholesale removal + +> CharacterId→Bathynaut/Harpooner rename (risky focused refactor), and the **★ adversarial netcode review** of the +> relevancy + reel slices. See [[2026-07-15_Lantern_Phase1_GroupB_5Sparks_Systems]]. ## Phase 2 — The dark & the pocket-graph diff --git a/Docs/Vault/07_Sessions/2026/2026-07-15_Lantern_Phase1_GroupB_5Sparks_Systems.md b/Docs/Vault/07_Sessions/2026/2026-07-15_Lantern_Phase1_GroupB_5Sparks_Systems.md index 89f7a1a90..19d5b3fb1 100644 --- a/Docs/Vault/07_Sessions/2026/2026-07-15_Lantern_Phase1_GroupB_5Sparks_Systems.md +++ b/Docs/Vault/07_Sessions/2026/2026-07-15_Lantern_Phase1_GroupB_5Sparks_Systems.md @@ -83,6 +83,42 @@ untouched — the SpawnEnemy op reuses the existing scalar `DebugCommandRequest` - Reel-convergence / decoy-aggro / client-never-instantiate / cross-socket dispatch: structurally sound + self- reviewed, but their behavioural confirmation is L3 (need the full netcode world), not L2. +## Continued — the full Phase-1 remainder (same session, operator: "do everything, don't defer, commit as you go") + +After the milestone, the operator directed powering through ALL remaining Phase-1 items in one session. Shipped +(each L1 clean + suite green + committed): + +- **Gym scene built, then RE-BASED on DevSandbox:** first a fresh minimal `GymSub` subscene (PlayerSpawner / + AbilityDatabase-with-9-abilities / physics+collision config / ProjectileSpawner / GymRoster, built by + duplicate-and-move of the proven singletons + GymTag). The from-scratch host had no dev UI and a name-collision + (host + subscene both "Gym") that made the operator Play the *subscene* → "no cameras". Fixed: renamed subscene → + `GymSub.unity` (GUID-stable); **host `Gym.unity` re-based on DevSandbox** (operator's call — inherits camera + + DebugOverlay + world), SubScene repointed to GymSub. **Operator note: DevSandbox/gym visuals should match the + future LANTERN look — a future improvement.** +- **Manual-aim windups (step 6, `8f099c32b`):** `WindupTicks` on the def; `AbilityFireSystem` resolves each socket + at `GetDataAtTick(serverTick − WindupTicks)` — a pure fn of replicated data (§4/DB-6). 4 Sparks tuned. +- **Two-frame identity + FrameId (step 5 + §8, `342a39a54`):** `FrameId` written server-side; the 2 class-HUD + readers moved to it (AbilityRef fallback); per-frame gym loadouts via `ClassTraits.FrameLoadout` (Harpooner / + Bathynaut). Caught + fixed a MetaSeeding test regression (FrameId must be `AddComponent`, not `SetComponent` — + the minimal test prefab has no baked FrameId). +- **Light-as-territory relevancy prototype (step 8 ★, `aeb979f8d`):** `LightRelevancySystem` hides enemy ghosts + outside each player's lamp radius (SetIsIrrelevant, modelled on `RegionRelevancySystem`; the shared-set is cleared + only by RegionRelevancy, Light `[UpdateAfter]` it + only `TryAdd`s; gated on GymTag). Pure decision in + `LightRelevancyMath` (+3 tests). **500 EditMode green.** + +**Deferred to focused/operator passes (surfaced, NOT silent):** +- **Underwater feel (step 7):** the substrate (AmbientAudio bed, WorldAtmosphere fog, AmbientMotion debris) all + EXISTS — §11 is a tuning pass needing eyes/ears, and the operator flagged underwater visuals as a future + improvement. Backlog: murk fog values, buoyant-decay presentation, hydrophone timbre. +- **AbilityRef/AbilityCooldown/EffectiveAbilityStats wholesale removal** + the **CharacterId → Bathynaut/Harpooner + rename** — risky refactors (woven through equip/class/meta/StatRecompute + tests) that "still work" via the + transition; a focused pass, not a marathon ram. +- **L3 / operator-eyes:** the gym Play (world-creation cycle check for this session's new [UpdateBefore/After] + edges + functional server==client + feel: reel yank / vortex pull / decoy aggro / **skinned-enemy animation** = + the A1 confirmation), the light-relevancy **gamma test**, the induced-rollback (NP-4) 2-instance check, the + windup client telegraph VFX, per-player lamp dim/bright, and the **★ adversarial netcode review** of the + relevancy + reel slices before they ship. + ## Related - [[Phase1_Combat_Gym_Build_Spec]] · [[DR-050_Lantern_Phase1_Combat_Design]] · [[Roadmap_Lantern_Slice]] (A1 gym note) · [[2026-07-14_Lantern_Phase1_GroupA_Combat_Sockets]] · [[DR-023_Enemy_Animation_MonsterMash]]