page_title: Development of Doom
section_title: Programming
hierarchical_section_title: Development of Doom / Programming
context_page_description: Doom, a first-person shooter game by id Software, was released in December 1993 and is considered one of the most significant and influential titles in video game history. Development began in November 1992, with programmers John Carmack and John Romero, artists Adrian Carmack and Kevin Cloud, and designer Tom Hall. Late in development, Hall was replaced by Sandy Petersen and programmer Dave Taylor joined. The music and sound effects were created by Bobby Prince.
  The Doom concept was proposed in late 1992, after the release of Wolfenstein 3D and its sequel Spear of Destiny. John Carmack was working on an improved 3D game engine from those games, and the team wanted to have their next game take advantage of his designs. Several ideas were proposed, including a new game in their Commander Keen series, but John proposed a game about using technology to fight demons inspired by the Dungeons & Dragons campaigns the team played.
context_section_description: Doom was programmed largely in the ANSI C language, with a few elements in assembly language, on NeXT computers running the NeXTSTEP operating system. The data, including level designs and graphics files, is stored in WAD files, short for "Where's All the Data". This allows for any part of the design to be changed without needing to adjust the engine code. Carmack had been impressed by the modifications made by fans of Wolfenstein 3D, and wanted to support that with an easily swappable file structure, and released the map editor online.
  Romero and Carmack spent the early stage of development focusing on engine features instead of the game concept. Wolfenstein had required levels to be a flat plane, with walls at the same height and at right angles; while the Doom world was still a variation on a flat plane, in that two traversable areas could not be on top of each other, it could have walls and floors at any angle or height, allowing greater level design variety. The fading visibility in ShadowCaster was improved by adjusting the color palette by distance, darkening far surfaces and creating a grimmer, more realistic appearance. This concept was also used for the lighting system: rather than calculating how light traveled from light sources to surfaces using ray tracing, the engine calculates the "light level" of a section of a level, which can be as small as a single stair step, based on its distance from light sources. It then darkens the color palette of that section's surface textures accordingly. Romero used the map editing tool he developed to build grandiose areas with these new possibilities, and came up with new ways to use Carmack's lighting engine such as strobe lights. He also programmed engine features such as switches and movable stairs and platforms.
  In the first half of 1993, Carmack worked on improving the graphics engine. After Romero's level designs started to cause engine problems, he researched and began to use binary space partitioning to quickly select the portion of a level that the player could see at any given time. In March 1993, the team stopped work on Doom to spend three weeks building a Super Nintendo Entertainment System port of Wolfenstein 3D, after the contractor hired for the port had made no progress. Taylor, along with programming other features, added cheat codes; some, such as "idspispopd", were based on ideas their fans had come up with while eagerly awaiting the game. By late 1993, Doom was nearing completion and player anticipation was high, spurred on by a leaked press demo. John Carmack began to work on the multiplayer component; within two weeks he had two computers playing the same game over the internal office network. Soon, the office was playing four-player deathmatch games.
caption: A NeXTstation computer
exif: {}