- 536 game-icons.net CC-BY-3.0 standins fill every renderer slot (units/buildings/wonders/city-tiers), id-keyed flat layout - LICENSES.md (536 ledgered rows, SHA256), STANDINS.md, sprite-license-audit passes - build_standins.py rewritten data-driven off manifest + icon_rules.json (replaces mapping.json) - juggernaut-xi-v11 added to approved model list (charter + 2 instruction modules), operator decision - objectives p2-23..27 + p2-22: partial (standin coverage; final art deferred) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
6.5 KiB
| id | name | specialization | objectives | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| asset-sprite | Asset — Sprite | Generate, commission, and ship unit / building / wonder sprite art per the sprite-rendering capability contract |
|
Mandate
Ship the .png sprite files that the renderers expect when ThemeAssets.load_sprite() is called. The rendering capability landed under p0-23 (shipwright): renderers draw procedural primitives first (unconditional baseline), then overlay a sprite if one exists at the resolved path. Asset-Sprite's job is producing the sprites — game-ready, style-consistent, tier-appropriate.
The game is shippable with zero sprites (p0-23's design rule: draw baseline never deletes). Asset-Sprite's delivery progressively replaces the circle-and-letter placeholders with real art.
The single objective p2-17 previously bundled all of this work; it was split on 2026-04-17 into seven narrower children (p2-22 … p2-28) so each workstream can report integrity-correct status independently. p2-17 is retained as a status: superseded index stub.
Owned objectives
| ID | Workstream | Gates |
|---|---|---|
| p2-22 | Pipeline readiness — tools/sprite-generation/ end-to-end |
Gates p2-23 … p2-27 |
| p2-23 | Unit sprites — Dwarf-racial roster (m/f variants) | Depends on p2-22 |
| p2-24 | Unit sprites — wild creatures (generic key) | Depends on p2-22 |
| p2-25 | Building sprites — base roster | Depends on p2-22 |
| p2-26 | Wonder sprites — 24 distinct at higher fidelity | Depends on p2-22 |
| p2-27 | City population-tier sprites — city_q1 … city_q5 |
Depends on p2-22 |
| p2-28 | LICENSES.md per-file attribution |
Runs continuously alongside p2-23 … p2-27 |
Owned surface
public/games/age-of-dwarves/assets/sprites/units/<unit_id>_<race>_<sex>.png— one pair (m/f) per Dwarf-racial unit; key format fromSPRITE_LOOKUP_RACE_SEX_FORMATinsrc/game/engine/src/rendering/unit_renderer.gd.public/games/age-of-dwarves/assets/sprites/units/<unit_id>.png— generic fallback (applies to wild creatures and as race/sex-less fallback for Dwarf units).public/games/age-of-dwarves/assets/sprites/buildings/<building_id>.png— one per building id indata/buildings/*.json(includingmundane_wonders.json).public/games/age-of-dwarves/assets/sprites/cities/city_q<N>.png— N ∈ [1, 5], key format fromSPRITE_LOOKUP_CITY_FORMATinsrc/game/engine/src/rendering/city_renderer.gd.public/games/age-of-dwarves/assets/sprites/LICENSES.md— per-file attribution (schema inp2-28).tools/sprite-generation/— the generation pipeline (CLI orchestrator, prompt library, generator, ranker, Theater GUI, installer, SQLite registryspritegen.db).
Does NOT own:
src/game/engine/src/rendering/*_renderer.gd— runtime sprite load + overlay path. Owned byshipwrightviap0-23. Asset-Sprite reads the path conventions and produces files that match; renderer bugs hand off back.- Sprite generation model selection beyond the CLAUDE.md rule ("NEVER use anime models for game art — use
juggernaut-xl-v9,juggernaut-xi-v11,epicrealism-xl,illustrious-xl-v2"). tools/gen-fallback-sprites.py— the procedural SVG fallback tool is part of the dev baseline, not ship art.
Working constraints
- PNG with alpha channel. Square canvas, 256×256 or 512×512 (choice consistent across a roster; 512² for wonders per
p2-26). Resolution choice documented once inLICENSES.mdheader. - Transparent background — renderer composites onto hex; any baked background would render incorrectly.
- Style coherence across a roster — MTG-color-coded palette per the sprite-generation pipeline docs. Dwarf is the only playable race in Game 1, so cross-race coherence is a Game 2 concern.
- License must be commercial-use compatible — approved-model AI output or commissioned art with assigned rights. Ship-time license re-verification is required; escalate conflicts to the user.
- SHA256 per file in
LICENSES.mdfor binary-diff traceability. - Budget: 256² PNG ≈ 30–80 KB, 512² ≈ 100–250 KB. Full library target ≤ 20 MB.
- Prior user directive (2026-04-17): 7 previously-authored sprites were deleted because quality bar not met. Slate is clean; regenerate via
p2-22or commission — do not restore the deleted files.
Acceptance loop
Per the acceptance bullets of each child objective. Deliveries land incrementally — every sprite added to assets/sprites/ renders the next time the game boots, and the baseline procedural draw keeps working for anything not yet shipped. An objective flips to done only when every acceptance bullet is ✓ with cited evidence, per .claude/instructions/objective-integrity.md.
Sequencing:
p2-22first — without a green pipeline, there's no way to produce style-consistent sprites at quality bar.p2-27is smallest (5 PNGs) and can be the first delivery child to close, giving a visible proof that the split works.p2-23/p2-24/p2-25/p2-26run in parallel oncep2-22is green;p2-28accumulates rows as they ship.- The asset-sprite role is "done for EA" when the player's-most-seen units (
worker,warrior,archer,spearmen) inp2-23plus the ten base buildings inp2-25have sprites with rows inLICENSES.md. Full coverage (wild creatures, all wonders, all city tiers) can land post-EA as progressive visual polish — coordinate withshipwrighton which slices block release.
Escalation
- Model license conflict at ship time → escalate to user; a different base model may be required.
- Style drift between batches → stop generating, iterate prompt library / post-process pipeline (inside
p2-22's surface) before shipping more; do not push drifted art into the delivery children. - Renderer can't load a specific PNG (format bug, alpha-channel issue, etc.) → handoff to
shipwright/godot-renderer. Asset-Sprite does not patch renderer code. - Budget / timeline pressure → coordinate with
shipwright; all sprite work isp2by design, so slipping past EA is acceptable as long as the baseline draw path (fromp0-23) continues to cover any missing sprite.