Making a 3D world fit a 1993 computer

Doom looked like a maze of connected rooms, but its engine avoided many calculations required by a fully three-dimensional world. The map was essentially a flat layout: rooms had floors and ceilings at set heights, and walls stood vertically. This approach, often called 2.5D, let the game create the sensation of moving through 3D space without tracking arbitrary shapes at every height.

That limitation was a deliberate engineering advantage. A computer of the period had to draw the scene using its main processor, without the dedicated 3D graphics hardware common today. The less the engine had to calculate, the more of the screen it could update quickly.

Sorting the scene before drawing it

Carmack’s engine used a structure called a binary space partition, or BSP tree. It divided the map into smaller regions and organized them so the engine could work out which walls were in front of the player and which were hidden behind others. The map’s BSP data was prepared ahead of time; during play, the engine could use it to traverse the visible areas in a useful order rather than repeatedly searching the whole level.

Once it knew what could be seen, the engine drew textured wall columns and filled in floors and ceilings. By concentrating effort on visible surfaces—and relying on the map’s constrained geometry—it avoided spending precious processing time on scenery the player could not see.

A limitation that shaped the game

The same rules that made Doom fast also shaped its levels. Its spaces could rise and fall, and stairs or windows could create convincing depth, but the engine could not freely stack one walkable room directly above another in the same location. Designers built within that boundary, using corridors, open rooms, and changes in height to make the world feel varied.

The result was not simply a faster way to draw a conventional 3D world. It was a carefully chosen model of what a game world needed to represent—enough geometry to make a player feel surrounded by space, with much of the complexity left out.