[The legendary programmer speaks to Gamasutra about finishing up work on id's latest game, what's going on with Doom 4, his mistaken predictions for the technology landscape, and the advantages of coding for iPad and consoles over PC.]
John Carmack is synonymous with hardcore game programming. Having always pushed the technology boundaries, his latest brainchild -- "MegaTextures" -- are about to get their most prominent push into the wild with the launch id's latest game, Rage, which launches in October.
In this extensive interview, he speaks about the advantages and disadvantages of the id Tech 5 engine which powers Rage, how it is to be under the same banner as Bethesda (and puts to rest as to why the id Tech 5 engine wouldn't work for the developer's upcoming Skyrim).
He also discusses the pros and cons of PC development, how working on the iPad has lead to some technological breakthroughs for his future mainline development, and how he was wrong about the evolution of console and PC gaming technology.
So you're finishing up the game.
John Carmack: We are at that point now where I'm looking back at the things we could do better and the things we will do better with Rage 2.
You're already thinking about that stuff?
How many programmers do you have on Rage?
JC: It's like 15 or 18 on Rage. Which is a large team. Actually, one of the things that I've been spending a lot of time [with] recently is static code analysis of everything. It's interesting when you've got a multi-million line code base with 15 to 20 programmers, plus another dozen on the Doom 4 project. They're all kind of working on the same code base.
One of the humbling things that you find is that, no matter how good of a programmer you are, you write code, and you make stupid mistakes. And I am getting to be a huge proponent of really, really rigorous code analysis, because I have been going through pioneering these things, just squeegeeing through our code base, and every single programmer -- from our best to our worst -- they all make stupid mistakes, and they are unavoidable. So, we need to have more automated checks on these things.
So, you're doing that kind of thing manually?
JC: Well, I'm using tools, obviously.
But they're not automated enough.
JC: Yeah. This is a really interesting thing. So, Microsoft has got some pretty good static analysis tools, and normally they make you buy, like an $8,000 professional edition of Visual Studio, but they give it for free to all Xbox developers -- which I think says an interesting thing about this stuff. Where Microsoft figures that, well, nobody blames them for crappy software on Windows, but they do blame Microsoft a bit for crappy software on 360, so it's in their best interest to put more static analysis tools available there.
I swear, any 360 developer that's not using that is making a mistake. It will find problems in your code base. But after we got through all of that, we made it so it's warnings as errors, nobody can check in anything that doesn't pass that. We've been going on adding additional tools like PVS Studio and PC-Lint.
They start changing the way people program, because some programmers will be like, "That's perfectly legal code. What the hell is it complaining about?" It's complaining about that because it's seen a hundred cases of somebody doing it like that and messing up and doing something wrong afterwards.
You're still very hands-on with all this stuff.
JC: If anything, since the ZeniMax acquisition, it's been great. I don't even have to pretend to be an executive anymore. I don't have to go to board meetings. I don't have to do anything! I can just sit in my office and work.
My core is defined as being an engineer. I take resources and a goal, and I try and put them to the best use to get us there. That's what I do. I don't want to be doing anything else.
Let's talk a bit about "MegaTexture."
JC: One of the coolest things with the MegaTexture stuff is, at the end of the project, of course, you're always worried about breaking things. You know, any time you add a feature, you have a chance of causing a regression of some kind.
We've got this whole team, our "stamp squad". They use the MegaTexture tools, where they just fly around and they can start sort of painting in the world. As part of the game development process, that is so magical, because it guarantees it doesn't take up any more space, it doesn't cause any slowdowns, and it doesn't cause any bugs. So, we've got this whole corner of the office of guys, and they're just going through to make the game look cooler, and it doesn't have any drawbacks whatsoever. That's been a really awesome part of it.
The real benefit of the direction we took on this is it allows us to be -- at least arguably -- the best looking game. I think we've got vistas that are among the coolest things anybody's seen.
But the key point is, people might argue pro and con relative to another game, we're running at two times the framerate of almost all the competition, and that's something that I'm really personally proud of, because that was a hard-fought battle internally. Because life is just easier when you've got 33 milliseconds instead of 16, but I think it matters. I think I could have made the game look better at 30 hertz. We could have had some more design freedom.
Why is that so important to you?
JC: It's that subtle feel of that... In fact, it's interesting; I did a number of experiments during this, where we say, "Okay. 60 is better than 30. Is 120 better than 60?" And I did some test cases on there, and interestingly, almost nobody can tell the difference between 120 and 60. A few people, like high-end professional gamers, can tell the difference.
I have a buddy who swears he can tell the difference between 120 and 60.
JC: Yeah. There are some people that can tell. But the difference between 30 and 60, there are some people who can't even tell that. "Eh, it looks about the same to me." But most people get at least a subliminal feel about it. It's more responsive. It's crisper. It's smoother.
But it is interesting that that next doubling, going to 120 makes almost no difference, which means that we've got this benefit curve on here, and 60 is kind of right at the knee.
And there's other areas where we're approaching that. You talk about resolution. An iPhone 4 display, that's about at visual acuity on there, where going much higher doesn't make much difference. So, it's kind of a cool thing that in many ways, we are approaching sort of the biological limits of what betterness we can display.