Call of Duty: Ghosts has found itself in the firing line of the next-gen console power war. With Infinity Ward's COD: Ghosts a next-gen launch title, the news that the PlayStation 4 version runs at 1080p resolution native, whereas the Xbox One version runs at 720p native upscaled to 1080p, was seen as a huge blow to Microsoft. This from a game series that over the course of the current-generation has become synonymous with Xbox.
Ever since Infinity Ward executive producer tweeted the Call of Duty: Ghosts resolutions, the debate has focused on what it means for comparisons between the PS4 and Xbox One hardware. Here, in an interview with Eurogamer, Rubin offers Infinity Ward's side of the story, revealing the "engineering nightmare" the developer suffered navigating the shifting waters of next-gen launch dev kits, and insisting it did all it could to optimise the Xbox One version of the game in the months ahead of release.
If there is something about the Xbox One hardware that's to blame, it is the way it allocates memory resources, Rubin suggests. As Digital Foundry explains in its recently-published article "Xbox One Resolutiongate: the 720p fallout", Microsoft's console reserves 10 per cent of GPU time for its operating system. As DF's Richard Leadbetter describes it, features such as Kinect skeletal tracking account for "precious resources that are inaccessible to game developers". Rubin discusses this issue, and more, in the below interview.
He also suggests future Xbox One Call of Duty games may not suffer a similar resolution issue, as developers further optimise the COD engine and Microsoft - potentially - tweaks the Xbox One's OS reserved memory allocation.
Creating a next-gen launch title sounds like a nightmare. Can you explain exactly the challenges you faced?
Mark Rubin: It is for our engineers, especially. Fortunately, both Xbox One and PS4 are very much like PC, more so than the last generation. That helped enormously. If the systems had their very peculiar architecture, like they did in current gen, this would have been a different conversation. But because of that the development this time around it was significantly easier. I have experienced the current-gen launch. I was at Infinity Ward for COD 2. When we launched it was just PC and Xbox 360, but that was our first console, period. There was a lot to learn leading up, but that was just one console, when all it was was PC and that new console. And that was an interesting challenge.
So to do PC, current-gen two SKUs and next-gen two SKUs, was a massive challenge. Working with the theoretical hardware would have been a disaster if... honestly, the hardest thing to deal with is not the architecture. It's the OS (operating system) of the systems. That's the thing that comes on the latest. The Xbox One's OS on their box versus the Sony OS, becomes the hardest. All the SDKs and stuff you have to work with - that's the stuff that changes, not the hardware itself.
What about the operating systems, exactly, is the problem?
Mark Rubin: There's stuff in the console's OS that interacts with the game. So, for instance, voice chat is often supported by the hardware manufacturer rather than the software, and you're just using their channel. When that stuff is changing - because they're developing it on their side - and the resources they're using are changing - your, from a game design standpoint, challenge is with trying to make enough room for those resources to be used but at the same time use as much resources as possible.
One of the greatest challenges the engineers have to deal with is memory management, or thread management. There are X number of threads in your CPUs. Where in those threads is the stuff that's Microsoft or Sony? Where does it fall? How does it work? We don't have the SDKs for those features yet, and then they come in and you go, okay, well it needs 3MB of RAM - oh, crap, we only allocated two! You can't just take a MB from anywhere. It's not like there's just tonnes of it just laying there. You have to pull it from something else. And now you have to balance that somewhere.
It becomes a massive change internally for our entire engine, if they add a few MB to the amount of resources they need, or if they require all their processes to be on one thread. If it's not multi-threaded then we have to put it on one thread. Now we have to find space on one thread, where that can live, that it's not creating a traffic jam on that thread. Sometimes we have to be like, okay, we have to move all this stuff over to a different thread and then put that in to that thread, just to manage traffic.
That's what engineers are often doing: managing the traffic of CPU threads and memory and where that's going, allocating memory, what kind of memory is it? Is it dynamic? Sometimes what has to happen is we have to allocate the 3MB straight off the bat and just say, these 3MB, specifically, these actual memory addresses, have to be used for this. They can't be used anywhere else. Whereas dynamic, it's like, okay, I need 3MB but it doesn't matter where those 3MB come from.
So all that stuff can change on the fly. And you're trying to develop your system to match with that, and it's two systems, now, not just one: Sony and Xbox. That creates a massive engineering nightmare.
Wow. It sounds harder than I realised.
"Obviously the PR guys, when they found out, when they were told, that was more of an event than the devs sitting at work working on it."
Infinity Ward executive producer Mark Rubin
Is all that you've just described the reason the Xbox One version is native 720p and the PS4 version is native 1080p?
Mark Rubin: In a way. I don't know if I can point to one particular cause. Early on, we didn't know where exactly the resolution of anything would fall because we didn't have hardware or the software to support it. We tried to focus in on 1080p, and if we felt like we were on borderline of performance somewhere... We tried to make the best decision for each platform that gives you the best-looking game we could get and maintains that 60 frames a second.
There's no specific, oh, well, the VO chat on Xbox took up so much resources that we couldn't do 1080p native. There's no definitive one to one per se cause and effect. It's just an overall thing. We took each system individually and said, 'okay, let's make the best game for each system.'
I think both look great. Some people might notice if they had them right next to each other. Some people might not. The Xbox One is 1080p output, it's just upscaled hardware wise.
It was a late decision, too. That call wasn't made until a month ago.
Put me in your shoes when you were told this was going to be the case. I assume your engineering team explains to you this is the way it has to be. How did you guys react internally? Could Microsoft engineers not have helped?
Mark Rubin: It's not a thing, like pointing to the day he came and said... It wasn't like that. It's a long process. And we're always working with both platforms. There were Microsoft engineers there throughout development. They were always there. There wasn't an event, per se. There wasn't a meeting. It was just something that developed over time. Everybody was involved.
Obviously the PR guys, when they found out, when they were told, that was more of an event than the devs sitting at work working on it. So you'd have to ask them.
What everyone will ask is whether this is the result of the Xbox One simply not being as powerful as the PS4, and you're doing your best with the hardware you have, or whether for future versions you may be able to get the Xbox One version running natively at 1080p?
Mark Rubin: It's very possible we can get it to native 1080p. I mean I've seen it working at 1080p native. It's just we couldn't get the frame rate in the neighbourhood we wanted it to be.
And it wasn't a lack of effort. It wasn't that it was like last minute. We had the theoretical hardware for a long time. That's the thing you get pretty quickly and that doesn't change dramatically. It was more about resource allocation. The resource allocation is different on the consoles. That huge web of tangled resources, whether it's threads-based or if it's GPU threads or if it's memory - whatever it is - optimisation is something that could go theoretically on forever.
I definitely see slash hope both platforms will look way better the next time we get a chance at it. As an obvious analogy - and if people are not sure about this it's pretty simple - look at Call of Duty 2 versus COD 4. It was a massive leap forward in graphics, and that's just because it takes time to get through this.
First launch, first time at bat at a new console is a challenging one. That's just the way it is. For people fearful one system is more powerful than the other or vice versa, it's a long game.