Skip to content

Create pixel art for catwalk visualization #222

Description

@williamthorsen

Description

Replace the catwalk visualization's geometric primitives (colored circles, rectangles, text overlays) with pixel art sprites, transforming the scene from placeholder graphics into a sci-fi factory aesthetic with a midnight blue background.

The catwalk currently renders agents as solid-color Excalibur Circle/Rectangle graphics. This epic introduces AI-generated 32×32 pixel art sprite sheets and a sprite loading pipeline, while keeping the existing actor interfaces and animation state machine from #183.

Key design decisions:

  • 2 sprite sheets total: one shared subagent sheet (neutral metallic, role color applied as accent bar) + one unique orchestrator sheet (distinct silhouette)
  • Midnight blue background (~#1a1a2e) replacing near-black, with blue-gray structural elements
  • Reuses existing sprite-definitions.ts frame layout (4×3 grid, 32×32 frames) — animation timings and strategies work unchanged
  • AI-generated assets only (PixelLab or similar)

Supersedes #12 (which targeted the FactoryScene SVG-to-PNG swap; FactoryScene is being discarded).

Tasks

  • Generate AI pixel art sprite sheets: subagent (neutral metallic, 128×96 PNG) and orchestrator (distinct silhouette, 128×96 PNG)
  • Create catwalk/sprites/sprite-sheet-urls.ts — Vite static asset imports for the 2 PNGs
  • Create catwalk/sprites/catwalk-sprite-loader.ts — loads PNGs, creates cached SpriteSheet and Animation objects per state
  • Update StationAgentActor — replace Circle + Text with sprite Animation + colored Rectangle accent bar
  • Update OrchestratorActor — replace Rectangle + Text with sprite Animation
  • Update CatwalkScene — call sprite loader during init; update background to midnight blue
  • Update dimensions.ts — align sizing constants with 32×32 sprites
  • Verify all existing tests pass (typecheck, lint, test)

Acceptance criteria

Must have

  • 2 PNG sprite sheets in catwalk/sprites/assets/ (subagent + orchestrator), 128×96, 4×3 grid of 32×32 frames, transparent backgrounds
  • catwalk-sprite-loader.ts loads PNGs via Vite static imports, creates cached Animation objects per state
  • StationAgentActor renders sprite + colored accent bar instead of Circle + Text
  • OrchestratorActor renders sprite instead of Rectangle + Text
  • Background color updated from #111111 to midnight blue (~#1a1a2e)
  • Animation states (idle, working, celebrating, concerned, resting) render correctly
  • All existing tests pass (typecheck, lint, test)

Should have

  • Subagent accent color uses existing ROLE_TYPE_COLORS per role type
  • Sprites use neutral metallic palette that reads well against midnight blue
  • Orchestrator has visually distinct silhouette from subagents

Nice to have

  • Subtle background texture (faint grid or panel lines)
  • Soft glow effect behind working machines
  • Art style guide doc for future sprite iterations

Out of scope

  • Layout compression for multi-catwalk stacking (separate issue)
  • Pixel art for artifacts, chutes, gates (follow-up)
  • FactoryScene changes (being discarded)

Relationship to other issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureAdded or improved external functionalityscope:factory

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions