e03be4861f
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
271 lines
26 KiB
Markdown
271 lines
26 KiB
Markdown
---
|
||
title: LANTERN Vertical Slice — high-level implementation roadmap
|
||
date: 2026-07-13
|
||
tags: [roadmap, lantern, vertical-slice, direction, art-pipeline]
|
||
permalink: gamevault/06-roadmap/roadmap-lantern-slice
|
||
---
|
||
|
||
# LANTERN Vertical Slice — Implementation Roadmap (high level)
|
||
|
||
> Implements the slice tier of [[Identity_Lantern]] (final draft, review-hardened). **High-level by design** — a second pass will deepen each phase technically (per-phase design reviews, DOTS/netcode verification) as it comes up. No time estimates (operator directive). Supersedes [[Iteration_2026-07_CoopHades]] as the operative direction once the adoption DR lands.
|
||
>
|
||
> **The slice's falsifiable test (the only gate that matters):** *does pinning a pocket feel like winning something, and does a stranded suit feel worth a second descent?*
|
||
>
|
||
> **Two tracks run in parallel:** the **system phases (0–7)** and **Workstream A (art, modeling & visual direction)** — a first-class track with its own gates, because this direction lives or dies on custom creatures/characters made by one person. Each system phase names its asset needs; Workstream A names how they get made.
|
||
|
||
## Standing constraints
|
||
|
||
- Stack unchanged: Unity DOTS + Netcode for Entities, server-authoritative, input-only clients, client prediction, 2–4 co-op ([[Pillars]] #4 holds).
|
||
- Existing code is quarry, not foundation: strip/reuse freely (combat feel layer, ability plumbing, hub/run lifecycle, save system are all candidate salvage), but no design decision bends to preserve code.
|
||
- Netcode-heavy slices get an adversarial design review BEFORE coding (the standing project ritual). Flagged ★ per phase.
|
||
- Every phase ends with a play-gate, not a test count.
|
||
- **Placeholder-first, art-pass-second:** every system phase may ship its gate on kitbash/greybox placeholders; Workstream A replaces them on its own cadence. Systems never wait on art; art never blocks a gate.
|
||
|
||
## Phase 0 — Adoption & groundwork
|
||
|
||
1. **Adoption DR** — LANTERN supersedes the Awakening Engine identity + the Co-op Hades iteration; old fiction/lexicon archived, not deleted. Update [[Pillars]] pointers; CLAUDE.md game-state note.
|
||
2. **Strip/mothball pass** — inventory current systems into keep / rework / mothball against the slice list (combat feel layer + telegraphs: keep; boon pipeline: rework into mutations; regions/relevancy, save system, hub lifecycle: rework; sieges/economy leftovers: mothball).
|
||
3. **World-model design spike ★review-first** — the pocket-graph + seed-pinning contract: pocket generation as a pure function of (seed, pocket-id); pinning = persist seed + structure deltas; pocket streaming/replication as runtime ghosts; muster/Bell transit contract. The slice's hardest netcode problem — design before any world code.
|
||
4. **Art direction lock = Workstream A0** (below) — runs inside this phase; its style-proof gate is part of this phase's exit.
|
||
|
||
**Gate:** DR merged; world-model design review passed; **A0 style-proof scene approved**.
|
||
|
||
> **Phase 0 status (updated 2026-07-14):** ✅ 0.1 adoption ([[DR-048_Lantern_Adoption_Full_Pivot]]) · ✅ 0.2 strip/
|
||
> mothball ([[Lantern_Strip_Mothball_Inventory]]) · ✅ 0.3 world-model **design review passed** →
|
||
> [[World_Model_Build_Spec]] + [[DR-049_Lantern_World_Model_Design]] · ◑ 0.4 A0 — material spec + recipes written
|
||
> ([[Art_Direction_Lantern]] + [[Lantern_Art_Pipeline_Recipes]]) **AND the in-engine style-proof scene is BUILT**
|
||
> (`Assets/Scenes/ArtStaging.unity`): the **prop + creature + suit triad** (crate · Wisp-flora · Drowner · Bathynaut)
|
||
> baked in under murk + "light is territory" pool lighting + caustics/marine-snow/seabed, judged full-size / 200px /
|
||
> grayscale from the game camera. **Remaining for the gate: operator sign-off** (+ the 3 master ShaderGraphs, still
|
||
> stand-ins). Driven by the new **`/art-dev`** skill + the hybrid nudge-and-bake workflow. Phase-1 design is
|
||
> ready ([[Lantern_Phase1_Combat_Gym_Build_Spec]]); operator decisions parked in [[Lantern_Operator_Questions]].
|
||
|
||
## Phase 1 — Combat core: two frames that feel like Shape of Dreams
|
||
|
||
The primary verb first. No world, no lanterns — a gym.
|
||
|
||
1. **Bathynaut** (anchor-and-crash melee) + **Harpooner** (line-and-iron skillshots incl. reel/drag) as suit-frames — chassis verbs, movement feel, dash.
|
||
2. **Skillshot kit plumbing:** 4 socket slots per frame; cooldown/telegraph/aim grammar to the SoD bar (manual aim, real windups, readable hitboxes).
|
||
3. **First 4–5 Sparks** as socketables (decoy-wisp, hook/pull, vortex, blink, one zone) — enough to prove kit variety.
|
||
4. **Light-as-information prototype ★review-first:** per-player lamp radius drives netcode relevancy (entities outside your light aren't replicated); dim/bright as the quiet/blind trade.
|
||
5. Underwater feel pass: buoyant knockbacks, slow debris, murk fog, hydrophone audio sketch.
|
||
|
||
**Asset needs:** 2 suit-frames (first-pass: humanoid-pipeline kitbash), Spark VFX set (procedural + palette), gym props. **Pipeline dependency: A1 runs alongside this phase.**
|
||
|
||
**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) · ✅ 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
|
||
|
||
1. **Twilight shelf as a pocket-graph:** 3–5 generated dark pockets per descent on a graph; seed-fresh re-knot per descent; pocket transitions.
|
||
2. **Descent lifecycle:** muster at the Lamp → Bell down → pockets → Bell recall or lit-road walk home; ~30–40 min hard session cap.
|
||
3. **Enemy roster v1:** Drowners (melee swarm), Grindylow packs (leapers), Wreckers (gloam-casters with counterfeit beacons + scan counter), Wisp-Choir as first named encounter.
|
||
4. **Brighter-is-louder:** party Loudness sum drives spawn/aggro pressure; per-Wick Loudness pips on HUD.
|
||
5. **Harvest:** Lumen nodes, organ drops, carried-vs-banked cargo distinction.
|
||
|
||
**Asset needs:** 4 creatures (Drowner, Grindylow, Wrecker, Wisp-Choir — the **A2 creature-factory proving ground**), Lumen node family, pocket dressing set (rocks, wrecks, glow-flora), Bell.
|
||
|
||
**Gate:** two consecutive descents feel different (re-knot working); the Wrecker fake-beacon moment lands on a first-time player.
|
||
|
||
## Phase 3 — The tide-line: lanterns, pinning, permanence
|
||
|
||
1. **Plantable, hand-fed waypoint-lanterns:** planting pins the pocket (seed + deltas persisted); lit pockets persist across descents and sessions; muster moves to the deepest lit waypoint.
|
||
2. **Session-only burn:** fuel drains only while a session runs; guttering telegraphs long and loud before the dark un-pins a pocket.
|
||
3. **Banked light:** deposit at any lit lantern = home; the Lamp meter brightens the station visibly.
|
||
4. **Building v1 (minimal):** a small buildable set inside lit pockets — enough to make a pinned pocket feel *owned* (the slice test hinges here).
|
||
|
||
**Asset needs:** the waypoint-lantern family (unlit/lit/guttering states — a hero prop; light states do the acting), small buildable set, fuel/feeding VFX.
|
||
|
||
**Gate:** ★ *pinning a pocket feels like winning something* — playtest-judged, the first half of the slice test.
|
||
|
||
## Phase 4 — Sparks, mutations & the homecoming economy
|
||
|
||
1. **Culture library:** first organ home = permanently cultured; grafts regrow cheaply from culture (death-proof knowledge floor).
|
||
2. **Wild mutations:** Sparks drink Gloam; 2 paced thresholds per descent offering 2–3 warps, at pocket-clear beats only; mutations evaporate at homecoming.
|
||
3. **Tallow fixing:** 1 fix slot per Spark; the **scripted first-evaporation beat** (Keeper names the rule, gifts one Tallow).
|
||
4. **Raw-socketing:** wield a fresh organ wild (over-tuned, temporary) vs. bag it for culturing.
|
||
5. Fill the Spark catalog to 8–10.
|
||
|
||
**Asset needs:** organ/pickup mesh family (blobby, emissive — early Blender wins), graft-socket UI, mutation VFX variants (palette/param variants on Spark VFX, not new effects).
|
||
|
||
**Gate:** two consecutive descents produce visibly different builds from the same kit; the evaporation beat reads as a gift, not a theft.
|
||
|
||
## Phase 5 — Death, recovery & the solo valve
|
||
|
||
1. **The split:** flame returns (rack-spare respawn, cheap regrow); cargo + fixed mutations + raw organs strand with the suit at its death site.
|
||
2. **Recovery:** stranded suits persist across descents (deterministic server relocation, never RNG); ally body-carry; carried suits stay loud; one-suit debt cap; party wipe drifts suits one pocket shallower.
|
||
3. **Guttering + flame-share revive** (giver pays flame).
|
||
4. **Selkie tariff** (menu-level for the slice).
|
||
5. **Solo Tender dive-companion:** drags guttering suits toward light, hauls cargo, holds a lantern's feed.
|
||
|
||
**Asset needs:** stranded-suit prop states (dark/claimed/carried), the Tender companion (small, characterful — a hero-adjacent model worth real time), carry/revive VFX.
|
||
|
||
**Gate:** ★ *a stranded suit feels worth a second descent* — the second half of the slice test; solo death is a story, not a rage-quit.
|
||
|
||
## Phase 6 — The finale: shelf-boss + the scripted tide
|
||
|
||
1. **Shelf-boss** (Twilight's warden): a real multi-phase skillshot fight; drops the slice's signature Spark + a schematic beat.
|
||
2. **One scripted Serpent-tide as the slice climax:** forecast by the Siren, targeting the party's planted lantern — defend it or lose the pin.
|
||
3. Difficulty/co-op scaling pass (1–4 players; Loudness carries most of it).
|
||
|
||
**Asset needs:** the shelf-boss (**the slice's hero creature** — silhouette-first, budgeted real modeling time), tide VFX language (the dark moving as weather).
|
||
|
||
**Gate:** the tide finale generates the clip — a party defending their own light and telling the story afterward.
|
||
|
||
## Phase 7 — The station & the voices
|
||
|
||
Runs parallel with 4–6 where possible.
|
||
|
||
1. **The Last Lantern hub:** Lamp (meter + radius), rack, graft-bench, culture library, Bell — each a physical place.
|
||
2. **The Keeper** (text-first, subtitle lines): tutorializes the loop, the split, the evaporation gift; evasive-warm register per the tone bible.
|
||
3. **The Siren:** descent forecast at the Bell + **hydrophone bleed mid-descent** + the tide forecast.
|
||
4. **Lamp-morse:** ping wheel, revive plea, greeting — procedural chirp audio.
|
||
5. **Tone bible** (one page, register bounds per character) before any bark generation.
|
||
|
||
**Asset needs:** station set (Mother-Lamp as the hero set-piece whose brightness IS the campaign readout, Bell, rack, benches), the Siren's bell-tank vignette.
|
||
|
||
**Gate:** a new player completes first descent → death → recovery → pin with no external explanation; the hub reads as a home, not a menu.
|
||
|
||
---
|
||
|
||
# Workstream A — Art, Modeling & Visual Direction (first-class track)
|
||
|
||
> One developer, learning Blender (blendermcp + tooling), shipping custom models, characters, and enemies. The workstream's product is not just assets — it is a **repeatable factory** such that creature N+1 is a routine sitting, not a research project. Gates are real; the deeper technical pass will spec each stage.
|
||
|
||
## A0 — Art direction lock (runs inside Phase 0)
|
||
|
||
1. **Style bible (one page, binding):** stylized low-poly, RoR2-lineage. Silhouette-first; faceted geometry; flat/near-flat shading; mood carried by dynamic light in murk. **Poly budgets:** props ≤ ~800 tris · creatures ≤ ~3k · hero/boss/suits ≤ ~6k. The [[Identity_Lantern#Art, audio & the readability law|readability law]] (value-first, flicker-cadence, 200px rule) applies to every asset from day one.
|
||
2. **The material decision (the solo-dev keystone): no per-asset texturing, ever.** One shared **palette/gradient atlas** (Imphenzia-style: a single small texture of color bands; UVs are *placed*, not unwrapped) + vertex-color accents, under **three master shaders**: `Lit-Palette` (statics), `Emissive-Gloam` (parameterized warm/cold/lure emissive — one shader is the whole palette rule), `Skinned-Palette` (deformation-aware for creatures/suits). Every asset in the game shares ~3 materials: coherence, batching, and zero texture-painting skill required.
|
||
3. **Reference board:** RoR2 (shape language), Dredge (water mood), Hollow Knight (value control in dark), Below (the cautionary legibility case).
|
||
4. **Style-proof scene (the gate):** one prop + one creature + one suit, in-engine, under murk + dynamic lights, on the capture grade — judged full-size AND at 200 px AND in grayscale. **Locked before any mass production.**
|
||
|
||
> **A0 progress (2026-07-14) — style-proof scene BUILT, awaiting operator sign-off.** Palette atlas + 3 shared
|
||
> materials shipped earlier; this session added the full triad + the in-engine staging scene:
|
||
> - **Assets (Blender, `ArtSource/Blender/`):** `Prop_CargoCrate` (92 tris, statics/palette proof) · `Prop_GlowFlora`
|
||
> (380, cold-teal emissive clutter) · `Creature_WispMote` (110, Drifter gloam-wisp) · `Creature_Drowner` (2.7k,
|
||
> Synty-crew Strider kitbash — gloam-tinted, hunched, glowing eyes) · `Suit_Bathynaut_Kitbash` (~9k ⚠ over the ≤6k
|
||
> hero budget — decimate + pick body-or-armour for game-ready). Palette-atlas single-material + emissive throughout;
|
||
> Synty kitbashes (licensed). Suit/creatures are **posed silhouette concepts**, not yet rig-bound for animation.
|
||
> - **In-engine (`Assets/Scenes/ArtStaging.unity`):** prop+creature+suit baked in (glTFast posed statics) under the
|
||
> **A0 conditions** — undulating seabed (no platform edge), caustics cookie, marine-snow particles, teal depth fog,
|
||
> ACES+bloom+vignette capture grade, and the **"light is territory" pool lighting** (warm beacon = ours, cold
|
||
> bioluminescent flora pools = the deep, deep dark between) + a Play-mode ambiance animator (`StagingAmbiance`).
|
||
> Passes the three-way judge: full-size, 200px, and **grayscale** (warm/cold separated by *value + flicker-cadence*,
|
||
> not hue alone — the colorblind-safe read). ⚠ **Vertical god-rays don't read down a top-down camera** — ground
|
||
> pools do (recorded in the [[Lantern_Art_Pipeline_Recipes|recipes]] / `/art-dev` cookbook).
|
||
> - **Master shaders — all 3 now present:** `Lit-Palette` (the `Lit URP` graph) + `Skinned-Palette` (`AnimatedLitShader`,
|
||
> Rukhanka-deformation) already existed; **`Emissive-Gloam` authored this pass** as a hand-written URP shader
|
||
> (`ProjectM/EmissiveGloam`, `Assets/_Project/Shaders/`) with the **flicker-cadence as a material param** (`_FlickerAmount`
|
||
> 0=steady/true, >0=gutter/false) — in-shader, no script. (ShaderGraph can't be authored via the MCP; HLSL is the better
|
||
> home for the flicker anyway.) The staging warm/cold read now separates by **value + flicker-cadence**, not hue alone
|
||
> (passes the grayscale/colorblind check).
|
||
|
||
> **A0 update (2026-07-21) — value/composition rework pass.** A critical re-read of the staging scene found
|
||
> the mood + material system passing but the value hierarchy INVERTED (the suit's albedo/lamp out-valued the
|
||
> beacon — the opposite of "light is territory") and the composition weak (Drowner facing away + dying at
|
||
> 200px; crate occluded; T-pose). Fixed headless: global fill lights cut (KeyWarm 1.25→0.15, Caustics 32→9,
|
||
> GloamFill 0.5→0.22), `WarmPool` reworked into a downward warm SPOT = a defined ground-territory disc, suit
|
||
> lamp emissive tamed + bloom threshold raised (killed a blown chest streak), Drowner faced-to-camera + accents
|
||
> boosted, triad recomposed (crate in-pool / Drowner at the lit edge / suit center). Grayscale now shows the
|
||
> beacon as the value winner + a mid-value warm territory — the three-way mechanical judge PASSES.
|
||
> **Still open for sign-off: the suit POSE (a Blender rig+pose sitting — the body is an unrigged Synty mesh +
|
||
> 37 welded attachments; aligns with the A3 Wick-sculpt work) + the eyes-on-only criteria (flicker-cadence,
|
||
> the "this game and no other game" call).** See [[2026-07-21_ArtStaging_A0_Value_Pass_J]].
|
||
|
||
## A1 — Pipeline proof (runs alongside Phase 1)
|
||
|
||
1. **Two written recipes, checklist-grade** (this project runs on distilled gotchas; the art pipeline gets the same treatment):
|
||
- **Statics:** Blender → export (units/scale settings) → collider policy → entity baking → palette material. Target: minutes per prop.
|
||
- **Skinned:** Blender rig → per-action clips (Key All Bones, bake to pose) → FBX → animation-system ingest → `Skinned-Palette` material → prefab. Every step scripted or checklisted via blendermcp where possible.
|
||
2. **The three rig families (the amortization decision):** every slice creature maps onto one shared armature family, so *clips are made per family, not per creature*:
|
||
- **Drifter** — spine-chain swimmer (Wisp-Choir motes, lure-fish, later serpents/rays): swim-idle, dart, attack, death-sink.
|
||
- **Crawler** — legged/scuttling floor unit (Grindylow, later kappa-kin/Tenders): skitter, leap, attack, death.
|
||
- **Strider** — biped-ish (Drowner, Wrecker, and the suit-frames themselves): walk, windup, attack, death.
|
||
- Clip budget: **4–5 clips per family** (idle/move/windup/attack/death) + per-creature attack accents only where identity demands.
|
||
3. **Suit-frames, pragmatic path:** first pass = kitbash on the existing humanoid pipeline (helmet/tank/plate swaps over a proven rig); custom Wick silhouette sculpt is an A3 upgrade, not a Phase-1 blocker.
|
||
4. **Procedural assists:** geometry nodes for glow-gardens/coral/tube-worm sets (parametric families, not hand-modeled instances); blendermcp scripts for the repetitive export/import steps.
|
||
|
||
**Gate:** one creature goes cube → rigged → animated → fighting in-game **in a single documented sitting — twice** (repeatability is the gate, not beauty).
|
||
|
||
> **A1 progress (2026-07-14) — partial (ran early during A0).** The **statics recipe is validated end-to-end in-engine**
|
||
> (Blender → glb → glTFast import → shared `M_Lit_Palette` → renders correct in URP at the game angle; the crate + flora
|
||
> are baked into ArtStaging). Both recipes are written checklist-grade ([[Lantern_Art_Pipeline_Recipes]]) + the `/art-dev`
|
||
> cookbook. **Skinned recipe — now proven for a LANTERN creature:** `EnemyRigTools.BuildDrowner` (new menu, extends the
|
||
> DR-023 table-driven tool) produces **`EnemyDrowner.prefab`** — a game-ready ownerless-interpolated **skinned** enemy
|
||
> (SciFiSpace Crew_Male body, gloam `M_Enemy_Drowner_Animated` on the `Skinned-Palette`/`AnimatedLitShader`, `AC_EnemyTopDown`
|
||
> + `RigDefinitionAuthoring`), structurally identical to the shipping werewolf/charger → animates in-game via the same
|
||
> EG/Rukhanka path (renders only in the baked ECS world, not a plain scene). **Still open:** the authoritative **in-game
|
||
> animated run** (wire into `WaveDirector.EnemyPrefabs[]` + a Server/Client play-run — a gameplay-roster change), the
|
||
> **custom kit** re-attach (glowing eyes/kelp as bone-parented children), and the **Bathynaut suit + 2nd creature** — so
|
||
> the "cube→rigged→animated→fighting, twice" gate is close but not signed off. ✅ Rig-type **verified HUMANOID**
|
||
> (`Characters.fbx` `animationType = Human` (enum 3); `CharactersAvatar.isHuman = true`) — CLAUDE.md's "HUMANOID" note is
|
||
> correct; the earlier "Generic" flag was an enum misread (**3 = Human, not Generic**). Still: reuse the rigged Synty
|
||
> prefab + `CharactersAvatar` via the tool; don't reimport the FBX (a rig-type flip would break the clip binding).
|
||
> Reusable gotchas banked: Blender-5.1 Synty-FBX import workaround, bounds-normalize scattered Synty rocks, posed-static
|
||
> hero bake (apply-armature + visual-transform), the Unity URP render-harness (layer sign-bit, `SubmitRenderRequest`),
|
||
> and the `EnemyRigTools.BuildDrowner` path + its EG-only-render caveat.
|
||
>
|
||
> **Enemy-test GYM (operator direction 2026-07-14) — the home for the animated validation + tuning.** Rather than hack
|
||
> the shared `Gameplay.unity` wave roster for a one-off animated check, build a **semi-permanent gym scene** (this is
|
||
> Phase 1's "no world — a gym") with **tooling to spawn a chosen enemy on demand** (Drowner/Grindylow/… for
|
||
> test+tune). It survives the anticipated **enemy-system rework** (the gym is test scaffolding, independent of enemy
|
||
> design). The 3 skinned prefabs (`EnemyDrowner` w/ eyes, `EnemyGrindylow`, `SuitFrame_Bathynaut`) are built + ready to
|
||
> drop in. This is a focused `/dots-dev` build (netcode boot + a baked enemy-roster subscene + a spawn system/debug UI)
|
||
> — the in-game **animated confirmation of the skinned pipeline lands here**, not via a roster hack.
|
||
|
||
## A2 — The creature factory (runs alongside Phases 2–6)
|
||
|
||
1. **"CreatureKit" workflow/tooling:** one editor tool or hard checklist that takes a Blender export and yields a play-ready enemy — prefab with rig + ghost/network authoring + colliders + a tuning-table entry + spawn-table and bestiary hooks. **The measure: adding enemy N+1 touches zero undocumented steps.**
|
||
2. **Variant policy (cheapest content first):** palette-shift / gloam-tint / scale / part-swap variants of existing meshes BEFORE any new mesh. One Drowner mesh should yield 3 visual tiers; the Emissive-Gloam shader's parameters (hue, flicker-cadence, intensity) are a free variant axis that is *also* gameplay information.
|
||
3. **VFX-first identity rule:** emissive accents + a dynamic light + silhouette + animation carry a creature's identity in this game's darkness; mesh detail is the last 20%. Budget accordingly — a readable blob with a great light beats a detailed model nobody can see.
|
||
4. **Delivery order (matched to system phases):** Drowner (Strider, simplest) → Grindylow (Crawler) → Wrecker (Strider variant + beacon prop) → Wisp-Choir (Drifter motes + VFX — barely a "model" at all, a good early win) → organs/pickups (Phase 4) → Tender companion (Phase 5, characterful) → **shelf-boss (Phase 6 — the hero build: silhouette explorations first, kitbash from family parts where possible, real time budgeted)**.
|
||
5. **Throughput rules (solo sanity):** timebox per asset class (a prop is a morning, a creature is days not weeks, the boss is the exception); the done-bar is *"reads at gameplay zoom, under murk, in motion"* — never render-portfolio quality; when stuck, ship the placeholder and log the upgrade.
|
||
|
||
**Gate (mid-slice checkpoint at Phase 2's gate):** all four Phase-2 creatures in-game through the CreatureKit path; a written retro on the factory's friction points feeds the deeper technical pass.
|
||
|
||
## A3 — Hero assets & the visual polish pass (runs alongside Phases 6–7)
|
||
|
||
1. **The hero set:** the Mother-Lamp (the station's centerpiece whose brightness is the campaign readout — the single most important model in the slice), the waypoint-lantern family (unlit/lit/guttering — light states act, the mesh holds still), the shelf-boss, the custom Wick silhouette upgrade (replacing the A1 kitbash), the Bell.
|
||
2. **The world dressing pass:** geometry-node garden/coral/wreck families dressed through the pocket generator; station interior set.
|
||
3. **Capture-grade validation:** the readability law audited on real gameplay footage — compressed-bitrate test (does Midnight-adjacent murk survive streaming?), grayscale test, colorblind-sim pass on the warm/cold/lure triad.
|
||
4. **Screenshot discipline check:** the slice's store-facing shots pass the 200px + warm-focal-light + legible-silhouette rule.
|
||
|
||
**Gate:** the slice's finale clip (Phase 6's gate footage) looks like *this game and no other game* — style bible held under real play, not staged shots.
|
||
|
||
---
|
||
|
||
## Cross-cutting workstreams (woven through all phases)
|
||
|
||
- **Audio:** hydrophone bed, lamp-morse chirps, Bell toll, Siren verses (placeholder → authored), silence-with-texture.
|
||
- **Dev tooling:** pocket-graph visualizer, seed-pin inspector, Loudness/threat readout, descent-state overlay, screenshot rig on the capture grade, CreatureKit (owned by A2 but serves everyone).
|
||
- **Validation culture (unchanged):** EditMode tests for math/economy invariants (pinning determinism, mutation thresholds, Loudness sums, strand/regrow rules); Play-mode server==client checks for every replicated surface; adversarial design reviews for ★ phases; every gate is a playtest.
|
||
|
||
## Sequence at a glance
|
||
|
||
| System track | 0 (adoption + world spike ★) | 1 (combat ★) | 2 (dark) | 3 (tide-line) | 4 (mutations) | 5 (death) | 6 (finale) | 7 (hub, parallel) |
|
||
|---|---|---|---|---|---|---|---|---|
|
||
| **Art track** | A0 style lock | A1 pipeline proof | A2 factory (4 creatures) | A2 (lantern family) | A2 (organs) | A2 (Tender) | A3 (boss + hero set) | A3 (station + polish) |
|
||
|
||
The deeper technical pass (next sessions) takes each phase in turn: context7-verified API grounding, the ★ design reviews, salvage mapping against the existing codebase, per-phase build specs — and for Workstream A, the concrete recipe documents (export settings, rig conventions, CreatureKit spec) validated against the project's existing animation-pipeline knowledge.
|
||
|
||
## Related
|
||
|
||
- [[Identity_Lantern]] — the design this implements (scope ladder = this roadmap's contract; readability law = A-track law)
|
||
- **Phase 0 artifacts:** [[DR-048_Lantern_Adoption_Full_Pivot]] · [[Lantern_Strip_Mothball_Inventory]] · [[World_Model_Build_Spec]] + [[DR-049_Lantern_World_Model_Design]] (+ [[Lantern_World_Model_Spike]] / [[Lantern_World_Model_Design_Proposal]]) · [[Art_Direction_Lantern]] + [[Lantern_Art_Pipeline_Recipes]]
|
||
- **Phase design specs (all phases covered):** [[Phase1_Combat_Gym_Build_Spec]] (review-hardened, [[DR-050_Lantern_Phase1_Combat_Design]]) · [[Lantern_Phase4_Mutations_Design]] · [[Lantern_Phase5_Death_Recovery_Design]] · [[Lantern_Phase6_7_Finale_Station_Design]] · [[Lantern_Currency_ReMean]] · [[Lantern_Tone_Bible]] (Phase 7)
|
||
- **Running:** [[Lantern_Operator_Questions]] — decisions parked for the operator
|
||
- [[Theme_Direction_Candidates]] — research underneath the direction
|
||
- [[Synty_Asset_Inventory]] — placeholder quarry during the transition
|
||
- [[Iteration_2026-07_CoopHades]] — superseded on adoption
|
||
- [[Pillars]] — unchanged constraints
|