Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
8.0 KiB
title, description, type, status, sprint, team
| title | description | type | status | sprint | team |
|---|---|---|---|---|---|
| Sprint 28 — Visual Briefing | Character sprite production: body types, faces, hair, expressions, overlays, clothing — all layers for compositor | sprint | planning | 28 | visual |
Sprint 28: Character Visuals — Visual Tasks
Goal: Move beyond placeholder art to final product candidate character visuals, from design specs through asset production and compositor implementation.
Branch: visual
Agents: Araminta (art direction)
New Tickets
| # | Title | Blocked by |
|---|---|---|
| #686 | Body type sprites | #684 (workshop) |
| #687 | Face type sprites | #684 (workshop) |
| #688 | Hair type sprites | #684 (workshop) |
| #689 | Facial expression sprites | #684 (workshop) |
| #690 | Scar and tattoo overlay sprites | #684 (workshop) |
| #691 | Visible injuries overlay sprites | #684 (workshop) |
| #692 | Clothing, apparel and accessory layer sprites | #684 (workshop) |
Use tooling/db/ticket show <id> for full details.
Key Decisions
decisions/architecture.md— D-134 (full character customisation: hair, clothing, colors at tile scale — readability solved through outline/highlight, not by limiting options), D-043 (art direction: "functional warmth" visual style), D-044 (visual hierarchy: entity > object > structure), D-046 (lighting system: three-reference model), D-066 (dual-scale grid: 0.5m simulation, 1m visual)decisions/scope.md— D-146 (tile-scale sprite with heavy zoom as the preview — these sprites ARE the final product at game scale)
Notes
Blocking condition — wait for #684 outputs
All seven tickets are blocked by #684 (planning workshop). Do not start production until the workshop outputs docs/design/character-visuals-spec.md. That document defines:
- Layer ordering for the compositor
- Color mesh region definitions per layer type
- 8-direction rotation consistency rules
- Expression state list
- Damage state progression for injuries
If the workshop spec is incomplete in any area, block the relevant ticket and flag to SI before proceeding.
Existing sprite reference
Current placeholder sprites are at client/assets/sprites/:
npc_generic_{north,south,east,west}_64.png— 64×64 px source textures, 4 directions- Rendered at 0.5 scale → 32×32 runtime footprint within 32×32 visual tiles (D-066)
- Entity footprint in
entity_renderer.gd: 24×32 within the 32×32 tile (ENTITY_WIDTH/HEIGHT constants)
All new sprites must maintain this 64×64 px source resolution and 4-direction (or 8-direction, per workshop spec) convention. The compositor (#693) will layer them — produce each layer as a separate sprite sheet, not composited into a single texture.
#686 — Body type sprites
Base layer. All other character sprites composite on top of this.
Deliverables:
- 2 distinct body type sprite sheets (8 directions each = 16 sprites per body type)
- Color mesh region map per body type (defines recolorable skin/clothing zones)
- Source files and exported PNGs at
client/assets/sprites/character/body/
Art guidance: Body type is the widest-impact decision — proportions set the silhouette that all overlaid layers must match. Produce body_a and body_b with visibly distinct silhouettes while sharing the same feet-anchor point and 24×32 footprint convention. Color mesh regions: at minimum, skin region must be separately recolorable.
#687 — Face type sprites
Overlay on the upper portion of the body sprite.
Deliverables:
- 2 distinct face type sprite sheets (8 directions each)
- Color mesh region map per face (skin tone recolorability at minimum)
- Source files and exported PNGs at
client/assets/sprites/character/face/
Art guidance: Face sprites overlay on the head region of the body. The 8-direction face must register exactly with the 8-direction body for all orientations. Skin tone region should match the body skin region color mesh ID for consistent tinting.
#688 — Hair type sprites
Overlay on top of the face layer.
Deliverables:
- 2 distinct hair style sprite sheets (8 directions each)
- Color mesh region map per style (hair color region fully recolorable)
- Source files and exported PNGs at
client/assets/sprites/character/hair/
Art guidance: Hair sprites must read at 32×32 game resolution. Silhouette is more important than fine detail — thick, distinct hair shapes read better than thin ones at tile scale. Test at 32px, not at the 64px source.
#689 — Facial expression sprites
Overlay states on the face layer. Expression sprites swap the face layer's neutral state.
Deliverables:
- Named expression state sprite sheets (states defined by workshop — minimum: neutral, alert, distressed)
- 8 directions per expression state
- Source files and exported PNGs at
client/assets/sprites/character/expressions/
Art guidance: At tile scale, expression reads through body posture and head angle as much as facial detail. Exaggerate. Neutral is the default — alert and distressed are the two most important non-neutral states. Count of expression states is TBD by the workshop spec.
#690 — Scar and tattoo overlay sprites
Additive overlays above the skin layer. Placement must work for both body types.
Deliverables:
- 2 scar overlay sprites (with placement anchors, 8 directions each)
- 2 tattoo overlay sprites (with placement anchors, 8 directions each)
- Source files and exported PNGs at
client/assets/sprites/character/overlays/scars/and.../tattoos/
Art guidance: These are visible at tile scale only when zoomed in (character creation preview, heavy zoom mode per D-146). Placement anchors must be defined relative to the body sprite coordinate system so the compositor can offset them correctly per body type.
#691 — Visible injuries overlay sprites
Damage state overlays representing combat injury. These appear during gameplay, not just in character creation.
Deliverables:
- Damage state overlay sprites (states defined by workshop — minimum: light damage, heavy damage, critical)
- 8 directions per damage state
- Source files and exported PNGs at
client/assets/sprites/character/overlays/injuries/
Art guidance: Injury overlays are visible during gameplay at normal zoom (32×32). They must read clearly at that scale. Use color and silhouette change (blood, torn clothing, posture change baked in) — not fine line detail.
#692 — Clothing, apparel and accessory layer sprites
Outermost visible layer. Must handle occlusion of face/hair layers when appropriate (e.g. helmets).
Deliverables:
- 2 clothing set sprite sheets (full outfit, 8 directions each)
- 2 accessory sprite sheets (8 directions each)
- Layer ordering and occlusion rules documented in the spec (or confirmed against workshop spec)
- Color mesh region map per clothing set (primary + secondary color regions)
- Source files and exported PNGs at
client/assets/sprites/character/clothing/and.../accessories/
Art guidance: Clothing is what the player sees 99% of the time during gameplay. Make it read clearly at 32×32. Two clothing sets should have visibly different silhouettes (one formal/professional, one casual/work). Color mesh regions: minimum two — primary garment color, secondary accent.
Dependency Chain
#684 (workshop) → #686 (body) → #693 (client compositor — body sprites are its first input)
#684 (workshop) → #687 (face)
#684 (workshop) → #688 (hair)
#684 (workshop) → #689 (expressions)
#684 (workshop) → #690 (scars/tattoos)
#684 (workshop) → #691 (injuries)
#684 (workshop) → #692 (clothing/accessories)
#686–#692 can all run in parallel after #684 completes.
#686 is highest priority — it unblocks #693 (client compositor).
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):
tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(assets): character sprite layers — body, face, hair, expressions, overlays, clothing" --description "body" --base main --head visual