Creation field notes · English edition
Sprite Sheet Frame Audit: Fix Crops, Spacing and Jitter
Audit a sprite sheet with explicit frame coordinates, a 4-by-2 worked example, repair decisions and a downloadable frame review log.
By LlamaGen Editorial · Published
Download the review template (CSV)Find the failing layer before regenerating
When a sprite clips, jitters or plays in the wrong order, inspect the file geometry before changing the art prompt. A slicing error can make correct artwork appear broken. An alignment error can make equal-size frames appear to bounce. These need different repairs.
Work through four layers in order: sheet dimensions, frame rectangles, character anchors, then playback. Keep an untouched original and change one setting at a time. This guide includes an original numerical example and a downloadable log. It is an inspection procedure, not a claim that an AI tool produced or repaired a finished animation.
You need the actual PNG dimensions, intended frame count, frame order and either uniform grid settings or atlas metadata. A preview screenshot is insufficient because it may be resized. Open the downloaded file at its original dimensions.
If you are still choosing a tool, first compare concept sheets, animation sequences and packed atlases. This audit starts after you have exported a file; it does not replace the output-selection decision.
Step 1: write down the geometry
For a uniform grid with equal outer margins and spacing, calculate the sheet dimensions from the cells. Here c is the number of columns, r the rows, w and h the cell dimensions, m the outer margin on each side and s the gap between cells. A trimmed or rotated atlas requires its metadata instead; do not apply this formula to an irregular packed layout.
sheet_width = 2*m + c*w + (c-1)*s
sheet_height = 2*m + r*h + (r-1)*s
Example: c=4, r=2, w=32, h=32, m=2, s=1
width = 4 + 128 + 3 = 135 pixels
height = 4 + 64 + 1 = 69 pixels
Cell origin at column x and row y (both zero-based):
left = m + x*(w+s)
top = m + y*(h+s)The 135-by-69 example is intentionally not a power-of-two texture. It demonstrates margin and spacing arithmetic, not a recommendation for every engine or device. If your importer requires another arrangement, repack the frames explicitly. Never rescale to a convenient dimension and assume the old coordinates still apply.
Step 2: inspect the eight rectangles
The table assumes row-major reading order: left to right across the top row, then the bottom row. Confirm that your source uses this order before importing. Column-major layouts and action-per-row layouts require a different sequence.
The final cell ends at exclusive coordinate x=133 and y=67, leaving two pixels of outer margin. That boundary check catches many off-by-one mistakes. The image has pixels x=0 through 134; a 32-pixel cell starting at x=101 contains x=101 through 132.
Aseprite's documented import flow accepts offsets and sprite dimensions with padding options. Map the example to the actual controls shown by your installed version. If your slicer accepts only a regular division without margins, extract or repack the frames first.
| Frame | Column / row | Left / top | Size |
|---|---|---|---|
| 0 | 0 / 0 | 2 / 2 | 32 x 32 |
| 1 | 1 / 0 | 35 / 2 | 32 x 32 |
| 2 | 2 / 0 | 68 / 2 | 32 x 32 |
| 3 | 3 / 0 | 101 / 2 | 32 x 32 |
| 4 | 0 / 1 | 2 / 35 | 32 x 32 |
| 5 | 1 / 1 | 35 / 35 | 32 x 32 |
| 6 | 2 / 1 | 68 / 35 | 32 x 32 |
| 7 | 3 / 1 | 101 / 35 | 32 x 32 |
Step 3: separate canvas alignment from character motion
Equal frame rectangles do not guarantee that the character has a stable origin. Place each crop on the same canvas and mark a reference anchor. For a grounded idle, the center between the feet may be useful. For a walking action, inspect intended contact frames and body progression; do not force airborne or passing poses onto an identical lowest pixel.
Use a fixed visual ground guide and a stable root reference. If the entire drawing shifts upward by two pixels while pose and proportions remain identical, adjust the drawing's placement or pivot consistently. If the legs change length, a translation alone cannot repair the anatomy.
A cloak, sword or scarf can extend beyond the body. Aligning by the full opaque bounding box may move the torso when the accessory moves. Select a body anchor and record it, rather than centering every frame by its overall silhouette.
Step 4: play a deliberately slow loop
After crops and anchors are correct, inspect the frames in the intended order. Start slowly enough to see each transition, then return to the target speed. A GIF preview can help communication, but retain PNGs and timing notes for editing.
For the editorial eight-frame example, equal durations of 100 milliseconds produce an 800-millisecond loop, or 1.25 loops per second. This is a playback calculation, not a recommended walk speed. Motion should match the character's intended speed and the game's actual movement.
Look especially at the last-to-first transition. A repeated final pose can create a pause; a missing return transition can create a snap. Check whether the export includes a duplicate closing frame before deciding which frame to remove.
A repair table for common symptoms
Repair the smallest confirmed cause. If the sprite is cropped incorrectly, generating new art hides the original mistake and creates another candidate to audit. If the canvas is correct but the face changes, repacking does not solve identity drift.
Keep a frame log with source coordinates, action, duration, anchor and decision. Label a frame as repair when you know the required change. Label it reject when it is not worth keeping. Record why: 'frame 5 swaps satchel side' is more actionable than 'looks off'.
| Symptom | First check | Smallest useful repair |
|---|---|---|
| Every crop cuts the next figure | Cell width, gap and starting offset | Correct rectangles; keep the source art |
| Only the second row is wrong | Vertical gap or row origin | Correct top coordinates |
| Feet bounce in an idle | Body anchor and frame placement | Align to a reference; retain intended motion |
| Weapon swaps hands | Reference or mirroring drift | Correct that frame's art |
| Loop pauses at the seam | Duplicate frame or long duration | Review last-to-first timing |
| Soft edges in the engine | Import filtering and texture settings | Review the engine's pixel-art import settings |
Handoff and a practical stopping rule
Save the original image, the accepted frame sequence, a loop preview and a short text note containing frame order, cell geometry, duration and pivot assumptions. If a teammate has to guess these values, the asset is not yet a clear handoff.
For Godot, use its documented AnimatedSprite2D workflow to test either separate images or frames selected from a sheet. Aseprite can import or export sheets for frame-level editing. The exact engine setup belongs to the current engine documentation, while this audit establishes the file facts you supply to it.
Stop when the chosen action reads at gameplay size, the seam is intentional, anchors behave as expected and the file imports correctly in your target project. Passing this checklist does not prove every action, direction or platform will work. Audit a new action as a new sequence.