feat(docs): add D-066 dual-scale grid decision and propagate to all docs

0.5m sim tiles for movement/LOS granularity, 1m visual tiles for
proportional art and readable spaces (2x retina factor). All world
geometry constrained to 2x2 sim tile minimum so cover/LOS maps 1:1
with visuals. Entities occupy 1x1 sim tiles for fine positioning.

Updates: D-043, D-044, D-051, D-056, D-059 annotations, workshop
outcomes (art direction + control/interaction), sprint 6 briefings,
decision index, and CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-14 11:01:05 +01:00
co-authored by Claude Opus 4.6
parent 2c67ed7254
commit f1bd361816
9 changed files with 46 additions and 26 deletions
+1 -1
View File
@@ -23,7 +23,7 @@ This sprint emerged from the **Control & Interaction Workshop** (2026-02-13), wh
Two open questions were resolved during the workshop and ticket creation:
- **OQ-01: Tile size** — Resolved to 0.5m x 0.5m (ticket #444, done)
- **OQ-01: Tile size** — Resolved to 0.5m x 0.5m sim tiles (ticket #444, done). Amended by D-066: dual-scale grid with 1m visual tiles (2x retina factor). All world geometry 2x2 sim tile minimum.
- **OQ-24: Inventory capacity** — Resolved to 3x3 grid = 9 slots universal (ticket #445, done)
All blocking decisions are confirmed. No pre-sprint work required.
+1 -1
View File
@@ -29,7 +29,7 @@ Use `db/connectors/ticket show <id>` for full details.
## Open Questions Resolved
- **OQ-01: Tile size** — Resolved to 0.5m x 0.5m (ticket #444, done)
- **OQ-01: Tile size** — Resolved to 0.5m x 0.5m sim tiles (ticket #444, done). Amended by D-066: dual-scale grid with 1m visual tiles (2x retina factor). All world geometry 2x2 sim tile minimum.
- **OQ-24: Inventory capacity** — Resolved to 3x3 grid = 9 slots universal (ticket #445, done)
## Notes
@@ -54,8 +54,8 @@ Each participant's one-sentence answer to "What is this game's visual identity?"
- Entity facing direction becomes readable (see someone's front vs. back)
**What doesn't change:**
- Tile grid stays orthogonal (64x64, square)
- Vision cone computed on 2D grid (Rust shadowcasting, D-035)
- 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
@@ -67,11 +67,12 @@ Each participant's one-sentence answer to "What is this game's visual identity?"
### 1.3 World Composition — Tile-Based
**64x64 tile grid, 1x1 placed objects, base-builder compatible.**
**Dual-scale grid: 0.5m sim tiles, 1m visual tiles (2x retina factor, [D-066](../../decisions/architecture.md#d-066-dual-scale-grid--05m-simulation-1m-visual-2x-retina-factor)). Visual tiles are 64x64px.**
- Structural tiles (walls, floors, doors): 64x64, muted, minimal outlines, zone palette + era differentiation
- Object tiles (furniture, equipment, containers): 64x64 per 1x1, medium outline (1px), Rimworld object detail as target
- Larger objects composed of 1x1 sub-tiles (e.g., 3x1 bar counter, 2x1 desk)
- 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)
@@ -95,9 +96,9 @@ Each participant's one-sentence answer to "What is this game's visual identity?"
### 1.5 Entity System
**24x32 pixel footprint within 64x64 tiles.**
**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](../../decisions/architecture.md#d-066-dual-scale-grid--05m-simulation-1m-visual-2x-retina-factor).**
- Entity smaller than tile = clear figure-ground relationship
- 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)
@@ -490,7 +491,7 @@ Cyberpunk neon / Blade Runner rain-noir, Star Trek antiseptic, Star Wars romanti
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 (64x64 grid), 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.
- **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
@@ -608,7 +609,7 @@ The following workshop outputs are ready for formal recording in `decisions/` do
|---|---|---|
| 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. Must read through silhouette and color, not texture detail. |
| 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`.
@@ -40,7 +40,7 @@ This workshop produced 13 decisions ready for formalization. Suggested D-NNN IDs
- Object hover: ticks rotate 45 degrees to X-shape, muted grey #8b8ba0 (amber #e8c547 if flagged)
- Weapon aim: hard transition, ticks extend, center gap widens, lines thicken 1px to 2px, warm white #f0e8d8, NO bloom. Entity in sights tints to D-033 color.
- All transitions 150ms linear, z-layer 7, never changes by zone or narrative state (D-045).
- Cursor changes on LOS, not just proximity (Stig). Click range: ~2 tiles. Weapon-selected mode suppresses interaction prompts unless Shift held (Ozzie: "combat intent trumps social intent").
- Cursor changes on LOS, not just proximity (Stig). Click range: ~2 sim tiles (= 1m per D-066). Weapon-selected mode suppresses interaction prompts unless Shift held (Ozzie: "combat intent trumps social intent").
- **Rationale:** Diegetic — cursor is the insert's own interface element. Consistent with D-048 (insert overlay aesthetic). Entity in weapon sights tinting to D-033 creates moral friction (aiming at a friend should feel wrong).
- **Raised by:** Araminta (visual spec), Stig (UX rules), Ozzie (weapon suppression)
- **Dissent:** None.
@@ -60,7 +60,7 @@ This workshop produced 13 decisions ready for formalization. Suggested D-NNN IDs
### D-059: Fog — shader-based, five layers, knowledge-graph-driven (perception.md)
- **Decision:** Fog is a shader-driven system (not particles) with five distinct layers:
1. Clear (vision cone): soft gradient edge 3-4 tiles, no hard line (Darkwood approach)
1. Clear (vision cone): soft gradient edge 6-8 sim tiles (= 3-4 visual tiles per D-066), no hard line (Darkwood approach)
2. Light fog (peripheral): desaturated 40-50%, brightness -30%, animated Perlin noise (8-10s cycle), entity D-033 colors visible but reduced
3. Deep fog (explored): near-monochrome, ~10% zone temperature tint (bar=warm, hub=cool, corridor=neutral), more pronounced noise (15-20s cycle)
4. Unexplored + maps app: geometric wireframe outlines #333340
@@ -173,7 +173,7 @@ These were raised in the workshop and confirmed, but may overlap with or extend
| Layer | Treatment | Key Values |
|-------|-----------|------------|
| Clear | Soft gradient edge | 3-4 tiles |
| Clear | Soft gradient edge | 6-8 sim tiles (= 3-4 visual tiles, D-066) |
| Light fog | Desaturated, Perlin noise | 40-50%, 8-10s cycle |
| Deep fog | Near-monochrome, zone temperature | ~10% tint, 15-20s cycle |
| Unexplored + maps | Geometric wireframe | #333340 |
@@ -186,7 +186,7 @@ These were raised in the workshop and confirmed, but may overlap with or extend
| Menu type | Vertical list, insert-styled |
| Max options | 2-4, anchored to entity position |
| New option highlight | Gradient glow background |
| Trigger | LOS + ~2 tiles proximity |
| Trigger | LOS + ~2 sim tiles proximity (= 1m, D-066) |
| Diegetic test | Labels on z-layer 6, disappear if insert off |
### World Menu (D-058)
@@ -295,7 +295,7 @@ These questions were not resolved in the workshop and should be addressed during
| # | Question | Owner Suggestion |
|---|----------|-----------------|
| OQ-01 | Tile size in world units? | Tyre/Dudley |
| OQ-01 | ~~Tile size in world units?~~ **Resolved:** 0.5m sim tiles, 1m visual tiles (D-066) | Tyre/Dudley |
| OQ-07 | No insert = no interaction prompts? (Diegetic test implication) | Stig/Gestalt |
| OQ-08 | False-positive fog shapes: gameplay or atmospheric? | Gestalt/Araminta |
| OQ-09 | Zone temperature memory: server-tracked or client-only? | Tyre/Dudley |