How many directions a character needs depends on your camera, not on how fancy you want the game to look.
Which do you need?
| Your game | Directions | Why |
|---|---|---|
| Platformer, side-scroller, fighting game | 1 (side view) | Flip the sprite horizontally to face the other way |
| Top-down RPG or adventure with grid or 4-way movement (Zelda-like, Pokémon-like) | 4 (down, left, right, up) | Players move in four directions; diagonals use the nearest one |
| Top-down or isometric with free 360° movement (twin-stick, ARPG, RTS) | 8 | Diagonals look wrong if you snap them to 4 |
| Isometric tactics with grid movement | 4 diagonals | Characters only face the four isometric directions |
Start with fewer. You can add more directions later from the same character without redrawing it.
What it costs
| What | Credits |
|---|---|
| Turnaround: the still character in 4 directions | 8 |
| Turnaround: the still character in 8 directions | 14 |
| Any library animation | 10 per direction |
So “walk” in 4 directions is 4 × 10 = 40 credits, and in 8 directions 80 credits. A turnaround is optional; it’s useful for checking the character from every side before you spend credits on animations, and as a reference for later edits.
How directions are laid out
Each direction is one row of the sprite sheet. The row order is listed in the directions array in the export’s JSON, and the Godot and Aseprite exports name each animation after its direction (for example hero_walk_down). For 4 directions the order is usually:
row 0: down
row 1: left
row 2: right
row 3: up
Always read the order from the metadata rather than hard-coding it, in case you exported a subset.
Mirroring to save credits
For a symmetric character you can generate left only and flip it for right in your engine (flip_h in Godot, flipX in Unity’s SpriteRenderer and in Phaser). That cuts a 4-direction animation from 4 to 3 rows, and an 8-direction one from 8 to 5 (down, down-left, left, up-left, up).
Mirroring breaks when the character isn’t symmetric:
- a sword always in the right hand would swap hands;
- an eyepatch, a side ponytail or a shoulder pad would jump sides;
- text or emblems on clothing would read backwards.
Players notice hand-swapping weapons more than you’d think. For your main character it’s usually worth paying for the extra direction; for background NPCs and enemies, mirroring is fine.
Picking the direction in code
For 4 directions, compare the absolute x and y of the movement vector and pick the larger axis. For 8, convert the angle to one of eight 45° sectors:
const DIRS8 := ["right", "down_right", "down", "down_left", "left", "up_left", "up", "up_right"]
func dir8(v: Vector2) -> String:
var i := wrapi(roundi(v.angle() / (PI / 4.0)), 0, 8)
return DIRS8[i]
Match the names to the ones in your export. Full engine examples are in the Godot guide and Godot 4 tutorial.
Side-view-only motions
A few motions, like climbing a ladder, only make sense from one angle, so they’re available in 1 direction. The motion library lists which views each motion supports, and the generator only offers valid combinations.
Related: How credits work · Exporting sprites to your engine