Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
88 lines
6.9 KiB
Markdown
88 lines
6.9 KiB
Markdown
---
|
||
title: "Sprint 28 — Joint Briefing"
|
||
description: "Cross-team coordination, integration points, sprint completion proof"
|
||
type: sprint
|
||
status: planning
|
||
sprint: 28
|
||
team: "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.md` exists and is complete (all 7 layer types specified)
|
||
- `docs/design/compositor-api-spec.md` exists and specifies the layer enum, color override struct, and Godot node architecture
|
||
- `docs/design/character-creation-screen-wireframe.md` (or `.png`) exists and has been reviewed by Jeroen
|
||
- `docs/workshops/character-visuals/workshop-outcomes.md` exists 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 maps
|
||
- `client/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 sprites
|
||
- `client/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.gd` exists 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.gd` exist 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
|