Skip to content

Export an engine-ready sprite sheet

A sprite sheet is the standard way to hand pixel art to a game engine: one image containing every frame laid out in a grid, which the engine slices into cells. Exporting one is simple. The part that goes wrong is the layout planning, so most of what follows is about columns, rows, and the importer contract.

Engines and runtimes import a single image and slice it. A sheet gives them a predictable grid where every frame is the same cell size, laid out in rows and columns. Plan the layout before you export, document it after, and the importer setup is straightforward.

The cell size is your canvas size times the scale, so a 32×32 sprite at 2× is a 64×64 cell. The layout pattern decides the column count.

One row per animation (say, 6 columns for a 6-frame walk cycle, 1 row) is the simplest contract. One row per direction (4 columns × 4 rows for a character with four facings of four frames each) suits multi-directional characters. Tag-aligned blocks, where each tag occupies its own rectangular region, suit projects shipping many animations in one sheet. Power-of-two packing (8 or 16 columns) suits atlas importers that prefer those dimensions.

Pick one before you touch the Export dialog.

Press Ctrl+S. Open Export, choose Sprite Sheet.

For Animation, choose All frames if you planned a multi-tag sheet, or a single tag if you want one row per export. Enter the column count from your plan; Pixel Art Studio lays frames left-to-right and wraps to the next row.

For scale, 1× is the source-of-truth; 2× or 4× is typical delivery. Engines usually want 1× and upscale in-engine. For variation, pick current, base, a named variation, or Export all variations for a sheet per skin.

Leave Include background color off so the sheet has transparency.

Write the layout down. This step is often skipped, and it prevents importer errors. After exporting, click Publish Version and record the layout in the comment, for example:

character_sheet: 8 cols × 6 rows, 64×64 cells (32×32 @ 2x), row order: idle, walk_l, walk_r, attack, hurt, death. Variants: base, fire, ice, poison exported separately.

The contract is recorded with the asset.

Worked example: a multi-direction character

Section titled “Worked example: a multi-direction character”

A 32×32 character with four directions, six frames each, is 24 frames total, tagged down (1–6), up (7–12), left (13–18), right (19–24). Export All frames with 6 columns at 2× scale. The result is 4 rows × 6 columns of 64×64 cells. Publish-comment it as char_4dir: 6 cols × 4 rows; row 1 down, 2 up, 3 left, 4 right; 64×64 cells and each direction’s position is unambiguous.

If the total frame count isn’t a clean multiple of the column count, the last row has empty cells. Either accept the gap (most importers handle it), pad your frame count to fill the row, or pick a column count that divides evenly.