An engine becomes a shared instrument
For Quake (1996) Carmack wanted true three dimensions: rooms over rooms, slopes, arches, and monsters built as models rather than flat pictures. Michael Abrash, who joined id in March 1995 and later wrote the work up in his Graphics Programming Black Book, records how many ways Carmack tried to decide what was visible. The design that shipped came, in Abrash’s account, after a weekend of work and a thought at 3:30 on a Monday morning: precompute, for every leaf of the map’s BSP tree, which other leaves could ever be seen from it. Stored as one bit per leaf and compressed, this potentially visible set fell to about 20 KB for a good-sized level. Abrash describes the effect on screen: complex scenes stopped being much slower than simple ones, and a spot where the frame rate had sunk into single digits now turned smoothly. Carmack, he adds, denied any “Eureka!” moment and called it a logical evolution.
Lighting was moved out of the frame too. The level compiler casts light onto a grid on every surface, one value every 16 texels; at run time Quake combines that light map with the tiled texture into a lit “surface”, caches it, and reuses it while it stays in view. Mipmapping kept that cache to about 600 KB at 320×200. The player sees soft-edged shadows and torchlight that stays fixed to the walls as the view turns. Abrash credits the shadow-edge filtering to a suggestion by Billy Zelsnack. Around the engine were programmers Abrash and John Cash; designers Romero, Petersen, American McGee and Tim Willits; artists Adrian Carmack, Kevin Cloud and Paul Steed; and Trent Reznor and Nine Inch Nails for sound.
Quake’s production was hard, and it ended the original partnership. Creative differences with Romero ran through the project and contributed to his departure after it shipped. On 8 August 1996 Carmack’s public .plan file said only: “Romero is now gone from id.” Six days earlier he had published his plan for QuakeWorld, admitting that he had designed Quake’s networking for connections under 200 milliseconds while most players dialled in through modems at 300 ms or worse. His answer was client-side prediction: the player’s own machine guesses the result of each movement, while “the server is still the final word.” He was frank about the cost. You would seem to run closer to doors before they opened, and shots could leave from where you had been rather than where you were. QuakeWorld was released in December 1996; it is a compromise players of later online shooters will recognise.
The Quake II (1997) and Quake III Arena (1999) engines were licensed to other studios, so Carmack’s choices shaped games he never worked on. id also opened its old code. Doom’s source arrived in December 1997 with a README in which Carmack lists what he would now change (“using polar coordinates for clipping comes to mind”). Quake followed under the GPL in 1999, a licence chosen, its readme explains, because mod teams had kept improved versions closed and sometimes lost them; by Christmas 1999 Carmack was answering complaints that players were using the code to cheat. Doom 3 (2004) reversed the bargain of the 1990s. Instead of baking light in advance, its renderer, released in 2011, fills the depth buffer first and then draws surfaces once for each light, masking shadows with the stencil buffer, on separate code paths for several generations of graphics card. That is the game’s darkness: lights that move, and shadows that move with them.
Away from id, Carmack funded Armadillo Aerospace from about 2000 and took the same build, test and change loop to rocket vehicles with a small team. NASA’s Lunar Lander Challenge asked for a vehicle to take off, fly sideways, land on another pad and return, all inside two hours and fifteen minutes. Armadillo won the $350,000 Level 1 prize in 2008 and in 2009 was the first team to qualify for the harder Level 2, finishing second, for $500,000, behind Masten Space Systems’ more accurate landings. ZeniMax, Bethesda’s parent company, bought id in June 2009, and Carmack stayed on as technical director.