Update #1: Since posting this, E3 has happened and what can only be described as a catastrophe for Microsoft. Some of the outrage is deserved, much of it just blind hivemind shit. But the fact that MS has failed to play up their cloud strategy and utterly failed to communicate the advantages of disc-less gaming has put the Xbox One off to a terrible start.
Update #2: This post kicked up quite a fuss on reddit with almost equal split 100/92 up/down votes. Most of it devolved into groundless statements about this ‘never working’ but regardless it was interesting to see the reaction.
Update #3: This anonymous MS engineer weighed in briefly to say some more interesting things about cloud computing for gaming saying, “Anything that doesn’t need per frame calculation and can handle 100ms delays can be shifted to the cloud. That’s huge”. Basically, reiterating what this article was putting worth.
According to Microsoft, the Xbox One will be hosted on a cloud infrastructure with the equivalent of three Xbox CPU’s for every one physical Xbox unit.
If you include the cloud compute power, Microsoft Australia’s Adam Pollington claims the Xbox One will be 40x as powerful as the Xbox 360. Once you drill through all the ridiculous marketing hyperbole, there does remain a tantalizing opportunity for game developers. What would you do with all this extra compute power?
As has been pointed out by Eurogamer and others, cloud-based compute power cannot be compared directly with locally-hosted silicon. There’s two key differences, latency and bandwidth. Latency is the time it takes for a data packet to make a round trip from client, to ISP, to cloud server and back again. Bandwidth is a measure of how much data can be pushed down that pipe. In plumbing terms, latency is how long your pipe is and bandwidth is how fat your pipe is. These are the restrictions that we have to work within to utilize cloud resources.
But for a developer interested in leveraging these resources, there’s a third and perhaps more pernicious obstacle; the rather disappointing state of broadband adoption amongst the target demographics. The average Xbox One owner will be running on a paltry 0.825MB/sec connection. But we can’t even target that, to be as inclusive as possible, you would have to include the lowest common denominator which will likely bring you down to a miserly 128kbps baseline bandwidth.
Lets Get Honest Here
Of course cloud-based compute resources cannot be compared 1:1 with the client-side hardware. And Microsoft’s marketing department would be wise to stop doing this. It’s 2013 and consumers are a savvy bunch. Today’s gamers respond very negatively to hollow marketing BS.
That said, I feel like gamers (and developers!) would be very unwise to brush-off Microsoft’s cloud strategy.
What the Xbox Cloud Will NOT Be Used For
There is a lot of speculation that the latency/bandwidth limitations will render this “cloud power” inaccessible and irrelevant. But I couldn’t disagree more.
The question you might be asking is, what difference will a 128kbps connection to a 5 teraflop CPU make to next-gen games?
In my opinion, a lot. But probably not for rendering.
As has been pointed out over and over, we are not going to be able to do the ‘OnLive’ thing and render the game entirely in the cloud. We simply cannot count on the infrastructure requirements being available to provide a consistent user experience. So let’s just stop talking about video compression ratios and controller latency and all that. Forget about it.
Another common ‘critique’ revolves around the notion that latency is measured in tens of milliseconds which basically rules out the idea of issuing and receiving data within the rendering loop of a single frame. And if that latency takes a jump into 100’s of ms, well that’s completely unacceptable if you’re relying on the data packet to render at 60hz. I think it’s safe to say that we’re going to be rendering everything using the Xbox One’s on-board GPU.
Let’s just agree to stop thinking about cloud-based rendering for the time being… at least until the continental US is covered in Google Fiber.
What the Xbox Cloud WILL be Used For
The examples given by Microsoft seem a bit lacking in creativity. They basically fall into the ‘quasi-cloud rendering’ category. Which is why I’m weighing in, as a developer, on what cloud computing could do for games (keeping in mind the latency/bandwidth restrictions).
Basically, we have to imagine computational tasks that are not dependant on same-frame, or even next frame timings (our latency restriction). And we have to be very mindful of not requiring too much in terms of total data sent and received (our bandwidth restriction).
Here’s a few scenarios I would like to see cloud computing used for.
Dynamic destruction: shoot a rocket at a building. The client sends the rocket position and a model id (the building the rocket is hitting). The server already has the building model and destruction logic. It goes to work calculating an elaborate rigid-body simulation. A moment later, a stream of rigid-body positions/quaternions comes down the pipe and the whole thing crumbles in spectacular fashion, with virtually no hit on the client frame rate.
AI / Pathfinding: an army of 4000 orcs is walking through a dense forest searching for the player. Each orc avoids trees and other orcs while marching in a semi-random pattern. A queue of path-finding tasks is consumed by the server which sends back only a list of curve points for each orc. Pathfinding computations can easily be smeared across several frames. From the client perspective, the Xbox is simply receiving a stream of waypoints for each AI entity. From the user perspective, a massive Lord of the Rings scale army is being simulated in real time.
Procedural Content Streaming: a sprawling medieval city lays before the player. Just one of many cities in the game, it contains absurd amounts of detail at all scales. Blades of grass between the cobblestones, a pile of crumpled refuse in the corner, pebbles, rocks and other detritus. Detail which is generated according to algorithmic rules (and probably physics simulation), since storing it (on even a Blu-ray disc) would require too much disc space. In this case, the player position is streamed to a server which has pre-calculated petabytes of procedural content. The content comes back in the form of packed lists of SQTs/id tuples. The client machine simply pulls from a list of lego parts to reconstruct the procedural content and place it before the player comes within view of the detail. From the player’s perspective, the world is rich with detail beyond anything he’s seen in a game stored solely on disc.
Procedural Content Generation: like streaming content, generating content could be used to build entirely unique worlds for each play-through. Imagine a game world that is procedurally generated like Minecraft, but with the fidelity of a next-gen Skyrim. That’s exciting stuff.
"the boost to gaming experiences may well exceed anything the PC has to offer in terms of superior client hardware"
Where Is This Heading?
There’s a common theme here. All of these techniques involve sending ids and SQTs down the pipe. Not pixels. The amount of data contained in a single SQT (Scale Quaternion Translation) is easily handled by even the most modest connection.
There’s a lot that can be done by calculating raw game-state on a server. This should really excite developers and gamers about the next generation.
It’ll take some time before developers start thinking in terms of remote computation. But the boost to gaming experiences may well exceed anything the PC has to offer in terms of superior client hardware.