Docs: DR-038 Slice 1 record + session log
DR-038 records Slice 1 (combat readability + HUD declutter) with the two reusable netcode patterns: bake-client-safe for client-needed/server-owned/never-changes data (EnemyTelegraph), and a [GhostEnabledBit] derived once/tick (IsLunging). Open item: the operator visual fun-gate. Session log captures the design redirect + Slice 1 build/validation. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
---
|
||||
date: 2026-06-17
|
||||
type: session
|
||||
tags: [session, design, direction, roguelite, expedition, classes, research]
|
||||
permalink: gamevault/07-sessions/2026/2026-06-17-design-redirect-coop-roguelite
|
||||
---
|
||||
|
||||
# Session 2026-06-17 — Design redirect: co-op roguelite (Expedition spine + classes + persistent meta)
|
||||
|
||||
## Goal
|
||||
|
||||
Evaluate the operator's playtest [[Scratch Notes 6152026]] (2026-06-15, playing the shipped single-arena slice), front-load full research, and present research-backed paths forward for a game-design edit. `/dots-dev` design pass under ultracode.
|
||||
|
||||
## Done
|
||||
|
||||
- **8-agent research + feasibility workflow** (2 code-survey + 6 design/feasibility): mapped the actual codebase (combat/ability/enemy + world/region/save/HUD) and researched Shape of Dreams, hub/meta reconciliation (DRG/Hades/Gunfire/Cult of the Lamb/Riftbreaker/Remnant 2), class-kit + augment design, combat readability (health bars + telegraphs), procedural-zone content strategy, and **DOTS/Netcode feasibility** (context7-verified). Full output in the run transcript; durable synthesis folded into [[DR-037_Procedural_Expedition_Spine_Two_Classes_Persistent_Meta]].
|
||||
- **Key findings:** (1) feasibility GREEN — *server-spawns-ghosts ⇒ no seed replication, no cross-client determinism problem*; `ExpeditionFieldSystem` is already a working epoch-seeded proc-gen seeder (~70 % of the chassis). (2) Reconciliation = **Mission-as-Sortie** (base = permanent hub, expedition = re-seeded run venue, run-buffs expire) — satisfies the locked "never a run-reset" pillar. (3) Stale root cause = no procedural-venue / persistent-growth / thematic variety (project had none); encounter variety > structural > cosmetic. (4) Classes: melee-primary is most skill-expressive; `AbilityRef.Id` = class anchor; `StatModifier`/`TimedModifier` IS the meta-buff mechanism. (5) Readability: on-damage-sticky bars (not always-on) + per-enemy telegraph ramp; `Health.Current` already replicated. (6) Proc-gen = authored-arena **pool sampling**, NOT WFC.
|
||||
- **Presented paths + ran the fork-locking ritual.** Operator locked: **re-scope the deadline** (build the bigger game; *"don't estimate time, I handle deadlines"*); **two classes** (Warrior melee + Ranger ranged); **expedition = required spine + persistent meta**; **all four do-now readability/HUD wins** (incl. the Charger lunge re-bake).
|
||||
- **Wrote the game-design edit:** new [[DR-037_Procedural_Expedition_Spine_Two_Classes_Persistent_Meta]] (accepted); updated [[Pillars]] (locked the expedition-spine + 2-class + persistent-meta decisions), [[Path_to_Fun]] (direction-evolved banner), [[Backlog]] (committed Slices 1–4; SL-1…7 marked superseded), [[Identity]] (light fiction note), and demoted [[End_Of_Month_Game_Jam_Slice]] to SUPERSEDED (archived, kept as a fallback/showcase).
|
||||
|
||||
## Decisions
|
||||
|
||||
- [[DR-037_Procedural_Expedition_Spine_Two_Classes_Persistent_Meta]] — the redirect (accepted). Supersedes [[DR-035_End_Of_Month_Slice_Adoption]]'s "ship the minimum" Decision-Gate answer; reverses [[DR-031_Base_Mining_Loop_Cohesion]]'s expedition pause; fulfils pillar-#4.
|
||||
|
||||
## Open / deferred
|
||||
|
||||
- **Slice 1 (Combat Readability & HUD Declutter)** is the next build — mostly client-side (`CombatFeedbackSystem`/`HudSystem`/`BuildPaletteState`), one small enemy-ghost re-bake (Charger lunge tell). No netcode design review needed except the re-bake.
|
||||
- **Slices 2–4** (classes / expedition spine / persistent meta) each **run the adversarial netcode/determinism design review BEFORE coding** ([[validate-netcode-design-before-coding]]).
|
||||
- **Netcode correctness items to confirm in those reviews:** `EnemyAISystem` region-filter; `ThreatDirector` mid-siege-return gate; `RegionRelevancySystem` per-tick cost (cap ghosts, cosmetic props non-ghost); mass-spawn sync-point amortisation; new `StatTarget` bytes byte-compared (Burst ICE); avoid new `PlayerInput` events (re-bake); persist-seed-regenerate-layout determinism.
|
||||
- **Per-slice forks** to lock at each review: expedition depth (one zone vs sequential+boss); shared vs per-party expedition instances; zone-clear reward shape; class-select moment; meta unlock surface.
|
||||
|
||||
## Slice 1 — Combat Readability & HUD Declutter (BUILT + engineering-validated, same session)
|
||||
|
||||
Built all four do-now wins ([[DR-038_Slice1_Combat_Readability_HUD_Declutter]]) via a grounding+design workflow (4 read-only agents → exact edit sites + the two resolved design points) then serial Unity-MCP edits across 12 files + a test file. **Validation:** clean compile (0 err/warn incl. the Burst-affecting `EnemyAISystem` query + the `[GhostEnabledBit]` source-gen); **345/345 EditMode** (342 baseline + 3 new `IsLunging` derive tests); **Play-validated** — the ghost-hash change did NOT break the handshake (server+client `conns=1`), `EnemyTelegraph` baked on all 4 enemy prefabs, `IsLunging` baked-DISABLED on the Charger + replicated to the client, zero runtime errors. Resolved design points: `EnemyTelegraph` = a **baked client-safe** component (TuningConfig is server-only) so the client sizes the danger ramp; `IsLunging` = a single-bit `[GhostEnabledBit]` **derived once/tick** from `LungeState.UntilTick` (the Dead idiom), direction derived from the replicated rotation. **Open:** the operator visual fun-gate (bar look, cone-persists-through-lunge, toggle feel) + the commit.
|
||||
|
||||
## Next
|
||||
|
||||
Operator **visual fun-gate** on Slice 1 (eyes-on: health bars, Charger lunge cone, telegraph ramp, build-mode toggle), then **commit**. Then open **Slice 2 — Two Classes (Warrior/Ranger)** with its adversarial netcode/determinism design review FIRST ([[validate-netcode-design-before-coding]]) before any `create_script`.
|
||||
Reference in New Issue
Block a user