# Animation source

Each pet's complete animation set was generated in **one dedicated prompt**.
That means ten source images total—one 3×3 sheet for each pet—not one request
per frame and not one crowded sheet for the whole collection.

Every source sheet uses the same layout and motion language:

| Row | Animation | Frames |
|---:|---|---|
| 1 | `idle` | rest → blink/dip → open-eye rise |
| 2 | `bounce` | tiny anticipation → tiny bounce → landing |
| 3 | `greet` | rest → species feature gesture → halfway return |

The ten prompts share one template. Only the pet name, species, input reference,
and greeting feature change. The generated sheets are preserved in `source/`.
`tools/build_animations.py` removes isolated generation debris, splits each
sheet, scales every frame to 128×128 with nearest-neighbour sampling, restores
the static collection's exact 17-colour palette, and writes hard alpha.

Luna and Ursa were regenerated after their limb-based greetings produced
ambiguous extra appendages. Their replacement sheets keep the complete set for
each pet in one prompt image, but use non-limb greetings: Luna tilts her head
while both wings remain resting; Ursa wiggles her ears while all paws remain
planted. No frame-replacement workaround is needed in the build.

| Pet | Species | `{SPECIES_FEATURE}` |
|---|---|---|
| Felis | cat | the tail tip |
| Corvus | crow | one wing tip |
| Vesper | fox | the large bushy tail tip |
| Luna | owl | the owl head angle; both wings stay resting |
| Ursa | bear cub | the round ears and a small head nod; all paws stay planted |
| Lupus | wolf pup | the tail tip |
| Draco | small dragon | both wing tips |
| Comet | bunny | both long ear tips |
| Nova | axolotl | the feathery external gills and tail tip |
| Frost | penguin | one flipper |

## Prompt template

```text
Use case: stylized-concept
Asset type: one 3×3 source sprite sheet for {PET}, a 128×128 pixel-game pet
Primary request: Generate all nine animation frames for this ONE pet together in this single image. Image 1 is the strict identity reference for {PET}, the {SPECIES}. Every cell must show the exact same individual character.
Layout: exactly 3 columns × 3 rows of equal square frame cells, reading left to right. No drawn borders, separators, labels, or numbers. One centered isolated character per cell with identical generous padding.
Row 1 — idle loop: calm seated rest; TINY one-pixel-feeling body dip with a soft blink; TINY one-pixel-feeling rise with eyes open.
Row 2 — cheerful bounce loop: TINY anticipation/compress; TINY upward bounce; gentle return/landing. Keep the feet near the same anchor and make this restrained, not a jump.
Row 3 — greeting loop: calm rest; TINY friendly motion of {SPECIES_FEATURE}; halfway return. The body remains nearly still.
Motion rule: all changes are TINY and body-led. Lock the camera, anchor point, body size, silhouette, costume, face, and proportions across all nine cells. Each row must loop cleanly 1→2→3→2→1.
Style/medium: exact hard-edged native pixel-art look of Image 1; deliberate square pixels; no anti-aliasing or painterly rendering. Preserve the collection's black/navy/electric-blue/white/pink 17-colour palette and crisp white silhouette outline.
Identity invariants: preserve {PET}'s exact {SPECIES} anatomy and distinctive features, jet-black body, dark navy hoodie, bright blue hoodie strings, readable blue capital T chest emblem, original eye style, expression language, and proportions. Do not redesign anything or add accessories.
Scene/backdrop: perfectly flat solid #FF00FF chroma-key background across the whole canvas and every gutter. One exact uniform color only: no shadow, gradient, texture, floor, reflection, glow, or lighting variation. Never use #FF00FF in the character.
Constraints: exactly nine isolated frames of {PET}; no second character; no other species; no contact or cast shadow; no text; no watermark.
Avoid: zoom changes, cropping, bust portraits, inconsistent scale, large pose changes, open-mouth voids, missing face, missing hoodie, missing T emblem, species drift, smooth edges, semi-transparent pixels.
```

For Luna and Ursa, the final dedicated prompts replace the generic row-three
line with the non-limb greeting described in the table. They also add a strict
anatomy lock: Luna has exactly two wings inside the hoodie sleeves; Ursa has
exactly two forelegs and two hind legs; no appendage may be added, forked,
stacked, detached, or duplicated in any cell.
