Rozhovor s Johnem Carmackem o DooMu
The man, the myth, the legend: John Carmack. He's considered the greatest programmer of his type in the entire world, and he's stunned the gaming community numerous times with each new 3D engine he's created. We had an opportunity to talk to Carmack about the "good old days" five years ago when he and id Software were in full Doom swing. What does he think of the Doom engine now? What does he think of Doom now? Where did the name "Doom" come from? It's all right here!
Doomworld: When was the original concept for Doom created?
Carmack: We worked from the technology towards the game. The style of play from Wolfenstein was clearly a good thing (in retrospect, it was the birth of an entirely new genre), and I had a pretty solid idea what the next step in the technology was going to be: arbitrary 2D maps with variable floor and ceiling heights and table based lighting.
Thematically, DOOM was viewed as "Aliens" meets "Evil Dead 2".
Doomworld: Was there a definite plan for Doom as it was being started, or was it more of a "some sort of techno-hellish game, let's go from there" deal?
Carmack: Tom Hall was attempting to do "real" design work at the beginning of the project, but the rest of the team was pretty much pushing ahead with a "just do it" aproach. Careful planning lost out.
Doomworld: Who came up with the name "Doom" itself?
Carmack: There is a scene in "The Color of Money" where Tom Cruse shows up at a pool hall with a custom pool cue in a case. "What do you have in there?" asks someone. "Doom." replied Cruse with a cocky grin. That, and the resulting carnage, was how I viewed us springing the game on the industry.
Doomworld: What sort of features did DoomED have? Did it have a texture viewer within the program, like QuakeED did? Also, was it vertex- or sector- based? (I.E. are sectors laid down first which are then edited, or are vectors laid down and then grouped into sectors.)
Carmack: Lines were placed, and sector grouping was implicit. DoomEd was a cooperative effort between me and Romero. I did the core editing functions, and he did all the dialogs and inspectors. One nice aspect was that it was designed to run on high resolution workstations, so we basically had all information available at all times, rather than switching between modes like most of the PC editors.
Doomworld: Doom originally had a very indoor look, and was fairly flat (no skies, not very many height changes). How and why did it change?
Carmack: Mostly it was just a matter of the designers feeling out their new creative bounds. In the beginning, it was cool just to have textures all around you and the freedom to make non-axial walls.
As the designers got more experienced, they started creating more of the towering architecture and large outdoor areas. At that point, they started clamoring for the full freedom they would get in Quake.
Doomworld: What happened to things mentioned in the initial Doom press release, such as bullet holes in walls (which will finally show up in Q3:A) as well visible monster damage (which didn't actually surface until Quake 2)?
Carmack: One of the most important things to know is when to cut off development. You never, ever, run out of features to implement or things to improve. At some point you have to make the judgement call that the time lost by working longer is more important than the additional things you could bring to the game. I think we called it pretty good with DOOM.
Doomworld: What happened to the hub system found in one of the early alphas which allowed players to go back and forth between levels?
Carmack: Saving and restoring level state properly is a pain. We finally did it in Quake 2, and I'm not sure it was worth it.
Doomworld: Was Doom originally going to have "player lives", similar to shoot-em-up games with 3 player lives? If so, why was this changed?
Carmack: We originally had little items that you could collect to get an extra life (like coins in super mario), but it finally sunk in for me during DOOM that computer games don't have to be like arcade games, and that the concept of limited numbers of tries just really didn't apply.
Doomworld: Some time ago there was a reference on the Net to "Action pack for DOOM, vol. I" which claimed to include levels by id themselves. Perhaps this would turn out to merely be the shareware game, but are there any 'non-canonical' levels made by id members around, apart from idmap01?
Carmack: I think American did a couple, but I don't know for sure.
Doomworld: What did the marines who were playing cards in the alpha version do? Do they follow you?
Carmack: They never existed. There was a card table graphic, and they were mentioned in the storyline, but they were never a part of the game.
Doomworld: Why was the BFG changed? The "eight billion fireballs" one in the press pre-beta looks cool :)
Carmack: Speed was an issue. One big ball is a ton more efficient than a couple hundred little ones.
The other thing is that the spew of little balls just wasn't that effective. Usually only one or two would hit a given target at a reasonable range, so it didn't deliver that much damage against a single oponent. We wanted the BFG to be a weapon that obliterated rooms full of enemies, and no directed weapon ever really managed that.
Doomworld: Who came up with the idea of Ultimate Doom?
Carmack: Probably GT. It was never a real focus at Id.
Doomworld: Where did the ridiculous par times for Doom come from?
Carmack: Romero did all the par times. Par times was a concept that was never all that universally accepted. We didn't want to encourage people to rush through the game at the expense of savoring all of the environments. The concept of racing through levels is probably a reasonable basis for a first person action game, but it wasn't fiting in very well with where we felt we were going. The topic comes up in each game we do, though.
Doomworld: Some of the Episode 4 levels are great, but why no new boss at E4M8?
Carmack: Again, Ultimate DOOM really wasn't a focus at Id.
Doomworld: Doom's Episode 1 was one of the first (and one of the last) widely distributed shareware programs. Why was there no Doom2 demo/shareware of any sort?
Carmack: DOOM 2 was explicitly a commercial release. We sort of half heartedly did some shareware distribution with Quake, but I think the industry has almsot unanimously decided that the three or so level demo is the best test vehicle.
A lot of people consider themselves to have "finished DOOM" when they just finished the shareware episode.
Doomworld: Who's idea was it for the "The End" bunny scroller at the E3M8 ending, and why was it kept around in Ultimate Doom?
Carmack: I think that was Romero's idea, but I'm not sure.
Again, Ultimate DOOM involved a lot of recycling.
Doomworld: Were the episode stories and intermission messages in Final Doom written by id themselves?
Carmack: I don't think so. We had even less to do with Final Doom than with ultimate doom.
Doomworld: Why wasn't Doom coded in C++?
Carmack: DOOM was initially using Intel's C compiler for DOS. We eventually moved over to Watcom, but five years ago C++ wasn't exactly a stable language.
Doomworld: What were some of the weapons that were cut/never seen in alphas?
Carmack: I don't think there were any implemented weapons that were removed. Drawing the animation frames for the weapons was a significant amount of work, and we wouldn't have lightly thrown any away.
Doomworld: Was Doom originally supposed to be more RPG-ish? Early betas and screenshots, which show the inside of the marine's helmet with weapon readouts and automaps, as well as inventory lists ("Heart of Lothar," "Captain's hand," etc) seem to point to this.
Carmack: In the end, most of those elements are just euphemistic terms for keys.
You can dress it up in many ways, but the game still comes down to: go here, touch this, go there, fight, etc.
Doomworld: Why was hires/hicolor cut?
Carmack: DOOM was fairly marginal in terms of speed on available processors when it was originally created. Higher resolution and color depths just didn't seem reasonable at the time, especially since almost no drivers supported 320*200 16 bit color. 640*480 hicolor would have run a pleasant three frames per second on the available hardware.
Back then we were doing a new game every year or less, and I didn't have a proper appreciation for how long the game might be played and the increases in speed that it would see.
Doomworld: What were you expecting to be done with the doom source after its release? Have these expectations been realized?
Carmack: The Wolfenstein source release didn't make any impact at all, so I was a little concerned about the reception it would get. I had plenty of rationalizations for the Wolf codebase's irrelevence (mainly that it was a 16 bit, non-portable program), but I still wasn't sure that there would be a lot of effort expended on it.
It turned out to be a lot more organized than I even hoped for. I expected that the work would mostly be a matter of a dozen independent programmers hacking various features into the code. The strong presence of teams of developers and cooperation between designers and programmers turned out better work than I expected.
Doomworld: Is the Doom Source that was released at the end of 1997 the same exact source used for the Doom executable?
Carmack: It had been hacked on a bit by Bernd to clean things up and excise the sound code that we didn't own, but yes, it is the same code base used for the released games.
Doomworld: As you moved onto more advanced 3D engines, what programming experiences from working with the doom source did you take with you to help solve the new problems you faced?
Carmack: The one obvious thing that evolved from DOOM is the morphing of the reject lump into the potentially visible set in later games. The funny thing is that as I was developing the PVS (after many other attempts at visibility culling, like beam trees), I wasn't even thinking about the reject lump. It was only later that I realized that I had just gone back to a concept I had used back in DOOM.
Mostly, its humbling to look back at work from five years ago. The polar coordinate stuff was because I wasn't comfortable with general line clipping at the time. The sprite insertion was clearly non-optimal. The collision detection could have been handled far more elegantly. There was just so much that I didn't know or understand. I'm sure it will be the same way looking back five years from now.