Adopt LANTERN as the operative direction (co-op action-RPG, light-as-territory), superseding the Awakening Engine fiction + the Co-op Hades iteration. Existing code becomes salvage quarry; the mechanical pillars hold. Phase 0 deliverables (doc portions): - DR-048 adoption decision record (0.1) - Lantern_Strip_Mothball_Inventory — system-by-system keep/rework/mothball (0.2) - Lantern_World_Model_Spike — pocket-graph + seed-pinning BRIEF, review-first (0.3) - Art_Direction_Lantern — style bible + material decision + A0 gate (0.4) Docs/skills sweep: Pillars pointers + LANTERN locked decisions; superseded banners on Identity, Iteration_CoopHades, Path_to_Fun, Milestones, Backlog, End_Of_Month (all redirect to the LANTERN roadmap); Home MoC + current-direction callout (and stale serena line fixed); Systems_Index era note; CLAUDE.md core-loop line -> LANTERN direction pointer (verbose co-op-Hades invariants archived to the gotchas archive, net-neutral under the 40 KB budget); dots-dev validation-harness expedition-run recipe flagged era-specific. Two Phase-0 gate items remain OPEN (not doc work): the 0.3 world-model design review and the 0.4 in-engine style-proof scene. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
6.2 KiB
tags, status, updated, permalink
| tags | status | updated | permalink | |||||
|---|---|---|---|---|---|---|---|---|
|
draft-binding | 2026-07-13 | 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):
- 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).
- 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.
- 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:
Lit-Palette— statics (props, dressing, environment, station).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.Skinned-Palette— deformation-aware (the Rukhanka-skinned creatures/suits). Replaces the currentAnimatedLitShaderrole 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
URPMaterialPropertyBaseColortint only renders if the shader declares_BaseColorHybrid-Per-Instance (ShaderGraphoverrideHLSLDeclaration: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:
- Full-size — reads as this game and no other.
- At 200 px — silhouette + warm focal light legible (screenshot-discipline rule).
- 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-Paletteinherits