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
"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.
Definatly better in Carmack's case. WAAAY Better.
I mean, hes not only a very good programmer, he looks like a computer dork, has a phat car, and actually cares what the community thinks about his games. As was the case when there was such a backlash about fixing the bug in the engine of quake2 that produced the strafe jump, he changed it, uproar ensued, he changed it back.
Carmack embodies what every programmer and any kind of computer company should strive to be.
Carmack has embraced the platform-generic opengl, and even coded his engine to be compatible on every major os. I love you carmack, please have my love child.
I MEAN C'MON hes the one responsible for such things as the infamous railgun, and the hilarious warnings about piracy on my copied version of wolf3d, which i still play on my 386 laptop.
This one is particularly good: about binary space partition tree.
Excellent. I wish I had read it when I was 12!
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
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
Basically, what I got out of this article was that John Carmack is almost single-handedly responsible for all of my non-productive time over the past 10 years. Thanks John!
"There were critical points in the evolution of this stuff," Carmack says, "getting into first person at all, then getting into arbitrary 3-D, and then getting into hardware acceleration....But the critical goals have been met. There's still infinite refinement that we can do on all these different things, but...we can build an arbitrary representational world at some level of fidelity. We can be improving our fidelity and our special effects and all that. But we have the fundamental tools necessary to be doing games that are a simulation of the world."
This article highlights how far we have come as game developers. id has been the "poster child" of the game development community, with the majority of other game developers following their lead. Doom III will continue this trend.
The next generation of games is going to be outstanding!
This article gives a great view of where we can be going with new technology. How realistic will games be in 10 years? My guess is that the graphic reality will become nearly indistinguishable from real life, but the greatest innovations will be in game-play. Interfacing with a keyboard/mouse/joystick isn't realistic. Voice control and force-feedback-like technologies are the way of the future, if our computing power can support it.
Kudos to Carmack on 10 years of FPS game design. Here's to the next 10!
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.
I remember Romero's head on a pike behind the last boss in Doom2.
Finally, math books without any of that base 6 crap in them.
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.
The point is that Carmack brought it to the world of PC games,
Our Carmack, who art in Texas,
hallowed be thy textures.
Thy software come, thy games be done,
on my b0xen as it is at E3.
Give us this day, our daily FPS.
And forgive us our camping,
as we gun down those who camp against us.
Lead us not into a spawn site,
but just give me the damn BFG.
For the gaming market, the GeForce,
and the booth babes are yours, now and until payday.
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
I love you carmack, please have my love child
:)
John, this post demands a response along these lines, methinks...
C'mon, give us geeks occasion for joy!
Blearf. Blearf, I say.
I joined Softdisk in 1995, a few years after the id guys left. The company was stunned by the success of Wolfenstein and Doom, and by Duke Nukem - also born of Softdisk alumni. It was basically a subscription software company, selling a package (card games, screen savers, etc.) on disk monthly. It was a good model for the 80's.
Softdisk tried to produce a couple of games, one called Greed (later In Pursuit of Greed) which was basically a 3D Doom-clone shooter. There was some neat technology (e.g. curved surfaces), but the art was...uh, well weak. The gameplay was decent, but there were some bugs to stomp and the ship date slipped...and slipped...and slipped. It was released, but didn't live up to the hype. The game was torn to shreds in the reviews. There was a second 3D shooter - developed totally in house, though it was basically a one-man project. The lead (only) programmer left, so it was shelved.
Softdisk finally shut down its on-disk-monthly subscription software and became an ISP/web development company. It was a necessary move, but sad since the company kicked a lot of ass in the 80's with LoadStar and Big Blue Disk.
For those interested, I ran Softdisk's online download software stores on CompuServe, Prodigy, AOL while another dude took care of eWorld. We were selling Commander Keen, Dangerous Dave, and a host of other early games the id guys produced at Softdisk. Last I checked, they were still being sold (at $19.95 a pop, even).
Not to troll or anything -- but it did seem quite amazing. I keep thinking he was like 27 or some such.
...right...?
:)
Well, it's not as if 31 is that old... I mean, I'm 31, and I'm not "old"...
I just felt like nitpicking a nitpick.
-bugg
Carmack is only 31? Damn, I better get to work.
Search first, ask questions later.
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
I don't get it. Carmack said no one had done side-scrolling on an IBM PC, you say your C=64 had it, and that the article is therefore flawed.
Well, I seem to remember SOPWITH.EXE had some pretty smooth side scrolling, and that was on a REAL IBM PC. They make it out to sound like Carmack invented double buffering, he did not.
My point was that even the original IBM PC was over 6 times faster than a C64, so smooth side scrolling on it is no feat.
I've had enough abrasive sigs. Kittens are cute and fuzzy.
Flight Simulator pioneered this sort of limited 3D. Bruce Artwick did the original Flight Simulator on machines that didn't have enough power to fill the whole screen with a solid color in one refresh. He wrote a book about how he did it in 1985. The pain, the agony...
Artwick seems to have dropped out of game development, but Carmack keeps pushing what's possible with available hardware.
Oh really, is that so? Hmm, where did I see that, oh right, IN THE ARTICLE.
Profiting from improvements in computer speed and memory, Carmack began working on how to draw polygons with more arbitrary shapes than Wolfenstein's trapezoids. "It was looking like [the graphics engine] wouldn't be fast enough," he recalls, "so we had to come up with a new approach....I knew that to be fast, we still had to have strictly horizontal floors and vertical walls." The answer was a technique known as binary space partitioning (BSP). Henry Fuchs, Zvi Kedem, and Bruce Naylor had popularized BSP techniques in 1980 while at Bell Labs to render 3-D models of objects on screen.
(emphasis mine)
Perhaps READING THE ARTICLE would have saved you the trouble of trying to show us how smart you are.
Everything's stolen these days. Take the FAX machine. Why that's nothing but a waffle iron with a phone attached!
</abesimpson>
Liberal (adj.): Free from bigotry; open to progress; tolerant of others.
Id software is writing Doom III in C++... But yes, that's a rather tiny change after 10+ years of evolution. (there are also the various byte-code languages they've used for non-engine game logic, but most of those are still very C-like)
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!
I'm 47, and you're all a bunch of green young whippersnappers. ;)
~REZ~ #43301. Who'd fake being me anyway?
Why people worship him, especially now, is beyond me.
Well, ummm, you have a go then. Particularly at the 1996 stuff - you have a P75 and 8Mb, render a 3d texture mapped scene at 20fps.
Dave
I write a blog now, you should be afraid.
So, rendering engine improvement is essentially incremental from here? It seems to be that way, coming from Id's last two or three offerings. This is a rather distressing for someone as forward looking as myself.
Although the fundamentals have been laid into place, there must be a way or two to leap ahead of the current generation while sacrificing something from the generic style engine such as what Id has produced. For example, if you had a game where you wandered around looking for people to scrap with, you could optimize the 1 on 1 fighting with a different networking model where you are guaranteed to only have one opponent.
Windows of advantage for things like this come and go, but they certainly do seem to exist to me.
*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.
Well, that's what Id avoided on PC... (did you rtfa? :)) When EGA cards came up, they had enough graphic memory and functionality to change pointers... back then I tried this a little on VGA (320x200 tweaked mode giving four screens, and changing a pointer to scroll/switch screens for double-buffering).
The Amiga did of course have much better graphics hardware, including a blitter for fast graphics data transfer and accelerated drawing functions, (at that time) lots of video memory, and further hardware acceleration such as sprites support. And, also, support for bitplanar graphics modes, easing smooth scrolling.
Indeed. The most obvious one (to me, at least) was the claim that gaming in the late 80s was dominated by consoles. At least in the UK, consoles barely scratched the surface of the market back then, which was utterly dominated by personal computers. The C64, Amiga, Atari ST ruled the market, and even the Spectrum was still going strong. Apart from the Atari 2600, consoles barely existed until the Sega Megadrive 2 came along in 1989, and didn't really hit the big time until around 1992.
"The invisible and the non-existent look very much alike." -- Delos B. McKown
I seem to recall that "Descent" had arbitrary 3D (along with MAPPING!, which the Quake series simply doesn't have) way way before it ever came out in any id software games.
How come the Descent series doesn't get any respect? There's some AWESOME graphics in them thar games! Smooth indoor/outdoor transitions, even rain on your windshield, not to mention a full six degrees of freedom in moving about.
I loved those games.
- Spryguy
There are three kinds of people in this world: those that can count and those that can't
Doesn't matter. As long as his spelling errors are consistent, he won't have any trouble :)
Was DoomII really ported to an arcade machine over in the States? I remember seeing one in the Film "Grosse Point Blanke" and thought it was probably a fabrication. If it was real, it must have been a nightmare to play with a joystick and XX buttons for weapons, jump, strafe etc etc!!
Code, Hardware, stuff like that.
Just as rough (though zooming forward quite a ways in history): Playing Quake on PocketPCs:
http://quake.pocketmatrix.com/
On my Casio EM-500, I had 16MB of RAM in which to store the program, store my maps AND run the game. The scary thing is, that was enough. You couldn't play it on the faster StrongARM IPAQs, as the IPAQ engineers (who should all be subject to mass execution) saw fit not to support the detection of multiple button presses. However, on the little MIPS Casio chip, with its proper gamepad and buttons, it ran just fine. A game which still looks modern and can be stored and run in a total of 16MB of storage. Magic.
Gaming in the 80s *was* dominated by consoles:
:) - and the Amiga was pretty much out of the price range of most consumers at the time.
In the US/Canada and Japan, you had the original Nintendo Entertainment System. In most parts of Europe and South America, the Sega Master System. Both came out around 1985 (exact date depended on where you lived), and pretty much dominated the gaming scene in their respective areas. Other than the Amiga, there was no personal computer that could stand up to these consoles (try Super Mario Brothers for the C64 if you don't believe me
The only time game consoles HAVEN'T the dominant platform was around 1983-4, when the entire video game industry crashed hard, and Commodore and Sinclair provided us with lots of fun. Although the case could be made for the modern era of games...
Endless arguments over trivial contradictions in books written by ignorant savages to explain thunder in the dark.
Sopwith...oh, sopwith... with to control... oh sopwith
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!!
A little known fact - our archivist put a build on a server for some of our testers and 'oops' - he mis-set permissions. There were loads of people continuously scanning our site for a demo and 'viola'. The game got passed around - it wasn't done, but it was getting there - and we got a LOT of unsolicited feedback. Our guys also scoured message boards for opinions, etc. The feedback was 'bad, keep working' - and we did. However, the game was a disappointment in my book - good idea, some really cool features, but...it wasn't all that.
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
Mozart was just some guy that wrote songs..
Newton was just a guy who could look at the natural world and derive laws that seemed to cover what he saw (oh, and co-invent calculus too). I'm not putting Carmack up with these guys, but it's pretty easy to diminish someone's accomplishments by saying they're "just a" something....
I have just been learning Z80 this last week, and damn it's a cool processor! And still for sale...
No, it wasn't Specter, which was sort of a Battlezone clone. The game I'm thinking of was a pure maze game, with no shooting at all. It did not have a particularly tiny window, although I wouldn't be surprised if they reduced the width somewhat. And it was very fast; presumably, it either used 2D raycasting or some other highly efficient method.
I just absolutely will not sign a contract that has an intellectual property clause that claims ownership of code I develop for non-company-related projects on my own time. I've invested years learning my trade because I enjoy what I do and I won't allow that enjoyment to be crushed out of me.
Arguably such clauses mean that you cannot participate in open source projects or hell - can't develop for fun at all without your efforts being assigned to XYZ Corp. Hell, arguably you're required to give notice of any such projects or could find yourself being sued b/c the company lost a market window...blah...blah...blah.
I disagree with this view. You cannot completely decouple originality from creativity. Even if you only combine existing ideas together: for example packages and a kernel into a distribution; a graphics engine and art into a game; or off-the-shelf parts into a rocket you no doubt have to use an introspective process to create. It is the integration process that is the invention, not its indivdual parts, because after all: the individual parts were an integration process at an earlier time to begin with until we go back in human history to where we started to bang rocks together!
Even if you had only managed to exactly synthesize another persons work but you had beaten them at market, it proves that you had thought of another idea to more effectively share your invention with the world...but you had to think to make this happen. Nothing in this world happens automatically * .
However, I believe it is the mark of a genius to claim otherwise: I was reading an article on John Frusciante of the Red Hot Chili Peppers and during the interview he was asked where he got his musical ideas. He said (and I paraphrase,) "I don't come up with anything, the music simply enters me from another dimension." I would argue however, that the process becomes so deeply introspective that you are hooked up directly to yourself at such a deep level that the creative process happens nearly automatically.
Here's a quote:
John, iD, thanks for the innovation...no matter how it happens I'm always entertained!
-AP
* : except the fundamental actions of the universe; or so it seams.
Remember Duke3d, the map with the guy from doom dead on the ground? And duke goes "That's one doomed space marine"?..too damn funny.
Finally, math books without any of that base 6 crap in them.
comments?