Skip to content

GameMaker 2024 and newer

How to import a sprite sheet into GameMaker

In GameMaker each sprite asset is one animation. Import Strip Image can cut a whole row (or the whole grid) of a uniform sheet into frames, so each animation row becomes its own sprite.

1. Download the ZIP

  1. Open your sprite (from Drive or the public gallery) and choose ZIP under Download Assets.
  2. Unzip it. You need normalized_spritesheet.png, the frames/ folder and spritesheet.json.
  3. Open README.txt: it lists the cell size (for example 128 x 128) and the grid (for example 4 columns x 4 rows). You'll type these numbers into the engine.

Pro Motion sheets store the exact playback rate in spritesheet.json (animations → fps). For other sheets the defaults are listed below.

2. Import a row with Import Strip Image

  1. Create a new Sprite asset (for example spr_knight_walk_down) and click Edit Image to open the Sprite Editor.
  2. Choose Image → Import Strip Image and select normalized_spritesheet.png.
  3. Set Frame Width and Frame Height to the cell size from README.txt, and Frames Per Row to the column count.
  4. For a single animation row, set Number Of Frames to the column count and Vertical Cell Offset to the row index (0 for the first row). For a one-animation sheet (creative mode), set Number Of Frames to the total frame count instead.
  5. Leave pixel offsets and separation at 0, then click Convert.

Repeat per row for multi-animation sheets: a 4-direction walk cycle becomes four sprites (walk_down, walk_left, walk_right, walk_up).

3. Set the origin and speed

  1. Set the sprite Origin to Middle Centre to match how frames sit in their cells, or Bottom Centre for platformer characters.
  2. Set the playback speed to Frames per second and enter the FPS for the sheet.
  3. For pixel art, turn off texture interpolation in Game Options → Graphics → Interpolate colours between pixels.

Every frame is centered inside its cell, so a center pivot keeps the animation steady. If you want the pivot at the character's feet, set it once to the same point for every frame; because all cells are the same size, one value works for the whole sheet.

Alternative: import the individual frames

  1. In the Sprite Editor choose Image → Import and multi-select the PNGs from frames/. Each file becomes one frame, in filename order (frame_001, frame_002, …).

Reference: what's in the ZIP

normalized_spritesheet.png
The sheet on a uniform grid: every cell is the same size, frames read left to right, top to bottom, on a transparent background.
frames/frame_001.png …
One PNG per frame, numbered from 001 in playback order, each the size of one cell.
spritesheet.json
Engine-friendly metadata: meta.size, a frames map with the x, y, w, h rectangle and duration (ms) of every frame, and for animated modes an animations map with frame names, fps and loop.
metadata.json and README.txt
Cell width and height, the grid (columns × rows), frame count and the original prompt.
original.png
The source image before the frames were normalized onto the grid.

Default playback rates

Sheet typeFPS
4-direction walk cycles8
Character action sets10
Enemy idle animations6
VFX effects12
Creative animations8

Frequently asked questions

How do I split a multi-row sprite sheet into GameMaker sprites?

Import the same PNG once per row with Import Strip Image, setting Number Of Frames to the column count and Vertical Cell Offset to the row index. Each import becomes one sprite asset.

What speed should GameMaker sprites play at?

Set the sprite speed to frames per second and use the fps value in spritesheet.json. The defaults are 8 FPS for 4-direction walk cycles, 10 FPS for character action sets, 6 FPS for enemy idle animations, 12 FPS for vfx effects, 8 FPS for creative animations.

Where should the sprite origin go?

Frames are centered in their cells, so Middle Centre keeps the animation steady. Use Bottom Centre if you want the origin at a character's feet.