1. Download the ZIP
- Open your sprite (from Drive or the public gallery) and choose ZIP under Download Assets.
- Unzip it. You need
normalized_spritesheet.png, theframes/folder andspritesheet.json. - Open
README.txt: it lists the cell size (for example128 x 128) and the grid (for example4 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. Add the sheet to your project
- Copy
normalized_spritesheet.png(andspritesheet.jsonif you want the script below) into your project, for exampleres://sprites/knight/. - For pixel art, set Project Settings → Rendering → Textures → Canvas Textures → Default Texture Filter to Nearest, or set Texture → Filter to Nearest on the node, so pixels stay crisp.
3. Slice it with AnimatedSprite2D
- Add an AnimatedSprite2D node. In the Inspector, set Sprite Frames → New SpriteFrames, then click it to open the SpriteFrames panel.
- Click Add Frames from Sprite Sheet (the grid icon) and pick
normalized_spritesheet.png. - Set Horizontal to the number of columns and Vertical to the number of rows from README.txt. The preview snaps to the cells.
- Select the cells for one animation (for a 4-direction walk cycle, row 1 is
walk_down, row 2walk_left, row 3walk_right, row 4walk_up) and click Add Frame(s). - Rename the animation to match, set its speed (FPS) and turn on looping. Repeat for each row.
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. AnimatedSprite2D is centered by default; use Offset to move the pivot.
Alternative: Sprite2D with hframes and vframes
- Add a Sprite2D, set Texture to the sheet, then set Animation → Hframes to the column count and Vframes to the row count.
- Animate the Frame property with an AnimationPlayer. Frame 0 is the top-left cell and numbering continues left to right, row by row.
Optional: build SpriteFrames from spritesheet.json
Walk cycles, action sets, enemy variants, VFX and creative sheets include an animations map. This script turns it into a SpriteFrames resource with the right names, FPS and looping.
func build_sprite_frames(json_path: String, sheet: Texture2D) -> SpriteFrames:
var data: Dictionary = JSON.parse_string(FileAccess.get_file_as_string(json_path))
var frames := SpriteFrames.new()
frames.remove_animation("default")
for anim_name in data.get("animations", {}):
var anim: Dictionary = data["animations"][anim_name]
frames.add_animation(anim_name)
frames.set_animation_speed(anim_name, anim["fps"])
frames.set_animation_loop(anim_name, anim["loop"])
for frame_name in anim["frames"]:
var rect: Dictionary = data["frames"][frame_name]["frame"]
var atlas := AtlasTexture.new()
atlas.atlas = sheet
atlas.region = Rect2(rect["x"], rect["y"], rect["w"], rect["h"])
frames.add_frame(anim_name, atlas)
return framesJSON files aren't imported as resources. When you export the game, add *.json to the export preset's non-resource file filter, or convert the result to a .tres SpriteFrames in the editor.
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 type | FPS |
|---|---|
| 4-direction walk cycles | 8 |
| Character action sets | 10 |
| Enemy idle animations | 6 |
| VFX effects | 12 |
| Creative animations | 8 |