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.

zx-spectrumC64amstrad-cpcNES graphics3dgame-design 1982–present

Overview

Isometric projection displays three-dimensional scenes from a fixed angle where all three axes are equally foreshortened. On 8-bit computers, this created the impression of explorable 3D space while using only 2D sprite and tile techniques. Knight Lore, Marble Madness, and Solstice defined the look.

The mathematics

Standard isometric

True isometric uses ~30° angles:

  • X-axis: 30° from horizontal
  • Y-axis: 90° (vertical)
  • Z-axis: 30° from horizontal (opposite direction)

Pixel isometric (2:1)

Games often used 2:1 ratio:

  • For every 2 pixels horizontal, 1 pixel vertical
  • Simpler maths for 8-bit processors
  • Visually similar to true isometric

Coordinate conversion

Converting 3D to screen coordinates:

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

Rendering order

Objects must be drawn back-to-front (painter’s algorithm):

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

Or sort by depth:

depth = tile_x + tile_z

Collision detection

Separate world coordinates from screen:

  • Store position in 3D (x, y, z)
  • Calculate screen position for display
  • Collide in 3D space, not screen space

The Filmation engine

Ultimate’s approach (Knight Lore):

FeatureImplementation
Solid objectsZ-ordered sprite masking
Room-basedEach room calculated fresh
Object interactionPhysics in isometric space
Memory efficiencyRoom data, not full map

Tile-based isometric

Common in strategy games:

ElementStructure
Ground tilesDiamond-shaped
ObjectsPlaced at tile positions
HeightStack tiles or offset

Challenges

Depth sorting

Objects can overlap in complex ways:

  • Characters moving between objects
  • Multi-tile objects
  • Different heights

Click detection

Converting screen clicks to tiles:

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

Movement

Eight-direction movement maps to 3D:

  • “Up” moves toward back corner
  • “Left” moves toward left corner
  • Diagonal movement along axes

Notable games

GameYearPlatform
Zaxxon1982Arcade
Knight Lore1984Spectrum
Marble Madness1984Arcade
Batman1986Spectrum
Head Over Heels1987Spectrum
Solstice1990NES

Modern use

Isometric persists in:

  • City builders (SimCity 2000)
  • Tactical RPGs (Final Fantasy Tactics)
  • Action RPGs (Diablo)
  • Indie games (Hades)

See also