Skip to main content

Sprite Alignment QA: A Fixed-Canvas Acceptance Test

Updated 7 min readMarkdown
Sprite Alignment QA: A Fixed-Canvas Acceptance Test

A sprite alignment test needs a fixed outer canvas and a named point on the character. Keep every frame at the same top-left position, then compare that point through the action. A moving silhouette alone cannot tell you whether the character has drifted.

This workflow is for an artist or developer deciding whether a frame sequence is ready for integration. It separates source-frame alignment from drawing settings in the game. It is a proposed acceptance procedure, not a report that any particular asset has passed.

Key Takeaways

  • Choose an anchor that describes the character's role in the action, such as a planted foot or body root.
  • Compare frames on the same canvas without repositioning them to match their visible edges.
  • Judge feet, torso, and outer silhouette separately so intended movement does not become a false failure.
  • Record the affected frames and coordinates before deciding to accept or revise.

Define the anchor before comparing frames

The anchor is the point whose movement you intend to evaluate. It is a semantic choice: a planted foot, hip center, or another point that makes sense for the action. Write down both the landmark and the phase in which it should remain stable.

For a standing idle, a ground contact point can be useful. For an airborne pose, the same foot is no longer a stationary reference. A recoil action may deliberately shift the torso while the feet stay planted. A single rule such as “all visible pixels must stay centered” would reject these valid changes.

Use a short contract before opening the comparison:

Field Example acceptance contract
Action Standing idle
Primary anchor Center of the planted left foot at ground contact
Coordinate system Source canvas, origin at top-left; x increases right, y increases down
Stable interval Frames where the left foot is planted
Allowed change Breathing motion in shoulders and torso
Review tolerance Set by this asset's intended display scale and art direction

The tolerance belongs to the project. Do not invent a universal pixel limit after seeing the result. If the action has no stable contact point, define an expected path instead, then evaluate whether the path is intentional and continuous.

Keep the outer canvas fixed

Place every frame at the same top-left coordinate in a comparison document. Preserve the full frame rectangle, including empty space. Switch between frames or overlay them with reduced opacity; do not drag each pose into visual alignment.

The sprite jitter diagnosis guide recommends comparing poses on the same canvas and distinguishing the drawing's bounds from its anchor. That distinction prevents the comparison process from hiding the error it is meant to find.

Use this sequence:

  1. Keep an untouched copy of the source sequence.
  2. Confirm that every comparison layer uses the intended outer canvas.
  3. Place all layers at the same top-left coordinate.
  4. Mark the agreed anchor on a separate reference layer.
  5. Alternate a reference frame with each candidate frame.
  6. Record anchor coordinates before making a correction.

If frames arrive with different outer dimensions, stop this test and resolve their intended placement first. Centering each frame by its visible shape creates a new placement rule. It does not recover the original one.

Compare feet, torso, and silhouette separately

A stable foot with moving shoulders tells a different story from a whole character shifting sideways. Inspect those regions independently before moving any pixels.

Start with the primary anchor during its stable interval. Then inspect a secondary landmark, such as the hip or chest center. Finally, examine the outer silhouette for changes caused by clothing, hair, a weapon, or the action itself.

Observation on the fixed canvas Likely interpretation to investigate Next comparison
Planted foot and torso both shift together Whole-pose placement drift may be present Compare their coordinate changes across adjacent frames
Foot stays put while torso bends Pose motion may be intentional Compare with the action's planned body movement
Torso stays put while a weapon extends Silhouette expansion may explain the visible change Keep the body reference fixed and inspect the weapon path
Only one frame changes position abruptly A local placement error is possible Compare that frame with both neighbors

These are diagnostic branches, not automatic verdicts. A deliberate hop can move feet and torso together. The action contract supplies the missing meaning.

Do not use the alpha bounding box as a substitute for a body root. The PNG specification's alpha representation describes pixel opacity, including partial transparency. It does not define a character landmark. The resulting practical inference is that visible-pixel bounds can describe where artwork exists, but cannot establish where a character's root belongs.

Allow the displacement the action requires

Judge a jump against its intended trajectory, not against a planted-foot rule. The same applies to a sit-down, knockback, lean, or recoil. The alignment guide explicitly distinguishes intended action displacement from unwanted jitter. (Source)

Divide the action into phases if needed: contact, departure, travel, and return. Mark which anchor is meaningful in each phase. A foot may be the useful reference during contact; the hips may be a better reference during travel.

If the intended trajectory is unknown, record “requires art-direction review.” Moving every pose toward a common center would make the sequence look stable while changing the action. An acceptance test should expose that uncertainty rather than silently resolve it through edits.

Check drawing settings when the source passes

A sequence that stays aligned in the fixed-canvas comparison can still look displaced after import. Reproduce the comparison with the game's actual drawing settings before changing the source.

In Godot, AnimatedSprite2D exposes centered and offset drawing properties. Its documentation also notes that centering a texture can place it between pixels in relevant cases. Record those settings when comparing an engine preview with the source. (Godot AnimatedSprite2D documentation)

If the source comparison passes and the game view fails, investigate the drawing origin and offsets. If both fail at the same frames, return to source placement. If the views disagree only during intentional travel, check whether both use the same action and anchor contract.

Record an accept-or-revise decision

Keep coordinates and observations beside the decision so another reviewer can repeat it. Copy this table for each sequence:

Record Value to enter
Asset and revision File name or asset identifier; revision
Action and frame order Action name; ordered frame list
Canvas and placement Width × height; shared top-left coordinate
Anchor contract Landmark; stable phases or expected path; tolerance
Affected frames Frame identifiers and measured anchor coordinates
Secondary check Torso and silhouette observations
Intended displacement Accepted movement and its reason
Game comparison Drawing settings; whether source and game agree
Decision Accept / revise / requires art-direction review
Follow-up Specific frames to change; reviewer; date

Accept when the observed movement matches the agreed anchor contract and the destination draws the sequence as intended. Revise when unexplained movement remains. After a correction, repeat the same comparison with the same coordinate system; changing the test at the same time makes the result hard to interpret.


Written by the FrameSprite Workflow Team, which maintains the linked sprite tool and guides and has a commercial interest in them. AI assisted the drafting of this source-based workflow. No asset acceptance test is claimed here. Send corrections through the contact page.

About the author

  • We operate FrameSprite, a browser tool for indie game asset workflows. We publish practical sprite-sheet and animation export guides with downloadable examples, verification methods, and explicit limitations. Editorial ownership and corrections: https://www.framesprite.com/about#workflow-team. Contact: https://www.framesprite.com/contact.

No comments yet. Be the first to comment.

More from this blog