Skip to content
Techniques & Technology

Isometric Projection

3D from 2D

Isometric projection created the illusion of three-dimensional space on 2D screens, enabling exploration games impossible with flat side-views.

sinclair-zx-spectrumcommodore-64amstrad-cpccommodore-amiganintendo-entertainment-system graphics3dgame-design 1982–present

Overview

Isometric projection displays three-dimensional scenes from a fixed angle where all three axes are equally foreshortened — no axis is preferred over another. On 8-bit computers, this created the impression of explorable 3D space while using only 2D sprite and tile techniques. Knight Lore (Spectrum, 1984), Marble Madness (arcade, 1984), and Solstice (NES, 1990) defined the look. The strategy genre adopted it (Civilization, SimCity 2000) and never let go — modern indies (Hades, Disco Elysium) keep it alive.

The mathematics

True isometric

True isometric uses 30° angles for the X and Z axes (measured from horizontal) with the Y axis straight up:

  • X-axis: 30° from horizontal (right and slightly down)
  • Z-axis: 30° from horizontal (left and slightly down)
  • Y-axis: 90° (vertical)

Each unit step in any axis projects to the same screen distance — true iso-metric (equal measure).

"Pixel isometric" (2:1 ratio)

Most computer games used a 2:1 ratio rather than true 30°:

  • For every 2 pixels horizontal, 1 pixel vertical along the X axis (and the same for Z, opposite direction).
  • Slightly off-true (the actual angle is atan(1/2) ≈ 26.57° rather than 30°).
  • Simpler maths — multiplications and divisions by 2 are shifts on 8-bit hardware.
  • Visually nearly identical to true isometric.

This is what Knight Lore, Solstice, and basically every 2D isometric game uses. Calling it "isometric" is technically inaccurate (purists call it dimetric or 2:1 projection), but the term has stuck.

Coordinate conversion

Convert from 3D world (tile_x, tile_y, tile_z) to 2D screen coordinates:

screen_x = (tile_x - tile_z) * (tile_width / 2)
screen_y = (tile_x + tile_z) * (tile_height / 2) - tile_y * tile_height

Where tile_width and tile_height are the on-screen dimensions of one tile (typically 32×16 for 2:1 isometric). Note tile_y is up, so it subtracts.

Inverse — screen back to tile (for click detection, mouse picking):

tile_x = (screen_x / (tile_width / 2) + screen_y / (tile_height / 2)) / 2
tile_z = (screen_y / (tile_height / 2) - screen_x / (tile_width / 2)) / 2

Rendering order

Objects must be drawn back-to-front (painter's algorithm) so closer objects overlay farther ones:

for z from far to near:
    for x from left to right:
        draw_tile(x, y, z)
        draw_objects_at(x, y, z)

For free-position objects (not tile-aligned), sort by depth = tile_x + tile_z + tile_y and draw in order.

See Y-Depth Sorting for the depth-sort details.

Collision detection

Keep world coordinates separate from screen coordinates:

  • Store position in 3D (x, y, z) (or 2D (x, z) plus height).
  • Calculate screen position only for display.
  • Collide in 3D space, not screen space — diagonal-on-screen sprites that are perpendicular in world space shouldn't collide based on screen overlap.

This is the lesson that Knight Lore established and every isometric game inherits: screen position is not world position.

The Filmation engine

Ultimate Play the Game's Filmation engine — Knight Lore, Alien 8, Pentagram, Nightshade, Gunfright — is the canonical 8-bit isometric implementation:

FeatureImplementation
Solid objectsZ-ordered sprite masking (write-mask + write-data per object)
Room-based worldEach room rendered fresh as the player enters
Object interactionPhysics computed in 3D space, displayed in 2D
Memory efficiencyCompact room data; objects shared across rooms

See Filmation Engine for the deep dive.

Tile-based isometric

Common in strategy games (Civilization, SimCity 2000, Theme Hospital, Diablo):

ElementStructure
Ground tilesDiamond-shaped (parallelogram-projected square)
ObjectsPlaced at tile positions, may overhang neighbouring tiles
HeightStacked tiles or vertical offset
Multi-tile objectsBig buildings span 2×2, 3×3 tile footprints

Challenges

Depth sorting in complex scenes

Objects can overlap in non-trivial ways:

  • A character moving diagonally between two pillars must be sorted between them.
  • Multi-tile objects must be sorted by their entire footprint, not just their anchor.
  • Different heights complicate things further (a flying creature behind a wall but above it in Y).

Standard solution: depth = tile_x + tile_z + tile_y with tie-breakers for stable rendering.

Click / touch detection

Convert screen-space input to world-space tile via the inverse formula. UI complications: clicks on tile boundaries need rounding rules.

Movement

Eight-direction movement is natural — diagonals along the X/Z axes feel "natural" because they correspond to game-world directions:

  • Up arrow → moves toward back corner (decreasing screen Y, but in world space a diagonal between -X and -Z).
  • Left arrow → moves left-screen, which in world space is "decrease X and increase Z".
  • Rotational input via four-way controllers mapping to world axes is its own design problem.

Notable games

GameYearPlatformInnovation
Qbert**1982ArcadeEarly commercial isometric
Zaxxon1982ArcadeIsometric shoot-em-up; popularised the look
Ant Attack1983ZX SpectrumOne of the first 8-bit isometric games
Knight Lore1984ZX SpectrumFilmation engine; defined 8-bit isometric
Marble Madness1984ArcadeAtari's isometric ball-rolling masterpiece
Alien 81985ZX SpectrumFilmation engine refinement
Batman1986ZX SpectrumKnight Lore engine licensed
Head Over Heels1987ZX SpectrumTwo-character isometric puzzle
Solstice1990NESLate console-era isometric
Populous1989VariousBullfrog's god game popularised isometric on 16-bit

Modern use

Isometric persists in many genres:

  • City builders: SimCity 2000 / 3000 / 4, Tropico, Cities: Skylines (modern uses true 3D but isometric-feeling camera).
  • Tactical RPGs: Final Fantasy Tactics, Tactics Ogre, Disgaea, XCOM.
  • Action RPGs: Diablo series, Path of Exile, Torchlight.
  • Strategy: Civilization II / III used true isometric; later moved to 3D-with-isometric-camera.
  • Indie: Hades, Bastion, Transistor, Pyre (Supergiant).
  • Atmospheric / narrative: Disco Elysium.

See also