AAA Games in a Web Browser Utopia

Doom game scene.
Doom wallpaper,courtesy of https://wallpaperaccess.com/classic-doom

“Playing AAA games in a web browser”—once, this idea seemed possible. Many startups, hobbyists, and even enterprise-level game engines tried to break into the web domain, but without much success. For example, both Unity and Unreal Engine initially offered HTML5 export options. Unity still supports it, albeit with some limitations, while Unreal has removed HTML export support from official releases. Looking back to the late 2000s, when casual gaming began its massive rise in popularity, the only solution that truly brought online games to a wide audience was Macromedia (later Adobe) Flash Player. Companies like Zynga (with games like FarmVille) made fortunes with Flash-based games. There were numerous attempts to bring AAA games to Flash, especially after it unlocked GPU-based graphics rasterization. As a hardcore Flash 3D developer at the time, I recall well how companies and enthusiasts struggled with memory consumption, download times, and performance issues. Fast forward to 2021, and we still see no significant advancements in bringing AAA content to web browsers.

From a business perspective, there are a very few reasons why the average gamer would want to play AAA games in a browser:

  • Mobile and console platforms are extremely good, widely accessible, and host most AAA games.
  • Cloud game streaming services are available for those who lack the required hardware. For example, NVIDIA GeForce Now allows gaming without downloading content to disk. However, this use case isn’t mainstream since even an average non-Apple PC, with an Intel onboard GPU (which has actually improved), can run video games decently without needing to download the content.

From a technological standpoint, here are the nearly insurmountable challenges any AAA-to-Web porting solution or technology will face:

  1. Memory Consumption: Modern AAA games consume a lot of RAM. For instance, the minimum RAM requirement for Doom Eternal is 8 GB. Web browsers limit the amount of RAM available for web apps. Thanks to recent WebAssembly implementations in Chrome and Emscripten, you can now use up to 4 GB of memory in WebAssembly applications. But let me briefly explain WebAssembly and Emscripten before we move forward.
    • WebAssembly is a “relatively” new technology (in the fast-paced tech world, it isn’t exactly new, but it’s still not widely used in real-world scenarios). It allows native apps (including games) written in C/C++ to be cross-compiled into highly optimized JavaScript instructions that can be executed much faster than normal JavaScript. Game engines use this technology for HTML export via Emscripten (the toolchain for cross-compilation). Emscripten works well with small and simple native code sources. However, I’ve read that one reason Unreal Engine discontinued HTML support was due to complications in cross-compiling the engine’s code.
    • Back to memory consumption: 4 GB of RAM is extremely insufficient for most modern AAA games.
  2. Performance: The performance is subpar due to the lack of a “Close to the Metal” factor. A WebAssembly-powered AAA game still performs significantly slower than a game running on native bytecode. Period.
  3. Game File Size: To play a AAA game in the browser traditionally, you’d need to download all the related files. Just like when you open a website and the browser downloads all the front-end assets (UI graphics, HTML, JavaScript files) to your PC, a AAA game would require you to download 50-100 GB of game data. Even with a fast internet connection, this takes time. I know what you’re thinking as an alternative, but I’ll address that next.
  4. “Screw Downloads! We’ll Video Stream Our Games!”: Not so fast. Having been involved in developing an interactive video-based streaming solution at my previous startup, here are some hard facts: Streaming latency is never stable. Even if Musk’s Starlink becomes available to everyone tomorrow, it won’t change the fact that real-time data transmission latency over the internet is inconsistent. This means that even on a high-speed network connection, you’ll experience occasional graphics quality degradation due to video packet delivery delays or failures, as well as input response delays during gameplay. No serious gamer is willing to put up with this. Moreover, many people, even in technologically “advanced” countries (Israel is one of those where consumer internet quality is subpar), don’t have the infrastructure or service quality to support this kind of experience.

Casual 2D and even some 3D games fit perfectly well into the web browser sandbox. Modern web technologies offer hundreds of game development libraries and frameworks, such as Three.js and Babylon.js, which provide all the necessary features and tools to develop web-based games. Meanwhile, the video gaming market continues to thrive, dominating mobile platforms, with AAA games achieving better performance and higher realism thanks to advances in hardware and rendering technology. However, these advancements can’t keep pace with the limitations inherent to web browsers.

This is a staging environment