This guide covers importing AutoSprite exports into GameMaker as Sprites. AutoSprite's default export is a 5×5 grid = 25 frames per animation, and the easiest way into GameMaker is to use the individual frame PNGs from the frames/ folder.
Need to generate the asset first? Start with the GameMaker sprite sheet generator workflow, then use this guide for Sprite import and Object wiring.
Download Format
On the Spritesheets screen, click Download and pick a format:
| Format | What you get | Best for GameMaker |
|---|---|---|
| AutoSprite Format (ZIP) | Folder per animation with spritesheet.png, atlas.json, and frames/01.png … 25.png | ✅ Recommended |
| Stream Avatars Format (PNG) | Single PNG with each animation as a row (configurable frames/row + size) | Works as a single strip grid |
Quick Start (Recommended: Frames Folder)
GameMaker can build a Sprite directly from a set of numbered PNGs. Since AutoSprite already exports 01.png through 25.png in order, this is the cleanest path.
Download AutoSprite Format
On the Spritesheets screen, click Download → AutoSprite Format → Download ZIP. Unzip it.
You'll get one folder per animation:
MyCharacter.zip
├── idle/
│ ├── spritesheet.png
│ ├── atlas.json
│ └── frames/
│ ├── 01.png
│ ├── 02.png
│ └── … 25.png
├── walk/
│ └── …
└── run/
└── …
Create a new Sprite in GameMaker
Right-click inside the Asset Browser → Create Sprite. Name it (e.g. spr_player_idle).
Import the frames
In the Sprite properties window, click the Import button (not Edit Image — that opens the per-frame Image Editor). In the file picker:
- Multi-select
01.pngthrough25.pngfrom the animation'sframes/folder - Click Open
GameMaker adds each PNG as a sub-image (frame), in the order your OS returns the multi-select, and sets the sprite dimensions to the frame size (e.g. 256×256 by default).
On macOS the multi-select order may not be alphabetical. If frames import scrambled, import them one at a time in order, or use Edit Image → right-click sub-image strip → Reorder.
Set origin and playback speed
In the Sprite properties window:
- Origin: Middle Centre for most characters, or Bottom Centre for ground-aligned feet
- Frames per second (in the Playback section): start at 12 for idle/walk, 15–20 for run and attack. The unit toggle lets you switch between "Frames per second" and "Frames per game frame".
Close the window.
Repeat per animation
Create one Sprite per animation folder (spr_player_idle, spr_player_walk, spr_player_run, etc.).
Alternative: Strip Image (Single Row)
GameMaker's built-in strip image import only handles a single horizontal row. It does NOT slice a 2D grid — there's no "frames per row" field. That means AutoSprite's default 5×5 spritesheet.png can't be imported this way directly; stick to the frames folder path above, or re-export as a strip.
If your animation fits on one row:
Rename to the strip convention
Rename the PNG to include _stripN where N is the frame count — e.g. idle_strip25.png.
Create a Sprite by dragging
Drag the _stripN.png into the Asset Browser (or right-click → Create Sprite, then Import it). GameMaker reads the number from the filename and slices the PNG into N frames of total_width / N.
Stream Avatars Format for GameMaker
The Stream Avatars single-PNG export is row-per-animation, so each animation is already laid out horizontally. To bring one animation into GameMaker:
- In AutoSprite export settings, set frames-per-row to match your per-animation frame count (e.g. 25 to match the default).
- Crop one row (one animation) to a separate PNG and rename it with the
_stripNsuffix above (e.g.run_strip25.png). - Drag in — GameMaker slices it into N frames.
For multi-animation sheets, the frames-folder path above is less fiddly.
Driving the Sprite in an Object
Once your Sprites are imported, drive them from an Object's Step event:
// Create event
sprite_index = spr_player_idle;
image_speed = 1;
// Step event
if (keyboard_check(vk_right)) {
sprite_index = spr_player_run;
image_xscale = 1;
} else if (keyboard_check(vk_left)) {
sprite_index = spr_player_run;
image_xscale = -1;
} else {
sprite_index = spr_player_idle;
}
Chain an Attack Back to Idle
// Animation End event
if (sprite_index == spr_player_attack) {
sprite_index = spr_player_idle;
}
Using Sequences (2.3+)
If you want blended transitions or keyframed events, drop each Sprite into a Sequence asset:
Create a Sequence
Right-click Sequences → Create → Sequence.
Add your sprites
Drag spr_player_idle, spr_player_run, etc. onto the Sequence timeline. Each animation becomes a track you can re-time, crossfade, or trigger with Broadcast Events.
Pixel Art Tips
In Game Options → [your platform] → Graphics, uncheck Interpolate Colours Between Pixels to keep pixel art crisp. This is a per-platform global — GameMaker doesn't expose a per-sprite or per-Texture-Group toggle. For runtime control use gpu_set_texfilter(false).
Common Issues
Frames import out of order: GameMaker imports sub-images in the order your OS returns the multi-select, which isn't always alphabetical (macOS in particular). AutoSprite zero-pads filenames (01.png, 02.png, …), which usually keeps order stable — but if it doesn't, reorder via Edit Image → right-click the sub-image strip → Reorder.
Single sprite looks stretched: You imported the whole spritesheet.png as one PNG, so GameMaker treated the full 5×5 grid as a single frame. Either use the frames folder path (one file per frame) or re-export as a _stripN.png single row.
Character floats or sinks in-game: Origin is wrong. Change it to Bottom Centre so the feet sit on the tile.
Animation plays too fast/slow: The Frames per second value on the sprite controls playback, not the object's image_speed multiplier. Try 12–15 fps for pixel art.
Attack animation fires idle mid-loop: The Animation End event fires every time the last frame finishes — including on a looping idle — so always gate with if (sprite_index == spr_player_attack) before swapping back to idle.
Learn More
Need Help?
Join DiscordPost a screenshot of your import dialog and we'll help you get the frame order right.
