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)
Four by two frame grid with two pixel margins and one pixel gaps, enlarged two times01234567
Original geometry diagram: eight 32 × 32 cells on a 135 × 69 sheet, enlarged 2×. Numbers show row-major frame order; this is a layout schematic, not generated sprite art.

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.

FrameColumn / rowLeft / topSize
00 / 02 / 232 x 32
11 / 035 / 232 x 32
22 / 068 / 232 x 32
33 / 0101 / 232 x 32
40 / 12 / 3532 x 32
51 / 135 / 3532 x 32
62 / 168 / 3532 x 32
73 / 1101 / 3532 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'.

SymptomFirst checkSmallest useful repair
Every crop cuts the next figureCell width, gap and starting offsetCorrect rectangles; keep the source art
Only the second row is wrongVertical gap or row originCorrect top coordinates
Feet bounce in an idleBody anchor and frame placementAlign to a reference; retain intended motion
Weapon swaps handsReference or mirroring driftCorrect that frame's art
Loop pauses at the seamDuplicate frame or long durationReview last-to-first timing
Soft edges in the engineImport filtering and texture settingsReview 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.

Sources, template and related reading