Skip to content

Sprites & animations

A sprite is a named subset of frames with a pivot point — your Hero, your Slime, your Coin. An animation is an ordered playback sequence of (frame, durationMs) pairs that targets a sprite's frames. Both live in the right panel under their own tabs.

This separation lets you share frames across multiple animations of the same sprite (idle, walk, jump can all draw from the same set of frames in different orders).


Sprites tab

Right panel → Sprites tab.

ControlWhat
+Create a new empty sprite
ListEach sprite shows its name, frame count, and a small thumbnail
ClickActivate the sprite — the Frames timeline filters to show only its frames
Pivotx, y inputs — the sprite's anchor point (used by exports for positioning)
× on hoverDelete the sprite (frames stay in the project)

The active sprite is highlighted in purple.

Add frames to a sprite

While a sprite is active, the Frames timeline shows a + Active frame to sprite button in its header. Click it to push the currently-active frame into the sprite's frameIds list.

To remove a frame from a sprite without deleting it from the project, hover the frame thumbnail (while sprite-filtered) and click the × that appears.

Reorder frames in a sprite

When the sprite is active, the timeline drag-reorder reorders the sprite's frame list, not the global frameOrder. (Outside sprite filtering, drag reorders the global order.)

Sprites tab and active sprite filter


Anims tab

Right panel → Anims tab.

An animation lives on a sprite. It has:

  • Name
  • Sprite reference (which sprite's frames it can use)
  • Loop modeloop / pingpong / once
  • Steps — ordered [{frameId, durationMs}, ...]
ControlWhat
+Create a new animation on the active sprite
Name inputInline rename
Loop selectorSwitch between loop / pingpong / once
Step listEach row is a frame thumbnail + ms input + delete
+ stepAdd the active frame to the end of the steps
× on hoverDelete a step

When you pick a frame inside an animation step, it must belong to the animation's sprite. (You can't have an animation whose steps reference frames outside its sprite.)

Anims tab with steps

Loop modes

ModePlayback
loop (default)1 → 2 → … → N → 1 → 2 → …
pingpong1 → 2 → … → N → N−1 → … → 1 → 2 → …
once1 → 2 → … → N → stop

Step durations

Each step has its own durationMs. When you add a step from the active frame, the duration is seeded from the frame's own duration. Override per-step in the input.


AnimationPreview widget

Below the animation's step list is a small live preview that loops the animation at its real durations. Use this to scrub timing.

The full-size Preview Window (P) plays whichever animation is currently active.


Workflow

  1. Draw your character on Frame 1 (idle pose).
  2. Duplicate Frame 1 → tweak slightly to make Frame 2 (idle blink).
  3. Create a sprite called Hero, add Frames 1 and 2 to it.
  4. Create an animation called idle on Hero, add Frames 1 and 2 as steps with 600 ms / 100 ms durations.
  5. Hit play in the AnimationPreview — Hero blinks every 600 ms.

Tips

  • Sprites and animations are separate so you can have one sprite (Hero) used in multiple animations (idle, walk, jump) without duplicating frames.
  • If you delete a frame, animations referencing it lose that step automatically.
  • If you delete a sprite, its animations are also deleted.
  • For exporting Aseprite-compatible JSON of a sprite + animation, see Sprite sheet export.

Motestack is a personal hobby project. The editor and these docs ship under no warranty — back up your `.mstack` files.