diff --git a/Docs/Vault/06_Roadmap/Roadmap_Lantern_Slice.md b/Docs/Vault/06_Roadmap/Roadmap_Lantern_Slice.md index 211ed26ec..f75261e11 100644 --- a/Docs/Vault/06_Roadmap/Roadmap_Lantern_Slice.md +++ b/Docs/Vault/06_Roadmap/Roadmap_Lantern_Slice.md @@ -152,8 +152,12 @@ Runs parallel with 4–6 where possible. > 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). -> - **Still open:** the **3 master ShaderGraphs** (esp. `Emissive-Gloam` flicker param) are still stand-ins; the -> **skinned Rukhanka bake** (animated creatures/suit) is deferred to A1/A2. +> - **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). ## A1 — Pipeline proof (runs alongside Phase 1) @@ -173,10 +177,20 @@ Runs parallel with 4–6 where possible. > **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. **Not yet done:** the **skinned recipe in-engine** (Rukhanka rig-bind + `Skinned-Palette` + animation drive) — -> heroes are currently posed *static* bakes, not animated; the "cube→rigged→animated→fighting, twice" gate is still open. +> 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. ⚠ Open discrepancy to reconcile: the +> grounding read found `Characters.fbx` imported as **Generic** (`animationType: 3`), which conflicts with CLAUDE.md's +> "HUMANOID" note — verify before relying on either. Safe regardless: **reuse the existing rigged Synty prefab + its +> `CharactersAvatar`** via the tool; do NOT 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`). +> 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. ## A2 — The creature factory (runs alongside Phases 2–6)