Files
settled-reach/docs/workshops/art-direction-mood-board/workshop-outcomes.md
T
jpmschweitzerandClaude Opus 4.6 f0bab3999d chore(skills): rename all skills to domain-action convention
Adopts the whatsinagame naming pattern where the domain comes
first and the action second (e.g. pr-review, sprint-start,
audio-gen). Updated all cross-references in settings, agents,
docs, and inter-skill references.

12 renames: commit→git-commit, create-skill→skill-create,
gen-audio→audio-gen, gen-image→image-gen, plan-sprint→sprint-plan,
push-pr→pr-push, render-sprite→sprite-gen, review-pr→pr-review,
search-docs→docs-search, start-sprint→sprint-start,
start-workshop→workshop-start.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 12:51:56 +01:00

50 KiB
Raw Blame History

Art Direction & Mood Board Workshop — Final Outcomes

Date: 2026-02-12 Facilitator: Team Leader (Jeroen) Participants: Araminta (Visual Designer, lead), Ozzie (Player Experience), Miri (Worldbuilder), Gore (Themes & Endgame), Qatux (Documenter) Rounds: 3 + Closing + Post-workshop technical session (Tyre, Araminta, Stig) Status: Complete — all items resolved, ready for formal decision recording. Pipeline test in progress.


Visual Identity Statements

Each participant's one-sentence answer to "What is this game's visual identity?"

Araminta: A well-maintained space station where the lighting tells you how to feel and the people tell you what to fear.

Ozzie: A warm, lived-in space station seen through one person's eyes — where the lighting tells you how to feel, the fog tells you what you don't know, and the same room looks like home or like evidence depending on who you are.

Lead correction on Ozzie's statement: The final clause — "the same room looks like home or like evidence depending on who you are" — inverts the actual mechanism. The room is ALWAYS the room. It renders identically for every character. The visual temperature difference between playthroughs comes from characters choosing to spend time in different rooms, not from the same room looking different. Ozzie's formulation implies per-character rendering of shared spaces, which contradicts environmental neutrality (§1.10). The other three statements are closer to the mark. See §1.11 for the precise mechanism.

Miri: A lived-in station assembled from forty years of modular parts, seen through a cone of imperfect knowledge, where the warmth of the bar and the cold of the corridor are the same reality experienced by different lives.

Gore: A place worth living in, seen by someone trying to decide if they believe it.


1. Workshop Decisions

1.1 Visual Style

Clean 2D with bold silhouettes, tile-based world composition, lighting-driven atmosphere.

  • Not pixel art (retro-coded), not painted (too expensive for AI pipeline), not 3D (uncanny at this scale)
  • Godot 4 Light2D pipeline: PointLight2D per fixture, LightOccluder2D on walls, CanvasModulate for global ambient
  • Nano Banana / Gemini 2.5 Flash asset generation for tiles and entities
  • Gore's label for the converged direction: "functional warmth"
  • Araminta's production principle: "Sprites are shape templates that the lighting system completes." No baked shadows, no baked lighting, no baked mood. Sprites are neutral; Light2D does the rest.

Consensus: Unanimous (Rounds 1-2). All four agents independently arrived at the same art style.

1.2 Camera Angle — D-019 Amendment

Rimworld-angle shallow tilt: nearly orthographic top-down with enough forward perspective to reveal object and wall front faces.

  • This is NOT classic 2:1 isometric. NOT 3/4 view. NOT full top-down.
  • The grid remains square/orthogonal (no diamond tile geometry)
  • Vision cone math remains 2D — the tilt is cosmetic, not mechanical
  • "Top-down with depth" is the correct description; "isometric" is incorrect terminology

What the tilt gives us:

  • Three-era wall vocabulary becomes native (wall faces visible without a rendering cheat)
  • Entity silhouette differentiation improves (front-facing details: vest, apron, uniform)
  • Object sprites become self-describing (desk shows screen, bar counter shows front panel)
  • Entity facing direction becomes readable (see someone's front vs. back)

What doesn't change:

  • Tile grid stays orthogonal (64x64px visual tiles = 2x2 sim tiles per D-066, square)
  • Vision cone computed on 2D sim grid (Rust shadowcasting, D-035)
  • Light2D pipeline unchanged
  • Fog of perception unchanged
  • Environmental neutrality unchanged
  • All art direction principles hold

Consensus: Unanimous (Round 3 + Closing). All four endorse. Miri: "setting-positive." Gore: "thematically stronger — person standing in doorway, not surveillance camera." Ozzie: "the station comes alive." Araminta: "strictly better."

Recording note (Araminta, Miri, Ozzie): Record as "Rimworld-angle shallow tilt," NOT "slight isometric." Rimworld is orthographic with a cosmetic forward tilt. Isometric implies diamond grid geometry. The spirit of D-019 (top-down as primary, not isometric or first-person) holds; this is an amendment to the angle, not a contradiction.

1.3 World Composition — Tile-Based

Dual-scale grid: 0.5m sim tiles, 1m visual tiles (2x retina factor, D-066). Visual tiles are 64x64px.

  • Structural tiles (walls, floors, doors): 64x64px per visual tile (= 2x2 sim tiles), muted, minimal outlines, zone palette + era differentiation
  • Object tiles (furniture, equipment, containers): 64x64px per visual tile, medium outline (1px), Rimworld object detail as target. All world geometry is 2x2 sim tile minimum.
  • Larger objects composed of multiple visual tiles (e.g., 3x1 bar counter, 2x1 desk — in visual tile units)
  • Entities occupy 1x1 sim tiles (0.5m) for fine positioning within the 1m visual grid
  • Three construction eras as tile palettes (see §1.8)
  • Stations are literally built this way — prefab modular construction = tile grid IS the construction grid (Miri)

Design principle — "Settling is placement" (Gore): Object density IS environmental storytelling. The bar is full because Lera settled it. The corridors are empty because nobody did. Investigation is archaeology of intention — every placed tile is someone's decision.

Consensus: Unanimous (Rounds 2-3). Tile-based input strengthened all existing positions.

1.4 Visual Hierarchy

Three-layer system: Entities > Objects > Structure.

Layer Outline weight Color saturation Role
Entity sprites 2px (boldest) Highest — D-033 relationship colors Information / social layer
Object tiles 1px (medium) Moderate — era-appropriate palette Function / lived-in character
Structural tiles Minimal / none Lowest — muted zone palette Spatial backbone

Hard rendering rule (Araminta): Entity always wins visual ties. If an entity and an object overlap, the entity's D-033 color must remain visible. This is a readability guarantee, not an aesthetic preference.

Consensus: Unanimous (Rounds 2-3).

1.5 Entity System

24x32 pixel footprint within 64x64px visual tiles. Entities occupy 1x1 sim tiles (0.5m) but render across a 2x2 sim tile sprite footprint per D-066.

  • Entity smaller than visual tile = clear figure-ground relationship
  • D-033 color as primary information signal
  • Silhouette as primary identity signal (I-01: "Silhouette IS identity because color is spoken for" — Ozzie)
  • One identifying silhouette feature per named NPC (Kael's vest, Lera's apron, Sera's Commission uniform)
  • 3-4 template silhouettes for generic NPCs
  • At Rimworld's tilt: front-facing details visible, facing direction readable, 2 drawn directions (front/back) with mirroring for left/right

Consensus: Unanimous (Rounds 2-3).

1.6 Lighting System — Three-Reference Model

Reference Provides Aspect
Darkwood (Acid Wizard Studio) Vision cone mechanics Light pooling, graduated fade from known to unknown, darkness-as-weight, emotional gradient of restricted LOS
Blade Runner 2049 / Roger Deakins Color temperature language Warm amber = social/inhabited, cool white = institutional/official, mixed = transitional
Edward Hopper (Nighthawks) Emotional composition Warm interior light surrounded by unknowable dark — "our game's central image" (Gore)

Critical retuning from Darkwood:

Darkwood The Settled Reach
Darkness = hostile Darkness = uncertain
Light = safety Light = visibility (not necessarily safety)
Beyond the cone: monsters Beyond the cone: life continuing without you
Emotional register: dread Emotional register: uncertainty

Where Darkwood's model applies directly: Maintenance corridors with manual-switch lighting (~20-30% of spaces), exterior sections during night/weather, the fog boundary everywhere.

Where it needs adaptation: Most of Sova is lit. Light doesn't equal safety — the bar's warm light is where THE FRIEND's contradiction might be noticed.

Godot implementation: PointLight2D (per fixture, per zone) + LightOccluder2D (on walls/obstacles) + CanvasModulate (global ambient) + textured PointLight2D on player (vision cone shape). Stock Godot 4 pipeline — no custom engine work.

Consensus: Unanimous (Rounds 1-2). Ozzie's strong Round 1 advocacy for Darkwood endorsed by all in Round 2.

1.7 Fog of Perception — Cone Shape

Vision cone is asymmetric: full clarity forward, degraded at peripheral edges, blind behind (D-015).

  • Cone, not circle. Turning around is a meaningful decision, not a reflex.
  • The Rust occlusion tracers (D-035) simulate biology, not technology
  • The lattice doesn't expand your visual field; it annotates what you already see
  • Fog = absence of knowledge, not visual decoration
  • Graduated: clear → reduced → uncertain → ignorant (not binary)
  • Quality of fog boundary: gradient desaturation, not a hard wall of black

Consensus: Confirmed by lead decision, endorsed unanimously (Round 3).

1.8 Three Construction Eras

Era Age Palette character Object examples Zones
Era 1 ~40 years Institutional grey (#7a7f85 range), cool, uniform, regulation markings, clean edges, minimal wear Standard wall panels, composite floors, heavy pressure doors Terminal structure, main corridors, maintenance
Era 2 ~20-30 years Similar grey, subtly different tone (#6d7178 range), surface-mounted elements, visible fasteners Retrofit Meridian junction boxes, modified partitions, expansion-era floor Terminal modifications, bar corridor
Era 3 Recent/ongoing Warmer tones, most varied, more color variety, less uniform Bar furnishings, locker decorations, hand-lettered signs, mismatched chairs, personal items Bar interior, break rooms, personal spaces

Consistent outline weight across all tiles — entities heavier than objects, objects heavier than floor tiles. Consistent shadow direction — all tiles cast shadows to the same side (convention TBD for tilt angle). Consistent scale — a chair tile and a desk tile imply the same spatial scale.

Consensus: Unanimous (Rounds 1-3). Araminta provides hex values, Miri provides setting grounding, Gore provides thematic framing.

1.9 Neural Insert Overlay

Geometric data layer rendered with soft bloom shader pass.

  • Data is computational (geometric): precise positioning, clean lines, structured information
  • Delivery is neural (organic): ~2-3px gaussian blur at ~40% blend on the insert CanvasLayer
  • D-033 colors gain soft halos rather than hard edges — "amber feels like a vague sense of concern, not a data flag" (Araminta)
  • Smuggler's overlay: thinner, sparser (baseline lattice hardware)
  • Detective's overlay: denser, crisper (augmented lattice hardware)
  • Passive state nearly invisible; active state clean and precise
  • Test (Gore): "If switching the overlay OFF would feel like going deaf rather than closing a window, it's working"
  • Test (Ozzie): "After 10 minutes, does the player forget the insert is there? If yes, we've succeeded"

Insert overlay is NOT affected by the fog shader — insert data is computational, not perceptual. Insert markers can appear in fogged areas if the lattice has that data.

Consensus: Unanimous (Round 2). Resolves Round 1 divergence between Araminta (geometric) and Gore (organic) — both positions survive in the synthesis.

1.10 Environmental Neutrality — Strict Zero Shift

The base world layer never shifts in response to conspiracy activation or investigation state.

This is a mechanical constraint, not an aesthetic preference — it protects the information model.

What CANNOT change when conspiracy activates:

  • Light color temperature
  • Shadow depth or direction
  • Tile colors, wall tones, floor patterns
  • Any CanvasModulate shift correlated with narrative state

What CAN change:

  • Insert overlay density (more annotations, flags, connection lines)
  • Entity colors (D-033 shifts: green → amber → red)
  • Monologue frequency and urgency
  • Player character sprite posture/animation (Araminta's proposal: stress visible on the self, not the world)

Allowed diegetic changes (everyone experiences them):

  • Time-of-day cycle (D-031) — physical reality
  • Weather — physical reality. The storyteller can TIME weather for dramatic effect, but weather itself is causally neutral.
  • Insert overlay density — character cognition, not world state

The horror (Gore): "The player walks into the bar after discovering the conspiracy and it's STILL warm and inviting. That's the horror. The warm light isn't ironic — it's indifferent."

Recording note (Ozzie): Three systems with different rules: (1) Zone lighting is fixed. (2) Weather is the storyteller's instrument. (3) Insert overlay is the character's analytical state. The prohibition is specifically: the rendering pipeline never modifies world-layer visuals in response to narrative state.

Consensus: Unanimous (Round 2). Araminta and Ozzie both independently moved from "subtle shifts allowed" to strict zero after reading Gore and Miri's arguments — convergence through persuasion, not compromise.

1.11 Character Temperature via Spatial Paths

The smuggler's playthrough feels warmer because the smuggler physically spends time in warm-lit spaces. The detective's playthrough feels cooler because the detective physically spends time in cool-lit spaces.

This is NOT an overlay tint. Same Light2D fixtures. Same station. Different daily paths.

  • Smuggler's routine: dock floor (industrial-warm) → break room → bar (amber). Their work takes them through social spaces.
  • Detective's routine: Commission kiosk → observation posts → corridor patrols → institutional terminals. Their work takes them through institutional spaces.

The setting produces the feeling. No rendering tricks needed. The level design does the work.

Critical clarification (Lead): The temperature difference comes from where each character's WORK takes them, not from who they are as people. Both characters are fully realized people with personal spaces, tastes, and lives. The detective is not a cold analytical camera — they have their own quarters, their own furniture choices, their own version of home. Both characters settle. Both characters decorate. Both characters make their space their own. The visual temperature gap between playthroughs is a consequence of occupation, not personality. The detective's home may be just as warm as the smuggler's — but the detective spends more working hours in cool institutional spaces, shifting the average color temperature of their daily experience. This protects against the "detective = cold robot" interpretation.

Recording note (Miri): Record the mechanism precisely. This is character spatial behavior, not a rendering system. The world IS neutral. The characters' lives have different average color temperatures because they physically occupy different zones.

Consensus: Unanimous (Round 3). Lead decision, endorsed by all. Miri: "more honest and more powerful than a shader tint." Gore: "the cleanest expression of the dual-lens concept."

1.12 Animation System — Two-Tier

Tier 1: CLEAR animation (daily life / public activities)

Activity Frames Readability requirement
Walking/running 4-6 frames directional cycle Instantly readable direction and speed
Working at terminal/handling cargo 2-3 states Unambiguous "this person is working"
Eating/drinking 2-3 states Readable from across the map
Talking (two entities face-to-face) 2-3 states Clearly distinguishable from "standing near someone"
Sleeping 1 state Unambiguous

Tier 2: AMBIGUOUS animation (investigation / private intention)

Behavior Animation Player sees / doesn't know
Pausing/stopping Entity halts Sees: stopped. Doesn't know: why
Looking around Head rotation Sees: scanning. Doesn't know: purpose
Lingering near a location Idle-aware state Sees: staying. Doesn't know: reason
Changing direction Walk direction reversal Sees: turned around. Doesn't know: why
Proximity without clear interaction Two entities near, NOT in "talking" animation Sees: nearness. Doesn't know: intentional or coincidence

The boundary between Tier 1 and Tier 2 is invisible to the player. There is no visual signal that tells the player they're now seeing "investigation-relevant" behavior.

Why this works: "The clear/ambiguous division isn't an art decision — it's the investigation mechanic expressed through animation" (Ozzie). Routine is readable because routine is public. Deception looks like normal but slightly off (Gore). The 30-minute life-sim runway requires readable routine so the player can notice when it breaks.

Consensus: Unanimous (Round 2).

1.13 Weather as Gameplay System

Weather is a perception modifier, NPC routine disruptor, and storyteller instrument. Weather is diegetic — the one thing that CAN shift the environment, because it's physical reality.

  • Planet: Velen (Krenn System). Temperate-maritime, ~0.9G, regular rain, morning/evening fog.
  • Fog degrades everyone's vision cones equally — shared vulnerability (Gore: I-07)
  • The storyteller can TIME weather for dramatic effect without breaking environmental neutrality
  • Foggy mornings = shorter vision cones for everyone = smuggler's early drops safer, detective's dawn surveillance harder

Consensus: Unanimous (Rounds 1-3). Weather as gameplay, not cosmetic, held from Round 1.

1.14 Z-Level Rendering Stack

8-layer stack (Araminta's proposal, endorsed by all):

Layer Content Role
0 — Floor tiles Composite, tile, grating, guide strips Zone identity, movement surface
1 — Floor objects Cable runs, drain grates, floor markings, spills Cosmetic detail, walked over
2 — Furniture / placed objects Desks, chairs, tables, crates, consoles Y-sorted with entities. Visual complexity center.
3 — Entity sprites NPCs, player character Y-sorted with Layer 2. D-033 colored.
4 — Overhead / wall tops Pipes, ducts, lighting fixtures, signage Atmosphere, partial occlusion (semi-transparent)
5 — Fog of perception Vision cone mask, fog shader Information boundary — affects layers 0-4
6 — Insert overlay Lattice HUD elements, annotations, waypoints Bloom-rendered, NOT affected by fog
7 — Monologue / UI Internal monologue, perception labels, UI Top of stack, always visible

Wall rendering:

  • Option B (visible top surface + face) for structural walls — exterior hull, main compartments
  • Option A (boundary lines) for interior partitions — dividers, booth separators
  • At Rimworld's tilt, wall faces are visible naturally — no rendering cheat needed

Note (Araminta): Wall rendering distinction "confirmed in principle, implementation detail pending Tyre/Stig" since the shallow tilt naturally shows wall faces. The Option A/B distinction may collapse to thickness/color rather than rendering method.

Sprite stacking: OUT of scope. Not needed for v0.1. Station's visual character comes from floor variation, object variety, and lighting — not vertical dimension.

Overhead occlusion (Gore): Thematically significant. Entities passing behind shelving/under overhangs creates local information gaps within otherwise known spaces. Partial visibility is information-rich: you know someone is behind the shelf but can't see what their hands are doing.

Consensus: Unanimous (Round 3).

1.15 Planet Name: Velen

Velen is canonical as the primary habitable world of the Krenn System.

  • Temperate-maritime, ~0.9G
  • Regular rain, morning/evening fog
  • Mild temperature range, occasional heavy squalls
  • Station Sova orbits Velen
  • The span gate connects Sova to a planetary freight depot on Velen's surface
  • Naming convention: compact, consonant-weighted, two-syllable, Nordic-influenced

Consensus: Proposed by Miri (Round 2), confirmed by lead (Round 3), endorsed unanimously.


2. Complete Art Direction Principles

Confirmed principles, accumulated across all three rounds. All have unanimous consensus.

  1. Readability over beauty. Always. When readability and atmosphere conflict, readability wins. The game is ABOUT information. (Round 1 C-01)
  2. Lighting over detail. Sprites and tiles provide shape; Light2D provides mood. (Round 1 C-03)
  3. Restraint IS the aesthetic. "Functional warmth." Not flashy, not grim, not neon, not grimy. (Round 1, named Round 2)
  4. Environment never tips its hand. Strict zero shift. Investigation signals are behavioral and informational only. (Round 1 C-05, made unanimous Round 2)
  5. Silhouette carries identity. Color is spoken for by D-033. Shape differentiates. (Round 1 I-01)
  6. One asset vocabulary, many lighting profiles. Muted tiles + solar color tinting = every system looks different with the same art. (Round 1 I-06)
  7. Weather is gameplay. Perception modifier, NPC routine disruptor, storyteller tool. (Round 1 C-06)
  8. Production constraints = design strengths. Bold silhouettes + limited palette + tile objects + lighting atmosphere serves readability, D-033, Godot 4, AND Nano Banana simultaneously. (Round 1 I-03)
  9. Settling is placement. Object density IS environmental storytelling. (Round 2, Gore)
  10. Investigation is archaeology of intention. Every placed tile is someone's decision. Reading the tile world is reading decisions. (Round 2, Gore)
  11. Two-tier animation. Clear for public routine, ambiguous for private intention. The boundary is invisible. (Round 2)
  12. Three-reference lighting. Darkwood (cone mechanics) + BR2049 (color temperature) + Hopper (emotional composition). Uncertainty, not dread. (Round 2)
  13. Insert = geometric precision, organic perception. Bloom-softened data layer. Smuggler's sparse, detective's dense. (Round 2)
  14. Sprites are shape templates that the lighting system completes. No baked shadows, no baked lighting, no baked mood. (Round 3 closing, Araminta)
  15. Entity always wins visual ties. If an entity and an object overlap, the entity's D-033 color must remain visible. Readability guarantee. (Round 3, Araminta)
  16. The gap between entity simplicity and environment detail IS the game. Simple entities in a richly textured station. Neither fully legible alone. (Round 1 I-09, Gore)

3. v0.1.1 Plan — Minimum Sprite Set

3.1 Purpose

The smallest asset set that proves the art direction works in-engine. Every sprite replaces a colored rectangle from v0.1. The test answers one question: "Does moving through this space FEEL like the game we're designing?" (Ozzie)

3.2 Test Scene

The Last Shift bar + one corridor + one doorway between them.

This scene proves:

  1. Zone temperature difference — warm bar tiles + cool corridor tiles = visible mood shift at boundary
  2. Object placement as storytelling — bar counter, tables, chairs, crate = room with character
  3. Entity silhouette differentiation — three entities with different silhouettes, all D-033 tinted
  4. Y-sort occlusion — entity walks behind bar counter, counter renders in front
  5. Light2D atmosphere — warm PointLight2D in bar, cool PointLight2D in corridor, dynamic shadows
  6. Fog of perception — vision cone applied, corridor beyond doorway fades to fog
  7. Wall type distinction — structural (thick) around room, partitions (thin) subdividing corners

3.3 Sprite Set

Floor tiles (4 sprites):

Tile Visual Hex base
floor_institutional Cool grey-blue, subtle grid lines #2e2e48
floor_bar Warm tan/beige, wood-panel hint #3a3028
floor_corridor Neutral grey, minimal detail #252535
floor_transition Split tone — half matches each adjacent zone

Wall tiles (3 sprites):

Tile Visual
wall_structural Dark grey-blue, thick, visible face (Option B)
wall_partition Lighter grey, thin (Option A)
wall_door Wall tile with gap + separate door sprite

Object tiles (8-10 sprites):

Object Size Visual
desk_terminal 2x1 Desk + integrated terminal glow, institutional grey-blue
chair_office 1x1 Swivel chair, dark grey (Era 1)
chair_bar 1x1 Mismatched stool/chair, warmer tone (Era 3)
table_round 1x1 Small round table, warm wood
crate_cargo 1x1 Standard cargo container, olive/green
bar_counter 3x1 Bar counter, warm wood, distinct from tables
light_ceiling 1x1 Overhead light fixture (warm/cool variant)
door_sliding 1x1 Sliding door, open/closed states (2 frames)
coffee_machine 1x1 Human comfort detail (Miri)
junction_box 1x1 Wall-mounted Era 2 retrofit (Miri)

Entity sprites (3 sprites × frames):

Entity Purpose Identifying feature
entity_player Player character 24x32, civilian work clothes, neutral silhouette
entity_npc_a Named NPC (Kael template) Stocky, vest
entity_npc_b Named NPC (Lera template) Medium, apron

Frame count (Araminta): 3 entities × (1 idle + 8 walk [4 dir × 2, or 2 dir mirrored × 4] + 1 interaction) = ~30 frames minimum.

Total unique sprites: ~18-25 tile/object sprites + ~30 entity frames = ~48-55 assets.

3.4 v0.1.1 Success Criteria

Each participant identified the single most important thing for v0.1.1:

Agent Priority
Araminta Light2D warm/cool zone contrast working WITH fog-of-perception cone in a single scene
Ozzie Temperature shift walking from corridor into bar must make you FEEL something
Miri Floor tile transition between two zones must read instantly — zone identity from floor alone
Gore Warm/cool doorway transition — if crossing a threshold changes how the room FEELS through lighting alone, the art direction is proven

Common thread: The warm-to-cool zone transition through the doorway is the singular test. If walking from the cool corridor into the warm bar produces an emotional shift through lighting and floor tiles alone, the art direction works.

3.5 Nano Banana Generation Workflow

  1. Write a Settled Reach style guide prompt prefix (core constraints: "Rimworld-angle shallow overhead, clean 2D illustration, bold silhouette, muted palette, 1-2px outline, flat lighting, [zone palette] color range")
  2. Generate floor/wall tiles first — establish palette baseline, 3-4 variants per type
  3. Generate objects second — using floor tiles as visual context in prompt
  4. Generate entity sprites last — most iteration needed, start with idle, get silhouette right
  5. Post-processing pass: normalize to exact dimensions, ensure consistent outline weight, remove any baked shadows AI added, verify readability at 1x zoom

Expect 3-5 generation attempts per final sprite. (Araminta)


4. Key Insights

Ideas that emerged during the workshop and informed the converged direction. Attribution preserved.

ID Insight Source
I-01 "Silhouette IS identity because color is spoken for." Ozzie, Round 1
I-02 Shadows as information tier: close = see directly, medium = see shadows/hear sounds, long = lattice data only. Miri, Round 1
I-03 Production constraints converge with design goals — all four constraints point to the same style. All, Round 1
I-04 "The absence of change as horror." The station looks identical after discovering the conspiracy. Gore, Round 1
I-05 "Visual restraint is thematic confidence." Papers, Please looks like a spreadsheet and delivers devastating moral weight. Gore, Round 1
I-06 "One material vocabulary, many lighting profiles." Grey metal turns golden under a K-type star. Miri, Round 1
I-07 "Weather creates shared vulnerability." Everyone is equally blind in a dust storm. Gore, Round 1
I-08 "The observed life is richer than the observer's life." The detective's visual world should feel impoverished compared to the smuggler's. Gore, Round 1
I-09 "The gap between entity simplicity and environment detail IS the game." Neither fully legible alone. Gore, Round 1
I-10 "Fog is uncertainty made visible." Fog hides things in plain sight — ambiguity, not darkness. Gore, Round 1
I-11 "Legible but ambiguous animation." Clear enough to see a figure stopped, not detailed enough to know why. Gore, Round 1

5. Mood Board Summary

9 concept images generated during the workshop. Key images for reference:

# Subject Workshop role Key takeaway
1 Bar (The Last Shift) Warmth register Amber warmth, social atmosphere. Slightly too grimy.
2 Logistics hub Zone differentiation Warm/cool contrast between zones. Slightly too cold.
3 Maintenance corridors Mixed-era materials Proves layered construction. Too decayed — station should be maintained.
4 Rain exterior Weather as atmosphere Strongest mood match. Rain as routine, not spectacle.
5 Vision cone / fog Camera scale + perspective Scale and perspective are right. Character too military, fog too hostile, cone too literal.
6 Span gate Emotional register Mundane-extraordinary register. The everyday mundanity of interstellar transit.
7 Convergence (top-down) First synthesis Closer: civilian character, fog as desaturation, warm/cool zones. Needs cone not circle, adult proportions.
8 Tile composition Tile system proof Most production-relevant. Proves tile-based composition carries warmth and personality. Zone transition through floor tiles works.
9 Bar antagonists Emotional core Strongest emotional hit. Populated bar, surveillance composition (cold corridor, warm bar, observer outside). Accidentally demonstrates graduated fog (detailed center → silhouette periphery). Slightly too tilted for Rimworld angle — but emotional register is the target.

Convergence formula (lead): #5's perspective/scale + #1/#4 warmth + #1-vs-#2 zone differentiation + #6 register + civilian characters + fog as absence.

After camera angle amendment: The sweet spot is between #7 (too flat) and #8 (approximately right). #9 is slightly too tilted but captures the emotional register.


6. Reference Canon

Tier 1 — Universal (all four agents cite)

Reference Endorsed aspect
Rimworld Readability principles, visual hierarchy, camera angle (now also direct camera reference)
XCOM 2 Fog of war as emotional weight
The Sims 3/4 Daily routine legibility from overhead

Tier 2 — Strong (3 agents, strong endorsement)

Reference Endorsed aspect
Tactical Breach Wizards Silhouette discipline, clarity-as-design-origin
Disco Elysium Internal voice recontextualizing visual information (principles, not production method)

Tier 3 — Targeted (2 agents, specific aspect)

Darkwood, Blade Runner 2049, Hopper's Nighthawks, Heat Signature, Citizen Sleeper, The Expanse, Alien/Alien: Isolation, Return of the Obra Dinn, Syd Mead

Avoid List

Cyberpunk neon / Blade Runner rain-noir, Star Trek antiseptic, Star Wars romantic, Mass Effect Citadel gleam, Dead Space grimy horror, pixel art, Iron Man HUD, Hotline Miami neon maximalism, military tactical palette


7. Candidate Decisions for Formal Recording

The following workshop outputs are ready for formal recording in decisions/ domain files. All have unanimous consensus. Proposed numbering starts at D-042 (D-041 is the current highest).

Candidate D-042: Art Direction — Visual Style

  • Decision: Clean 2D with bold silhouettes, tile-based world composition (64x64px visual tiles on dual-scale grid per D-066), lighting-driven atmosphere. "Functional warmth." Not pixel art, not painted, not 3D. Godot 4 Light2D pipeline. Sprites are shape templates that the lighting system completes — no baked shadows, no baked lighting, no baked mood.
  • Rationale: Four independent agents converged on the same style. Production constraints (Nano Banana), engine capabilities (Godot 4 Light2D), design requirements (D-033 readability), and thematic goals (restraint as confidence) all point to the same solution.
  • Domain: perception.md (cross-ref: architecture.md for Godot pipeline)
  • Raised by: Araminta (lead), endorsed unanimously

Candidate D-043: Art Direction — Visual Hierarchy

  • Decision: Three-layer visual hierarchy: entities (2px outline, D-033 color) > objects (1px outline, era palette) > structure (minimal outline, muted zone palette). Entity always wins visual ties — if an entity and object overlap, entity D-033 color must remain visible.
  • Rationale: Readability guarantee. The player must parse the game state at a glance with entities as the primary information layer.
  • Domain: perception.md
  • Raised by: Araminta (outline spec), Ozzie (readability priority)

Candidate D-044: Art Direction — Environmental Neutrality

  • Decision: Strict zero visual shift on the base world layer correlated with narrative/conspiracy state. The rendering pipeline never modifies world-layer visuals in response to narrative state. Zone lighting is fixed. Weather is the storyteller's instrument (diegetic). Insert overlay is character cognition. These three are different systems with different rules. Character-driven changes allowed: insert overlay density, D-033 entity colors, monologue, player sprite posture.
  • Rationale: If the station itself helps the player detect conspiracy, it undermines the core information-asymmetry loop. The rendering engine has no narrative opinions. The absence of change IS the horror.
  • Domain: perception.md (cross-ref: content.md for narrative state)
  • Raised by: Gore and Miri (strict zero position), Araminta and Ozzie moved to this position in Round 2

Candidate D-045: Art Direction — Lighting System

  • Decision: Three-reference lighting model. Darkwood: vision cone mechanics, light pooling, graduated fog boundary. BR2049/Deakins: color temperature as emotional language (warm amber = social, cool white = institutional). Hopper: warm interior surrounded by unknowable dark. Emotional register: uncertainty, not dread. Character temperature via spatial paths — smuggler in warm zones, detective in cool zones — same fixtures, different daily routes.
  • Rationale: Lighting is the primary atmosphere engine. The three references provide mechanics (Darkwood), color language (BR2049), and emotional composition (Hopper). Character temperature is diegetic, not rendered.
  • Domain: perception.md
  • Raised by: Ozzie (Darkwood advocacy), Araminta (BR2049 color), Gore (Hopper), Miri (character spatial paths)

Candidate D-046: Art Direction — Animation System

  • Decision: Two-tier animation. Tier 1 (clear): public daily activities — walking, working, eating, talking, sleeping. Instantly readable. Tier 2 (ambiguous): privately motivated behaviors — pausing, looking around, lingering, changing direction, unexplained proximity. The player sees the action but cannot determine the intention. The boundary between tiers is invisible.
  • Rationale: The clear/ambiguous division is the investigation mechanic expressed through animation. Routine must be readable so deviations are noticeable. Maps to NPC tell system (D-024).
  • Domain: perception.md (cross-ref: content.md D-024)
  • Raised by: Ozzie and Gore (two-tier proposal), Araminta (production spec), Miri (setting grounding)

Candidate D-047: Neural Insert Overlay — Visual Design

  • Decision: Geometric data layer (precise positioning, clean lines) rendered with soft bloom shader pass (~2-3px gaussian, ~40% blend). Smuggler's overlay: thinner, sparser (baseline lattice). Detective's overlay: denser, crisper (augmented lattice). Insert CanvasLayer is not affected by fog shader. Passive state nearly invisible; active state clean and precise.
  • Rationale: Data is computational (geometric), delivery is neural (organic). Bloom synthesis resolves the geometric-vs-organic divergence from Round 1 — precision underneath, perceived as organic.
  • Domain: perception.md
  • Raised by: Araminta (geometric spec), Gore (organic requirement), Miri (per-character density)

Candidate D-048: Z-Level Rendering Stack

  • Decision: 8-layer z-stack: Floor → Floor objects → Furniture (y-sorted with entities) → Entities (y-sorted with furniture) → Overhead (semi-transparent) → Fog of perception → Insert overlay → UI. Walls: Option B (visible face) for structural, Option A (boundary) for partitions — implementation detail pending shallow-tilt evaluation. Sprite stacking out of scope.
  • Rationale: Creates two player-facing feelings: "I can see the layout" (baseline) and "things can block my view" (gameplay feature). Every occluding object is an information barrier.
  • Domain: architecture.md (rendering) or perception.md (visual hierarchy)
  • Raised by: Araminta (8-layer spec), Ozzie (player experience rules), Gore (overhead as thematic tool)

D-019 Amendment: Camera Angle — "The Angle"

  • Amendment: D-019 currently states "Top-down confirmed." Amend to: "~15-20 degrees from vertical, rendered in sprite art, orthographic camera. Sprites are drawn as if viewed from a shallow tilt (south-facing front faces visible on objects, entities, and walls), but the Godot camera is purely orthographic. The perspective is an art convention, not a camera setting. Tile grid remains square/orthogonal. Vision cone math remains pure 2D. This is referred to internally as 'the angle.'"
  • Rationale: Matches Rimworld's approach exactly: orthographic camera, perspective faked in the art. Strictly better than pure top-down for entity readability, wall vocabulary, and object identification. Zero mechanical cost — the tilt exists only in how sprites are drawn. Production cost minimal.
  • Raised by: Team Leader (Jeroen), endorsed unanimously, locked Round 3

Candidate D-049: Velen — Krenn System Primary World

  • Decision: Velen is the canonical name for the Krenn System's primary habitable world. Temperate-maritime climate, ~0.9G, regular rain, morning/evening fog. Station Sova orbits Velen. Span gate connects Sova to a planetary freight depot on Velen's surface.
  • Rationale: Grounds the weather system and gives the setting a first named planet.
  • Domain: content.md (setting)
  • Raised by: Miri, confirmed by project lead

Candidate D-050: "Settling Is Placement" — Design Principle

  • Decision: Object density in a space correlates with how settled it is. Investigation reads placement as intention. The bar is full because someone made it home. Empty corridors are unsettled. This is a design principle, not a production note — the tile-based world is thematically load-bearing.
  • Rationale: Grounds the base-building system in the game's thematic core. Every placed object is a decision; reading the world is reading decisions.
  • Domain: scope.md (design principles)
  • Raised by: Gore, endorsed unanimously

Candidate D-051: Character Favorite Colors — Object-Layer Identification

  • Decision: Each NPC has a favorite color expressed through personal objects (bedding, cushions, mugs, personal items), NOT on entity sprites. Muted register: dusty blue, warm terracotta, faded olive — personal, not faction. Creates a secondary identification system: D-033 = relationship to player (entity layer), favorite color = person's identity in space (object layer). Investigation mechanic: recognizing whose stuff is where ("that's Kael's blue cushion in the cargo bay — what's his stuff doing here?").
  • Constraint: Favorite color saturation must stay below D-033 entity color saturation to preserve visual hierarchy (entities > objects > structure). These are muted personal tones, not vivid signals.
  • Rationale: Reinforces "settling is placement" (D-050). Both characters settle, both decorate — the detective is a person too. Personal objects in favorite colors make spaces readable as someone's even when they're absent. Complements D-033 on a separate information channel without conflicting.
  • Production note: Godot 4 supports per-instance shader recoloring (color uniform on base sprite). One base object sprite + color uniform = all favorite color variants without duplicating sprites. Same technique applies to D-033 entity variants. Significant sprite count reduction. (Flagged for Tyre feasibility assessment.)
  • Domain: perception.md (cross-ref: scope.md D-050)
  • Raised by: Team Leader (Jeroen), endorsed unanimously (post-closing addendum)

8. Follow-Up Items

Item Status Owner Notes
Span gate visual language — IP check Open Araminta Confirm span gate visuals don't drift toward Stargate. Miri flagged as follow-up, not a workshop gap.
Wall rendering implementation detail Open Tyre, Stig Option A/B distinction may collapse under shallow tilt. Confirmed in principle, implementation pending.
Nano Banana style guide Open Araminta Specs now exist (outline weights, palette per era, tile dimensions). Needs formal document.
Shadow direction convention Open Araminta Needs revisiting for shallow tilt. Consistent direction derived from implied light source at tilt angle.
Overhead element projection rule Open Araminta With tilt, overhead elements (pipes, ducts) project slightly forward visually. Need consistent rule for how far.
Cone geometry at tilt Open Tyre Confirm vision cone projection is manageable in Godot at Rimworld's angle. Near-orthographic should be fine.
Player character stress sprite Minor Araminta Proposed: character sprite shifts subtly under stress. Not contested, not formally endorsed.
In-engine tilt validation Open Tyre, Stig #9's angle needs validation in Godot with actual tiles and Light2D before final lock.
Shader recoloring feasibility Done Tyre D-033: Sprite2D.modulate (free, zero code). Favorite colors: mask shader + material duplication (~0.5-1ms at 100 objects). instance_uniform broken in 2D (GH #62943), worked around by material duplication. Both compose with y-sort, Light2D, fog. Build D-033 for v0.1.1, favorite colors for v0.1.2+.
Velen orbit logistics Open Miri If Sova orbits Velen, freight access to surface needs intra-system wormhole or shuttle service. Flag for next worldbuilding session.
3D render pipeline for 2D sprites Resolved Tyre, Araminta, Stig See §10. 3D used only as offline render pipeline — runtime is pure 2D. SubViewport + Camera3D at "the angle" + DirectionalLight3D (neutral). Nano Banana textures UV-mapped onto 3D models, rendered from 4 cardinal directions.
Resolution chain Resolved Tyre, Araminta 1024x1024 source (archive master) → 256x256 (working, outlines applied at 4-8px) → 64x64 (runtime). Bilinear interpolation both passes.
Pipeline test: Era 1 wall texture In progress Stig, Araminta Nano Banana texture generated, QA'd (color PASS, flat lighting PASS, tileability PARTIAL — top/bottom seam, acceptable because tiling happens at 3D geometry level). Godot render scene built at client/tooling/sprite_renderer/. Render skill created at .claude/skills/sprite-gen/. Blocked on Godot texture import — needs editor opened once to import the PNG.
Camera angle: exact value Locked Lead "The angle" = ~15-20° from vertical. Rimworld uses orthographic camera with tilt entirely in sprite art. Research confirms no camera projection — the 3D render pipeline Camera3D rotation of -72.5° (from horizontal) produces this. Midpoint of range, tunable by Araminta.

9. Post-Workshop Technical Decisions

9.1 3D Render Pipeline for 2D Sprites

Decision: Use a 3D render setup in Godot as an offline pipeline for producing 2D sprites. Runtime rendering remains pure 2D (Light2D, CanvasLayer, TileMap).

The middle ground (Lead proposal): Instead of either (a) taming Nano Banana prompts to produce perspective-correct sprites, or (b) switching the game runtime to 3D, set up a dedicated 3D render scene that:

  1. Takes a Nano Banana-generated flat texture (no perspective, no baked lighting)
  2. UV-maps it onto a simple 3D model (BoxMesh for walls, CSGBox/CylinderMesh for objects)
  3. Renders from an orthographic camera at "the angle" (-72.5° from horizontal)
  4. Exports 2D sprites from 4 cardinal directions (north, east, south, west)

Why this works:

  • Textures are easy to generate flat — Nano Banana excels at this
  • 3D geometry provides mathematically correct perspective at "the angle"
  • Camera rotation is a number, not an art convention to enforce per-prompt
  • Every new object follows the same pipeline: model → texture → render → sprite
  • Runtime stays pure 2D — no 3D engine cost, Light2D pipeline unchanged

Production cost: ~half day to build the pipeline (done), then minutes per new object type.

Tyre's assessment: At 15-20° tilt, the 3D case collapses for runtime (front face is only 17-22px, perspective distortion negligible). But for PRODUCTION, 3D geometry guarantees consistency across all objects. Best of both worlds.

9.2 Resolution Chain

Stage Resolution Purpose
Source render 1024x1024 Archive master. Maximum detail from SubViewport.
Working 256x256 Outlines applied here (4-8px → 1-2px at runtime). Asset QA resolution.
Runtime 64x64 Final in-game sprite (= 1 visual tile per D-066). Must read through silhouette and color, not texture detail.
  • Interpolation: Bilinear for both downscale passes
  • Outline application: At 256 working resolution. 4px outline at 256 = 1px at 64 runtime. Color: dark blue-grey #333340.
  • Why not outline at 1024? An 8px outline at 1024 downscales to sub-pixel artifacts at 64. Applying at working resolution gives crisp, consistent weight at runtime.

9.3 Camera Angle Research

Research result: Rimworld uses an orthographic camera with the "tilt" entirely in how sprites are drawn. The camera itself looks straight down. The ~15-20° forward lean exists only in the art — objects are drawn as if viewed from slightly in front and above.

For our pipeline: The 3D render scene's Camera3D is set to orthographic projection with X rotation of -72.5° (90° - 17.5°, midpoint of the 15-20° range). This produces the exact same visual result as Rimworld's sprite art convention, but mathematically correct and consistent.

Locked value: -72.5° (tunable by Araminta). Named internally as "the angle."

9.4 Shader Recoloring Feasibility (Tyre Assessment)

D-033 entity colors: Sprite2D.modulate — free, zero shader code, works with y-sort, Light2D, fog, everything. Use for v0.1.1.

Favorite color object recoloring: Mask shader + material duplication per unique color.

shader_type canvas_item;
uniform vec4 accent_color : source_color = vec4(0.5, 0.5, 0.5, 1.0);
uniform sampler2D mask_tex : hint_default_white;
void fragment() {
    vec4 sprite = texture(TEXTURE, UV);
    float mask = texture(mask_tex, UV).r;
    vec3 tinted = mix(sprite.rgb, accent_color.rgb * sprite.rgb, mask);
    COLOR = vec4(tinted, sprite.a) * COLOR;
}

instance_uniform broken in Godot 4 2D (GH #62943). Workaround: material duplication. At 50-100 objects, ~0.5-1ms overhead — negligible. Build for v0.1.2+.

9.5 Pipeline Test Status

Era 1 institutional wall texture generated via Nano Banana. QA results:

Criterion Result
Color range (#6e7580#7a7f85) PASS — Mean #727980
Flat lighting (no baked shadows) PASS — Quadrant spread 3.1
Neutral for Light2D tinting PASS — Low saturation, low std dev
Tileability (3x3 no seams) PARTIAL — Left/right seamless, top/bottom seam visible
64x64 reads as "wall" PASS — Color preserved, reads as surface

Render pipeline tooling built by Stig at client/tooling/sprite_renderer/. CLI skill at .claude/skills/sprite-gen/. First test run blocked on Godot texture import (needs editor opened once to import the PNG into .godot/imported/).

Next step: Open Godot editor to trigger import, then run render pipeline.


10. Appendix: Round-by-Round Resolution Path (formerly §9)

Round 1

  • Established fundamentals: readability first, clean 2D, bold silhouettes, lighting-driven
  • 12 consensus points, 4 divergence points, 11 key insights
  • 7 open questions identified
  • Sources: round1-araminta.md, round1-ozzie.md, round1-miri.md, round1-gore.md
  • Tracking: round1-tracking.md

Round 2

  • New input: tile-based base building confirmed
  • All 5 open questions resolved unanimously
  • Araminta and Ozzie moved to strict zero environmental shift (OQ-02)
  • 13 confirmed art direction principles
  • Planet name Velen proposed
  • Sources: round2-araminta.md, round2-ozzie.md, round2-miri.md, round2-gore.md
  • Tracking: round2-tracking.md

Round 3

  • Lead decisions confirmed: cone shape, Velen, overlay-not-world temperature, environmental neutrality
  • Z-level rendering stack defined (8 layers)
  • v0.1.1 sprite set scoped (~18-35 unique sprites)
  • Camera angle shift to Rimworld shallow tilt — unanimously endorsed
  • Image #8 and #9 reviewed (tile composition proof, emotional core)
  • Sources: round3-araminta.md, round3-ozzie.md, round3-miri.md, round3-gore.md

Closing

  • All four confirm workshop captures their domain's concerns
  • v0.1.1 priorities converge on warm/cool doorway transition
  • Decision recording flags provided
  • Visual identity statements provided
  • Sources: closing-araminta.md, closing-ozzie.md, closing-miri.md, closing-gore.md

Workshop complete. All contested items resolved through consensus across three rounds. The art direction is now specific enough for a style guide, a Nano Banana prompt template, and in-engine implementation. The strongest signal across the entire workshop: when readability, design, engine, pipeline, setting, and theme all point to the same style, that style is correct.

All files referenced above are in docs/workshops/art-direction-mood-board/.

Compiled by Qatux. Every claim is cited to its source document.