Id Software has come a long way from its humble roots in Shreveport, La. It was at a company that made monthly game disks called Softdisk where the majority of the Id development team met. John Romero, one of Id's founders, was forwarded some fan letters that were sent in and tacked them up on the wall in his office. He had never given them a second thought until one day, when he was reading an article in a game magazine about a shareware game called Caverns of Kroz, he noticed a familiar address.
It turned out that Scott Miller, president of Apogee, saw one of the games Romero and his colleagues had created for Softdisk and wanted it for his shareware distribution company. Miller, knowing that all mail to Softdisk would be opened at the front desk, wrote phony fan mail to the programmers under a variety of names and always ended the letters with "please write me at...." When John Romero saw the same address on all the fan mail, he realized he didn't have as many fans as he thought. But the one real fan he did have would have a profound impact on his life.
Miller knew talent when he saw it, and he wanted what was going to be the future core of the Id development team to work for him. Miller gave Romero and his team a $2,000 check, and they gave him a paragraph containing a game idea that would become the first of the Commander Keen trilogy. At this point, John Romero, John Carmack, and Adrian Carmack quit their jobs at Softdisk and formed Id Software with Apogee acting as its distributor. After a brief time in Madison, Wis., the Id team moved to its current headquarters in Mesquite, Texas.
It is in this corner of suburban Dallas that Id Software has really come into its own. Joining the founding members of lead programmer John Carmack, project leader John Romero, and graphic artist Adrian Carmack, were fellow Softdisk alums chief operations officer Jay Wilbur, creative director Tom Hall, and printed graphic artist Kevin Cloud. They formed the primary development team for Wolfenstein and Spear of Destiny, and, on completion of those two projects, reaped the rewards.
Id's main working environment is a series of PCs networked together, some of which run DOS. However, when it comes to programming, NeXTStep is the team's weapon of choice. John Carmack has never regretted trudging through the snow in Madison to buy a NeXT cube. The level editor that Romero made for Doom took five human-months to make, but would have taken much longer on any other operating system.
The Super Nintendo Entertainment System (SNES) version of Wolfenstein was developed mostly on the NeXT machine, using an Apple IIGS to compile and retarget the ANSI C code. For future SNES development, Id had planned to retarget the Free Software Foundation Assembler and GNU C compiler to generate 65816 code on the NeXT machine, using a ROM emulator card to upload the code compiled in NeXTStep 486 directly to the Nintendo SNES.
Figure 1 shows DoomED, a good example of what Id can do in NeXTStep. It has the functionality of a simple CAD program and allows level designers to concentrate on level design instead of programming. From DoomED, the level designer can place monsters and objects (the different colored blocks on the screen), but, more importantly, can manipulate the walls, ceilings, and floors of the game environment. The editor allows bitmap combination from a group created by the graphic artists, so the level editor can improvise without having to draw new bitmaps.
Although it has often been theorized that Id uses a lot of assembly language in its development, the main language used is ANSI C. "Assembly language is almost dead," declares Carmack. "Doom has only two assembler routines: one to vertically stretch a column and the other to horizontally texture-map a row. Everything else is in C."
If all of Doom was written in assembler and the programmer could manage the overhead correctly, Carmack theorizes it would only make the game 15% faster. And, although the main raycasting trace in Wolfenstein was written in assembly language, Carmack says he could write Wolfenstein faster in C because of today's better algorithm technology.
Writing in ANSI C eases the strain of porting to other operating systems and recompiling the code on DOS, and NeXTStep helps clean out bugs during the development process. Carmack feels he could get Doom up and running in a window on a Macintosh over a weekend, but Id won't write the port itself. Id is willing to work with advocates of various operating systems, and talk of Macintosh, OS/2, and UNIX versions of Doom were discussed as possibilities.