Skip to content
AI Sprite Maker

Making better sprites

4 and 8 directions

Updated November 6, 2026
On this page
  1. Which do you need?
  2. What it costs
  3. How directions are laid out
  4. Mirroring to save credits
  5. Picking the direction in code
  6. Side-view-only motions

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 gameDirectionsWhy
Platformer, side-scroller, fighting game1 (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)8Diagonals look wrong if you snap them to 4
Isometric tactics with grid movement4 diagonalsCharacters 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

WhatCredits
Turnaround: the still character in 4 directions8
Turnaround: the still character in 8 directions14
Any library animation10 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

Still stuck? Email hello@aispritemaker.com. A developer reads every message.