Sprites for Metroidvanias
A Metroidvania is a platformer with a map to explore and a hero who gains new moves. That means a long list of actions on one character, and many enemies that must look like one world.
| View | side |
|---|---|
| Size | 48–64 px characters |
| Sides | 1 (flipped) |

Sample project
Platformer character, side on: the .pixor project and its library model (CC0). The sheet on the left is what it renders.
What a Metroidvania needs
The hero carries the game. Beyond idle, walk, run, jump, fall, attack, hit and death, a Metroidvania adds moves over time: a dash, a wall slide, a double jump, a ground slam, a crouch. Each is another action on the same character.
Then come the enemies. Every area brings new ones, often a dozen per zone, plus bosses. Add doors, levers, save points, breakable walls, hazards and pickups, and the sprite list grows long. Keeping all of it in one style is most of the work.
The camera
Use a side view with no pitch. One camera facing right (East) is enough for most characters; the engine flips it for left. Characters that are not symmetrical can have a West camera too.
At 48 to 64 px the hero has room for clear poses, which matters when the player must read a dash from a jump in a few frames. Bosses can be two or three times taller. Sprite sizes goes through the trade-offs.
Scale and pivot
Keep one pixels-per-metre scale for the whole project. A boss is big because its model is big, and a bat next to it stays small. Pixor keeps one scale per project, so that holds even when sprites are made months apart.
Put the pivot at the feet. Pixor fixes the pivot to one pixel, so landing, crouching and attacking all stay on the floor. Render moves in place and let the game move the character; if a clip carries root motion, keep it in place in the action’s Inspector.
Animation
The motion library’s idle, walk, run, jump, attack, hit and death work on any humanoid skeleton and cover the base set. New moves come from your own clips: glTF or FBX, with clips in separate files if you like. Clips named after the model (hero@dash.glb) are found automatically; others are added with “Clips from a file…”.
Fast moves need few frames. In the Asset graph, the Sprites node can keep the pose extremes (Kept frames), and a Hold node holds a frame longer, such as the top of a jump. See animation timing.
Palette
Each area of the map often has its own mood: a cold cave, a burning forge, a drowned library. A palette per area keeps them apart, while the hero stays the same. Palette variants can write the same sheet in another palette, or with a hit-flash. Pixor has seven palettes built in and reads .hex and .gpl files. See limited palettes.
Free library assets that fit
- Enemies: the skeleton, bat, ghost, spider and slime.
- Level pieces: the door, lever, spike-trap, wall-torch and statue.
- Upgrades and pickups: the power-orb, heart, key and orb-pedestal.
Setting it up in Pixor
- Import your hero, or open the platformer sample.
- In the Scene step, click the camera “South” in the Outliner and set “Game” to a platformer.
- Set its Turn so the camera sees the right side (East). Set Width and Height for 48 to 64 px.
- In the Action step, pick every action the hero needs.
- In the Style step, pick a look, and use the same look for every enemy.
- Export. For Godot, the SpriteFrames output makes one animation per action; see Godot and exports.
Questions
Why 48 to 64 px instead of 32?
A Metroidvania hero gets many moves, and each needs a readable pose. The extra height gives room for a weapon, a cape or a dash trail. Bosses can be much larger at the same scale.
Do I need a West side?
Usually not. Render East and let the engine flip the sprite. Add a West camera if the hero holds something in one hand and the mirror looks wrong.
How do I add a new move late in development?
Add the clip to the model, pick it in the Action step and export again. The project gives the same pixels for the old actions, so the new frames match the rest of the sheet.