Animation is flipping through frames fast enough to look like motion. You draw the frames, then tell the engine which order and speed to play.
Draw the motion
Start with 4–6 frames for a walk cycle.
Keep feet on the same baseline.
Use onion skin to line up the next pose.
Idle can be 2 frames — subtle bob is enough for quests.
Frame timing
FPS = how many frames per second. 8–12 fps reads well for pixel art. 24 fps is smoother but more drawing work.
In Aseprite
Add frames in the timeline (duplicate, nudge limbs).
Set frame duration (e.g. 100 ms per frame).
Preview with Play.
Export sprite sheet when it loops cleanly.
In Godot
AnimatedSprite2D or AnimationPlayer. Build SpriteFrames: add animation name 'walk', insert frames from the sheet, set speed (fps). Flip h for facing left.
In Phaser
After load.spritesheet, create anims entry with start, end, frameRate, repeat. this.anims.create({ key: 'walk', frames: ..., frameRate: 10, repeat: -1 }).
Raw Canvas
Track frameIndex and timer. Each tick, advance index and drawImage the right source rectangle from the sheet.
Common fixes
Slidey feet → fewer frames or hold contact poses longer.
Buzzing edges → export at 1× scale, nearest neighbor.
Wrong frame order → label rows in the sheet file.
Too fast → lower frameRate or longer ms per frame.
Subscribe
What is a Daily Quest?
Each issue ends with a creative challenge. Every pathway gets its own prompt in the same
newsletter — art, writing, programming, audio, and more.