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."
"First, they decided to see if they could recreate on a PC the gaming industry's biggest hit at the time, Super Mario Brothers 3. This two-dimensional game ran on the Super Nintendo Entertainment System, which drove a regular television screen."
If they can't even get that right, how am I to believe what they say about frame buffering, Hmmmmmmmmmm?????
I'm going to go get some pie instead.
C code is C code. No new languages, techniques, or processes will ever replace an experienced architect. Crap passes through an IDE every bit as well as the good stuff.
I have a volunteer who works with me. The kid is brilliant, and has programming mojo pouring out of his eyebrows. But there are so many debugging techniques, algorythems, and habits that he doesn't have. (Yet.)
I'm not saying older in neccissarily better. Experience is the key. 20 years of experience is 20 years of experience whether you start at 7 or 27. In my case it's 7.
"Learning is not compulsory... neither is survival."
--Dr.W.Edwards Deming
Raycasting and BSP trees are standard methods in computer graphics that have been around since the early 1980s. Turner Whitted wrote his first raytracer in, I think 1980, and that used BSP tree acceleration to speed up ray-object intersection computation, the bottleneck of any renderer that uses raytracing.
It is now new, nor did iD invent those techniques. Maybe using them in a real-time game is, but they are not something that Carmack just thought up on his own, for the purposes of games.
There's 10 types of people in this world, those who understand binary and those who don't.
"Carmack wrote a so-called graphics display engine that exploited both properties to the full by using a technique that had been originally developed in the 1970s for scrolling over large images, such as satellite photographs."
Carmack was just the first to do it succesfully on a PC.
Age has nothing to do with it, it's all about experience and continuing to learn. Older programmers are better as long as they continue to learn and maintain curiosity about "new stuff". Experience + current knowledge > current knowledge. The myth of older programmers not being as good is really that many older programmers stop learning. For a while they are able to outperform younger programmers due to experience but eventually their laziness catches up and they being to underperform.
I just received the issue of IEEE recently. I thought it was funny to see an article about id in a magazine like IEEE which usually discusses things like transistor band gaps and such.
They talk about id's technology in depth, but they really don't understand the gaming culture that was behind creating the games. This was the driving force for the technology and it was far more important than just the latest advances in BSP.
The original article even mentions that Super Mario Brothers 3 was for the Super Nintendo, which of course isn't true. It was for the original Nintendo Entertainment System.
So you're saying that a computer programmer has poor social skills and doesn't get along well with people who aren't as smart as he is? I'm shocked...SHOCKED I tell you.
He's not running for president or trying to get elected prom king. His life goal is to produce the best computer games in the world. He's been living up to that goal remarkably well for the past 12 years.
Carmack has a special place in my heart because being 24, I have quite litteraly grown up playing id games.
-B
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 article doesn't say that The Carmack invented smooth scrolling full stop. It said that he figured out how to do it in EGA mode on the PC. The market for EGA cards was much larger than any of those closed (but optimized for cool graphics and sound unlike the PC) platforms.
Kind of like how someone figured out how to [kind of] play digital sound through the standard PC beeper. Of course the Amiga, etc. could do that with dedicated hardware but that's not the point.
To add another perspective:
The mathematicians I have met (I'm one of them) by-and-large feel that new math ideas are *discovered* instaed of *created*. The distinction is important. Truth and algorithms already exist, we're just trying to *find* them and sort through the crap. Just because no human has previously written down some piece of truth or an algorithm before you do, doesn't mean you invented that truth or algorithm.
We're all standing on the shoulders of reality, trying to decode what we see. John Carmack's comment about struggling with a problem in order to understand it seems very much in line with this view, and very much inline with the academic research process. Academics don't get research done just by sitting around, trying to be creative. We do research by repeatedly struggling with a problem until we figure out which defects in our brain prevented earlier understanding.
-Paul Komarek