Microsoft is building a game streaming network to unlock console quality gaming on any device. Microsoft has realized that not all gamers are going to buy an Xbox. Instead of focusing on building games that can only be played on the Xbox game console, Microsoft is working on a cloud based game streaming service where anyone, on any device, anywhere in the world can play games that would traditionally be made available only to Xbox gamers. The service Microsoft is building is called Microsoft xCloud; and it’s being built on top of Microsoft Azure.
When building a game streaming service, there are many things to consider around game quality and usability. For instance, the latency needs to be low enough that a button click doesn’t take too long to register. Imagine firing a weapon in an FPS (first person shooter) and the weapon not actually firing until after your opponent takes you down, when you know you fired first. This is something that just can’t happen for the platform to be appealing to gamers. The video and audio streaming also need to be high bandwidth enough so the video doesn’t stutter, and the audio doesn’t cut out. Latency and performance are major pieces of functionality when your streaming games to devices from the cloud. This is all stuff that isn’t nearly as much of a concern when everything is played and rendered on the local device.
xCloud in Microsoft Azure
The entire process of building out the Microsoft xCloud game streaming service is a multi-year journey for Microsoft. They have been working to build custom hardware to host within Microsoft Azure datacenters that essentially integrate Xbox One hardware into rack mounted server blades. This means that Microsoft xCloud is being built as a combination of Microsoft Azure services, along with this custom Xbox server blade hardware.
To build these Xbox server blades, Microsoft has deconstructed the Xbox One console hardware into its individual components. Then they’ve taken the components and designed the server blades to be able to host multiple Xbox One systems within a single blade unit. This is much more than simply hosting a bunch of Xbox One consoles within a datacenter.
The requirement of building custom xCloud server blades stems the fact that the Xbox One console is not made up of “standard” computer hardware. Microsoft Azure does support Nvidia GPUs through the N-series Virtual Machines (VMs). However, these N-series VMs do not share the overall architecture of the Xbox One hardware.
The Xbox One console hardware is specifically designed as a gaming console that squeezes out the best performance out of its hardware. There is also specific hardware designs that are pushed through within the software of the Operating System (OS) that runs on it and also through to the game software itself as it runs. This is stuff like the device drivers for the GPU, storage devices, etc. Sure, these could all be virtualized, but virtualization sacrifices performance is some fashion and the requirements of gaming likely won’t align with that sacrifice. For this reason, it’s completely justified that custom xCloud server blade hardware is being developed for the sole purpose of hosting Microsoft xCloud.
Building custom xCloud server blades and hosting them in Microsoft Azure datacenters is certainly a unique privilege Microsoft has since they own Microsoft Azure. This puts them in a unique position to build and host a service like xCloud that no other company could do within Microsoft Azure.
In addition to the hardware side of things, Microsoft is building out new software tooling to better support game streaming. Among the software being designed is new video encoding technology better equipped to handle the game streaming needs of Microsoft xCloud.
Azure Region Deployment
Building custom server blades specifically for putting Xbox One consoles in Azure datacenters is great, but these blades will need to reside in many of the Azure datacenters / regions in order to adequately host a global service like this. It’s likely that most, if not all, datacenters and regions across the Microsoft Azure public cloud will be hosting many racks of these xCloud server blades.
To best serve gamers in Germany, China, and other parts of the world, I’d imaging that not just the “standard” Azure public cloud will be used, but also the sovereign clouds as well. There’s likely some benefit to mixing sovereign cloud regions (like Germany and China) in the overall system to best serve gamers. Although, data sovereignty requirements for hosting and support the gamers from these areas (Germany and China) will likely mean that those gamers will be required to connect solely to xCloud servers in those regions. This isn’t anything new, so it’s certain that Xbox Live already handles this appropriately, but it’s worth nothing that xCloud will need to do the same.
When looking at how Microsoft may address the latency and performance requirements of a real-time game streaming service like xCloud, it’s important to look at the massive, global footprint of Microsoft Azure. Microsoft Azure consists of 54 regions globally. Each of these regions consist of multiple individual datacenters, which each host hundreds of thousands (or more) of serve blades.
The number of Azure regions Microsoft is planning to deploy out xCloud server blades is still an internal Microsoft mystery. We’ll have to see if they formally announce more hosting statistics and numbers in the future as to, essentially, how much of Azure is going to be hosting Microsoft xCloud.
Another interesting statistic to see would be the number of xCloud server blades hosted within Azure, and how many are deployed within each region and/or datacenter.
xCloud Solution Architecture
While the complete cloud architecture of the Microsoft xCloud game streaming service will be dependent on the custom xCloud server blades, the rest of the service is still being built using Microsoft Azure services. These are the same services that all Azure customers can use today.
It really shouldn’t be a mystery as to which Microsoft Azure services will be used to build out the service. Of course, there are “core” Azure services that would make perfect sense to use. Then there are also other Azure services that assist with global distribution, resiliency, and high availability that would add value as well. These are really all the same services many enterprise customers already use today.
Here’s a list of some of the “core” Azure services to which I’m referring to:
- Azure Storage
- Azure Compute (Virtual Machines, Virtual Networks, etc)
- Azure App Service
Here’s a list of some of the other Azure services that would make sense to use for a variety of reasons including global distribution, resiliency, and high availability; among others:
- Azure Cosmos DB
- Azure Front Door
- Azure Traffic Manager
- Azure Functions
- Azure Event Hubs
- Azure CDN (Content Delivery Network)
Note that I did keep the above lists short on purpose with intention to highlight a few of the Microsoft Azure services specifically. Also, I do not have any insider knowledge as to exactly what services or architecture is being used to build Microsoft xCloud. Microsoft may never publicly release the technical details of how they build the service, but I imagine many of these services would be utilized.
It’s exciting what Microsoft is building for xCloud. Putting Xbox One consoles in Microsoft Azure sounds simple, but it’s far from it. Hosting individual consoles in a datacenter wouldn’t be very feasible. Designing and building custom server blades for xCloud that incorporate Xbox One hardware allows Microsoft to essentially build Xbox One Servers that are better designed to host a real-time game streaming service like Microsoft xCloud.
Here are some additional articles from Microsoft and the community about xCloud:
- Project xCloud: Choice for How and When You Play
- Project xCloud: Gaming with you at the center
- Xbox on a phone: Microsoft Project xCloud hands-on
I guess one of the key Azure service to be used could include Azure SignalR and Media Services.