--- title: "Sprint 16 — Visual Briefing" description: "3D sprite render pipeline setup" type: sprint status: archived sprint: 16 team: "visual" --- # Sprint 16: Converse — Visual Tasks **Goal:** Dialogue becomes a two-way exchange — players pick options and the server responds; NPC information-giving deepens through trust and trait-shaped delivery; the sprite pipeline gets its correct art-direction angle; and housekeeping fixes land across all three active teams. **Branch:** `visual` **Agents:** Araminta (art direction) ## Carry-over from Sprint 15 None. Sprint 15 was 100% complete (16/16 done). ## New Tickets | # | Title | Blocked by | |---|-------|------------| | #541 | 3D sprite render pipeline setup | — | Use `db/connectors/ticket show 541` for full details. ## Key Decisions - `decisions/perception.md` — D-019 (camera angle amendment: -72.5° from horizontal = ~17.5° from vertical, "the angle"; Camera3D in the offline 3D pipeline produces sprites at this angle), D-043 (visual style: functional warmth, clean 2D with bold silhouettes), D-044 (visual hierarchy: entity > object > structure, resolution chain 1024→256→64), D-049 (z-level rendering stack, 8 layers) - `decisions/architecture.md` — D-066 (dual-scale grid: 64×64px visual tiles on 1m grid; entity sprites: 24×32px footprint within 64×64px visual tile) ## Notes ### #541 — 3D sprite render pipeline setup **What to deliver:** Establish the offline 3D sprite render pipeline used to produce all entity, object, and wall sprites for the game. This pipeline is a Blender (or equivalent) render setup, not a runtime system. **Camera spec (D-019 amendment):** - Camera3D positioned at **-72.5° from horizontal** (= 17.5° from vertical, midpoint of 15-20° range) - Orthographic projection (not perspective) to match the Godot gameplay camera model - This is "the angle" — all sprites for v0.1 are rendered at this angle **Output spec (D-043, D-044):** - Source resolution: 1024×1024px (highest fidelity, for outline processing) - Working resolution: 256×256px (outlines applied at 4-8px, dark blue-grey `#333340`) - Runtime resolution: 64×64px (bilinear interpolation from 256×256) - Entity sprites: 24×32px footprint within the 64×64px visual tile (D-044) - Sprites are shape templates — no baked shadows, no baked lighting, no baked mood (lighting is applied at runtime by Godot's PointLight2D pipeline) **Lighting rig:** - Three-point studio rig (key, fill, rim) to produce clean silhouettes without baked directional shadows - Do NOT bake lighting direction into sprites — the runtime Godot lighting system (PointLight2D per fixture) provides all scene lighting - Keep surface colors flat and readable; the 3D render should produce crisp outlines and readable silhouettes, not mood-lit final frames **Export process:** - Document the render settings (resolution, camera angle, lighting rig) so any team member can re-render consistent sprites - Export at least one entity test sprite (generic NPC silhouette) and one structural test sprite (wall segment) to validate the pipeline before full production - Store render source files in the `visual` branch; export the runtime 64×64 sprites to `client/assets/sprites/` (or the established asset path) for the client team **Blocks #540 (client):** The client team cannot implement the camera angle adjustment (#540) until this pipeline produces correctly-angled sprites. Deliver at minimum a test entity sprite and one wall sprite so the client team can begin #540 integration work. **Key constraint from D-066:** Entity sprites render across a 2×2 sim tile footprint. The 24×32px entity footprint within a 64×64px visual tile must be respected — test sprites should fit this bounding box so the client's z-sorting logic (y-based sort) remains accurate. ## Dependency Chain ``` #541 (3D render pipeline setup) → #540 (client: sprite camera angle) ``` ## PR Workflow When ready to submit, create a PR with `tea` CLI. **All flags are required** to avoid TTY prompts (see CLAUDE.md "Gitea access" section): ```bash tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(assets): 3D sprite render pipeline setup (D-019 angle)" --description "body" --base main --head visual ```