From cb3bdbbee91af03c18a90f5a521343a4c2da0618 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Mon, 15 Jun 2026 14:09:45 -0700 Subject: [PATCH] Docs: SL-1/SL-4 visual-cohesion session log + Backlog status Co-Authored-By: Claude Opus 4.8 --- Docs/Vault/06_Roadmap/Backlog.md | 2 + ...3_SL1_SL4_Visual_Cohesion_Dark_Frontier.md | 46 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 Docs/Vault/07_Sessions/2026/2026-06-13_SL1_SL4_Visual_Cohesion_Dark_Frontier.md diff --git a/Docs/Vault/06_Roadmap/Backlog.md b/Docs/Vault/06_Roadmap/Backlog.md index acbe22aaf..25459cea3 100644 --- a/Docs/Vault/06_Roadmap/Backlog.md +++ b/Docs/Vault/06_Roadmap/Backlog.md @@ -24,6 +24,7 @@ Last decluttered 2026-06-08 (removed all shipped `[x]` items; their context is p **Critical path:** SL-1 → SL-2 → **SL-3 (END-2)** → SL-5 → SL-6 → SL-7; SL-4 (visual) runs parallel, done by Jun 23. Every milestone ends with a **falsifiable play/fun-gate**, not a test count. Full vision + visual direction + cohesion checklist + Done Definition: [[End_Of_Month_Game_Jam_Slice]]. ### SL-1 — Scope Lock & Arena Cleanup `Jun 13-15` · risk LOW +> **Largely DONE 2026-06-13** (with SL-4): ARPG camera locked to a research-grounded steeper telephoto (pitch 58 / dist 17 / FOV 44 so Core + arena read together); meadow noise removed (~390 cheer/village objects cut); the Ore annulus pulled into the arena (6–11.5 m, 12 nodes) + the Core staged as the hero. **Open:** the Pylon decision; final camera lock-in via the operator's playtest. See [[2026-06-13_SL1_SL4_Visual_Cohesion_Dark_Frontier]]. - **Goal:** one compact (<~20 m radius, single-camera) base-defense arena with the Core as the hero object; lock the slice doc as the frozen target; set ARPG camera framing. - **Tasks:** confirm compact footprint + Core centered/dominant · hide/remove non-slice noise (expedition rift/warpgate/distracting props; keep perimeter dark & quiet) · tune `PrototypeCameraRig` (today Pitch 45° / Dist 13 / FOV 55 — verify player+enemies+2 structures+Core read in one view, dash trajectory visible) · verify Ore annulus (~10–12 nodes) spacing reads · **decide Pylon** (give the 4th palette entry a job + cyan accent, or cut it — slice names only Turret/Wall/Fabricator) · confirm Save/Continue (SaveData v4) is ready, no extra polish. - **Fun-gate:** a new viewer IDs player/Ore/Turret/Husk/Core/ground in <1 s; arena reads as a "small industrial clearing," not a meadow; camera neither too close nor too wide. @@ -44,6 +45,7 @@ Last decluttered 2026-06-08 (removed all shipped `[x]` items; their context is p - **Deps:** SL-1 (arena), SL-2 (tuned baseline). **No save-schema bump** (bytes derivable on load → SaveData stays v4). ### SL-4 — Visual Cohesion Pass `Jun 20-23` (parallel) · risk MED +> **Substantially DONE 2026-06-13** (research-grounded, screenshot-verified): the arena reads as a dark "Aether Siege Outpost" bullseye — dark teal-grey ground that recedes, cyan Core as the luminance peak, **amber** Ore ring, dark perimeter; ACES grade with gated bloom + cool-shadow/warm-highlight faction split + vignette; sun/ambient/fog darkened. **Remaining (polish + needs operator eyes):** cyan emissive on owned **structures** + orange-red Husk verification during a siege (gameplay-entity material work); 3 telegraphed spawn lanes + perimeter height-gate; minor (warm crate, Synty/Foliage grass shader, amber-emission tone). See [[2026-06-13_SL1_SL4_Visual_Cohesion_Dark_Frontier]] + the visual-direction research synthesis. - **Goal:** "Aether Siege Outpost" read — dark/quiet ground, cyan owned vs orange-red hostile, Core as hero; pass the slice's Visual Cohesion Checklist (slice §203–216). - **Tasks:** darken ground + neutral props (~40–50 %, recede them) · cyan emissive accents on player + all owned structures + Core (read at 13 m in motion) · orange-red on Husks + telegraphs · amber Ore legibility · 5–10 **dark** perimeter framing props (no sightline blockers, none brighter than Core) · post-FX: bloom only on Aether/Ore/attacks, reduce fog that washes silhouettes, subtle vignette, cool-shadow/warm-glow grade · re-test every asset import in Play (material-regression guard). - **Fun-gate:** a blind watcher of a 5 s clip IDs Core="base defended", cyan="owned", orange="enemy", ground="background", arena="engineered space not meadow"; cyan/orange ≥2× brighter than ground. diff --git a/Docs/Vault/07_Sessions/2026/2026-06-13_SL1_SL4_Visual_Cohesion_Dark_Frontier.md b/Docs/Vault/07_Sessions/2026/2026-06-13_SL1_SL4_Visual_Cohesion_Dark_Frontier.md new file mode 100644 index 000000000..45e0868fa --- /dev/null +++ b/Docs/Vault/07_Sessions/2026/2026-06-13_SL1_SL4_Visual_Cohesion_Dark_Frontier.md @@ -0,0 +1,46 @@ +--- +date: 2026-06-13 +type: session +tags: +- session +- art +- visual-cohesion +- camera +- post-processing +- slice +- sl-1 +- sl-4 +permalink: gamevault/07-sessions/2026/2026-06-13-sl1-sl4-visual-cohesion-dark-frontier +--- + +# SL-1 / SL-4 — Dark-frontier visual cohesion pass (camera, grade, bullseye) + +> Slice milestones **SL-1** (arena/camera lock) + **SL-4** (visual cohesion). Continues the END-2 session [[2026-06-13_SL3_END2_Final_Siege_Win_Lose]]. Target: turn the base arena from a bright Synty **meadow** ([[DR-025_World_Environment_Redo_Natural_Frontier]]) into the slice's dark **"Aether Siege Outpost"** ([[End_Of_Month_Game_Jam_Slice]] Visual Direction). Operator asked to **research scene composition + camera + colour first**. + +## Research-first (the operator's explicit ask) +Ran a 4-lens visual-direction research workflow (scene composition · camera · colour/value · URP post-FX), grounded in top-down base-defense/ARPG references (Riftbreaker, They Are Billions, Core Keeper, Hades, Diablo, Hyper Light Drifter). Synthesised into one concrete spec — north-star: **a single concentric bullseye, read by VALUE first then hue: the cyan Engine Core is the lone bright object at center, ringed by an amber Ore annulus and a quiet dark perimeter.** The Unity edits below are that spec's prioritised punch-list. + +## What shipped (all asset/scene edits — no `.cs`) +- **Camera** (`PrototypeCameraRig` on `Game.unity`): pitch **45→58**, FOV **55→44**, distance **13→17**, AimLead **1→0.5**, FollowSharpness **8→6**, TargetHeight **1→1.3**, far→80. Steeper telephoto so the Core + full arena + spawn gaps read at once with near-iso enemy spacing (a Husk at the rim and one at the Core read at ~equal size); Core anchored near frame-center for a hold-the-center defense. +- **Lighting / atmosphere** (`Game.unity` RenderSettings + `WorldAtmosphereConfig`): sun dimmed + cooled (warm 1.6 → cool-white 0.9); Trilight ambient **1.0→0.62**, dark-cool; fog **ExponentialSquared→Linear 18→42m**, dark teal; base-region atmosphere darkened so the runtime cross-fade lands dark. +- **Post-FX** (`PostFX_Daylight.asset`): ACES kept; **Bloom gated** (threshold 1.0→1.2 + clamp 10 — only HDR emissives glow, never the lit ground); ColorAdjustments exposure +0.55 / contrast +12 / **saturation +6→0** (mute Synty chroma so emissives dominate) / cool filter; **added `ShadowsMidtonesHighlights`** (cool-teal shadows / warm highlights — the faction-sort baked into the grade, via `AddObjectToAsset` so it persists); Vignette **0.15→0.32**. +- **Ground**: `Mat_Grass_Textures_01` re-tinted dark teal-grey `#2A342F`, matte, no emission (the #1 readability lever — the untreated grass was out-shouting the actors). +- **Cut the meadow cheer (~390 objects, reversible setActive=false)**: butterfly/petal/sunbeam FX, sunflowers/wildflowers/flat-flowers, cabin/windmill/well/waterwheel/pond/lillies (cozy-village props), and the green grass clumps/ground-cover in the play area. Kept dark perimeter trees/rocks + the cyan AetherLights + the Warpgate. +- **Core as the hero**: the cosmetic `EngineCore` crystal scaled **14.2m→4.6m** with a controlled cyan glow (the ×4 first pass clipped to pure white — dialed to ×1.25 so the cyan reads); added a cyan **beacon point light** (range 9, int 3) at PlotCenter. The gameplay Core ghost stays the bright cyan luminance peak co-located at origin. +- **Ore ring** (`BaseFieldSpawnerAuthoring` in the Gameplay subscene): **23.5–27m → 6–11.5m, count 10→12** — pulled the resource ring from *outside* the arena (24m, off-frame) into the compact bullseye. Re-coloured **AMBER**: new `Mat_OreNode_Amber` (emissive amber) on `ResourceNode.prefab` — a dedicated material to avoid `PolygonFantasyKingdom_Mat_01_A` shared-atlas bleed (CLAUDE.md gotcha). Resource now reads distinct from owned-cyan. + +## Validation +- **Screenshot-verified in Play** (RenderTexture capture via `execute_code` on the unfocused editor, `runInBackground`): the arena reads as a clean dark bullseye — dark teal ground recedes, cyan Core is the luminance peak, the 12 amber Ore nodes ring it at 6.3–10.1m, dark perimeter frames. avgLum dropped from a bright-meadow ~26 to a dark ~7 (follow-cam) with a bright cyan peak; ground hue moved green→dark-teal. +- 342/342 EditMode still green (no code touched). Ore-ring subscene re-bake verified (12 nodes at the new radii). + +## Deferred / operator follow-ups +- **SL-2 loop tuning is feel-work** (needs a real playtest, not headless): the structural values are set (Target=4, FinalSiegeMultiplier=2.5, Ore 6–11.5/12, schedule 45s, sizeBase 5 + 1/wave); the build costs / Fabricator ratio / turret damage / wave growth / exact multiplier want the operator + the live `TuningConfig` overlay. +- **Gameplay-entity emissives** (cyan owned structures, orange-red Husk verification during a siege) — per-prefab material work; the research's per-element hue/EV table is the guide. +- **Composition polish**: 3 telegraphed spawn lanes at 120° + perimeter height-gate (≤2.5m camera-near); the gameplay-Core pillar is tall (a baked ghost — scaling needs the prefab); minor — a warm SciFi crate + the Synty/Foliage grass shader (different colour prop) at the perimeter; the amber emission is a touch hot (tone if it blooms under a full siege). +- **Pylon decision** (SL-1) still open. + +## Files +- `Assets/Scenes/Game.unity` (camera, sun, ambient, fog, atmosphere cfg, cut props, beacon, Core scale), `Assets/_Project/Subscenes/Gameplay.unity` (Ore radii), `Assets/_Project/Rendering/PostFX_Daylight.asset` (grade), `Mat_Grass_Textures_01.mat`, `Mat_EngineCore_Aether.mat`, new `Mat_OreNode_Amber.mat`, `ResourceNode.prefab`. Commit `fc27b9ff7`. + +## Next-session intent +The arena now reads as a dark frontier bullseye. Next is the operator's hands-on **SL-2 loop tuning** (the 5–8 min run feel) + **SL-5 final-siege climax tuning** (FinalSiegeMultiplier, telegraph), then SL-6 polish (incl. the deferred gameplay-entity emissives + spawn lanes) and SL-7 packaging.