--- tags: [vision, art-direction, lantern, style-bible, workstream-a] status: draft-binding updated: 2026-07-13 permalink: gamevault/01-vision/art-direction-lantern --- # LANTERN — Art Direction Lock (Workstream A0) > The binding one-page style bible for [[Roadmap_Lantern_Slice]]'s art track (Workstream A0, runs inside > Phase 0). Adopted under [[DR-048_Lantern_Adoption_Full_Pivot]]. This is the **written** half of A0; the > gate is the **in-engine style-proof scene** (below), which is **not yet built** — Phase 0 does not exit > until it is approved. The readability law is lifted verbatim from [[Identity_Lantern#Art, audio & the > readability law|the identity]] and applies to every asset from day one. > > **Why this matters more than usual:** one developer, learning Blender, shipping custom creatures. This > direction lives or dies on a **repeatable factory**, not on any single beautiful asset. Every rule here is > chosen so that creature N+1 is a routine sitting, not a research project. ## Style bible (binding) - **Stylized low-poly, RoR2-lineage.** Silhouette-first; faceted geometry; flat / near-flat shading. Mood is carried by **dynamic light in murk**, never by texture detail. A readable blob with a great light beats a detailed model nobody can see in the dark. - **Poly budgets (hard):** props **≤ ~800 tris** · creatures **≤ ~3k** · hero / boss / suit-frames **≤ ~6k**. - **The palette is the ontology** (the fiction rule made visible): **warm gold/amber = light (ours, true) · cold corpse-green/blue = gloam (the deep's counterfeit) · lure-red = bait · white-hot = conversion.** - **The readability law (binding, from the three reviews):** 1. **Value first, hue second.** Every warm/cold distinction is *also* carried by luminance value, shape language, and **flicker-cadence** (steady = true, flicker = false — the load-bearing channel; hue is the garnish). This is the colorblind answer (gold-vs-green is a worst-case red-green pair). 2. **Design the dark floor for the video encoder, not the OLED.** Bioluminescent ground-clutter density is the streamability dial; dark scenes must survive 6–8 Mbps without macroblocking. A separate **capture / photo grade** (lifted, saturated profile) ships for clips and screenshots. 3. **Screenshot discipline.** Every promotional frame reads at **200 px** with a warm focal light AND a legible silhouette. ## The material decision (the solo-dev keystone) **No per-asset texturing, ever.** This is the single most important production rule in the project. - **One shared palette / gradient atlas** — Imphenzia-style: a single small texture of colour bands. UVs are *placed onto bands*, not unwrapped. Zero texture-painting skill required; perfect style coherence; batches hard. - **Vertex-colour accents** for per-asset variation on top of the atlas. - **Three master shaders — the whole rendering surface of the game:** 1. **`Lit-Palette`** — statics (props, dressing, environment, station). 2. **`Emissive-Gloam`** — parameterized warm/cold/lure emissive. **One shader is the entire palette rule:** its parameters (hue, **flicker-cadence**, intensity) are *both* the look *and* gameplay information (true-vs-false light). Every glow in the game is this shader. 3. **`Skinned-Palette`** — deformation-aware (the Rukhanka-skinned creatures/suits). Replaces the current `AnimatedLitShader` role as the palette-atlas creature material. **Every asset in the game shares ~3 materials.** Coherence, batching, and no per-asset UV/texture work — that is the amortization that makes a one-person creature factory possible. > ⚠ **Carry-over gotcha ([[material-property-body-flash-rukhanka]]):** a per-instance `URPMaterialPropertyBaseColor` > tint only renders if the shader declares `_BaseColor` **Hybrid-Per-Instance** (ShaderGraph > `overrideHLSLDeclaration:true` + `hlslDeclarationOverride:2`). The three master shaders must be authored > Hybrid-Per-Instance if we want per-instance gloam-tint variants (a free variant axis — see A2 variant policy). ## Reference board - **RoR2** — shape language, faceted low-poly, dynamic-light-first in dark ambient. - **Dredge** — water mood, dread, the sea-as-atmosphere. - **Hollow Knight** — value control in darkness (how to stay legible with almost no light). - **Below** — the **cautionary** case: solo dread + screenshot-illegible darkness killed it. The readability law exists specifically against this failure. ## The style-proof scene — THE GATE (not yet built) **One prop + one creature + one suit**, in-engine, under murk + dynamic lights, on the capture grade. Judged three ways, all of which must pass: 1. **Full-size** — reads as *this game and no other*. 2. **At 200 px** — silhouette + warm focal light legible (screenshot-discipline rule). 3. **In grayscale** — value-first / flicker-cadence carries the true-vs-false read with hue removed. **Locked before any mass production.** This gate + [[DR-048_Lantern_Adoption_Full_Pivot]] + the world-model review ([[Lantern_World_Model_Spike]]) together are Phase 0's exit. Until this scene is approved, Workstream A stays in A0 (no A1 pipeline proof, no A2 factory). ## Handoff to the deeper pass (A1 recipes) The concrete recipe documents are **A1 work** (Phase 1), not A0: the **statics recipe** (Blender → export units/scale → collider policy → entity baking → palette material) and the **skinned recipe** (rig → per-action clips, Key All Bones, bake-to-pose → FBX → Rukhanka ingest → `Skinned-Palette` → prefab). Both build on the project's proven animation pipeline ([[DR-022_Animation_Pipeline_Rukhanka_Synty]] / [[DR-023_Enemy_Animation_MonsterMash]] + the machine-local Blender recipe) and the **three rig families** (Drifter / Crawler / Strider). This doc is the constitution; the recipes are the operating manuals. ## Related - [[Identity_Lantern]] — the fiction the palette encodes (the readability law lives there too) - [[Roadmap_Lantern_Slice]] — Workstream A (A0 → A1 → A2 → A3) gates - [[DR-048_Lantern_Adoption_Full_Pivot]] — the adoption - [[Synty_Asset_Inventory]] — placeholder quarry until custom assets land - [[DR-022_Animation_Pipeline_Rukhanka_Synty]] — the skinned-material lineage `Skinned-Palette` inherits