Wednesday, May 22, 2013

How Microsoft could possibly, just maybe, become WebGL's biggest supporter

Ready to jump head-first into wild speculation land? Come on, it'll be fun!

It occurred to me today that there's a slim possibility that in the near future Microsoft may actually become the biggest driver of WebGL adoption in the industry. Yes, that's right, "WebGL considered harmful" Microsoft. Sounds crazy (probably is crazy) but I feel the possibility is definitely non-zero. Why? Let's string together a series of massive assumptions, shall we?


[XBOX LAUNCH UPDATE:  So now the XBox One is actually out, and we can say with certainty that WebGL is not in it. You can look at Microsoft's official guide to IE on the XBox One to see what is included, but it's pretty explicitly stated that it launched with IE10, not IE11, and WebGL isn't mentioned anywhere. That's not to say, however, that it may not be included in a future update.

Interestingly enough, however it turns out that the PS4 actually supports WebGL to some degree! It's not accessible to the browser, unfortunately, but several parts of the UI, including the entire PS4 Store, are driven by WebGL! Who knows if Sony will ever make WebGL available outside their UI, but it's awesome that it's such a core part of the experience!]

First off, we know that someone at Microsoft has been toying with WebGL in IE11. It's actually working in the leaked builds of Windows 8.1 (or "Blue") with a little bit of registry hacking. That by no means guarantees that it will make it into the final release, as there are any number of very legitimate reasons why it may not be fit for release when the time comes. Personally I'm hoping they do release with WebGL support but I won't be surprised if it doesn't make it into the final product. However, for the sake of this post lets assume that when IE11 lands it brings a bundle of WebGL goodness along with it.

[UPDATE: So apparently right as I was posting this Microsoft started teasing WebGL support in IE on their Vine account. Looks like this part, at least, is looking a whole lot more plausible!]

Windows 8.1, and along with it IE11, will be released "later this year, in time for the holiday season" according to Microsoft reps. That's interesting because there's also another big Microsoft property that's getting an update "Later this year": The Xbox.

The Xbox One, as revealed in a TV and Sports-heavy event yesterday, will be running "Three Operating Systems", one of which is built on the Windows kernel. It hasn't been explicitly stated, but one would imagine that they would be basing it on at least the Windows 8 kernel, and probably something that resembles 8.1. I would expect it to be modified to meet the needs of the hardware, but I also don't think it will stray too far from the kernel we see on the desktop. After all, the Xbox One (and PS4, for that matter) are architecturally just beefy x64 PCs.

We also know that Xbox One will include a version of Internet Explorer. Again, Microsoft hasn't confirmed what version of IE will be include, but once again it's not too much of a stretch to think that it should at least be IE10 and might actually be IE11 since the release windows seem to roughly correspond. If I were to place my bets I'd say it's something that falls in between. IE10 customized for the console with pieces of IE11 pulled in during development. It probably won't be a massive change from the desktop version in any case because, once again, the console is essentially a PC. Even if the Xbox One doesn't launch with IE11 though, I think it's a reasonable assumption that the embedded browser will see updates over the life of the console.

So... to recap our speculation thus far: The Xbox One might launch with the Windows 8.1 kernel which may included IE11 which could possibly support WebGL. Thus, there is a teeny tiny chance that The Xbox One could support WebGL, either at launch or via some future update.

Still with me?

Now, even if the Xbox One did launch with IE11, and even if IE11 on the desktop did support WebGL there's a lot of reasons why it simply might not be available on the console. I would expect that any WebGL implementation that Microsoft would release would be a wrapper on top of DirectX, similar to how Chrome and Firefox use ANGLE on Windows. But even though the Xbox 360 (and presumably Xbox One) use something very DirectX-like, it's not directly compatible. Thus a WebGL implementation for the console would probably require a custom implementation, which may be more technical debt than Microsoft wants to take on. There may be security concerns unique to that hardware, there may be OS-level restrictions that prevent the necessary GPU access, there's probably political forces that would push back against it... There's a whole slew of scenarios that I can imagine that would keep WebGL off of that box.

But on the off chance that it actually did make it in, WebGL would suddenly gain a massive new audience, and developers would have a lot of motivation to create WebGL content. After all, now there's a gateway onto Microsoft's device and into peoples living room that sidesteps the process and politics of traditional console development. Assuming gamepad and fullscreen support (which I think is pretty much a given if WebGL is there) players could jump into a game with a simple bookmark and immediately be in a console-like experience with very little friction. Targeting just Chrome and Firefox may be a hard sell, but targeting the Xbox, while simultaneously capturing desktop players too? That's hard to resist.

WebGL on the Xbox also has the opportunity to be the fastest implementation of WebGL around. In Chrome there's large chunks of code that do nothing but work around platform and driver issues. There are loads of code paths that are in place to ensure that you can't get "bad" data back, that everything is initialized to a known good state, and to make sure that we don't have to trust the driver to provide security for us. In a well-known environment like a console, however, the implementation could be far more streamlined.

That all sounds awesome, but why would Microsoft allow it? After all, providing a way to put games on the console that haven't gone through Microsoft's licensing and/or store is depriving Microsoft of potential profits, right? Certainly Microsoft might see it that way, and that alone could make this whole idea a non-starter, but I feel like the fringe benefits to Microsoft just might outweigh the downsides in this case.

First and foremost, there's the inescapable fact that a WebGL game, even on a super-optimized browser, will never match up to the performance of platform-specific native code. Nobody is going to be building Battlefield 4 in the browser anytime soon. Not to mention WebGL games will have to fetch their resources from the web instead of a speedy Blu-Ray drive. They won't be able to earn achievements or access your friends list or use the other fancy social tools the native games will. They won't be promoted on the home screen, they won't have TV tie-ins from Stephen Spielberg... put bluntly you'll have to go through Microsoft if you want to give players that "premium" experience. WebGL on the Xbox would always be a second class citizen.

But that's okay. Look at the massive number of Flash and HTML5 games online today. Many of these are simple, silly, proof-of-concept type games that would never have been appropriate for full-scale console development in the first place. Microsoft would never have made money off of these kind of games in the first place, but it does benefit them to provide access to these games through their device as it further cements the console as the "Entertainment hub" of the house. Furthermore, rather than IE being a perpetual afterthought for online game developers (as it is today) suddenly IE11+ becomes the primary platform many web games target, because it represents a massive audience on well-known hardware that are already on a gaming-centric device. It also means that games will be more likely to target Microsoft controller, even on the desktop, and it provides one more potential feature to set it apart from Sony's console.

Is that enough to convince Microsoft it's worth it? No idea! It makes for an intriguing thought experiment, though. We'll find out by the end of the year, and I really wouldn't recommend getting your hopes up in the meantime. For my part, though, I'm going to stay naively hopeful until proven wrong. :)