Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
6.9 KiB
title, description, type, status, sprint, team
| title | description | type | status | sprint | team |
|---|---|---|---|---|---|
| Sprint 28 — Joint Briefing | Cross-team coordination, integration points, sprint completion proof | sprint | planning | 28 | joint |
Sprint 28: Character Visuals — Joint
Goal: Move beyond placeholder art to final product candidate character visuals, from design specs through asset production and compositor implementation.
Pre-Sprint Checks
| Item | Owner | Status |
|---|---|---|
| Sprint 27 all done (9/9) | SI | confirmed |
| D-146 (tile-scale preview) locked — no portrait system | Planning | confirmed |
| D-147 (aesthetic taste trait) locked — no cosmetic→apartment pipeline | Planning | confirmed |
| Sprint 28 record created in planning status | SI | confirmed (ID: 28) |
| All 11 tickets (#683–#694) assigned to Sprint 28 | SI | confirmed |
Cross-Team Dependencies
| Dependency | Upstream | Downstream | Notes |
|---|---|---|---|
#684 (workshop) outputs docs/design/character-visuals-spec.md |
planning | visual (#686–#692) | Visual team cannot start production without this spec. Block ALL visual tickets until spec is published. |
#684 (workshop) outputs docs/design/compositor-api-spec.md |
planning | client (#693) | Client compositor architecture must match the workshop-specified API. #693 should read this before writing any code. |
#685 (wireframe) outputs docs/design/character-creation-screen-wireframe.md |
planning | client (#694) | Client creation screen is a direct implementation of the wireframe. #694 is blocked until wireframe is approved. |
#686 (body type sprites) delivers sprites to client/assets/sprites/character/body/ |
visual | client (#693) | Compositor needs at least one complete body type sprite set as test input. #693 can begin architecture with a stub but must have real sprites for integration testing. |
| #693 (compositor) exports its node API | client | client (#694) | The creation screen's preview pane is driven by the compositor node. #694 cannot wire the preview until #693 is testable. |
Action required — workshop start: Planning team (#684 agent) to publish docs/design/character-visuals-spec.md and docs/design/compositor-api-spec.md before any visual or client work begins. These are gating documents. SI will update ticket statuses once they are published.
Action required — body sprites handoff: Visual team (#686 agent) to notify client team (#693 agent) when the first complete body type sprite set is committed to the visual branch. Client team needs this for compositor integration testing.
Sprint Completion Proof
Sprint 28 is done when all of the following are observable:
Planning:
docs/design/character-visuals-spec.mdexists and is complete (all 7 layer types specified)docs/design/compositor-api-spec.mdexists and specifies the layer enum, color override struct, and Godot node architecturedocs/design/character-creation-screen-wireframe.md(or.png) exists and has been reviewed by Jeroendocs/workshops/character-visuals/workshop-outcomes.mdexists with all decisions recorded- Any new D-records filed to
decisions/for architectural decisions made during the workshop
Visual:
client/assets/sprites/character/body/contains 2 body type sprite sheets (8 directions each) with color mesh region mapsclient/assets/sprites/character/face/contains 2 face type sprite sheets (8 directions each)client/assets/sprites/character/hair/contains 2 hair style sprite sheets (8 directions each)client/assets/sprites/character/expressions/contains sprite sheets for all workshop-defined expression states (min 3)client/assets/sprites/character/overlays/scars/and.../tattoos/each contain 2 overlay spritesclient/assets/sprites/character/overlays/injuries/contains damage state overlay sprites (min 3 states)client/assets/sprites/character/clothing/contains 2 clothing set sprite sheets;.../accessories/contains 2 sets
Client:
client/scripts/rendering/character_compositor.gdexists and layers all sprite types in the correct workshop-specified order- Color mesh recoloring works: changing a color override in the compositor updates the rendered output in real time
- 8-direction rotation works: compositor switches all layer textures consistently
client/scenes/character_creation.tscn+client/ui/character_creation.gdexist and wire into the new game flow- Preview pane shows the composited character at heavy zoom (≥4×) with live updates on layer/color changes
- All layer selection controls are functional (body, face, hair, clothing, accessories, scars, tattoos, colors)
- Randomise button works
- Keyboard navigation (tab/arrow/enter/esc) is fully functional
Integration eyeball test: Launch the game → New Game → reach character creation screen → change body type → preview updates → change hair color → preview updates → confirm → game loads with character definition stored. No placeholder gray blobs — you see a recognizably distinct character with distinct hair and clothing.
Test Plan Alignment
Sprint 28 is an art + UI sprint. No new ECS systems, no IPC protocol changes. Test surface:
- #693 compositor: Unit test (Godot scene runner or headless) that instantiates the compositor with a known
CharacterDefinition, verifies the correct number of child nodes, and verifies the facing direction swap triggers a texture change. Use a minimal stub sprite (1×1 PNG) for the test — no need for production assets. - #694 creation screen: UI test that navigates the creation screen via keyboard input, changes a layer, and asserts the preview compositor was updated. Use
client/tests/pattern (matching existing test files e.g.test_dialogue_speaker_colors.gd). - Visual sprites: No automated test. Acceptance is the integration eyeball test above — does the compositor render a legible composited character from the production sprites?
- Do NOT use TestHarness mocks for rendering verification. Per CLAUDE.md testing preferences: use the live pipeline. For the creation screen preview specifically, the full compositor is the production path — test against it directly.
Sprint Retro Triggers
Flag to SI immediately if any of these conditions are hit:
- Workshop spec (#684) is incomplete or contradicts D-146/D-147 — do not start production work until SI escalates to Jeroen
- Color mesh recoloring approach selected by the workshop requires shader work that Stig estimates as blocking — surface this before #693 is committed, not after
- Body type sprite footprint deviates from the 24×32/64px convention used by
entity_renderer.gd— this will break gameplay rendering and must be caught before #686 merges - #694 wireframe design (from #685) is received after visual sprites are already in progress and requires a layer reordering — SI to assess impact and decide whether to hold visual or accept the rework cost