In this blog post, I want to share why I believe investing in cloud gaming is not a wise choice. With about three years of experience in the field, I refer to the system we worked on as the second generation of cloud gaming. The first generation was pioneered by small companies like OnLive and Gaikai starting in 2008. However, these companies ceased operations in about three years, followed by larger, more technologically advanced companies that met a similar fate. The third generation is represented by Google's Stadia. Between each generation, there are several years where interest in cloud gaming seems to wane, only to be followed by renewed enthusiasm.
On the surface, cloud gaming seems to make perfect sense. Just like music and video, which have transitioned from physical formats like CDs and DVDs to downloadable formats like MP3 and MP4, and now to pure streaming, gaming appears to be following a similar trajectory. Games are simply another form of content that is currently in the downloadable phase.
As a veteran in the field of cloud gaming, when I first heard about Google Stadia, I had a strong feeling it was destined to fail. The same was true for a smaller YC company called PaperSpace. When they launched on HackerNews, I expressed my pessimism about their chances of success. The founder's reply was defensive, but as we can see, they have since pivoted to something else, which, once again, does not surprise me.
When discussing cloud gaming, most gamers and engineers initially doubt its technological feasibility. After all, smooth video streaming or video conferencing still seem to have occasional issues. Cloud gaming, with its real-time nature, must be even more challenging. However, once people try it, they are often amazed by how playable cloud gaming can be. But a more important question that people often forget to ask is, at what cost?
Cloud gaming is an incredibly complex system that encompasses the entire engineering stack, from the hypervisor and operating system to device drivers, networking, game store, and the games themselves. Most companies can only take ownership of one or two of these layers. Additionally, if you rely on others to provide these infrastructures, each party will want a share of your profits.
What makes cloud gaming particularly challenging is that it represents a new use case for these layers. They need to be extensively modified to be suitable for cloud gaming. For instance, if you want to support USB devices, like a gamepad, you need to intercept the device driver for input events on the client side, then transmit the signals to the data center and simulate a virtual device for the virtual machine to inject the received device input into the operating system. There are multiple points where you can implement this workaround. If you prefer a more seamless implementation, you would need to access the lowest layers, such as the hypervisor or the operating system. However, often you don't have access to these layers. For instance, if you deploy on AWS, you won't have access to the hypervisor.
Secondly, most games are not designed to be shared like cloud games. They often have strict anti-piracy measures built in. However, for cloud gaming, we need to allow users to share virtual machines. This means that a game install for User A will not be playable for User B. Efforts need to be made to loosen the control over piracy. Game saves pose another challenge. They can be saved anywhere, so we need to constantly monitor the filesystem to track changes and determine what needs to be preserved.
Game distribution and content present another significant challenge. Existing players in the industry are reluctant to adopt cloud gaming because it introduces another layer of indirection—the cloud—which means another entity to share their profits.
The way we currently build data centers is not conducive to cloud gaming. Typically, we construct a few large data centers to benefit from the economy of scale. However, for cloud gaming, the more ideal approach is to build many small data centers near populous areas, as gaming is very latency-sensitive. Another issue arises from the fact that game usage usually peaks after work hours. This means your data centers will either be under heavy load or completely idle. If you build the data center and use it solely for yourself, you won't have the flexibility to scale according to demand.
Based on these experiences, I believe there is only one company that has a significant edge in cloud gaming, and that's Microsoft. They own almost the entire technology stack, from the data center to the operating system, to game content and distribution. Everyone else is less competitive than Microsoft in this regard.
Google's Stadia made a bold choice by selecting Linux as the operating system. I believe that in the long run, this decision offers better prospects for tighter integration. However, in the short term, it means giving up existing game content on the Windows platform. Additionally, they released the WebCodec and WebTransfer APIs, which are likely to see more use for non-gaming use cases.
In conclusion, cloud gaming is a challenging business, and streaming is actually the easy part. For those involved, it's crucial to estimate costs early and frequently, rather than spending all your time on implementation, only to discover too late that it's not economically viable. By doing the calculations, you'll realize that for twice the price of a PS5, you can only run a virtual machine of the same performance category for a month. With such costs, customers really need a compelling reason to use this service.