Core workflow
The key insight: generate full animation strips from a single anchor frame, not frame-by-frame. This keeps characters consistent across all frames.
Start from a shipped seed frame
Anchor the model to an actual production sprite, not a loose concept. This locks in palette, proportions, line weight, and shading direction.
Build a reference canvas
Upscale the sprite with nearest-neighbor and place it into a larger transparent canvas (1024x1024) with reserved frame slots. The larger canvas gives the model room to generate multi-frame sequences.
Generate full strips, not individual frames
Frame-by-frame generation causes character drift. Request the entire animation strip in one prompt for much better consistency.
Generate a [N]-frame [animation_type] animation strip of this character.
Keep the character consistent across all frames.
Arrange frames left-to-right in a single row.
Maintain the same art style, proportions, and color palette.
Normalize into game-ready frames
Post-process the raw strip: detect individual sprite components, compute a shared scale using the anchor image, optionally lock frame 1 to the exact shipped idle frame, and export to standard frame size (e.g., 64x64) with transparency padding.
Handle complex poses
When one pose is taller than another (e.g., sword-up attack vs. neutral), use one global scale for the entire strip. Let pose differences show as extra height inside the frame. Never scale individual frames independently — that causes size inconsistency.
Model comparison for sprites
Each model has different strengths for sprite generation. Community reports suggest NB2 outperforms GPT Image 1.5 for sprite sheet consistency.
| Model | Strength | Weakness |
|---|---|---|
| GPT Image 1.5 | Good anchor-based editing, edit API supports canvas workflow | Frame size consistency varies |
| Nano Banana 2 | Better consistency across frames, cheaper, faster | May struggle with complex directions |
| Retro Diffusion Pro | Purpose-built for pixel art (uses Gemini) | More specialized, less flexible |
Tip: Limiting output to max 9 objects per request reduces hallucinations across all models.
Tips and tricks
Practical advice from real sprite generation workflows.
Isometric sprites
Still an open challenge with no established best practice. Expect trial and error — results vary across models.
Consistency ceiling
Limit strips to 4-8 frames per generation for best results. More frames increase the chance of character drift between the first and last frames.
Video-to-sprite alternative
Generate an animation video of the character, then slice frames and use OpenCV for realignment and framing. A different path to the same result.
ChatGPT shortcut
Ask DALL-E for a spritesheet, then ask Data Analysis to "slice this sprite sheet and make a gif" with frame dimensions. Quick way to prototype animations.
Verification checklist
Run through these checks before marking a sprite sheet as production-ready.
Anchor frame matches shipped production sprite exactly
The seed frame should be pixel-identical to the original asset.
All frames share the same global scale
No individual frame scaling. Pose height differences show within the frame bounds.
Frame 1 is locked to the original idle sprite
The first frame in every strip should match the anchor exactly.
Preview in-engine before marking as production-ready
Static images can look fine but animate poorly. Test the full loop.
Check for palette drift between first and last frames
Colors should stay consistent across the entire strip. Sample and compare.
Install the skill
1 Clone the repository
git clone https://github.com/jamditis/claude-skills-journalism.git
2 Copy skill to Claude skills directory
cp -r animated-sprite-gen ~/.claude/skills/
3 Start generating
Ask Claude to generate animated sprite sheets, compare models for pixel art, or normalize a raw strip into game-ready frames.
Based on @chongdashu's guide to generating animated game sprites (Mar 2026)
Adapted by Joe Amditis at the Center for Cooperative Media
Part of Claude Skills for Journalism • MIT License