In this interview, Carmack and Hook speak frankly about techie issues involving technologies and design. Even fun if you’re a non-geek.Andrew “Kolinahr” Wu
By Alex St. John / bootnet Magazine
On the first day, id Software created Wolfenstein 3D– the debut first-person shooter to confront the issue of 3D on the PC. And it was good. Soon, the small Texas-based startup had a shareware megahit with the legendary game Doom, and the game world began paying attention. Ambitiously, id set out to break its raycast bonds and create the first true 3D game. Thus was born Quake, arguably the best PC game to date, and nothing would be the same again.
Along the way, the technological idealists at id faced opposition. Mighty Microsoft, via outspoken evangelist Alex St. John, began pushing Direct3D as the dominant API. But id had other preferences, and company owner/lead programmer John Carmack has rallied developers against D3D and become alternate API OpenGL’s ad-hic evangelist.
While he’s parted ways with Microsoft, Alex St. John still defends DirectX. He traveled to the Lone Star state to talk about APIs, software patents, 3D hardware, the best talents in the game industry, the volatility of plan files, politics, ethics, and the future of SGI’s OpenGL with John Carmack and id’s outspoken new programmer Brian Hook…
St. John If a Microsoft recruiter came down here and said “We’d like to hire you all to come fix DirectX” would you guys go?
Hook I’d probably go. John wouldn’t.
St. John So what would you do with Direct3D if you were in charge?
Hook Hold it, hold it. There’s too much speculation here. Having talked to enough ex-Microsoft employees, I know it’s a very political landscape. It doesn’t matter how good you are technologically, because there are people up there right now who have the capability to solve this problem, but politically do not. So you don’t need me to go up there–what you need is someone up there willing to dictate on strategy, end of story, that’s it.
Carmack Well, I don’t know if I agree. I undervalue the strength of politics. I am a technical idealist at heart and I think that if you put someone up there that knows what the hell is going on, and they have authority over the code base, they can fix it. The final word is what gets built into the executables.
Hook I think a pretty much infallible case has been made for OpenGL and Microsoft has effectively come back and said “Screw you.”
Carmack [laughs] Brian’s current conspiracy theory is that Microsoft is investing in Apple to force them to adopt D3D or something.
St. John That’s not the most irrational thing we’ve heard. So, what do you two think about Microsoft showing GLQuake running on top of Direct3D?
Carmack It was worthwhile, although it’s like you adopt OpenGL and write some emulation layer to run all the crappy games–such as Monster Truck Madness.
I’ve stated from really early on that the APIs are close enough in functionality that there’s not a difference. The difference is in how you access that functionality.
St. John I understand the performance is pretty similar.
Carmack It’s pretty close because it’s a heavily fill-limited game, so you’re bound-up by what the hardware can do. If the driver is not totally brain dead, it’s feeding the hardware, and you wind up waiting for the hardware. So assume that you have a non-brain-dead driver, then you could put a layer of emulation between it. And that works fine on this generation of games, but it’s not going to work in the future. If you scaleup the performance ladder– like where SGI is–then every access to memory is a performance drain. If you start saying “I want to render five million triangles,” an emulation layer is not acceptable.
Hook And Microsoft didn’t tell us they were going to do an emulation. If they had simply asked “We’re going to do this, do you mind?” We would have said OK, because we’re just into cool technical stuff. There wouldn’t have been a problem, but they didn’t even do that.
St. John It was my job to get your approval, but they fired me before I could do it!
Hook Look, this is my view of the people who work at Microsoft. You have a choice. If you’re good enough, you have a choice of where you work. You have to realize that what you’re doing is bad for the industry. And what you’re doing is only good for your personal ego and your personal power trip and your stock options. If you’re doing stuff that you don’t even agree with and you do it for the money–we have a word for that.
St. John So what’s that word?
Hook A whore. And I’ve never done that. I can sleep well at night. Those people can’t.
St. John Are there particular people that you have in mind?
Hook No, I’m not even singling out the D3D team. I’m saying in general that you can have a certain level of honor and integrity, but not a lot of people exhibit that.
Carmack One thing the D3D/GLQuake demonstration did was draw the lines of battle. Microsoft is always trying to be friendly and put on a good face and saying “We’re doing what the ISVs want” and everything. But that’s really just a front. There’s a well-defined agenda that D3D shall rule the universe; OpenGL shall crumble and die.
But Microsoft can’t quite come out and say that. And I would respect them a hell of a lot more if they actually did, but they’re trying to have your cake and eat it too. And it’s just not that way.
Hook Their D3D developer-relations guy sends e-mail asking if there’s anything he can do. And then something happens and he’ll say “Oh, I had nothing to do with that.”
It’s like “Fuck you! You work there.” That’s not my problem and I don’t respect you for coming up with excuses when you come down here and start saying “Oh, we really want to work with you…” and then pull a stunt like that. You come off as two-faced, you come off as a hypocrite. If you want to work with us, pay attention to us. But it’s not what they want to do. They say “Try D3D–you’ll like it,” And I kept saying “I don’t want to use D3D. I have something else I like.” To me, the analogy was like going to a fast food place and saying “I want a hamburger,” and them saying, “We’ve got a really good chicken sandwich.”
“But there were issues with the Verite port– if I could go back in time, I wouldn’t have done it. It was too much work. And when I did the OpenGL version, I realized that even with all this sweat and labor, the Verite version was just awful.”John Carmack
You know, we’re not supposed to do what Microsoft wants. Microsoft is supposed to enable us to deliver content on their operating system, but they’re not doing that. They’re flat-out ignoring us to a large degree. And I’ve heard private comment from members of the Direct3D group where they just categorically ignore anything John Carmack says. Not because they don’t believe in him, but because he disagrees with them. It’s not John Carmack, it’s anyone who disagrees with them. They’ve done this with hardware people. “Yeah, even though they’re the fastest, they don’t have enough volume. We don’t really need to work with them…” And they do that across the board.
St. John SGI can’t make much money licensing the OpenGL technology, so they really need to make an NT deal with Microsoft. How does that make you feel?
Carmack This is where I can just be righteously indignant and disgusted about them. I am a technical idealist and the wrong things are happening. I understand the reasons why some of them are happening and I’ll probably learn to live with them, but it doesn’t keep me from being pissed-off about it.
St. John So even if OpenGL dies, will you remain its torchbearer?
Carmack No. We’re not going to crusade off a cliff. I am pragmatic at the end; there is a limit as to how much I will let idealism damage me because I can adapt to whatever is necessary and Direct3D with Draw primitive doesn’t suck.
There’s just nothing charitable you can say about it. Over the years, Microsoft will make D3D suck less, but they’re dragging us through the mud along with them as they figure it out.
But in the end, if SGI did give up on OpenGL, we would give it up. I suppose the gentlemen’s bet would be that they’re not going to bow out in the next couple of years.
St. John I’ll make that gentleman’s bet: I predict SGI will become less interested in providing a consumer API on the PC for OpenGL…
Carmack Certainly, but they’re not going to start running D3D on Infinite Reality.
St. John At least not for a while. On the other hand, their product mix might increasingly become whatever Microsoft supports under NT.
Carmack And I think that’s wonderful. If we could buy Infinite Reality and plug into an NT workstation, we’d do so. I’d write that $100,000 check right now because I don’t like Irix. I don’t like their desktop and their operating systems.
St. John Do you see hardware companies making a special effort to build drivers just for Quake as a problem?
Carmack They aren’t just for Quake. A couple are just for Quake now–the 3Dfx and PowerVR ones–although they both intend to evolve to a full version. There are a lot of great things people can do with them.
D3D is not being exercised in application mode. And this is where everybody has always had these vague notions that 3D is going to be important on the desktop. And while I don’t think that’s really near-term, in general, it’s true: You are going to integrate 3D in your desktop experience … and that’s what OpenGL was designed for. It runs full-screen. That was kind of a side-effect, but doing applications on a simple level–such as our map editor and the tools we write here–are things I can whip-out really easily in OpenGL and they work really well. And there are going to be consumer-level things like that which are interesting, and you’ll want a robust, full OpenGL driver for.
St. John So you think people will be using OpenGL in Excel-type applications?
Carmack Actually, yes–drawing 3D graphs and everything in spreadsheets is an excellent use for something like that, rather than writing your own 3D transport clip project pipeline to do those little things. But the obvious things of the graphics tools, modelers, map creators, and things like that. It’s silly not to write those to an API.
In fact there’s a funny thing… Somebody sent me back an e-mail that I had written at least a year ago, where I said, “You should use a commercially available API like Direct 3D.” That was before I had done any Direct3D programming. This guy sent it back to me, and it’s like “You said this?” It was like, “Yeah, I did say that. I stand by the sentiment that you should use someone else’s library.” After actually doing a bunch of D3D programming, we recommend using OpenGL, for sure. But at the time, I hadn’t used either.
It’s important to note that some people have this misconception that we’re just being recalcitrant and not wanting to learn something new. But I did Direct3D programming and Brian’s done a lot. The thing is: I’ve only learned OpenGL over the last two years. It’s not like I’m some guy at SGI who’s been doing it for a decade. I learned it after I left NextStep and then I learned D3D later because I had the best of intentions. I went into it with eyes wide open, and it just sucked.
St. John But clearly SGI isn’t making a big effort to get drivers done and making sure that all the hardware manufacturers are unified…
Hook They’re working with every major IHV that I’ve been talking to. They’re in constant negotiations. Their team is almost the size–in terms of programmers–of the Direct3D team up at Microsoft. They’re taking this very seriously.
Carmack Sure, it could be better. It’d be great if they had an evangelist like you were for Microsoft. But we’re still like this bug splat to Microsoft, and we can’t get them to do what we think is right. This is the first time I’m really trying to use what influence I do have to do something I think is proper and forward-looking for the game industry. And I know I’m not really hurting anyone by doing this. I think that the long-term benefits of trying to push something that’s right are good. At the very least, even if we fail, we have put pressure on D3D to examine some of the issues that they wouldn’t have otherwise.
And I do get mail from people. Most of them really don’t understand the issues technically. They think when GLQuake is running on their S3 ViRGE, “If it just supported D3D…”
I didn’t know any better two years ago, before I used OpenGL. I clearly remember laughing about this e-mail saying how OpenGL is going to take over the world, and there are going to be OpenGL accelerators in the consumer space, and anyone would be able to write stuff on those. And I was laughing because the misconception I had was, “Yeah, anyone that runs a $50,000 SGI workstation.” Something that’s appropriate there just can’t be efficient, because they’re throwing all this hardware at it. And I was just wrong.
I just didn’t know the issues and I learned better. And a lot of game developers haven’t been in the position where they’ve had the opportunity to learn some of these things and they just take what’s available and it’s been bad. It’s bad for the industry that what’s available hasn’t been as good as it should have been. But people really don’t know there’s an option.
Hook People point out how OpenGL is designed on high-end workstations, but keep in mind that the “high-end” workstation OpenGL was designed on didn’t even have hardware texture mapping. And a lot of them are significantly less powerful than a Pentium 166–even today.
Carmack So it’s like they had all these years of evolution and we’re now at a point where we can say “They’ve spent a lot of time getting it to work on this hardware. And now our hardware is pretty damn similar. Let’s just take all this. Let’s not re-invent everything.”
And if you’re going to re-invent the wheel, don’t make it square.
“You have two companies in similar positions: Intel is doing the right thing. Them owning the chipsets is a smart thing. Contrast that with Microsoft, which has just made a habit of screwing things up. If Microsoft was like Intel, it would have adopted OpenGL.”Brian Hook
St. John What would you think if SGI were to find a way to ship a PC version of OpenGL with Microsoft and doing the NT license for that workspace?
Hook I personally can’t believe it. It’s a rumor. When it becomes a reality, I’ll stress about it.
Carmack We have like plan A, B, C and D on what could happen with OpenGL.
The best plan would have been if Microsoft played ball and got behind us. That would have been best for everybody. But it didn’t happen. So plan B is working with SGI. And if that falls through, the other ones probably really aren’t worth pursuing as a long-term strategy. It would be strictly a rear-guard action.
If Microsoft does manage to effectively squash SGI’s involvement, it may be time to pack up and move on.
St. John Will there be a Mac version ofQuake 2 ?
Carmack Quake 2 is not going to be on MacOS 8, because I’m taking my idealist stand and saying Quake 2 will be available on Rhapsody. Give up the crusty old Mac stuff! I’m going to personally port the stuff to Rhapsody and make it a high-quality implementation for people that want to take a step into the future of Apple. I have no respect for the MacOS, none at all.
There’s a chance that if Apple doesn’t curl up and die and Rhapsody turns out to be everything that it looks like it’s going to be, then next year we might jump ship and develop on Rhapsody and port to Windows. There’s a lot of good reasons to not have your target platform be your development platform. It keeps you from accidentally doing things that aren’t robust and portable. And that was one thing during Doom and Quake, we developed exclusively on NextStep because cross-compiles were ported to DOS.
St. John Apple didn’t come to you and say “Please put Quake 2 on Rhapsody”?
Carmack I have some issues with Steve Jobs. When he was running Next, I tried so hard to get any publicity I could for Next but, from what I hear third-hand, Steve Jobs just was not interested in any of that. And it’s defensible in a workstation company, although it still would have been good free PR that they could have used. But I’m getting the vibe that he’s squashing some things that are important at Apple, and he has no justification for doing that in a consumer operating system company. I’ve never met him–I’d like to some time, but I don’t think he’s exactly on my side.
St. John Brian, what do you think of 3Dfx’s future prospects now that you don’t work there?
Hook I’ve always felt 3Dfx will do amazing stuff. I keep hearing rumors that there’s political stuff in the semiconductor industry that will always hold small, fabless semiconductor companies like 3Dfx back. But I can’t comment on that because I don’t know enough to really say if that’s a factor.
But remove that from the equation and I think 3Dfx Voodoo is still the best. Now that everybody’s gone through multiple generations, this one architecture has lasted for a year. The boards are $180 for a 6MB version now, and you can get others for $150, and it’s still competitive with brand new chips coming out from Invidia and Rendition.
Carmack They had a 4x performance lead when they came out. That is just so rare, they need to be lauded just for doing that, because it was an amazing thing.
Now I don’t think they’re going to have a 4x performance lead in the future, because eventually everyone is going to be working with the same memory subsystem, the same type of SDRAM, but I think they’re still going to maintain a good 2x lead–and it’s because they’re really damn good. And I think they’ll be successful. I don’t think they’re going to put S3 out of business, but I’m happy with the performance.
St. John That’s a pretty strong statement. What don’t you like about S3?
Carmack Well the ViRGE was the whipping child of the 3D industry because it was so bad. Just like 3Dfx was so good, ViRGE was so bad.
St. John You’re pretty hopeful that S3 isn’t going to be predominant in the marketplace?
Carmack Well anyone can turn it around. We’ve got a wonderful example with NVidia. The NV1 was the most stupid, wrong-headed thing anybody could have possibly built at that time. It was so bad it would have poisoned the industry if it had become a predominant thing– it was horrible. And now NV3 is probably the single-best chip solution available right now. They did the wrong thing, they recognized it, and then they did the right thing. So S3 may very well do that. I hope they do because they certainly still have a commanding presence and I just want lots of good chips in lots of people’s hands, but I don’t want lots of lousy chips in people’s hands.
And it was funny, id Software had written off 3Dfx because when all the chip vendors came down and paraded through, 3Dfx said, “We’re going to be $400.” And we said, “You’re not relevant!” We were behind Rendition because we felt they had the right feature set and they were going to be at the right price. But then RAM prices tumbled and, all of the sudden, 3Dfx is relevant. And not only are they relevant, they’re so much better!
Memory is now cheap enough to use aggressively for graphics… and that’s why 3Dfx is viable. If memory hadn’t gone down, I’m not sure 3Dfx would still be in business.
“It’s really depressing because it’s so horribly wrong for someone who’s a creative engineering type to think about patenting a way of thinking.”John Carmack
Hook 3Dfx’s original business plan was not predicated upon having any presence in the consumer space for the first couple of years. They were going for massive arcade sales in order to keep the business going. Then they could get the prices down and work out the technology necessary to run in only two megabytes. But when the bottom fell out, all of a sudden 3Dfx was a consumer company. The arcade stuff became irrelevant, and they spun-off their board division, Quantum 3D, because it’s like, “We need to focus on the consumer space. This arcade stuff is not going to be nearly as important to us now as we thought it was going to be three years ago.” It was smart because if you’re just selling chips into arcades, the volumes are nothing. And 3Dfx makes the same amount of money whether they’re selling chips to Gateway or Dell or Compaq as they would if they were selling to Konami or Midway or whoever else.
Carmack Well, that’s one of those things that I can just look back on. I thought it was too expensive for us to be paying a lot of attention to consumer boards. But a lot of it was us believing what these people were telling us about their board’s performance. Everyone said “Oh, we’ll do 25 to 33 megapixels”–and we believed that!
Hook They were running their SGI software emulation of what they would be capable of rendering.
Carmack And 3Dfx was saying “We’ll do 45 megapixels” and we thought, “they’re only 50% faster than these people but they’re twice as expensive” and it’s just not worth it. Then it turned out that the prices changed, everything became a lot cheaper. And everyone else under-delivered. And 3Dfx did not. They did what they said they would do and they did it well.
St. John What about non-Intel processors, what do you think of them?
Carmack The floating-point issue has really hurt them. We had AMD and Cyrix down here while we were developing Quake, and we said, “Look, floating point’s going to be important,” but because there weren’t any benchmarks or any applications they’d used at that time, they brushed it under the rug.
AMD and Cyrix both have non-pipeline FPUs, which is their Achilles’ heel. In terms of integer performance a lot of them are on par or, even in some cases, better than Intel, but we optimize for Intel because the Pentium’s got the FXCH change trick to pipeline all these things. And it’s pretty tweaky but it pervades all of our assembly language code for Quake.
So we’re de-optimized for non-Intel chips, but it was the only sensible thing to do.
Hook Intel was the best processor at the time. The K6 had not shipped yet, so it’s hard to optimize for the K6 or the Cyrix M2 or whatever. They just didn’t exist yet. So it’s not favoritism towards Intel, it was just being pragmatic.
St. John What do you think of Intel buying-up interest in the major 3D chip companies?
Carmack Intel’s a smart company, and Intel’s turning themselves into this gigantic, monolithic company has been good for us. We have benefited very strongly by Intel’s ramming through things like PCIs, taking over the motherboard chip and the L2 caches. Because every time they’ve done something like that, our life has gotten better, our systems have gotten more stable, more standardized. And they’re moving into the 3D market with their Auburn part and I think that’s going to be great. I think they’re going to do a solid job. And if Intel murders S3, I don’t think I’m going to shed too many tears. If we get a better part from a reliable supplier that’s going to be on the motherboard of everything, wonderful!
Hook And contrast that with Microsoft. You have two companies in similar positions: One in software and one in hardware. Intel is doing the right thing. PCI was better than VLB. Them owning the chipsets is a smart thing. They’re doing CPUs that no one even thought technically possible with an x86 architecture. Contrast that with Microsoft, which has just made a habit of screwing things up. Making good business decisions, but screwing things up technically. If Microsoft was like Intel, it would have adopted OpenGL.
St. John I heard a rumor that id had a deal with Rendition requiring you to support their API only and that you couldn’t ship anything else, except OpenGL.
Carmack Oh, OK, yeah. Originally we didn’t have anything in place when we did VQuake. And in the end, my God, that took far more effort than we expected because of the performance required. The performance was really only good in some situations, and not the situations that it turned out we had to use, which included Z-buffering.
St. John So what Verite chip problems are you responsible for…?
Carmack We were originally saying, “Z-buffering is important but you shouldn’t have to run all these other APIs and everything, so Quake is not going to do Z-buffering.” I said that and they probably still have the e-mail. And then halfway through Quake I said, “Well I changed my mind. We are using Z-buffering, even in software, because it turns out that it’s the most effective thing for us to do.”
And they’re like “Oh great. We have Z-buffering, but it runs at half the speed of our non-Z-buffered algorithm.” We did finally get VQuake running on their 3D stuff, because all through Quake we were concentrating on, “OK, how are we going to hook out hardware for this?” But when we implemented it that way, the performance was just wretched, totally not acceptable, even at low resolution.
We did finally get good performance out of VQuake. And I still find that a technical accomplishment. We took an architecture that had certain strengths and we leveraged it as well as was possible.
“This is my view of the people who work at Microsoft: You have a choice. You have to realize that what you’re doing is bad for the industry. If you’re doing stuff that you don’t even agree with and you do it for the money— we have a word for that: Whore.”Brian Hook
St. John Did you sign a contract restricting what kinds of technology you could do ports for?
Carmack We got some bundled deals, some things. Rendition offered us… I don’t even know exactly what the specifics were, but I think there was like some stock involved or something, if we would sign an exclusive hardware agreement for a certain time frame. And we were looking at that saying “Well, we’re not going to do anything else in that time frame, so we might as well.”
St. John So that agreement stated that you can only ship 3D-hardware-accelerated software for a Rendition chip?
Carmack It was like no chip-specific ports or anything inside the space of three months or something. The only thing on the radar at that time was a Glide port. And I was like, “Well, maybe we could be talked into doing this because it is really cool.” There’s all this disinformation saying I did GLQuake for 3Dfx. In fact, I did it because I have an Intergraph workstation in my office that runs OpenGL and I wanted my game on my workstation. And 3Dfx was like, “You know, we could just write an OpenGL subset that catches all that and it will run on our hardware.”
St. John So the only way 3Dfx could get Quake running on their hardware was to write an OpenGL driver, because you could only ship an OpenGL version?
Carmack I forget exactly what the timing was on all this. We talked about letting them do a Glide port because they had a lot of the work done and we figured we’d give them the codebase and probably wouldn’t even have to be involved in it much. But there were issues with the Verite port– if I could go back in time, I wouldn’t have done it. It was too much work, too much distraction for Michael Abrash. And we were afraid of that happening again with another proprietary port. But the OpenGL stuff seemed to be the right thing.
And when I did the OpenGL version, I realized that even with all this sweat and labor, the Verite version was just awful–the OpenGL version was a pleasure to do.
I tried just a couple of features, like transparency or shadows and reflections. And they just dropped in–it was so wonderful. And that was what really got me crusading for OpenGL. It was like, “This helps me. This is not me laboring to produce something to deliver to the consumer. This is something that’s letting me be more creative and try out more things to produce a better architecture than we would have had otherwise.” And at that point I went and tried D3D and found out that it wasn’t helping me do creative things. But I really learned something: A good API can help you produce better products.
St. John How do you handle third-party developers when you license your engines?
Carmack It’s, “Here’s a CD. Thank you for the half-million dollars. Have a nice life.”
St. John Any truth to the rumor that Mindscape’s upset about their licensing deal with you guys right now?
Carmack Mindscape had the very first Quake license and they signed a really nice contract where they got the codes, development, everything for cheap. They never got a team together and now they’re trying to say, “Well, we don’t want to pay you this last $200,000 because we didn’t do a game.” And we’re like, “Tough luck. You signed a contract. That’s your fault.”
St. John How important is software rendering to games these days?
Carmack I don’t think software rendering has a future, especially once the hardware people get their shit together and are actually helping us instead of being this anchor that you get paid to support, like it is right now.
Trinity will not have a software renderer. Guaranteed. Well, theoretically you could have a software renderer, if you hook that up as an OpenGL bag. And who knows, maybe processors with unique architectural features will make it possible to do hardware-like rasterizing on a software level, but I doubt we’ll have a pixel-level interface.
Now that means giving up a ton of stuff, but it’s an architectural transition point and we have to lose some things to make the right steps in the future.
Hook Adding power suits into Quake 2 took an hour and a half to get something we all agreed looked really good in hardware. Then to do the software version took four or five hours, even after the research was done on the OpenGL version. And the same with these translucent beams we do. OpenGL was “Boom, done!” Software, I had to go through and write new primitives. That took over a day.
“D3D sucks! Over the years, Microsoft will make D3D suck less, but they’re dragging us through the mud along with them as they figure it out.”John Carmack
St. John Bottom line, what should the next-generation 3D hardware accelerator be?
Carmack It should be a 3Dfx with integrated 2D and video-IN. That’s the concise definition of what future hardware should be. And there’s a couple coming out now that fit that bill. The NVidia RIVA 128, the Rendition V2200 and, to a lesser degree, the PerMedia P2. They’re all single-chip cards that basically use the same memory and provide most of the features. In the case of the Rendition, they provide everything. They provide a wider feature base than 3Dfx without some of the limitations on texture aspects and format sizes. And they also provide acceptable 2D video.
With all these pluses and minuses, I thought for sure there would be the clear winner by now. I remember thinking in January that in a couple of months the three survivors would be Voodoo Rush, the Verite V2200, and the PerMedia. It turned out that the PerMedia 1 had really bad visual fidelity. V2200 still hasn’t shipped, delayed forever. And Voodoo Rush has limits, and they wound-up crippling some of the 3Dfx performance for architectural reasons. So they took a step forward and a step back.
St. John Is id going to have to start patenting its technologies to protect you from other people patenting things they use in their games?
Carmack Well, we get to the idealistic thing. The only time I’ve ever had to actually put my foot down at id was over a patent.
St. John You asserted your authority?!?
Carmack Yeah. The only time I have ever had to do that over other people’s wishes was over software patents. Things were coming up about patenting things for protection, licensing, whatever, just for the reasons that lawyers give you. They were coming up and I said “No!” a bunch of times, and then they were being talked about when I wasn’t there. And I delivered an ultimatum that said if id Software patents anything, they’re going to be doing it without me because I will leave. And the fallout from that was not pretty. Everybody was pissed off at me, and I don’t want to do that again. But that was something I felt strongly enough about that I, quite literally, would have left the company. I would’ve gone off and programmed on my mountaintop someplace.
St. John What if somebody patents the technology you want to use in Trinity ?
Carmack I really don’t want to think about it. I’m sure eventually we’ll get a demand letter from someone. I’ll throw a lot of money at lawyers and say “Make this person go away,” and we’ll see how it goes. It’s something that’s really depressing because it’s so horribly wrong for someone who’s a creative engineering type to think about patenting a way of thinking. Even if you had something really, really clever, the idea that you’re not going to allow someone else to follow that line of thought… All of science and technology is built standing on the shoulders of the people that come before you. Did Newton patent calculus and screw the hell out of the other guy working on it? It’s just so wrong, but it’s what the business world does to things, and certainly the world is controlled by business interests. And technical idealists are a minority, but it doesn’t mean that I have to drag myself to do things that I don’t consider right.
Hook It’ll just be unfortunate when John comes up and says “Man, I came up with this really cool idea to do something, but some guy patented something that sounds sort of like this in a real general way, and we may not be able to use it.” And what could’ve been the basis for a whole new completely cool architecture, and a new revolution in gaming is off limits.
Carmack Well, the argument is that we could always license it from them. That’s what patents are supposed to protect.
St. John I know that’s the specter raised by the whole Messiah controversy.
Hook Dave Perry’s comments would make sense if he were talking about copyrights. It’s apparent that whoever’s been educating him about this has not been doing a good job because the things he’s talking about a patent protecting are not what a patent protects. He says, “We don’t want people stealing our code.” Well, copyrights protect you from that. It’s important for the people at Shiny, or whoever else is doing software patents, to understand the difference between a software patent and the copyright because copyrights protect you in all the important ways that you really need to be protected.
We’ve even had people say “id shouldn’t sue people for pirating your software because you’re against software patents.” That’s a completely separate topic.
St. John If you could just hire anybody from the 3D world, who would you hire?
Carmack Well there’s a big difference between who I consider the most talented and who I would necessarily hire, because you have to hire people that fit right. If I had to pick who I think is just the most talented, it would probably be Ken Silverman, the guy that did the BUILD engine. He does engines and tools. He’s great as an editor. He writes all the code for everything, and he’s just extremely talented. I think it was 3D Realms’ worst decisions not to coddle him, or whatever it took, to keep him on board. I think if he was still working directly for 3D Realms, they would have a Quake-type game shipped by now, just because he’s extraordinarily good. There’s maybe a half dozen people that are top-notch A-level 3D programmers. I’m not going to give you a list because I’d leave somebody off and they’d be all pissed off at me.
St. John You’ve already left off 90% of them by naming Ken Silverman.
Carmack All the people doing things that people are talking about now are pretty talented. The Epic people have been working on it for a long time. They’ve gone through a big learning process, but they’ve got the issues under control and they’re going to ship a product.
St. John So you think one day Tim Sweeney might grow to be as successful as you.
Carmack It’s hard to become successful by following in footsteps. This is probably going to come out sounding demeaning, but Epic wants Unreal to be Quake. Everything they did with Unreal, they did because they wanted it to be like what Quake turned out to be. And they’re going to achieve a lot of that, because they’re doing a lot of things well, but you’re just never as big when you’re second in line.
Hook Just like Dark Forces and Duke were both phenomenal games, they still definitely didn’t have the impact of Doom simply because they just weren’t first out the gate.
Carmack Like Prey, there’s a lesson to be learned, something a lot of companies don’t really ever learn. You hear it from the fan base a lot. “Do it right. We’ll still be here. We’ll wait,” and it’s tempting to just let things slip. But that’s really not OK. If you’re doing something cutting edge, you’re making fundamental decisions about your architecture, and if you let it slide for a year or two, then it’s just not the right decision anymore. Even if you pile on all these extras, it’s not optimal. It’s not targeted at what you’re doing. So I have some concerns about Prey coming out this late.
Hook That’s the other thing that differentiates the really good people and is sort of a pet peeve of mine. I have a problem with some of Dave Perry’s attitudes, but he has shipped games, so he is someone to be taken seriously. It bothers me when someone solicits magazine covers 12 months before their game is going to ship. It’s like, “Spend more time working on your game instead of hyping it.” The ability to ship a game, you can’t stress that enough. You know that Albert Einstein quote “Imagination is more important than knowledge.” I don’t believe that anymore. I think the ability to ship a product is far more important because someone who’s not very creative can have little bouts of creativity, but someone who’s not very productive doesn’t have a bout of productivity and ship a product. You just have to grind it out.
The problem is that it’s a slippery slope. Everybody likes to make fun of Battle Cruiser 3000 AD–which I’ve never even seen–but it was like seven years late because they didn’t know when to just say “Ship the damn thing!” No matter how creative you are, no matter how good you are, if your product takes three, four, five years to develop, you’re not going to make back the money you spent on development.
These days, I’m a lot more jaded. You’ll see Next Generation or boot coming out with a preview of a game that’s 25% complete but it’s got the most incredible screen shots. You look at it, and you look at the developer, and you’re like “What have they done? Nothing.” You can look at a laundry list of games that people talked about and never shipped, or by the time they came out, were absolutely irrelevant.
Carmack We’ve got a pretty consistent track record here. We go 50% over budget on schedules. With Quake we said “We’re going to do it in 12 months,” it took 18. It’s pretty much the same thing back for Doom and Wolf. Michael Abrash and I once had a discussion kind of justifying ourselves. We said, “Well, if we shipped on time, we probably weren’t ambitious enough.”
Hook Games that were started in 1992 and took a really long time have shipped in the past six months and they still use fixed-point math. And fix-point math died with the 486. They said “Hey, why don’t we use floating point?” Then later, it’s, “No, we don’t have time to go back and rewrite it.” You choose your target platform and you architect your entire game around this concept, then the minute you slip you’re going to be dated technology and you’re not going to be appropriate for the vast majority of systems people are running.
Carmack That was one thing that Quake did really good on. We still hear people that use Cyrix and AMD processors saying, “You’re just lazy for not doing fixed-point math.” We saved time doing floating point. And on Intel processors it was actually the faster thing to do.
St. John Your plan files raise a lot of controversy on the Internet. Is this a good thing or a bad thing?
Carmack At the start, I put my daily work log up. I started disciplining myself, basically writing down what I’m doing so I can go back and say “You were a bum that day. You didn’t get anything accomplished.” It made me accountable to a million people. And I’m all for things that make me work better.
boot Have you guys thought of merchandising? We’d love a Shambler plush toy!
Carmack Merchandising is something id has just consistently fucked up. We’ve got this long track record of doing exactly the wrong thing with merchandising. Two or three different companies just totally dropped the ball with Doom. I forget where the rights went on Quake.
boot Whatever happened to Doom: The Movie?
Carmack It was optioned, picked up, a script was written, but it just lapsed. I guess the statistics are: 100 options for every 10 scripts for every one movie or whatever. If it happened that would’ve been fairly cool, but I never had my hopes up.
St. John What about Brian using it as a political forum?
Hook Oh, hold on, hold on! I use it for different reasons than John. I do it because I have this weird altruistic thing where I enjoy writing. I enjoy educating other people. Now I may not be the most qualified person in the world, but I’m somewhat qualified.
I don’t believe too much in trade secrets. You tell people what you’re doing, and if they’re so good that by giving them that leg-up they’re better than you, then you have to be that much better. We tell everybody how we’re doing stuff, because we figure we’re on the cutting edge.
But I also believe plan files are a way of venting when I just want to talk about something that irritates me. I enjoy doing that, and people say they enjoy it too, because it shows that people here are also human. And in the case of my racism accusations against Shadow Warrior, it takes a certain amount of cockiness and arrogance to take a stand on something, especially when you’re in a high-profile position and I am in that kind of a position. I’d be remiss not to use that to correct something I feel is wrong. And in this case, it’s personal for me since I am half Chinese.
The problem is, unless I write an epic novel explaining every little thing, people tell me “I hate whites.” I’ve got mail from people who tell me I’m some liberal freak. They just extrapolate. It kind of takes away your incentive to do stuff like that.
I reserve the right to talk about personal stuff, and I have gone overboard, and I shouldn’t have. When I slammed the guys at Epic, I was a little harsh on that one.
Carmack That one crossed the line for me. I really don’t believe in attacking others. Still, it’s kind of interesting. Ultimately, I think it’s a good thing because it’s unedited commentary straight from the person’s mouth. There are usually too many layers of interpretation and spin between what somebody thinks and what people actually get.
“I delivered an ultimatum that said if id Software patents anything, they’re going to be doing it without me because I will leave. And the fallout from that was not pretty. Everybody was pissed off.”John Carmack
St. John Still, it’s frightening the amount of sway you hold.
Hook It really is. Sociology majors need to be seriously researching this. It’s like MUDS with graphics. On some Quake servers, people aren’t even killing each other. They’re just sitting there talking. Even when I play on our local server, there’ll be six people just stopped and talking.
St. John Don’t you just run up and blow them away while they’re chatting?
Hook But that’s no fun!
Carmack Then they talk when they’re dead!
Hook Oh exactly! That’s the worst part.
St. John Last question: I’m kind of unemployed now. What career advice would you guys give me?
Hook If you worked for SGI and evangelized OpenGL and didn’t lie through your teeth like you did with D3D, I think you would do a pretty good job.
St. John: Lets talk about DirectX.
Carmack: DirectX had all the right goals and, for the most part, it achieved those goals. Certainly it didn’t turn out perfect, and there’s lots of things that could have been improved, right? But the things that were absolutely necessary–DirectDraw, DirectSound–they basically work.
St. John: Is John being a little gratuitous in his praise here?
Hook: He’s being nice.
St. John: Do you have a problem with DirectX?
Hook: No. But you should have been here last night while we were trying to work out some DirectDraw stuff–I don’t think John would’ve been liking DirectX pretty much then, right?
Carmack: It could be better. But I’m glad it’s there, rather than nothing at all. I would separate Direct3D as a totally separate issue because that wasn’t part of the original spec.
I’m on the side of it being really simple and doing it right. And Microsoft has a lot of pressure to drift toward supporting everything and the kitchen sink approach. But it’s just like the issue of software reliability and usability: The further down there you go, the more things fall apart.
St. John: I’ve read a bunch of the e-mail boot gets from people raving about D3D sucking and OpenGL being awesome. And then they substantiate it with really weak paraphrasing of all the stuff John has said in his plan file.
Carmack: You wind up getting this sense of partisanship or just taking sides. It’s human nature, I suppose, but when it gets away from a strict technical discussion, then you start getting your “army of followers.” I suppose that’s part of having influence, but it’s not a part that I’m particularly comfortable with.
Hook: That does bother me, because there are a lot of people who will mindlessly listen to what John and I say, and say, “Yeah, yeah. Completely.” And they haven’t stopped to apply the critical thinking the way I would like it. And they’re free to disagree because I’m not a God. I don’t have some comprehensive understanding of the Universe that no one else does. So what I say is definitely going to be incorrect at times, and people need to stop and think about that.
Quake followers are sort of understandable but it’s so weird seeing products like Prey and Unreal that already have rabid followings, but they haven’t even been released. Not that they don’t deserve it, but the fact that people can band together behind something that hasn’t happened yet is kind of weird. And it shows this aspect of human nature to… I don’t even know what aspect it shows.
Carmack: There are people on the Unreal or Prey bandwagon that just write off anything we say out of hand because we’re the enemy. That’s just screwed up.
St. John: Brian, we understand you weren’t John’s first choice for the job. Are you Mike Abrash’s replacement?
Hook: I’m not Mike Abrash’s replacement–let’s get that real clear.
Carmack: We don’t have job slots. We have talented people that work to achieve the best product we can. And Brian fits in differently than Michael did.
St. John: Brian used to work at 3Dfx, right?
Hook: Yeah. After 3Dfx I went and contracted for eight months or a year. And that was fun, but it kind of sucks working at home. There’s none of the camaraderie, you can’t talk to people, bounce ideas around. It’s cool because it’s really the most relaxing thing in the world, working 20 hours a week and making twice as much as you did working 80 hours a week. But after awhile, you just get bored. And miraculously about that same time, I got e-mail from John saying, “Would you be interested in contracting down here for like a week or two?” And that was going a little too slowly, so he said “Well, would you be willing to come down here and interview and meet some people and maybe talk about a job?” And then like a day later he said “Fuck, do you want the job or not?” And I was like “Oh shit, that puts a spin on things.” And I said “I guess.” And, boom, I was here.
Everybody has this picture of how id is the most wonderful place to work but I came from a different perspective. There were issues… everybody was abandoning id, right? So I was a little distressed and I called up Michael and said “Before I commit, I need to know the reason you’re leaving id.” And he was like “Dude, I would work for id if they were in Seattle.” That sold me.
Carmack: Two years ago I had the actual honest thought that “You know, it’s really good when we get these sharp new people in here. Maybe there should just be this plan to fire the little man on the totem pole every year and bring in fresh blood.”
St. John: So how is Brian holding up here?
Carmack: Brian’s done really well because he’s probably working the longest hours of anyone here… like 90 hours a week. I’ve been holding my 70 hours for six years now. Two years ago, I was the only person here at night. It’s just wonderful now to have some other people that are here as much as I am, working hard on things.
Hook: It really isn’t necessarily the number of hours you work–it’s the how productive you are. When I first got here, I wasn’t particularly productive even though I worked long hours. There’s a huge ramp-up phase where you can’t get much work done because you don’t understand the system, and you don’t know how the code base works. Now we’re on the same wavelength and I’m a forced multiplier, right? It’s just like John and I agree on so many things. And it’s spooky. I’ll be sitting there trying to change OpenGL drivers on-the-fly, and at the exact same time we’ll both say, “Hey, that’s cool!” It’s trivial, but the fact that we can swap going from 3Dfx to the Intergraph on-the-fly, and we’re both thinking “Yes, that’s so cool!” It’s just really neat working in an environment like that.
St. John: How do you feel about the phenomena of female Quake players?
Carmack: I was really shocked by the size of the female Quake players.St. John: Shocked by the size of them? [everyone laughs]
Carmack: Shocked by how many… I never would have guessed that there were so many women that played Quake. And the fact that some are so damn good, like out of the top 10 or 20 players, probably two or three of them are female. Figuring about 1% of the players are females, but maybe 10% of the very best players are female. That’s interesting.
St. John: What do you think of the Talisman architecture?
Carmack: The Talisman architecture is based on a fundamental assumption that turned out to be wrong: memory prices and speeds and densities are going along this slow stable, path where all the processing elements are drastically outpacing them.
Now we’ve got 100+MHz SDRAMs at $3/MB for commodity prices.
But even if their assumptions were right, there are different critiques that can be made of the architecture. The most classically Talisman thing is the compositing of multiple layers to produce a scene, saving time by caching one layer and reusing it. Now I’ve worked on a couple of things similar to that. With Atari Jaguar programming, there was a way you could program their video controller to do layers, similar in a primitive way to what Talisman could do. A chain of layers could be combined, they could be scaled and translated, but they couldn’t be rotated, they weren’t anti-aliased. But the concepts are identical. You can build something with that.
St. John: So the industry is stuck on an old Atari concept?
Carmack: Yeah. And it was really a pretty clever concept in the constraints of 2D games, especially because you’ve got your parallax layers and they had this neat way of generalizing a sprite-based architecture. It was a more general-purpose architecture where you could use the same thing for your background as for your objects. And for 2D games it had wonderful advantages, but in a 3D environment a lot of those assumptions on reusability do not follow nearly as well.
St. John: Do you feel the Talisman architecture will become the pervasive 3D chip technology?
Carmack: I don’t think it will because it’s more expensive than other things which do the job right. And if you don’t specifically optimize for layers, what you’ve got is a 3D accelerator with compressed textures and anistropic filtering, which are both good things that I expect everyone to eventually adopt. But if you look at their chunked architecture, the performance has some interesting things you can say about it. PowerVR does a lot of the things that Talisman hopes to do some time in the future. In some cases it performs better than I’d expect. But in the end, it’s fundamentally not going to be as good as something you directly feed vertexes to, because it involves chunking, copying, and scatter gathering to memory. All these things compromise it at the high-end.
We investigated an amazing number of things in Quake. One was, “Alright, rendering these 3D models composed of several hundred triangles takes a lot of time and we can’t have these huge scenes all the fire fights like we had in Doom. And that’s a bad thing.” So one thing we looked at was “Well, let’s cache it into a sprite and then re-use that sprite for a few times.” That’s exactly the Talisman architecture. Now we went and put it in, and not only did we notice all these visual anomalies. One of the most wonderful things in Quake is that you’re there in the 3D world. But if you’re caching a sprite and re-using it, it’s not like that.
We saw that technology and it kind of sucked. And then we ran into all these other things we hadn’t even thought about, like where you place the sprite projection plane. If you put it at the front, then it actually extends below the ground on there. You run into these weird clipping problems. And turning a 3D object into a 2D poster then integrating with a 3D world is trickier than it might look. Lighting is obviously not going to be right any time you re-use it. That may not be a big deal, but the inter-penetration occlusion is the biggest part. And what we found is you just can’t re-use it for many frames.
St. John: So what should Microsoft do with Talisman?
Carmack: It should just quietly go away, because there’s wrong fundamental assumptions. There’s some really great thinking and engineering that went into it, but if you start with this straightjacket of memory, it’s just going to get worse by this horrible bandwidth problem. We need to be really clever to get around it. You can defend a lot of these things by saying “If we need this level of performance and quality and we cannot have this memory, then this may be the only way to achieve it.” There may be other viable things–caching and all that–and I can respect a lot of the science that went into it, but the world changed and it’s not appropriate anymore.
The key to Talisman was layering, which was just a bad idea. Then they had a bunch of things like shadow buffer algorithms and foretelling how important a multipass was going to be, and those are all right on. There’s a lot of right things in there.
The jury is still out on chunking–it may or may not be a good thing. PowerVR and Oak are following that line and 3Dfx is not. And they both seem to be doing well. So that’s a debatable point.
St. John: What do you think of Sega’s decision to use PowerVR instead of 3Dfx for its next-generation console?
Carmack: Well if you compare the two, interesting trade-offs are being made. Look at it in the PC space: 3Dfx costs almost twice as much as the PowerVR. So in a console space, $100 difference could be crucially significant. You can say that’s a strong argument for PowerVR, but that’s not really a truthful case. PowerVR is only cheaper because it uses other components already in the PC–the video scan out, main memory for chunking buffers, and all this stuff–which would have to be present in a console anyway. It does use a less aggressive memory subsystem, so the PowerVR system might have a slight cost edge. But one hidden cost is that chunking requires a large main memory buffer to specify your entire scene database in Primitive. To get maximum performance, you have to do double buffering. You have to have enough memory to get two entire scenes worth of rendering commands in main memory. In a PC with 32MB and games that only have 5,000 triangles, that’s not that bad. It’s a few hundred K. But look at the performance we’re going to expect of these next-generation chips, we’re going to have games that are doing 15,000 or 20,000 or 30,000 polygons a second and reasonable frame rates. Now, run through the numbers. 30,000 triangles at 100 bytes per triangle. That’s quite a bit right there. And then you have to double buffer it. Chunking imposes, on average, a 25% penalty. And now it’s like “Wow! To do this high-performance game, I need 3MB just in
memory.” And consoles don’t have that much memory. They’re certainly going to go up in the next generation. I don’t know how much it’s going to be, but a good guess would be 16MB. And you’re going to cut-off three megs just because you’re using this architecture chip? I think that’s a bad call.
St. John: How do you feel about the possibility of Sega’s operating system being a Windows CE subset of DirectX?
Carmack: An operating system on game consoles does not help you get better games. I stand by that quite resolutely.
St. John: Very few best selling games on the PC don’t use 3D–Myst, Diablo, Barbie, Scrabble, Monopoly.
Carmack: 3D is going to be separate from the operating system issue. An operating system does not provide 3D, really. It may provide an API. For a good example, look at the OS on the 3DO. It was a horribly bad idea. It sucked-up resources, it kept programmers from doing the most impressive things and going directly to the hardware, it had this vague notion of being portable across multiple implementations and evolving. And none of that really panned-out. And I don’t think it ever will.
What a game developer would most like to see is an architecture exposed to the metal and then lots of libraries. Developers don’t want to write a TCP/IP stack for a modem. It would be a ton of work and it wouldn’t really be that good. By the same token, they’d like to have that provided, but they don’t want an operating system that’s going to disable write permission to the hardware registers. “Oh developers shouldn’t be touching those things.”
That’s throwing away the best benefit of consoles.
You can just optimize the hell out of consoles and you don’t have that on the PC because you’ve got this staid, mushy, amorphous space to work on. So it makes people lazy. You can always say “Well, we slipped a little bit here, but computers are getting faster and we’ll just let it slide.” On the console you say “We’re missing our frame rate here. This sucks right here–you need to make it better.” And you’ve got the low-level access, you’ve got a memory map, you’ve got registers you can go down, and you can get a level of tuning that’s just not possible on the PC. At least not in any economically viable sense. The few people that do that, like the demo crews, don’t make money at it because it’s tightly constrained. And it would be a criminal shame to just turn the console into a weak, underpowered PC with no hard drive.
St. John: But wouldn’t it make the transition from one generation of console to the next better if existing content continued to run on it?
Carmack: I don’t think that is beneficial to the consumer. Having last year’s games on your new system doesn’t really help. They tried that before, like the Sega Master System plug-in for the Genesis. Nintendo was going to have compatibility with the Super Nintendo. They chose the same processor generation and all, but in the end it never happened and nobody cared because nobody cares about last year’s games. And for the consumer, it’s not like they have to throw away their old game machine when they upgrade.
Each generation of console is like 5 times better than the previous one and there are scalability limits to all projects. Everybody talks about infinite scalability, but it doesn’t exist because you choose a target and then do something appropriate for that. And maybe you’ve got a factor of 5 scalability, but that’s really pushing it and it’s clearly not that appropriate on the end of your spectrum. So content is not going to scale over two separate hardware generations. If consoles turn the same thing as the PC, where you’ve got this amorphous mess with “This is a 166MHz and this is a 200MHz,” then it’s just back to being a cheap PC.
St. John: id doesn’t permit magazines to distribute the demo Quake shareware.
St. John: So you guys kind of pioneered the whole shareware thing. What happened to the “share” part?
Carmack: Well, okay. We found out that all these people are making tons of money, in some cases millions of dollars, distributing our games. It really started sinking in that people are buying this CD just because it’s got our product on it. We looked at that and said “Okay, you’re going to have to pay us $6 per CD.” And we did that for a little while and that was something that we didn’t do particularly well for a large number of reasons.
But it turned out that people were willing to pay for it.
St. John: You’re not a shareware company anymore.
Carmack: Free distribution is great because the more people that see this stuff, the better. And the Internet distribution is still free. On the Internet, no one else is making money from it. Part of it is, “Well, that’s our money!” And that’s caused a number of arguments at id about how far we pursue that analogy, because it can get us into all sorts of areas that I personally don’t want the company getting into. But it turns out that we made a quarter of a million dollars on top of everything else. It was just, “Well, why not?”
St. John: So you won’t allow boot to publish the shareware, because it helps sell the magazine, and it should be you getting the money?
Carmack: To a degree. It always used to be presented like, “Look, we’re doing you guys a favor by distributing your software.” And we looked at it like “No, we’re doing you a favor,” and there’s no good rational reason why we should do that because we still got free distribution on the net. We get the money. It’s not a religious issue one way or the other. We’ve just kind of started doing it.
St. John: When are you going to do a Java version of Quake?
Carmack: Java has a lot of wonderful advantages as a program development language and I do plan, after we finish Quake 2, to go off and develop something significant in Java to feel-up the language. I haven’t done hands-on work with Java, but I think there’s really something there to be gained. We don’t have a lot of ties holding us back at id and we developed on this crazy NextStep platform for a long time and we’re willing to push OpenGL or maybe jump to Rhapsody. And if Java pans out the way I think it might, then we might write a lot of things in Java.
St. John: Do you think Java is fast enough for games?
Carmack: This is one thing that I don’t really understand about the whole Java marketplace and the way it’s being presented. It also ties to this bytecode portability stuff and there’s no damn good reason for that. Why don’t we just have Java and X86 compilers? I like the language–I don’t care about bytecode.
St. John: The portability of Java isn’t a feature. It’s just a language, and it would be nice to have a better compiler.
Carmack: Exactly. I think it’s a language that in many ways is better than
C++ and I’d rather develop something in that, but it’s all tied-up in this non-proprietary, run-anywhere type of thing, which is not what I care about.
St. John: The whole Java virtual machine thing doesn’t turn you on?
Carmack: No, not at all. I like the language.
In general, I’m willing to spend performance to make a better product. And that’s one thing that has taken me awhile to kind of mature to because all game programmers start off on “I can do this in 10 cycles!” And games have gotten so complex where Quake is practically an operating system. It’s this architecture, with all these different things that plug-in different ways, and it’s not just this little thing that draws to the screen. So design and the implementation of things in robust ways is really important. And we’ve still got lots that we can improve here. I’m trying to learn and teach myself to be better in these ways, but performance is not the only criteria.
When it comes to this sort of thing, I think Nintendo and Sega can make a better consumer network computer than like Oracle or Sun can. They know what they’re doing better in that segment and the computers are certainly powerful enough. An Ultra 64’s got a 100MHz processor, several megabytes of memory, excellent display output. You can do great things with that. And I think modem peripherals are going to be extremely significant in this coming generation. I know they’re on the current generation of Saturns and whatever, but it’s not the cornerstone yet. But when it becomes the cornerstone that’s when things are going to get interesting. There’s some wonderful things people can do if they own modems. There’s certain modulation things they can do at a hardware level to get rid of some of the crap that goes on the PCs, so you get a better connection to play real-time games.
They can do things asynchronously on their end.
And then there’s wonderful possibilities if they cut a deal with say Ascend or one of the digital emulation modem banks that ISPs use and you can negotiate a real-time protocol that gets less bandwidth but at much less latency.
St. John: Communicating directly through the POPs, without going over the net?
Carmack: Yeah. You still have to go analog to handle the POP line, but you can avoid going back on the ISP side, which is what 56K modems are talking about doing. Those are still optimized for bandwidth. If you took the same decisions, the same technical bases, and optimized for latency–not caring about dropped packets or bandwidth–that would be wonderful for games. And it could even be done with total compatibility.
The things I think are going to be sticky are the political realities of Sega and Nintendo. They’re closed boxes, and they make all their money by forcing anyone running on their platform to pay through the nose. And I absolutely hate it. But the net is 180 degrees away from that. If a browser supports Java or something, then all of the sudden, you’ve got people writing programs on that system. Sure, they’re not accessing their hardware, they’re not efficient… but still, it’s like this horrible foot in the door that I’m sure is going to make all of them really sick to think about. You have somebody running a program and that money is not funneling through them in a license. And I’m afraid that’s going to make them do so horribly wrong.
St. John: Proprietary technology will prevent any of that.
Carmack: And that is so appallingly wrong. It’s hard to express how wrong that really is. I’ve got this feeling things like that are going to happen. I don’t think Sega has the guts to be this network computer that does all these wonderful things in addition to just play games.
St. John: How do you feel about the top 10 list of PC games being saturated with non-3D games such as Scrabble, Barbie Fashion Designer, and Myst?
Carmack: We’ve never claimed to represent the majority of the market. It’s not something that we even care about. We don’t want to write Myst or something like that, and even if somebody said “Look, we can give you five times as much money to do that” It’s not enough draw. We’re not trying to own the market. It’s nice to have millions of people like the product and all, but not if you’re doing something you don’t care about, you’re just selling out to please the most number of people.
St. John: Certain large game companies seem to attempt to dominate every inch of the game market by generating a product that fits each niche.
Carmack: I had this really bizarre conversation once with a couple of lawyers and they were talking about “How do you pick your target market? Do you use focus groups and poll people and all this?” It’s like “No, we just write games that we think are cool.” They’re from such a different world that they fundamentally did not get that. We are not running things the way a business should be run, that that’s just not the way things work. It can’t work like that, but it does. It works that way for us.
There’s plenty of starving artists that are probably talented and hard working, they’re just doing something that nobody cares about. I happen to be good at something that makes me millions of dollars.
St. John: Who in the industry is just a 3D poser? Just doesn’t know what they’re talking about.
Hook: I don’t think there are any posers. You can’t get game contracts and just suck completely.
Carmack: Most of what comes out bad is because it didn’t come straight from technical people. There’s a lot of that where you have people that run the companies and they say things that the actual engineers wouldn’t say.
St. John: For example?
Carmack: Tim Sweeney [Unreal programmer]. I don’t think he’s ever come out and said anything that I really disagree with. But when Mark Rein [Epic MegaGames’ Vice President] interprets something for him, it might get a little muddied.
St. John: I understand that when you guys saw the Into the Shadows demo, you were pretty traumatized.
Carmack: I looked at that and said, “Their characters look better than ours.” But even though it was an impressive demo, it’s a perfect example of the difference between a technology demo and a shipping product. And shipping a product is just horrid. People don’t realize it. You get so many people that are from an EEU background and don’t know what they’re talking about. And they think just because, “Wow I did my senior project on this, I know everything it takes to do a game…” The graphics technology everybody looks at is only a quarter of Quake’s code, and it’s not even the hard part of it. Look at the things that are really unglamorous but really important, like the file extension architecture in Quake: I rewrite everything down to my disk reads and file I/Os between technology generations. And the decisions I made on Quake were just crucially important because I looked at what we’ve been doing in the past, and I made the right decisions in the data structure file system to allow it to be extended completely.
Hook: Quake is far more popular today than when it was released. Easily. And you almost never see that. Games have that spike in popularity. Everybody solves it, then it drifts away.
Carmack: Yeah, like Diablo. There was a huge spike where everybody was playing
Diablo and now? It’s basically gone.
Hook: And with Quake, the number of people of playing it has just kept rising and rising and rising as people get turned on to it on the Internet. You should see these add-ons! There’s Quake Rally, Quake Golf, and there’s Quake Soccer. It’s just crazy what these people are doing. People are just going insane! There’s even that Descent clone people did with Quake.
Carmack: And Quake 2 is going to be even better, because all the things that frustrated people in the architecture of Quake are fixed now. Things like exact control over the view camera. That was always short-circuited on the camera. But now you can take precise control over that. Mostly it’s a matter of making the client dumber and moving more control onto the server side where they can use it.
St. John: What’s the best amateur Quake level you’ve seen?
Carmack: I haven’t looked at the vast majority of the levels, and so I wouldn’t be a good judge. Although we certainly looked over the level designers when hiring our last designer. There’s been a feeding frenzy where dozens of people doing Quake levels have been picked up by different companies. That’s a really good thing. A lot of people are getting real jobs because they did this thing as their hobby.
Hook: The levels I’ve always liked all had to do with the Capture the Flag patch. McKinley Base was very well laid out. But then you talk to a level designer and they hate it. They’re like “That is so aesthetically unpleasing.” “It’s an ugly, ugly level.” But when I’m playing it, I’m not even thinking about that.
St. John: So you’re putting Capture the Flag in Quake 2, right?
Carmack: Originally it was intended, but it looks like it’s not going to make it into the box for Quake 2. It’ll certainly be one of the first things done after the game ships. Unfortunately, that’s just one of those things that got cut. We’re not going to have the time to develop it because the game add-on model framework is going to be changing practically up to the day we master, and it’s just not going to have time to stabilize.St. John: So what platforms will you support with Quake 2?
Hook: Just to quickly go through: We’re supporting Win32, x86, Win32 DEC Alpha, Linux x86, Rhapsody–both PowerPC and Intel.
Carmack: It’ll probably wind up on all the crazy Linux flavors, although some of those get really debatable. The intersection of people that run Quake on Linix, SPARC, and Light [?] is probably a dozen people. But if it’s just a matter of compiling, we’ll do it anyways.
Hook: And we do this, not because it makes any particularly good business sense, but because it’s cool. All this is an ego thing. The more platforms you port to, the more people are playing your game. And it’s a cool thing that someone can say “Yeah, I was playing Quake 2 on a SPARC Linux box.”
Carmack: It doesn’t make good business case, but it does help us to be better programmers.
St. John: What do you think of AGP?
Carmack: AGP is not going to make any difference on titles shipping right now, but in two years, it’s going to be absolutely necessary just for command bandwidth. The use of texturing over AGP is kind of a separate issue, where AGP can be looked at as just a multi-clock CPI. And in that case, it’s clearly a pure benefit. Nothing in the world wrong with it. AGP’s not going to provide tangible benefits to people right now, but it’s going to enable the evolution of everything that’s going to be significant in the future.
Opening up 32MB of main memory for textures will be good.
Some of the main memory bandwidth is going to have benefits, or some drawbacks that you won’t see in a benchmark. A benchmark you’ll just see like raw fill rate. And they can clearly do pretty well there, but there’ll be some other drawbacks. The highest performance things will still have dedicated texture buses. The biggest problem we have on 3Dfx right now is texture paging. Not triangle rate, not fill rate, it’s textures.
Carmack: And that broaches on another issue. We had a version of Quake that used portals. In fact, a month before Quake shipped I had a brainstorm that I thought might cause me to rewrite the engine along passages, which is kind of an extension of portals, and I tried it. In some cases it worked well, but overall it wasn’t as good as what I was doing.
St. John: When you say “portal,” do you mean a teleporting base?
Carmack: No, portal technology is being in an area and only drawing the area after it if you can see the portal that leads between the two areas. It’s valid, and it’s something that I’m going to re-evaluate again for Trinity because the situation has changed, but with the Quake level of technology, it was not the right thing. There are a few cool tricks you can do with portal, you can have your window sitting in space and you can walk around and you see another area through it. There are good technical reasons for doing that, but 3D Realms and the press wound up touting portals. They say things like “The previous-generation VSP technology and current-generation portal technology.” It’s not really a matter of one being more advanced than the other, but this what non-technical people spin it as because they need something to talk about. You need some controversy, you need the sound bite that people will associate with. And you can’t have this long thing about the technical trade-offs between doing things with statically computed things vs. dynamics because most people don’t care enough to really get it. It’s the job of the marketing person to condense it all down into one word.
St. John: Is there a John Carmack fan club?
Carmack: I told people, “Don’t do it.” I do think it’s worthwhile for people to admire the way we have done things. You too can work the 70 or 80 hours a week and not compromise and if you don’t screw up, in the end, yeah, maybe you will be driving a Ferrari.
St. John: Are you God?
Carmack: id serves as a good example for a lot of people, and I’m really proud of the position we have. We are a bunch of guys that worked really hard, and we’re talented, and we have been successful, and that’s something good for everyone to look up to.
Hook: What bothers me is that id has set such a good example and young aspiring game developers go “Wow. I want to be like id,” and everybody else in the industry loves to say “id’s an anomaly. You can’t be like id.” And that’s bullshit. I think that’s just a way of setting your sights really low. id had to start somewhere. And through talent and hard work and just being good, you can come up with something.
Carmack: It took a lot of steps people don’t see. All the games we did before we really hit it big. And even when we felt like we were hitting it big, with Wolfenstein, it was still relatively small. We sold maybe a couple of hundred thousand copies.
And certainly, we did have a big spike with Doom. But if you look back at all those mistakes, we had the most exploited business arrangement you can imagine. In terms of raw sales, Quake isn’t going to top Doom, but we’re actually making more money off of it, just being aware of what’s going on. You’ve just got to have the perseverance to push through all of it.
Hook: And be naive enough to actually think you will become successful. Even if your first title isn’t Doom, which it very rarely is.
Carmack: A lot of people think the first thing you do has to be your magnum opus.
And the first thing you have to do is teach yourself how to ship products.
St. John: So what are you guys going to be doing for Christmas?
Hook: What do you mean?
Carmack: You mean personal?
St. John: Yeah, you personally, what are you going to be doing?
Carmack: I’ll be working on new technology research.
St. John: You don’t go have a family somewhere?
Carmack: I usually visit the family like once a year, not on holidays.
St. John: How about you Brian?
Hook: What about me?
St. John: What do you do for Christmas?
Hook: I usually work through Christmas.
Carmack: You can get a lot done over Christmas vacation.
Hook: And there’s nothing on TV.
Carmack: You just come in and it’s so peaceful. There’s nobody calling and bugging you or driving by and stopping in. A good time to get work done.
Hook: Although, it kind of sucks when you try to get tech support and it’s December 25 and you’re saying, “Where the hell is that bastard? Oh yeah. He’s got a family.”
St. John: So is there anything you guys want for Christmas?
Carmack: No. Anything I want I get. The only good presents people get me are things I didn’t know I needed. Last year Tim bought me roller blades.
St. John: Is there anything you want that you can’t buy?
Carmack: Microsoft to adopt OpenGL and throw away D3D. That would be a good Christmas present.
St. John: Well you’re going to get a lump of coal. How about you Brian?
Hook: I’m pretty happy. I’m materialistic and all that; I’m like John said.
St. John: What material things do you want?
Hook: I just want a Ferrari 355. I’d be pretty happy with that and a Range Rover. There’s lots of stuff that I can easily want, but there’s nothing that I’d cry over not having because I know one day I’ll have that stuff. I’m like John but to a lesser magnitude. The only difference is I buy everything on credit!