---
title: Make sprite sheets and eight-direction sprites
display: 'Make *sprite* sheets and eight-direction sprites'
nav_title: Sprite sheets and directions
summary:
  - "Engine-ready pixel sprites of one character: a four-direction walk, a 12-frame sword attack, and an idle frame in all eight facings."
  - "Generate pixel walk sheets directly; for an attack, animate a magenta plate, then key, crop, pixelate and pack frames in code."
  - "For eight facings, generate all eight in one image, snap it to a pixel grid and cut cells in code; mirroring moves one-sided details to the wrong side."
description: Turn a pixel character into engine-ready sheets, a four-direction walk, a sword attack cut from a video clip, and all eight facings from one image, snapped to a pixel grid and cut in code.
section: playbooks
order: 13
type: playbook
topic: Games
level: Scale
roles: [artist]
time: { read: 20, do: 70, wait: 13 }
needs: ["Any plan with credits", "An approved pixel sprite and turnaround of your character", "A short Python or image script for keying, cutting, pixelating and packing"]
last_verified: 2026-10-16
models_checked: ["Retro Diffusion Animation", "GPT Image 2.5 Sunburst", "Wan 3.0", "Kling V3 I2V Pro", "Pixel Snapper", "Retro Diffusion Plus"]
hero: playbooks/sprite-sheet-animation/ronin-iaido-attack-sheet-on-checker.webp
related: [character-reference-sheet, vectors-pixel-art-and-layers]
run_in: [model_retrodiffusion-animation, model_openai-gpt-image-2-5-sunburst, model_alibaba-wan-3-0, model_kling-v3-i2v-pro, model_pixel-snapper]
# the use case made, on scenario.com/explorations, and the platform workflows that run it
made_with:
  - { slug: scroll-courier, title: "Scroll Courier" }
  - { slug: iso-cycles, title: "Iso Cycles" }
  - { slug: crimson-tower, title: "Crimson Tower" }
run_with:
  - { id: wflow_xrpFcXaLwdZafzJy1Bni7VPd, name: "Pixel Lock: Character to Sprite Sheet" }
  - { id: wflow_ZzXFbpMCgdJS3H6UWD29FpcH, name: "Character Run Cycle Spritesheet" }
  - { id: wflow_eight-direction-sprite, name: "8-Direction Sprite Generator" }
thumb: playbooks/sprite-sheet-animation/thumb.webp
video: tutorials/sprite-sheet-animation.mp4
chapters:
  - { at: 0, title: "The sprites to make", image: "/media/images/playbooks/sprite-sheet-animation/ch-01-the-sprites-to-make.webp" }
  - { at: 18, title: "A dedicated sprite model", image: "/media/images/playbooks/sprite-sheet-animation/ch-02-a-dedicated-sprite-model.webp" }
  - { at: 26, title: "Style, size and sheet", image: "/media/images/playbooks/sprite-sheet-animation/ch-03-style-size-and-sheet.webp" }
  - { at: 41.5, title: "A side-view plate on flat magenta", image: "/media/images/playbooks/sprite-sheet-animation/ch-04-a-side-view-plate-on-flat-magenta.webp" }
  - { at: 62, title: "Same image first and last", image: "/media/images/playbooks/sprite-sheet-animation/ch-05-same-image-first-and-last.webp" }
  - { at: 88, title: "Key, crop, pixelate, pack", image: "/media/images/playbooks/sprite-sheet-animation/ch-06-key-crop-pixelate-pack.webp" }
  - { at: 112.5, title: "All eight facings, one image", image: "/media/images/playbooks/sprite-sheet-animation/ch-07-all-eight-facings-one-image.webp" }
  - { at: 145, title: "Snap to a real pixel grid", image: "/media/images/playbooks/sprite-sheet-animation/ch-08-snap-to-a-real-pixel-grid.webp" }
  - { at: 164.5, title: "Recap", image: "/media/images/playbooks/sprite-sheet-animation/ch-09-recap.webp" }
steps:
  - title: "A dedicated sprite model"
    text: "A walk cycle is regular enough for a sprite model. Create › Images › View all models, search Retro Diffusion and pick Retro Diffusion Animation."
  - title: "Style, size and sheet"
    text: "Reference Image: the ronin sprite, for identity. Style four_angle_walking, Width and Height 48, and Return Spritesheet on, or you get a GIF instead."
    prompt: |-
      Ronin swordsman, wide straw hat, long red scarf, dark indigo robe, orange sash, katana at the left hip, straw sandals
  - title: "A side-view plate on flat magenta"
    text: "An attack is too complex for a sprite model, so draw one side-view plate on flat magenta, which keys out easily. Create › Images › GPT Image 2.5 Sunburst, Reference Images: the ronin sprite, Dimensions 1:1; the prompt says what the camera sees, because without it the far-side shoulder guard moved to the near shoulder."
    prompt: |-
      Reference 1 is the character's identity as a pixel sprite, reference 2 his turnaround. Game sprite plate: the same ronin, full body, strict side view facing RIGHT, standing in a low ready stance, left hand on the sheathed katana at his left hip, right hand resting on the hilt, feet on one level line. What the camera sees in this view: his RIGHT side. The steel shoulder guard is on his LEFT shoulder, the far side, so it is hidden behind his body; his near right shoulder shows only the indigo robe and the red scarf. He fills about 40 percent of the frame height, centered, with wide empty margins on every side. Keep his wide straw hat, long red scarf, dark indigo robe, orange sash, katana in a dark red scabbard and straw sandals. Premium pixel art, crisp single-pixel lines, limited 32-color palette (indigo night, warm lantern orange, steel), hard pixel edges, no anti-aliasing blur, no glow. Background: one single uniform flat pure magenta field, hex FF00FF, edge to edge, no ground, no shadow, no gradient, no vignette. No text.
  - title: "Same image first and last"
    text: "Create › Videos › Wan 3.0, with the plate in both First Frame and Last Frame so the attack ends in the stance it started from. Lock the camera and ask for no glow and no slash trail, because effects don't key cleanly; Wan's take was kept over Kling's, which left a second hilt in the scabbard."
    prompt: |-
      Strict side view, the camera is locked and does not move. The ronin performs one fast iaido draw: he snaps the katana out of the scabbard at his hip in a single horizontal slash to the right, holds the extended pose for a short beat, then slides the blade back into the scabbard and settles into the same ready stance he started in. He faces RIGHT the whole time and stays in place with both feet planted. What the camera sees: his right side, the red scarf trailing behind him to the left. Same pixel art look and colors as the first frame. The flat magenta background stays uniform the whole time. No glow, no slash trail, no light effects, no text.
  - title: "Key, crop, pixelate, pack"
    text: "A short script cuts the frames: it keys out the magenta, crops every frame with one box so the feet don't jump, maps each pixel to the sprite's 33 colors and packs 12 frames on a grid."
  - title: "All eight facings, one image"
    text: "Create › Images › GPT Image 2.5 Sunburst, Reference Images: the five-facing row. All eight go in one image, each described by what the viewer sees; none are mirrored, because his guard and katana sit on his left side only."
    prompt: |-
      Reference 1 is an approved row of the same pixel-art ronin: copy its pixel size, palette, outline, camera angle and figure height exactly. Reference 2 is his turnaround: use it only for what his back and sides look like. Draw the same ronin standing still, empty hands at his sides, in EIGHT facings, two rows of four, evenly spaced, all the same size, feet on one ground line per row. Top row, left to right: 1 facing down toward the viewer: face, both shoulders, steel guard on the viewer's right, katana hilt at the viewer's right hip. 2 facing down-right diagonal, turned 45 degrees: his face and chest point to the lower right, we see his right side clearly; the steel guard is on his far shoulder, only its edge shows. 3 facing right in profile: we see only his right side and one eye. The steel guard and the katana are on his far side: we never see the guard; only the katana hilt tip shows in front of his belly. 4 facing up-right diagonal, turned 45 degrees: a three-quarter back view, we see his back with the scarf tails and his right shoulder and right arm almost in profile on the right of the figure; no face; the steel guard shows only as a small grey rim on the far left edge. Bottom row, left to right: 5 facing up, back view: his back, scarf tails, steel guard on the viewer's left, katana on the viewer's left hip. 6 facing up-left diagonal, turned 45 degrees: a three-quarter back view, we see his back and his left shoulder with the steel guard, katana scabbard on the near hip, no face. 7 facing left in profile: we see only his left side: steel guard on the near shoulder, katana in its scabbard at the near hip. 8 facing down-left diagonal, turned 45 degrees: his face and chest point to the lower left, we see his left side, steel guard on the near shoulder, katana at the near hip. Keep in every facing: wide straw kasa hat, red scarf whose two tails hang down his back, indigo kimono, steel shoulder guard on his LEFT shoulder only, orange obi sash, katana in a dark red scabbard at his LEFT hip, grey leg wraps, straw sandals. Top-down action RPG camera, about 30 degrees from above. Hard pixel edges, no anti-aliasing, no glow, no halo, no light spill. Background: one flat pure magenta field, hex FF00FF, edge to edge, no shadow, no ground. No text, no numbers. Style: premium pixel art, crisp single-pixel lines, limited 32-color palette (indigo night, warm lantern orange, steel), no anti-aliasing blur, readable silhouettes.
  - title: "Snap to a real pixel grid"
    text: "Pixel Snapper from the model picker, Colors 32, on the eight facings: it rebuilds the image with one art pixel per pixel. A script then cuts eight cells on one baseline."
agent_steps:
  - title: "Connect the Scenario MCP"
    text: "Connect your agent and sign in once at [mcp.scenario.com](https://mcp.scenario.com). Then tell it which Scenario team and project to use, so every file lands there."
  - title: "Give the agent the files"
    text: "The approved pixel sprite of the ronin first, then his turnaround. Upload them with upload_asset or give their asset IDs; the prompts call them reference 1 and reference 2. A local agent also needs Python for the key, crop, pixelate and pack scripts."
  - title: "Brief the agent: the walk and the attack"
    text: "A walk is regular enough for a sprite model. An attack is not: draw a side-view plate on flat magenta, which keys out easily, and animate it with the same image first and last, so it ends in the stance it started from."
    prompt: |-
      1. Walk: run Retro Diffusion Animation (model_retrodiffusion-animation) with image set to the sprite, style "four_angle_walking", width 48, height 48, returnSpritesheet true, seed 4127. Prompt, word for word:
      Ronin swordsman, wide straw hat, long red scarf, dark indigo robe, orange sash, katana at the left hip, straw sandals

      2. Plate: run GPT Image 2.5 Sunburst (model_openai-gpt-image-2-5-sunburst) with referenceImages [sprite, turnaround], 1024 x 1024, quality "high". Prompt, word for word:
      Reference 1 is the character's identity as a pixel sprite, reference 2 his turnaround. Game sprite plate: the same ronin, full body, strict side view facing RIGHT, standing in a low ready stance, left hand on the sheathed katana at his left hip, right hand resting on the hilt, feet on one level line. What the camera sees in this view: his RIGHT side. The steel shoulder guard is on his LEFT shoulder, the far side, so it is hidden behind his body; his near right shoulder shows only the indigo robe and the red scarf. He fills about 40 percent of the frame height, centered, with wide empty margins on every side. Keep his wide straw hat, long red scarf, dark indigo robe, orange sash, katana in a dark red scabbard and straw sandals. Premium pixel art, crisp single-pixel lines, limited 32-color palette (indigo night, warm lantern orange, steel), hard pixel edges, no anti-aliasing blur, no glow. Background: one single uniform flat pure magenta field, hex FF00FF, edge to edge, no ground, no shadow, no gradient, no vignette. No text.

      When I approve the plate:
      3. Attack clip: run Wan 3.0 (model_alibaba-wan-3-0) with image and endImage both set to the plate, resolution "480P", duration 5, audio false; and Kling V3 I2V Pro (model_kling-v3-i2v-pro) with startImage and endImage set to the plate, duration "5", aspectRatio "1:1", generateAudio false and a negativePrompt of "glowing halo, light spill, slash trail". Same prompt for both, word for word:
      Strict side view, the camera is locked and does not move. The ronin performs one fast iaido draw: he snaps the katana out of the scabbard at his hip in a single horizontal slash to the right, holds the extended pose for a short beat, then slides the blade back into the scabbard and settles into the same ready stance he started in. He faces RIGHT the whole time and stays in place with both feet planted. What the camera sees: his right side, the red scarf trailing behind him to the left. Same pixel art look and colors as the first frame. The flat magenta background stays uniform the whole time. No glow, no slash trail, no light effects, no text.

      Quote every run with a dry run first and wait for my go. Show me a contact sheet of every take before any frame work.
  - title: "Check the takes, then cut the sheet in code"
    text: "Accept when every frame shows the full character and blade inside the cell, there is one sword, the first and last frames match, and no far-side detail appears on the near side. In the run, Wan's take was kept: Kling left a second hilt in the scabbard. Slash smears on magenta are dropped and drawn as an effect sprite in the engine."
    prompt: |-
      With the kept clip, in code: mark pixels where red and blue are both far above green as background and drop isolated specks; crop every frame with one box, the union of all frames; pick 12 frames at equal steps of motion; scale so the stance is 108 px tall; set alpha fully on or off; map every pixel to the nearest of the sprite's 33 colors; pack the 12 frames on a grid. Report the frames picked, the magenta pixels left and the baseline row in the first and last cells.
  - title: "Brief the agent: eight facings"
    text: "None are mirrored, because his guard and katana sit on his left side only. Each facing is described by what the viewer sees."
    prompt: |-
      Run GPT Image 2.5 Sunburst with referenceImages [sprite, turnaround], width 1536, height 512. Five-facing prompt, word for word:
      Reference 1 is the approved pixel-art sprite of the ronin: copy its pixel size, palette, dark outline and proportions exactly. Reference 2 is his turnaround: use it only for what the back and sides look like. Draw the same pixel-art ronin standing still, empty hands at his sides, in FIVE facings, one row, left to right, evenly spaced, same size, feet on one ground line: 1 facing down toward the viewer, we see his face under the straw hat and both shoulders; 2 facing down-right diagonal, three-quarter front, we see his face, his chest and his right side; 3 facing right in profile, we see only his right side and one eye; 4 facing up-right diagonal, three-quarter back, we see the back of his hat, his back and his right shoulder, no face; 5 facing up, back view, we see only his back and the scarf tails. Keep in every facing: wide straw kasa hat, red scarf whose two tails hang down his back, indigo kimono, steel shoulder guard on his LEFT shoulder only, orange obi sash, katana in a dark red scabbard at his LEFT hip, grey leg wraps, straw sandals. Top-down action RPG camera, about 30 degrees from above. Each figure about 56 art pixels tall. Hard pixel edges, no anti-aliasing, no glow, no halo, no light spill. Background: one flat pure magenta field, hex FF00FF, edge to edge, no shadow, no ground. No text, no numbers. Style: premium pixel art, crisp single-pixel lines, limited 32-color palette (indigo night, warm lantern orange, steel), no anti-aliasing blur, readable silhouettes.

      When I approve the row, run it again with referenceImages [the five-facing row, turnaround], width 2048, height 1024. Eight-facing prompt, word for word:
      Reference 1 is an approved row of the same pixel-art ronin: copy its pixel size, palette, outline, camera angle and figure height exactly. Reference 2 is his turnaround: use it only for what his back and sides look like. Draw the same ronin standing still, empty hands at his sides, in EIGHT facings, two rows of four, evenly spaced, all the same size, feet on one ground line per row. Top row, left to right: 1 facing down toward the viewer: face, both shoulders, steel guard on the viewer's right, katana hilt at the viewer's right hip. 2 facing down-right diagonal, turned 45 degrees: his face and chest point to the lower right, we see his right side clearly; the steel guard is on his far shoulder, only its edge shows. 3 facing right in profile: we see only his right side and one eye. The steel guard and the katana are on his far side: we never see the guard; only the katana hilt tip shows in front of his belly. 4 facing up-right diagonal, turned 45 degrees: a three-quarter back view, we see his back with the scarf tails and his right shoulder and right arm almost in profile on the right of the figure; no face; the steel guard shows only as a small grey rim on the far left edge. Bottom row, left to right: 5 facing up, back view: his back, scarf tails, steel guard on the viewer's left, katana on the viewer's left hip. 6 facing up-left diagonal, turned 45 degrees: a three-quarter back view, we see his back and his left shoulder with the steel guard, katana scabbard on the near hip, no face. 7 facing left in profile: we see only his left side: steel guard on the near shoulder, katana in its scabbard at the near hip. 8 facing down-left diagonal, turned 45 degrees: his face and chest point to the lower left, we see his left side, steel guard on the near shoulder, katana at the near hip. Keep in every facing: wide straw kasa hat, red scarf whose two tails hang down his back, indigo kimono, steel shoulder guard on his LEFT shoulder only, orange obi sash, katana in a dark red scabbard at his LEFT hip, grey leg wraps, straw sandals. Top-down action RPG camera, about 30 degrees from above. Hard pixel edges, no anti-aliasing, no glow, no halo, no light spill. Background: one flat pure magenta field, hex FF00FF, edge to edge, no shadow, no ground. No text, no numbers. Style: premium pixel art, crisp single-pixel lines, limited 32-color palette (indigo night, warm lantern orange, steel), no anti-aliasing blur, readable silhouettes.

      Then run Pixel Snapper (model_pixel-snapper) on the kept take with 32 colors. Quote each run first and wait for my go.
  - title: "Cut, inspect, file and report"
    text: "Accept when all eight figures share one baseline, the diagonals read as diagonals, no magenta or purple pixels remain, identity reads at 1x, and the guard and katana sit on his left in every facing. Reject a diagonal that looks like a profile, figures of different sizes, palette drift, blurred pixels or a one-sided detail on the wrong side."
    prompt: |-
      In code, key out the magenta and the purple fringe, split each row into figures, paste each into a 128 x 128 cell bottom-aligned on one baseline, and save one 1024 x 128 sheet in the order S, SE, E, NE, N, NW, W, SW. Show me the walk sheet, the attack sheet and the eight facings at 1x and 3x, on dark and light. Then create a collection for the ronin with the kept takes and sheets (upload the sheets with upload_asset), and report the models, every asset ID and the total cost spent.
updated: 2026-10-16
canonical: https://learn.scenario.com/playbooks/sprite-sheet-animation
---

Last updated: 2026-10-16

# Make sprite sheets and eight-direction sprites

> Turn a pixel character into engine-ready sheets, a four-direction walk, a sword attack cut from a video clip, and all eight facings from one image, snapped to a pixel grid and cut in code.

In short:

- Engine-ready pixel sprites of one character: a four-direction walk, a 12-frame sword attack, and an idle frame in all eight facings.
- Generate pixel walk sheets directly; for an attack, animate a magenta plate, then key, crop, pixelate and pack frames in code.
- For eight facings, generate all eight in one image, snap it to a pixel grid and cut cells in code; mirroring moves one-sided details to the wrong side.


One pixel character, made engine-ready in two parts. Part 1 generates a four-direction walk directly as a sheet and cuts a 12-frame sword attack from a short video clip, pixelated back to the character's palette. Part 2 puts the same character in all eight facings for top-down and isometric games, with real pixels and the same baseline in every cell. Everything ends as transparent PNG sheets on a fixed grid that an engine slices without cleanup.

:::note As of October 2026
The models, settings and screens in this article are the ones Scenario offered in October 2026. New models and updates arrive often, so check the app for newer options before you choose.
:::

![Twelve pixel-art frames of the ronin drawing his katana, slashing and sheathing it, on a checkerboard that marks transparent pixels](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/0a7651ead160c21102e54a4bf405d1c5d6a289a999c01f8af579d8ea88a5bb96.webp "The kept attack: 12 frames, 192x128 cells, first and last frame identical, 33-color palette.")

## The brief

| Field | Part 1: walk and attack | Part 2: eight directions |
|---|---|---|
| Goal | A walk cycle (4 directions) and one attack for Starfall, a 2D action game | One idle frame per facing, 8 facings, for a top-down action prototype |
| Format | Walk: 48x48 pixel art, 4 frames per direction. Attack: 12 frames, 192x128 cells, the figure about 108 px tall, transparent PNG | 128x128 cells, transparent PNG, one row: S SE E NE N NW W SW |
| Fixed | Identity (wide straw hat, long red scarf, indigo robe, orange sash, katana in a dark red scabbard, straw sandals); the steel shoulder guard sits on his left shoulder; feet on one baseline; first frame = last frame | Pixel size, palette and outline of the approved sprite; identity; steel shoulder guard and katana on his left side only |
| May vary | Pose within the action | Small fold and scarf differences between facings |
| Accept when | Plays as a loop with no jitter, no clipped limbs or blade, no background pixels left in the cells, no colors outside the character's palette | Same baseline in all cells, one art pixel per image pixel, no background pixels, each diagonal reads as a diagonal, guard and katana on his left in every facing |

The character is the Starfall ronin, a 128 px pixel sprite with a three-view turnaround, both approved images made with **Retro Diffusion Plus**. See [Build a character sheet and keep it consistent across scenes](https://learn.scenario.com/playbooks/character-reference-sheet.md) for how to approve a character before you derive anything from it. Both parts use the same sprite and the same figure height of about 108 px.

## Approach

**Part 1, walk and attack:**

:::flow
Pixel walk | Retro Diffusion Animation, 48 px, 4 directions | image
Magenta plate | GPT Image 2.5 Sunburst, side view | image
Attack clip | Wan 3.0 and Kling V3 I2V Pro, plate as first and last frame | video
Contact sheet | Every take, before any frame work |
Key, pixelate, pack | Script: key, one crop box, palette, grid | image
:::

**Part 2, eight directions:**

:::flow
Five facings | GPT Image 2.5 Sunburst, flat magenta | image
Eight facings | Five-facing row as style reference | image
Snap pixels | Pixel Snapper, 32 colors | image
Cut and align | Key magenta, 128x128 cells |
Inspect | 1x and 3x, dark and light |
:::

Two routes for animation, by what the model can draw:

- **Walks: generate the sheet directly.** A dedicated sprite model returns a ready grid, exact by construction, and takes a reference image for identity.
- **Attacks: animate a plate, then cut frames in code.** Generate a side-view "plate" on flat **#FF00FF** magenta and animate it with the same image as first and last frame, so the clip loops back to the stance. Keying, cropping, pixelating and packing are deterministic, so code does them ([Let code own what must be exact](https://learn.scenario.com/browse)).

On the attack route:

- **Say what the camera sees.** In a side view facing right, the camera sees his right side. A detail on the far side (here the steel shoulder guard on his left shoulder) must be written as hidden, or the model paints it on the near side.
- **The frame is the cell.** Anything that leaves the video frame (a blade, a scarf) is cut off and cannot be recovered. Keep wide margins on the plate.
- **Effects do not key well.** Slash trails and glows are semi-transparent and mix with the magenta. Generate the body motion only, list "glowing halo, light spill, slash trail" in the negative prompt, and draw effects as separate sprites in the engine.

For eight facings, generating each separately gives eight slightly different characters. Generating them in **one image** keeps size, palette and outline together.

The common shortcut generates only five facings (down, down-right, right, up-right, up) and mirrors the other three in code. It works for symmetric designs. This ronin carries a steel guard on his left shoulder and a katana at his left hip, so mirroring moves both to his right side in NW, W and SW. The run below tried the shortcut, rejected it, and generated all eight with the five-facing row as the style reference.

The eight-direction pipeline:

1. **Generate a row of five facings** on a flat magenta background, with the approved sprite and the turnaround as references. This row fixes how the 128-pixel sprite looks at full figure size.
2. **Generate all eight facings in one image**, with that row as the style reference, and describe what the viewer sees in each facing, including where the one-sided details fall.
3. **Snap to a true pixel grid.** Image models draw "pixel art" with soft, uneven pixels. **Pixel Snapper** rebuilds the image at one art pixel per image pixel with a limited palette.
4. **Cut and align in code.** Key out the magenta, split each row into figures, bottom-align each in a 128x128 cell.

Models, as of October 2026:

- **Walk:** Retro Diffusion Animation, a dedicated sprite model.
- **Attack clip:** `recommend` put **Wan 3.0** first for first-and-last-frame clips and **Kling V3 I2V Pro** second; the attack shoot-out kept Wan 3.0 ([First and last frame](https://learn.scenario.com/courses/video-production)).
- **Plate and facings:** GPT Image 2.5 Sunburst. It followed a numbered facing list and kept the sprite's palette and outline.
- **Dedicated turnaround route tried:** Retro Diffusion Plus with its `character_turnaround` style. It made the approved sprite, but was rejected for the eight facings (see Check the result).
- **Cardinal-only games:** four facings (S, E, N, W) need no diagonals; the same prompt with four lines is enough.

## Steps

### Part 1: Walk and attack sheets

:::steps
1. **Generate the pixel walk sheet.** In the model picker (**Create**, **Images**, click the model card, **See all models**), search for Retro Diffusion Animation. Attach the 128 px sprite as the reference image (the model drops transparency, so a plain background works best). Set the style to `four_angle_walking`, width and height to 48 (the only size the walking styles accept), turn on the spritesheet switch (off, the model returns an animated GIF) and set a seed (this run used 4127). Prompt: "Ronin swordsman, wide straw hat, long red scarf, dark indigo robe, orange sash, katana at the left hip, straw sandals".

2. **Read the sheet before using it.** The result is a 192x192 PNG: four rows of four frames, ordered back, right, front, left. Inspect it upscaled 5 times with nearest-neighbor; never smooth pixel art.

   ![Four-direction pixel walk cycle of the ronin, four frames per row: back, right, front, left](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/1317f4eae01d6f732e5415477ad7d5b136d864392c1f10c0ac1c99ffa8f462ae.webp "Kept: four-direction walk, 48 px frames, shown at 5x.")

3. **Make the magenta plate.** Open **Images** with **GPT Image 2.5 Sunburst**, attach the sprite and the turnaround, **Dimensions** 1:1 (1024x1024), **Quality** `high`:

   ```text
   Reference 1 is the character's identity as a pixel sprite, reference 2
   his turnaround. Game sprite plate: the same ronin, full body, strict side
   view facing RIGHT, standing in a low ready stance, left hand on the
   sheathed katana at his left hip, right hand resting on the hilt, feet on
   one level line. What the camera sees in this view: his RIGHT side. The
   steel shoulder guard is on his LEFT shoulder, the far side, so it is
   hidden behind his body; his near right shoulder shows only the indigo
   robe and the red scarf. He fills about 40 percent of the frame height,
   centered, with wide empty margins on every side. Keep his wide straw hat,
   long red scarf, dark indigo robe, orange sash, katana in a dark red
   scabbard and straw sandals. Premium pixel art, crisp single-pixel lines,
   limited 32-color palette (indigo night, warm lantern orange, steel), hard
   pixel edges, no anti-aliasing blur, no glow. Background: one single
   uniform flat pure magenta field, hex FF00FF, edge to edge, no ground, no
   shadow, no gradient, no vignette. No text.
   ```

   The first prompt only listed "steel shoulder guard" among the details; both takes put it on the near shoulder. The "what the camera sees" sentence fixed it on the next run.

   ![Left: first take with a steel guard on the near shoulder. Right: retake with the near shoulder showing only robe and scarf](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/d2729963bc104ed692a99db4530eb69da95b6e139112a7a9df7f74c37e7037e7.webp "Rejected left, kept right: the far-side detail written as hidden.")

4. **Animate the plate on two models** ([Pin the first and last frame](https://learn.scenario.com/browse)). Open **Create**, **Videos**, and put the plate in both **First Frame** and **Last Frame**. Run **Wan 3.0** at 480P with audio off, and **Kling V3 I2V Pro** at 1:1 with audio off and a negative prompt. Same prompt on both:

   ```text
   Strict side view, the camera is locked and does not move. The ronin
   performs one fast iaido draw: he snaps the katana out of the scabbard at
   his hip in a single horizontal slash to the right, holds the extended
   pose for a short beat, then slides the blade back into the scabbard and
   settles into the same ready stance he started in. He faces RIGHT the
   whole time and stays in place with both feet planted. What the camera
   sees: his right side, the red scarf trailing behind him to the left.
   Same pixel art look and colors as the first frame. The flat magenta
   background stays uniform the whole time. No glow, no slash trail, no
   light effects, no text.
   ```

   Negative prompt: "glowing halo, light spill, slash trail, glowing blade, sparks, motion blur, camera movement, zoom, turning around, second sword, extra arms, gradient background, shadow on the background".

5. **Contact-sheet both takes before any frame work.** Tile frames from the whole clip into one image (with ffmpeg: `-vf "fps=6,scale=200:-1,tile=10x3"`) and check facing, props, clipping and background in one look, then zoom on the hands and the hips.

   :::compare
   ![Contact sheet of the Kling take: the ronin draws and holds the blade, but a hilt still shows in his scabbard](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/87a3555c85c46b7585d417a42f4359fefedb761170d1e3f3321982101613af77.webp "Rejected: Kling V3 I2V Pro, a second hilt stays in the scabbard.")
   ![Contact sheet of the Wan take: the ronin raises the blade, slashes, holds and sheathes it](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/57dfa240599e5ee27fd1252017f08b5c8ff6eeacf1ec01b3524c85f2c25799cc.webp "Kept: Wan 3.0, an empty scabbard while the blade is out.")
   :::

6. **Key, crop, pixelate and pack in code** ([Cut out and key](https://learn.scenario.com/browse)). Mark pixels where red and blue are both far above green as background and drop isolated specks. Crop every frame with one box, the union of all frames (never a per-frame box, or the feet jump). Pick 12 frames at equal steps of motion, so the fast draw gets as many frames as the slow hold. Scale so the stance is 108 px tall, set alpha to fully on or off, and map every pixel to the nearest of the 33 colors in the 128 px sprite. This run picked frames 0, 26, 36, 41, 46, 57, 81, 84, 89, 99, 120 and 149 of 150, with 0 magenta pixels left and the baseline at row 124 in the first and last cells.

7. **Preview as a loop.** Play the sheet at 12 frames per second next to the source clip and watch the feet, the blade and the outline.
:::

:::video https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/870223f1edc57592060a648279e08af5a9c8dc54b36f8c707373214d89d5d7f7.mp4
Left: the kept Wan 3.0 clip on magenta. Right: the packed sheet playing at 12 frames per second, shown at 3x.
:::

**With the Scenario MCP:** run `model_retrodiffusion-animation` with `style: "four_angle_walking"`, `width: 48`, `height: 48`, `returnSpritesheet: true`, `seed: 4127` and `image` set to the sprite.

For the clips, run `model_alibaba-wan-3-0` with `image` and `endImage` set to the plate, `resolution: "480P"`, `duration: 5`, `audio: false`; and `model_kling-v3-i2v-pro` with `startImage`, `endImage`, `duration: "5"`, `aspectRatio: "1:1"`, `generateAudio: false` and `negativePrompt`. Quote them first with `dry_run: true` (see [Quote before you run](https://learn.scenario.com/browse)).

### Part 2: Eight directions

![A pixel-art ronin in a wide straw hat, red scarf and indigo kimono, shown in eight facings in two rows: down, down-right, right, up-right, then up, up-left, left and down-left. The steel shoulder guard and the katana stay on his left side in every facing.](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/bf358959ad50d7e2a2e75c0594a634ea4a8ed134de6bfe48cb20848ac763d84a.webp "The shipped facings at 3x. Top row S, SE, E, NE; bottom row N, NW, W, SW.")

:::steps
1. **Attach the two references** ([Give each reference a role](https://learn.scenario.com/browse)). Open **Create**, choose **Images**, pick **GPT Image 2.5 Sunburst**. Under **Reference Images**, add the approved sprite first, then the turnaround. Set **Quality** to `high`. This run set a custom 1536x512 (3:1) through the Scenario MCP; the web panel's **Dimensions** menu offers presets only, the widest being 21:9 (3360x1440), so in the panel use 21:9 and crop afterward.

2. **Prompt five facings by number, and say what the viewer sees.** Models confuse "up-right" with "right" unless the prompt says what is visible. Name the one-sided details in a keep list.

   ```text
   Reference 1 is the approved pixel-art sprite of the ronin: copy its pixel
   size, palette, dark outline and proportions exactly. Reference 2 is his
   turnaround: use it only for what the back and sides look like. Draw the
   same pixel-art ronin standing still, empty hands at his sides, in FIVE
   facings, one row, left to right, evenly spaced, same size, feet on one
   ground line:
   1 facing down toward the viewer, we see his face under the straw hat and
   both shoulders;
   2 facing down-right diagonal, three-quarter front, we see his face, his
   chest and his right side;
   3 facing right in profile, we see only his right side and one eye;
   4 facing up-right diagonal, three-quarter back, we see the back of his
   hat, his back and his right shoulder, no face;
   5 facing up, back view, we see only his back and the scarf tails.
   Keep in every facing: wide straw kasa hat, red scarf whose two tails hang
   down his back, indigo kimono, steel shoulder guard on his LEFT shoulder
   only, orange obi sash, katana in a dark red scabbard at his LEFT hip,
   grey leg wraps, straw sandals.
   Top-down action RPG camera, about 30 degrees from above. Each figure about
   56 art pixels tall. Hard pixel edges, no anti-aliasing, no glow, no halo,
   no light spill. Background: one flat pure magenta field, hex FF00FF, edge
   to edge, no shadow, no ground. No text, no numbers.
   Style: premium pixel art, crisp single-pixel lines, limited 32-color
   palette (indigo night, warm lantern orange, steel), no anti-aliasing
   blur, readable silhouettes.
   ```

   Click **Generate**. The price shows on the button before you run. The "no glow, no halo, no light spill" line keeps a soft rim off the outline, which would leave colored fringe after keying.

3. **Check the row for one-sided details before you go further.** Both takes put the steel guard on his near (right) shoulder in the right-facing profile, against the keep list. Mirrored, that cell would happen to look right, which is why a mirrored set needs checking cell by cell. Keep the better row as the style reference only.

4. **Generate all eight facings in one image.** Reference 1 is now the approved five-facing row, Reference 2 the turnaround. Size 2048x1024, two rows of four. For each facing, say where the guard and katana fall from the viewer's side, and describe each diagonal as "turned 45 degrees" with the shoulder that shows almost in profile.

   ```text
   Reference 1 is an approved row of the same pixel-art ronin: copy its pixel
   size, palette, outline, camera angle and figure height exactly.
   Reference 2 is his turnaround: use it only for what his back and sides
   look like. Draw the same ronin standing still, empty hands at his sides,
   in EIGHT facings, two rows of four, evenly spaced, all the same size, feet
   on one ground line per row.
   Top row, left to right:
   1 facing down toward the viewer: face, both shoulders, steel guard on the
   viewer's right, katana hilt at the viewer's right hip.
   2 facing down-right diagonal, turned 45 degrees: his face and chest point
   to the lower right, we see his right side clearly; the steel guard is on
   his far shoulder, only its edge shows.
   3 facing right in profile: we see only his right side and one eye. The
   steel guard and the katana are on his far side: we never see the guard;
   only the katana hilt tip shows in front of his belly.
   4 facing up-right diagonal, turned 45 degrees: a three-quarter back view,
   we see his back with the scarf tails and his right shoulder and right arm
   almost in profile on the right of the figure; no face; the steel guard
   shows only as a small grey rim on the far left edge.
   Bottom row, left to right:
   5 facing up, back view: his back, scarf tails, steel guard on the viewer's
   left, katana on the viewer's left hip.
   6 facing up-left diagonal, turned 45 degrees: a three-quarter back view,
   we see his back and his left shoulder with the steel guard, katana
   scabbard on the near hip, no face.
   7 facing left in profile: we see only his left side: steel guard on the
   near shoulder, katana in its scabbard at the near hip.
   8 facing down-left diagonal, turned 45 degrees: his face and chest point
   to the lower left, we see his left side, steel guard on the near
   shoulder, katana at the near hip.
   Keep in every facing: wide straw kasa hat, red scarf whose two tails hang
   down his back, indigo kimono, steel shoulder guard on his LEFT shoulder
   only, orange obi sash, katana in a dark red scabbard at his LEFT hip,
   grey leg wraps, straw sandals.
   Top-down action RPG camera, about 30 degrees from above. Hard pixel edges,
   no anti-aliasing, no glow, no halo, no light spill. Background: one flat
   pure magenta field, hex FF00FF, edge to edge, no shadow, no ground. No
   text, no numbers.
   Style: premium pixel art, crisp single-pixel lines, limited 32-color
   palette (indigo night, warm lantern orange, steel), no anti-aliasing
   blur, readable silhouettes.
   ```

5. **Snap the pixels.** Open the better take and run **Pixel Snapper** on it from the model picker, with its color count set to 32 (the default is 16). The 2048x1024 take came back as 518x259 pixels: each figure 108 to 110 pixels tall, every pixel a real art pixel.

6. **Cut and align in code** ([Do the exact part in code](https://learn.scenario.com/browse)). A short script does the rest:
   - mark magenta pixels (red and blue far above green) as transparent, including the purple fringe pixels between the magenta and the outline;
   - split each row into figures by finding the empty columns between them;
   - paste each figure into a 128x128 cell, bottom-aligned on the same baseline and centered horizontally;
   - save one 1024x128 sheet in the order S, SE, E, NE, N, NW, W, SW.

7. **Inspect at 1x and at 3x,** on a dark and a light background, and count what code can count: purple pixels left (0 in this run), colors used (27), baseline row (the same in all eight cells).
:::

:::compare
![Five pixel-art facings of the ronin as generated, on magenta](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/a2ca36fc10ac6f550160b02146ecb9a9c6c8cbd2b2f36721086f21ac3da1cf06.webp "Step 2 as generated: looks like pixel art, but pixels are uneven.")
![The same five facings after Pixel Snapper, shown at 4x](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/bae6adeae4ffd99469ae8f8a0052df5f63a05b62004fd0109b27d5dcbb98ffb1.webp "After Pixel Snapper: one art pixel per image pixel, shown at 4x.")
:::

**With the Scenario MCP:** run `model_openai-gpt-image-2-5-sunburst` with `referenceImages: [sprite, turnaround]`, `width: 1536`, `height: 512`, then again with `referenceImages: [five_facing_row, turnaround]`, `width: 2048`, `height: 1024`, then `model_pixel-snapper` on the kept take.

The cut step is plain Python with Pillow and NumPy; no model is involved.

![The final eight-direction sheet at real size, 1024x128, transparent](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/625355482571e2795a5c6c87a79f230e2dd92c5e6bc1524b9a0f28b0b72c9701.webp "The shipped sheet: 1024x128, transparent, at 1x.")

## Check the result

### Check the walk and attack

:::check
**Accept when:** every frame shows the full character and blade inside the cell; props stay single (one sword, out or sheathed); the first and last frames match; the feet sit on one baseline; no magenta pixels remain; every color is in the character's palette.
**Reject when:** the character turns away from the side view, a prop doubles or vanishes, a limb or blade touches the frame edge, the background shifts, or a far-side detail appears on the near side.
:::

- **Kling V3 I2V Pro, rejected.** A clean draw and a long hold, but a hilt stays in the scabbard while the blade is in his hand: two swords.
- **Wan 3.0, kept.** Overhead raise, slash, hold and sheathe, with an empty scabbard while the blade is out. Two frames at the strike (44 and 45) carried a white slash smear despite "no slash trail"; they were dropped, so the strike reads as a snap from overhead to extended, the usual timing for a sprite attack. The slash effect becomes a separate sprite in the engine.
- **480P was enough.** The frames end at 108 px tall, so the 640x640 clip holds more detail than the sheet keeps.

The `walking_and_idle` style (same seed) was rejected: its rows move as much as the walk rows (mean change between frames about 15 levels in every row of both sheets), and it has no front view.

![Walking and idle sheet: back, side, back and side rows, all walking](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/5ea797dd7b6e321cd49bdadc57aa14d3b75e708df3b5f6a021e16534e82f7bb9.webp "Rejected: the idle rows walk, and the front view is missing.")

### Check the eight directions

:::check
**Accept when:** all eight figures share one baseline; the diagonals read as diagonals (face visible on the down diagonals, no face and a turned shoulder on the up diagonals); no magenta or purple pixels remain; identity reads at 1x (straw hat, red scarf, indigo kimono); the guard and katana sit on his left in every facing.
**Reject when:** a diagonal looks like a profile or a straight back view, figures differ in size, the palette drifts from the sprite, pixels are blurred, or a one-sided detail sits on the wrong side.
:::

:::compare
![Up-left, left and down-left made by mirroring three generated facings](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/1d91a5fc12b98138baaf06b00a0d35e4532a0d7d786c0f989f0335257fd89ea5.webp "Rejected: mirrored. In NW and SW the guard and katana move to his right side.")
![Up-left, left and down-left generated in the eight-facing image](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/2a426414db2235dff84510ba4360cccff2d368c71f337fd295ba1eb3d1c84b9a.webp "Kept: generated. Guard on his left shoulder, katana at his left hip.")
:::

What was rejected on the way, and why:

- **The mirror route.** Five facings plus three mirrors is a sound default and the method used in the [Iso Cycles exploration](https://www.scenario.com/explorations/iso-cycles/). Here it fails the brief: the mirrored NW and SW carry the guard and katana on his right.
- **A first eight-facing prompt that said only "three-quarter back".** Its up-right facing came back as a straight back view. Adding "turned 45 degrees" and naming the shoulder seen almost in profile fixed it.
- **Patching two cells from a separate run.** A two-facing fix run drew the figures smaller, so Pixel Snapper picked a different grid (figures 50 to 58 pixels tall against 108). The cells could not join the sheet without rescaling, which breaks the pixel grid. Regenerating the whole sheet was cheaper than repairing it.
- **Retro Diffusion Plus, `character_turnaround` style, 384x384, palette from the sprite.** One take returned three eye-level views with no diagonals on white, the other five mismatched poses with drawn swords. Rejected for this job; the style is still how the approved three-view turnaround was made.

:::compare
![Up-right facing from the first eight-facing prompt, shown at 3x: the ronin seen almost straight from behind](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/92697a4057d5eac033a525a1973898d5200427934fbea0843a11ede86ad2e869.webp "First prompt: NE reads as a straight back view.")
![Up-right facing from the second prompt, shown at 3x: back turned, right arm almost in profile, guard rim on the far edge](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/482acb059dc23161f0d64275dff97f14777293ad377cb190612ecdfc7f73500a.webp "Second prompt, \"turned 45 degrees\": NE reads as a diagonal.")
:::

![Two Retro Diffusion Plus turnaround takes: three eye-level views on white, and five mismatched poses with drawn swords](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/416fbb3f8229fbd7d77b1b94af5971c66a925a7808d7ba1c7f65b99001df33ef.webp "Retro Diffusion Plus turnaround style: no usable diagonals. Rejected.")

:::compare
![The eight facings on a dark background at 2x](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/f4c4e744d98d0f23b0bb87f4d202b34ffc702b2d86662cf577eb5e70fbc93105.webp "Dark background, 2x.")
![The eight facings on a light background at 2x](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/8efdf95f61de083a3ef34149dbcc6547162b575bd130b2a63296cbac0c67bf50.webp "Light background, 2x.")
:::

:::quiz Check yourself
? Two takes of the attack, each paused with the blade drawn. Which one do you cut into frames?
![The ronin in a lunge with the katana held out in front, and a sword hilt still showing in the scabbard at his hip](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/b46038463334eb14bcbcef6a1325644f3d7b09e64015c1da80ef21ab56142dc7.webp "Take A")
![The ronin in a lunge with the katana held out in front, his scabbard empty at his hip](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/630943c018419561e4916f9fda75fbe68f247b3abd4597aab9b35a850de1fb84.webp "Take B")
- [ ] Take A: its hold is longer, which gives more frames to choose from
- [x] Take B: one sword, out of an empty scabbard
- [ ] Take A: paint out the extra hilt in each frame after pixelating
> A prop that doubles rejects a take: fixing it frame by frame costs more than another run. Take A is the Kling V3 I2V Pro clip; Take B is the Wan 3.0 clip in the sheet.

? Two strike frames carry a white slash smear on magenta. What do you do?
- [ ] Widen the key until the smear is gone, and keep the frames
- [ ] Run the clip again with "no slash trail" written twice in the prompt
- [x] Drop those frames and draw the slash as a separate effect sprite in the engine
> Trails and glows mix with the magenta and key badly. This run dropped frames 44 and 45 and moved the slash to an engine sprite.

? Two eight-facing sheets for the ronin, whose brief fixes the steel guard and katana on his left side. Which one ships?
![Eight pixel-art facings of the ronin in one row on a dark background, set A](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/f4c4e744d98d0f23b0bb87f4d202b34ffc702b2d86662cf577eb5e70fbc93105.webp "Sheet A")
![Eight pixel-art facings of the ronin in one row on a dark background, set B](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/9820c45e57b24ba85d1b5e34a3ca19000e7aeaf5c31dbcf87155c9fabafd4255.webp "Sheet B")
- [x] Sheet A: the guard and katana stay on his left in all eight facings
- [ ] Sheet B: its first five facings are identical in style, so the last three can be trusted
- [ ] Either: at 128 pixels the side of a guard is too small to matter
> Sheet B mirrors three facings, so NW and SW carry the guard and katana on his right. Sheet A generated all eight and keeps them on his left.

? Two facings of your sheet are weak. You run a separate two-facing generation to replace them, and Pixel Snapper turns its figures into 55-pixel sprites while the sheet's are 108 pixels. What do you do?
- [ ] Scale the two new figures up 2x and paste them in
- [x] Regenerate the whole eight-facing image with a better description of those two facings
- [ ] Run Pixel Snapper again on the sheet with the two new figures pasted in
> Scaling breaks the one-art-pixel grid and pastes mismatched pixels next to real ones. One image for all eight keeps the grid; fix the prompt and run it again.
:::

## Make it repeatable

- **Keep the scripts and the reference pair with the project.** Key, crop box, frame picks, palette and packing are the same for every animation; only the clip and the frame list change. Every new character in the same game uses the same style reference, the same eight-facing prompt with the identity and keep list swapped, and the same cut script.
- **Decide mirror or generate per character.** Symmetric designs can use five facings plus three mirrors. Any design with a one-sided detail the brief fixes goes straight to eight generated facings.
- **Workflows** ([Package it as a workflow or skill](https://learn.scenario.com/browse)). In the **Node Editor**:
  - **Plates and clips:** an **Image** input (sprite and turnaround) and an **Image Generator** for the plate (GPT Image 2.5 Sunburst with the magenta prompt); an **Approval** node; a **Video Generator** (Wan 3.0) whose first and last frame both come from the approved plate, and a **Text** input for the action line.
  - **Eight facings:** two **Image** inputs (style row, turnaround), an **Image Generator** on GPT Image 2.5 Sunburst with the eight-facing prompt, then an **Image Generator** set to Pixel Snapper, and an **Approval** node before export. The cut step stays in code after download.
- **Publish it** so animators request an action in one sentence. See [Build your first workflow](https://learn.scenario.com/workflows/build-your-first-workflow.md).
- **Platform Apps to compare.** Under **Workflows**, **Apps**, the Action Sprite Studio and Character Run Cycle Spritesheet apps cover similar ground to Part 1, and the **8-Direction Sprite Generator** produces eight directions from a character image. Run them on the same sprite and compare with these pipelines on your art style before standardizing.

## Runs and time

**Part 1, walk and attack:**

| Step | Model | Runs | Kept | Wait |
|---|---|---|---|---|
| Four-direction pixel walk | Retro Diffusion Animation | 1 | 1 | about 29 s |
| Walking and idle | Retro Diffusion Animation | 1 | 0 (rejected) | about 35 s |
| Side-view plate on magenta, 2 takes per run | GPT Image 2.5 Sunburst | 2 | 1 (second run) | about 39 s and 34 s |
| Attack clip, 5 s | Wan 3.0 480P, Kling V3 I2V Pro | 2 | 1 (Wan 3.0) | about 84 s and 157 s |
| Keying, pixelating and packing | local script | 0 | n/a | seconds |

Six runs, about 6 minutes of wait. The two video takes are most of the cost; change the prompt between takes rather than re-rolling it.

**Part 2, eight directions:**

| Step | Model | Runs or takes | Kept | Wait |
|---|---|---|---|---|
| Five facings on magenta | GPT Image 2.5 Sunburst | 1 run, 2 takes | 1 (style reference) | about 29 s |
| Turnaround style | Retro Diffusion Plus | 1 run, 2 takes | 0 (rejected) | about 31 s |
| Pixel snapping, five facings | Pixel Snapper | 1 | 1 (mirror test, rejected) | about 10 s |
| Eight facings, first prompt | GPT Image 2.5 Sunburst | 1 run, 2 takes | 0 (runner-up) | about 39 s |
| Pixel snapping, first prompt | Pixel Snapper | 2 | 0 | about 10 s each |
| Two-facing fix row | GPT Image 2.5 Sunburst | 1 run, 2 takes | 0 (rejected, other grid) | about 25 s |
| Pixel snapping, fix row | Pixel Snapper | 2 | 0 | about 10 s each |
| Eight facings, "turned 45 degrees" | GPT Image 2.5 Sunburst | 1 run, 2 takes | 1 | about 34 s |
| Pixel snapping, 32 colors | Pixel Snapper | 1 | 1 | about 10 s |
| Key, cut, align | local script | 0 | n/a | seconds |

About 4 minutes of waiting. A clean run on a new character is three runs: the five-facing row, the eight-facing image and one Pixel Snapper pass. The cut is free because it runs in code.

The price shows on the **Generate** button before you run.

## Variations

- **Idle loop:** same plate as first and last frame, prompt "breathes slowly, scarf moves slightly, no step", 5 s.
- **Walk cycles in eight directions:** repeat the Part 1 walk per facing, with the [eight-direction sheet](#part-2-eight-directions) as the reference.
- **Painted or non-pixel 2D sprites:** skip the palette step and Pixel Snapper, key with a soft edge, and keep the keyed frames at full resolution. Everything else is the same.
- **Snap to a pixel grid in the app:** run the extracted frames through **Pixelate** or the Pixel Snapper tool with a fixed palette. See [Vectors, pixel art and layers](https://learn.scenario.com/images/vectors-pixel-art-and-layers.md).
- **Isometric games:** ask for the same facings with "isometric camera, 2:1 projection" and match the cell baseline to your tile height. See [Isometric tiles and buildings](https://learn.scenario.com/playbooks/isometric-tiles-and-buildings.md).
- **Symmetric characters:** generate five facings, snap, and mirror SE, E and NE into SW, W and NW in code. Check every mirrored cell against the keep list.
- **Smaller sprites:** at 48 or 64 pixels, ask for a smaller figure height in the prompt rather than scaling the snapped sheet down.
- **Animation and motion design:** the same plate method gives clean cut-out characters to key over any background.
- **3D route:** for many actions on one character, a rigged 3D model with motion presets can be rendered to sprites. See [Rigged 3D character](https://learn.scenario.com/playbooks/rigged-3d-character.md).

## If it breaks

- **A far-side or one-sided detail appears on the wrong side.** Write what the camera sees ("his RIGHT side; the guard on his LEFT shoulder is hidden"). For facings, write in the keep list which side it is on, then say where it falls from the viewer's side in each facing ("steel guard on the viewer's left").
- **A prop doubles (a drawn sword and a sheathed hilt).** Reject the take and try the other first-and-last-frame model; "second sword" in the negative prompt was not enough here.
- **The character turns toward the camera or away.** Write the facing in capitals ("faces RIGHT the whole time") and add "turning around" to the negative prompt.
- **A blade or effect is cut at the edge.** The clip cannot be fixed afterwards: make him smaller on the plate, then animate again.
- **Feet slide or the sprite jitters.** Use one crop box for all frames, the union of every frame's bounds.
- **Figures come out at different sizes.** Ask for "same size, feet on one ground line" and normalize in code by bottom-aligning, never by scaling individual figures.
- **Diagonals look like profiles or straight back views.** Describe what the viewer sees: "turned 45 degrees, his face and chest point to the lower right". Number the facings.
- **Colors drift after scaling.** Map every pixel to the sprite's own palette and set alpha fully on or off; never keep half-transparent edge pixels in pixel art.
- **The palette drifts from the sprite.** Put the style reference first and say "copy its pixel size, palette, outline and proportions exactly".
- **Purple fringe after keying.** Keep "no glow, no halo, no light spill" in the prompt, widen the key to catch pixels where red and blue are both well above green, then check the count of purple pixels is zero.
- **Pixel Snapper merges small details.** Raise the color count, then compare at 4x.

Source: https://learn.scenario.com/playbooks/sprite-sheet-animation
