I don't quite understand everything John Carmack tells me. Some words and phrases he uses – megatexels, virtualised texture pieces, transcoding - fly over my head as effortlessly as one of his space-age rockets would. But I'm trying really hard, in amidst the din of Bethesda's E3 2011 booth, and what I do understand blows my mind.
Carmack, the man who invented WASD video game control, the man who with Doom and Quake earned himself legendary status among PC gamers, comes across as invigorated by the triple-A, multi-platform development challenge Rage presents: it is not enough, now, to make a game sing on PC. It must sing across the PlayStation 3, Xbox 360 and the PC.
But Carmack is about more than the present. He is about the future, too. He's about ten years from now, ten years from then, and then, perhaps, when consoles are no more. Will we then look back on moments like this and say: Carmack was right?
On a really high end PC you can run it at a much higher resolution. You can run it at two megatexels. You can run it with anti-aliasing on.
We break the world up into these virtualised texture pieces, so they're all cut up into pages. The consoles only have enough memory for us to have 1000 or 2000. They're limited on there where we actually can't bring in as much data as we would like. So some of the areas wind up being a little bit blurrier and lower fidelity, because of the memory limits on the console.
On the PC, if you're running on a high-end system, you can have four times as much memory available for it. That lets everything wind up looking crisper and a little bit less blurry in places.
But the downside is, despite a high-end PC being ten times as powerful as the consoles, we suffer a lot from API overhead. Because of the way id Tech 5 works, where we're breaking it up into so many texture pieces and uploads, on the consoles we're just like, I'm going to stick this in that memory right there and we just go do it.
While on the PC, OK we're updating this one page here, which turns into a 1x1 tech sub image update. If you're a programmer and you single step through what happens when you issue that on a PC it makes you want to cry. It's so much extra overhead.
We're working closely with NVIDIA, ATI, AMD and Intel to get this as good as possible. One of the things I'm really proud of is how Rage has championed a new extension. On the consoles we're 60 frames per second. One of the things that always sucked about 60Hz games is traditionally, if you're v-syncing on there, if you miss by a tiny bit it drops to 30FPS, which is catastrophic. That's a fall off a cliff difference there.
So what we do on the consoles, where we have this tight control, is we say, OK, you're going 60FPS, it's v-syncing, there are no tear lines. But if you miss by a tiny little bit, we'll let it tear at the top of the screen and we adjust the resolutions dynamically to let it catch back up.
We were able to convince all of the vendors to go ahead and implement that extension on Windows, so we're now able to do that at 60FPS as long as you've got the horsepower. But if you get a hiccup, where it slows down a little bit, it reverts to tearing, which is exactly what we want for gameplay reasons.
That is still one of the cool things about being able to work with OpenGL extensions on there. As soon as we can present a compelling case to these guys, which is basically, look, this $200 console is playing smoother than your $2000 system on here, you need to fix this and here's one of the steps you can do there, and they got it done. That's still a good thing.
It's interesting in that I don't feel this current generation is close to tapped out. It's different from previous console generations. If you go back a couple of generations, like a PSone or something, there were hundreds of programmers that knew what every bit in that machine did, and really had tried all the different reasonable directions you might go on there.
I don't think there is a person in the entire world that even knows one of the current generation of consoles to that level.