Problem
The block-robot sprites use only a fraction of the 32×32 sprite cell (subagent 56%, orchestrator 75%), making characters appear small and requiring padding workarounds (ORCH_SPRITE_BOTTOM_PAD = 6, SUBAGENT_SPRITE_BOTTOM_PAD = 10). Additionally, the subagent's blue-grey palette is hard to see against the midnight-blue factory background (#1a1a2e) because the shading darkens toward the outer edges — the exact area where contrast matters most.
Context
- Sprite generation lives in
scripts/sprites/ (body parts, palettes, renderer)
- Precompiled SVGs are stored as assets and loaded by Excalibur's
SpriteSheet API
- Padding constants in
dimensions.ts compensate for transparent space in the sprite cell, used by StationAgentActor and OrchestratorActor to position characters flush against reference surfaces
- The catwalk scene background is
#1a1a2e; the subagent's darkest palette shade (#2a2a3e) is nearly identical in hue and brightness
Solution
- Scale up body parts proportionally — enlarge each pixel grid (head, torso, legs, arms) by ~2px in each dimension, preserving shading patterns. Bottom-align characters (feet at row ~30-31)
- Improve palette visibility — replace hardcoded hex palettes with a parametric generator driven by tunable constants (hue, saturation, min/max lightness). Shift subagent toward cyan/teal with a brighter floor. Give orchestrator a mild saturation/brightness boost
- Rename and update padding constants — rename
ORCH_SPRITE_BOTTOM_PAD → ORCH_SPRITE_BOTTOM_PADDING_PX and SUBAGENT_SPRITE_BOTTOM_PAD → SUBAGENT_SPRITE_BOTTOM_PADDING_PX; reduce values to match new (much smaller) transparent padding
- Regenerate SVG sprite sheets
Acceptance criteria
Problem
The block-robot sprites use only a fraction of the 32×32 sprite cell (subagent 56%, orchestrator 75%), making characters appear small and requiring padding workarounds (
ORCH_SPRITE_BOTTOM_PAD = 6,SUBAGENT_SPRITE_BOTTOM_PAD = 10). Additionally, the subagent's blue-grey palette is hard to see against the midnight-blue factory background (#1a1a2e) because the shading darkens toward the outer edges — the exact area where contrast matters most.Context
scripts/sprites/(body parts, palettes, renderer)SpriteSheetAPIdimensions.tscompensate for transparent space in the sprite cell, used byStationAgentActorandOrchestratorActorto position characters flush against reference surfaces#1a1a2e; the subagent's darkest palette shade (#2a2a3e) is nearly identical in hue and brightnessSolution
ORCH_SPRITE_BOTTOM_PAD→ORCH_SPRITE_BOTTOM_PADDING_PXandSUBAGENT_SPRITE_BOTTOM_PAD→SUBAGENT_SPRITE_BOTTOM_PADDING_PX; reduce values to match new (much smaller) transparent paddingAcceptance criteria
#1a1a2eORCH_SPRITE_BOTTOM_PADDING_PXandSUBAGENT_SPRITE_BOTTOM_PADDING_PXwith values updated (target ≤2px)