The Technology Behind ID's Games
orac2 writes: "The current issue of IEEE Spectrum has an article on the groundbreaking technology behind iD Software's games, from the days of Commander Keen through to Return to Castle Wolfenstein. Graphics technologies covered include the original 2-D buffer trick that made side-scrolling games on the PC feasible, as well as the more modern Raycasting and Binary Space Partition Tree techniques. Carmack is quoted extensively."
I read this in the IEEE spectrum. They kept mixing up the advances in Quake I with Quake II. They even refer to a picture of Quake II as Quake I. But, there was some interesting history nonetheless.
come on fhqwhgads
This one is particularly good: about binary space partition tree.
ARRG (offtopic)
Editors please (as in pretty) fix this:
User types in comment and submits it (without subject). Is told to type in subject, but then is told "you have submitted to quickly." User loses comment because it is cleared from browser cache and slashdot doesn't put it in the error page.
/offtopic )
(
So close and yet so far from the world's perfect ID number
Good article, but the Commander Keen scrolling trick was old news by then. Lots of Apple II, Atari ST, and Amiga scrolling games did the same thing. Impressive? At the time, yes. But let's not get too carried away with giving Carmack credit for everything.
The Amiga, not the PC, pioneered almost all 2D neatness - even today, some features of the Amiga HW are unavailable on standard PC cards - particularly Amigaish smooth-scrolling. Most PC card 2D scrolling STILL sucks compared to Amiga scrolling... Why? I don't know. My theory is that while the Amiga scrolled by changing the pointers to where the screen was in memory, the PC dumb-copies entire screens. Amiga: economic 60Hz multidir in 1985. PC: brute-force 70Hz multidir in 1993. Wow.
Talk about NIH and wheel-reinvention...
you can read more about bsp trees and other graphics tricks on this wonderful online book written my Michael Abrash, an id software programmer: http://gpbb.dk.eu.org:81/
make sure you check the forewords by john carmack
This part of the article is wrong.
That's not Commander Keen it's Dangerous Dave, and that's not Quake it's Quake II.
I know, I've played them all!
16,777,216 comments ought to be enough for any forum!
*SIGH*.
Yes, the Amiga had smooth scrolling before anyone thought to do it on the PC. It took Carmack to do it simply because he was the first to do it. It wasn't all that hard, but someone had to do it first on the PC.
The important point that many people seem to be missing is the historical aspects of teh IBM PC. While the Amiga was developed with games and multimedia (and developed after the PC, I might add), the IBM PC was designed first as a smart 3270 terminal with the ability to run local programs, and then later slightly retooled to be a "business copmputer". The original PC came with a text-only dsiplay adapter and no ability to play anything but the most primitive of sounds. This was all done very much on purpose. IBM did not want the PC to be persieved as a game box, a toy. They wanted it to be seen as a work machine, an office computer to get work done on.
IBM didn't even develope the first graphics adapter for the PC, that was a small company called Hercules. Only after the runaway success of the Hercules card did IBM bother to develope the (weak and craptastic) CGA desplay.
IBM didn't put sound or music into the PC, either. That was done by Adlib, Creative Labs and Advanced Gravis.
Also of importance is the fact that the Amiga; the Atari ST, 400, 800, etc; the C64, Apple 2, etc... is that these system all shipped with fixed graphics adapters: an Amiga programmer knew that he had a display of XxY pixels and 4096 colors to play with, or the C64 programmer knew what his display was able to doi. In the PC wordld you had MDA, CGA, EGA, and VGA. Each generation of adapter brough new abilities to the PC and programmers had to decide which minimum technology level they were going to require.
So Carmak was the first to do smooth side scrolling on the PC? Someone had to be first. If nor John Carmack, it could have been Roberta Williams.
Boobies never hurt anyone. - Sherry Glaser.
It's *id* Software. Not ID. Not iD. id. as in the psychology term.
id
Pronunciation: 'id
Function: noun
Etymology: New Latin, from Latin, it
Date: 1924
: one of the three divisions of the psyche in psychoanalytic theory that is completely unconscious and is the source of psychic energy derived from instinctual needs and drives.
No sig for you!!
Here is an interesting bit of history:
Greed was built on the engine I wrote for Raven/Origin's Shadowcaster game, while the other Id guys were working on Spear of Destiny, the commercial Wolfenstein game.
The reason softdisk got the technology was that they were still making lots of noise about suing us for doing Keen while we were working at softdisk. Our original parting deal was that we were going to continue doing the Gamer's Edge games for a while, basically for free, as penance. We weren't savvy enough to get anything binding down on paper, so even when it was all wrapped up, there was room for twisting our arm a bit. (another trivia bit -- George Broussard at Apogee arranged to have Apogee produce one of the Gamer's Edge titles for us, so we could focus more on Wolfenstein).
We finally arranged a technology transfer of the latest engine code for free and clear severing of our ties. After they showed that just having the technology was not a guarantee of success, they had the nerve to come back and ask for more, but by then we were able to just tell them to go away.
BTW, Duke Nukem does not have a Softdisk heritage, it was by Todd Replogle (sp?), who was strictly Apogee-grown.
John Carmack
I remember Al talking about the lawsuit and the source code. One poker night (which I played badly) Dan Tobias went on a long rant (suprise) about the whole ordeal. I share his opinion that moonlight code belonged to the programmer, not the company.
Absolutely nothing came of the source code. It sat in Jim's office unused.
I was fairly pleased with how that article turned out - when I first heard about it, I dreaded seeing a trivialized simplification of the issues, but it turned out as representative as you can be in that space.
However, I really dislike discussions of the attribution of techniques to a particular programmer. Everything is derived from things before it, and I make no claims of originality. I would say that one of my talents is the ability to be aware of what sources are feeding into my work, and be able to backtrack to them. Also, there are always lots of other possible answers for any given problem that can be made to work. BSP vs sector list, Portals vs PVS vs scan line occlusion, tilted constant Z rasterization vs block subdivision vs background divides, etc. Looked at in the proper perspective, individual techniques just aren't all that important. Sometimes it sounds like "Dude, he INVENTED needle nose pliers!!!"
Heck, I somewhat deride the very concept of originality. Creativity is just synthesis without the introspection. Lots of people will catch on that and start a rant about how Id games aren't original, but they are missing the point - it is possible to set out and develop something that will be received as "original" without ever having an "original" idea spring into your mind.
The best way to get answers is to just keep working the problem, recognizing when you are stalled, and directing the search pattern. Many of the popular notions of innovation and creativity are in some ways cop-outs that keep people from being as effective as they could be. The little document I wrote about developing a part of the shadow algorithm for Doom that Nvidia has on their website was a pretty good example of my process. Don't just wait for The Right Thing to strike you - try everything you think might even be in the right direction, so you can collect clues about the nature of the problem.
John Carmack
I have just been learning Z80 this last week, and damn it's a cool processor! And still for sale...