Everyone thinks I am a 'conspiracy theorist' or something for saying this, but I really think that Microsoft is holding back WebGL for business reasons.
Microsoft is very dominant in games because most PC games require Windows. If WebGL were to really take off/become a popular way of distributing/consuming PC games, which would be 10 or 100x more likely to happen if Windows supported it out of the box via Internet Explorer, you would have to expect to see lots of relatively inexpensive and even free 3D games that run in the browser, and take little or no time to install.
Even with Microsoft refusing to support it, now with Pointer Lock API coming very soon to a regular Firefox release (tomorrow??) and probably Chrome soon also, it will be possible to release a FPS or MMO on a website with native browser technology. Throw in the momentum and capabilities of Node.js, and I think that means choosing a web stack has big advantages as far as ease of development for a lot of multiplayer 3D games.
I also think that where JavaScript/JS-based languages like CoffeeScript are really going to shine and be popular is in scripting for multiplayer 3D environments online.
I think that mainly we are just waiting for Pointer Lock, maybe a tiny bit better collaboration between browser and driver developers, and some social momentum.
When WebGL takes off, Microsoft Windows sales will take a big hit because people will be able to play the popular games on Macs or even on Linux machines.
Carmack is right - there are security risks with allowing web content to run GPU shaders.
But Microsoft is inconsistent since it allows Silverlight content to run GPU shaders - proving that while there are risks, they are manageable, especially with Microsoft's deep security measures in recent Windows versions.
The issues with drivers can be and are being mitigated. The question is will Microsoft support WebGL once drivers are secure? I still doubt it, for the business reasons.
I don't agree. The sorts of games that are microsoft-exclusive are mostly big-name high-performance titles, not the sort of casual free-to-play minimal-intensity stuff that's possible with HTML5. Javascript is nowhere near performant enough to be suitable for AAA development, and plenty of casual titles are often ported to multiplatform more reliably via flash / unity or similar.
It's not the lack of WebGL that keeps studios developing primarily for Microsoft platforms; it's the ability to write low level, native code in high performance languages, the ability to have as few layers inbetween game and hardware as possible. Writing native, you have hardware - os - api - game; if you're creating a high caliber performance-critical title such as, say, unreal, quake, starcraft, or half-life, why on earth would you choose to use hardware - os - api - browser - browser api - game?
WebGL is a cross-platform, royalty-free API used to create 3D graphics in a Web browser. Based on OpenGL ES 2.0, WebGL uses the OpenGL shading language, GLSL, and offers the familiarity of the standard OpenGL API.
WebGL is a low-level API, so it's not for the faint of heart. OpenGL's shading language, GLSL, is itself an entire programming environment.
Quake 3 was released in 1999, 13 years ago. It ran well on my 700mhz Pentium 3, with a 32mb TNT2 graphics card.
Show me a WebGL demo with the level of realtime visual fidelity and physics simulation from a game five years old - say, Crysis - and then I'll believe that WebGL is suitable for game development.
This particular conversation is precisely about AAA titles dominating on Windows.
Otherwise, the web is becoming a more viable target for small and indie devs. But as another commentator pointed out, without a overhaul in how video driver developers approach their work, WebGL as a concept cannot be made secure. Either browser vendors will wake up to this fact and at least start disabling WebGL by default, or enterprising black-hatters will start taking advantage of WebGL exploits, forcing browser vendors' hands.
High performance graphics on the web is a tough pickle :\
Apologies, I didn't realize this was just about AAA games, I saw Quake 3 in there... ;)
I don't think a major overhaul is necessary to make WebGL secure. There is really just one remaining issue, which is DOS attacks from slow shaders. This is not an issue on recent Windows releases which can almost seamlessly restart the GPU.
Aside from that, yes, there will be GPU driver exploits. There are also browser exploits and network stack exploits - we don't stop making browsers and network-connected applications though.
WebGL-ready browsers have very good capabilities to work around such exploits, either by simply blacklisting known bad drivers, or adding things like bounds checks to shaders etc. (which is currently done). Otherwise, exploits will happen and browsers will prevent them, just like browsers already do for non-WebGL content.
There aren't any serious WebGL attacks that have actually been demonstrated. Just a lot of FUD and some laughable Hollywood-style mock-ups designed to scare people.
On the other hand, there are many demonstrated usable attacks against Internet Explorer.
aboslutely - my team and I are close to finishing ours (shameless plug: http://www.jollycorpse.com), and I already mentioned Unity and Flash in my prior comment.
Though there's no way I'd write our 2D platformer using HTML5 due to absent gamepad support, a laughable audio engine, abysmal load times, and dodgy multiplayer capabilities, my original counterpoint was that WebGL support has absolutely nothing to do with developers' gravitation towards windows.
Are you saying that someone writing a -level renderer- that uses 35% cpu for a 13 year old video game means WebGL is ready for studio quality AAA titles?
> Everyone thinks I am a 'conspiracy theorist' or something for saying this, but I really think that Microsoft is holding back WebGL for business reasons.
You're not a conspiracy theorist, and I think you are 100% right here.
> When WebGL takes off, Microsoft Windows sales will take a big hit because people will be able to play the popular games on Macs or even on Linux machines.
I believe that when WebGL takes off, Microsoft will support it.
Say what you will of Microsoft, it is a rational player in the market. If everyone plays WebGL games, IE will not be the only browser - and Windows 8 tablets the only device - that cannot play that content. Microsoft will simply implement WebGL (it probably already has internally).
But you still have to wonder what this will do to their profitable desktop business, and hence their share value, and hence their shareholder confidence.
I suppose I'm really wondering if Microsoft can turn into an IBM.
I agree that it seems weird Microsoft would implement an open standard like WebGL. Microsoft doesn't implement open standards, they create their own one and make it fundamentally incompatible with the open one (ODF/DOCX, OpenGL/DirectX, UPnP/Windows Media Shares, SMB, Direct2D, H264/WebM, etc).
Microsoft is known for their embrace, extend, extinguish strategy. I think given the chance, they would do the same to WebGL. But at this stage they don't see WebGL as a serious threat: if they do, expect to see WebX, or DirectWeb, or something like that. I think Microsoft is 10x more likely to implement their own 3D Javascript API than to implement WebGL in Internet Explorer.
> Microsoft is known for their embrace, extend, extinguish strategy.
They were back in the latter 1990s, when the desktop was the new platform and they owned it. Now, handhelds are the new growth platform and MSFT has not gained much of a foothold there; exact marketshare numbers don't matter as much as perception of dominance, and MSFT doesn't have that. They allowed Apple and Google to get too big, instead of being first and achieving lock-in via network effects.
Think back to IBM: They owned the IBM PC platform and forced everyone else to copy them or choose a different platform entirely. Then Compaq beat them to the punch with releasing an 80386-based PC, then the Microchannel bus failed to catch on, and pretty soon IBM was irrelevant to the PC world. (And that isn't even taking into account what MSFT did relative to all this.)
So, if MSFT makes an I-Can't-Believe-It's-Not-WebGL, they'll have to deal with the fact Apple and Google know about Embrace-Extend-Extinguish and that MSFT doesn't dominate handhelds. So their proprietary extension will be limited to their devices, which will mean all of the iOS and Android users would be locked out, which means developers would have to choose between targeting a majority of users or MSFT, which means MSFT would have screwed itself sideways with a rake.
I doubt MSFT will screw itself sideways with a rake. However, I also don't see how MSFT can continue its growth without a new platform to dominate.
In terms of WebGL though, I think the major platform for it is the traditional Desktop OS. When people talk about creating WebGL MMOs with 3D graphics, etc. I think there's too much of a performance-bottleneck in terms of graphics for WebGL to be hugely popular on phones. If this was the case, Microsoft would still have the home-team advantage, and the ability to set the tone for future web graphics APIs. They did the same thing to the console market: when they came in, OpenGL and fragmented proprietary APIs dominated the market. Post-Xbox, DirectX became the first-class API for 3D game development. I think we could well see the same thing happen with WebGL if Microsoft makes a move to do so. And at this stage I can't see any other reason for them to hold out for so long in implementing WebGL in IE, unless they plan on subverting it.
That said, Microsoft didn't create a competitor to canvas and many other new web APIs (but I don't know how standards-compliant they are these days in terms of Javascript, Canvas, SVG, etc.).
WebGL would have to have a killer app on mobile for Microsoft's lack of mobile presence to hurt them. Currently all WebGL Demos I've seen have assumed a desktop-level of graphics performance, and no phones are "officially" capable of WebGL yet.
I just tried the three.js examples from my Galaxy Nexus (running 4.1) and couldn't get any of them working in either Chrome for Android or the default browser. That said, I know it's possible with some hacking and tweaking. From what I hear iOS has about equivalent support at this stage. That said, Apple and (to a lesser extent) Google could roll out this support pretty easily in an update, but I maintain my initial reservation; that phone hardware will not be performant enough to make WebGL a viable replacement or complement to native OpenGL development on those platforms.
> In terms of WebGL though, I think the major platform for it is the traditional Desktop OS.
Currently. However, that's how these things tend to start off, isn't it? On the one hand, handhelds have gone from dumb phones to the Droid and iPhone platforms; on the other, well, people wrote playable games for the Atari 2600.
> Microsoft Windows sales will take a big hit because people will be able to play the popular games on Macs or even on Linux machines.
Nope, because only 1% of computer users ever install their own OS, and less than that build their own, so they are buying prebuilt machines from distributors that put Windows on it. They see Linux and reject change, and try to stay close to the platform they have used for a decade, even if it is shoddy. And they would never fathom going through the process of installing an operating system.
It would start a trend towards Linux, if PC gamers could switch to barebones distros to optimize their rigs performance in games (yay for cruft like Aero desktop slowing down 3d performance), then Linux becomes "cool", and soon the communal nerd of every family is actively putting it on pcs to play games, and then the parents get used to it, etc.
But that is a gradual thing, and having the ability to play web games on Linux doesn't translate into a jump off the Microsoft bandwagon any more than the tens of millions of people who use their laptops only for Facebook and Twitter have jumped in the last 5 years.
I didn't think this was a conspiracy theory, I thought it was obvious!
Maybe not now but in future if 3D gaming is equally great on all platforms, who needs windows?
In fact I thought this was just part of the broader strategy of Internet Explorer. Read Bill Gates' 1995 Internet Tidal Wave letter. He's worried the Internet will become the new platform where people use apps and make Windows irrelevant. What did they do? The first browser wars left IE6 stagnating - meaning you had to make any serious apps for desktop, and that meant mainly Windows. Even though they're losing share now, they still won: 5+ years of extra Windows license sales. That's a lot of money, and even arguably bought them enough time to survive Vista.
Microsoft are more forwards-looking than they are given credit for, I think. Gates foresaw what is happening now, which is apps are moving to the web and making the OS irrelevant, as far back as 1995 - and took successful steps to stop it. Lack of WebGL support is exactly the same routine for the same reasons.
I don't buy this.
Apple was pushing HTML5 as an alternative to flash. Definitely true.
Apple has no preference for HTML5 as an alternative to native iOS. Native is simply faster, and better on iOS, and as long as Apple continues to have dedicated teams whose entire purpose is improving native iOS (and as long as they continue advancing the hardware), it's tough to believe why HTML5 will ever catch up.
If you believe native iOS encourages lock-in (As in, Apple doesnt make tons of money from apps, relative to hardware, but the apps make the hardware more compelling to consumers), then strategically, backing a technology that does not encourage lock-in, doesnt make that much sense.
It seems to me that most of the people who believe that HTML5 is the wave of the future (particularly in gaming), dont actually make games (or make money from games).
It will always be more profitable to make an awesome game in native, and monetize it on iOS first, than to make a less capable game in HTML5, and spread that around to every platform. Just my tuppence.
The biggest problem with HTML5 gaming right now is that Canvas rendering is designed to be single threaded and Flash sprite and bitmap rendering is multithreaded. Canvas is a direct draw api and Flash uses a deferred renderer. WebGL can overcome that problem, but most people writing web games naturally gravitate towards simple 2d canvas apis.
"WebGL - Everyone but Microsoft is in agreement that WebGL is the way to go for 3d graphics in a browser."
Things like these are the reason IE keeps losing market share. Why limit yourself to the little functionality of IE? That's why Chrome is growing and keeps getting recommended to others.
See I think that for IE to provide a really powerful capable web platform goes directly against Microsoft's business interests, because they have the most dominant native platform.
HTML5 is not going to change the world for gaming. It's great for in-browser games now, but mobile has "changed the game" so to speak. The visibility you get by having a great mobile game in the app stores is huge for finding users and making money.
If I were writing a game today, I'd do it on mobile first and work backwards to desktop from there, not the other way around. There are plenty of great tools for that - cocos2d, corona, etc..
That being said, in a future where supporting multiple platforms is a must, HTML5 might be great place to start, even for mobile, but it's still very early and immature at the moment. Great for demos and proof of concepts for cheap, I don't know that I'd bet the farm on it yet.
I don't follow game development much -- I thought one of the reasons HTML5 was so widely touted was because it streamlined mobile game development -- instead of writing an Android and an iOS version of a game, you could write it in HTML5?
I'm surely I'm vastly oversimplifying the issue -- what am I missing?
Regarding controls: with the dual analog sticks, did you then have arrow keys/mouse bound to the sticks for non-mobile browsers, and then touch for mobile browsers? How was that handled?
I just switched between these two control schemes, based on whether the browser supported the touch events.
There's a certain degree to which you could do this "automagically" - i.e. generate on-screen buttons based on the keyboard keys that are used in the game. But since controls are so important, I'd rather decide for myself on case by case basis how they translate to mobile.
Can someone explain this issue I have an issue with HTML5 games.
I don't know much about WebGL etc, but I do know that JavaScript is used to direct the game.
So to that end, considering JavaScript cannot be compiled and then sent to the browser to render, anyone can view the source. Anyone can hack it up. How do you solve this?
Once you obfuscate the JavaScript code, its actually a similar situation to that with Java or even regular C++ programs to a lesser extent, because you can still 'hack it up'. Look at all of the mods for Minecraft, for example.
What? Take a look at Google Closure Compiler - it renames all identifiers to nonsense, making it impossible to work with, and not affecting performance at all.
Clients can be hacked anyways, whether compiled or not. This has always been true. The only way to make a game secure is to keep all the game logic and data server-side. This means clients only act as dumb terminals: they provide input to the servers, and render the output.
> Which one? They all produce web browsers, operating systems, a collection of user software and all have millions or more in revenue.
The quote in TFA was "four of the largest tech companies". There is at least a 2-3 orders of magnitude (100X-1000X) difference between one of those companies and the other three. The other three are rightfully called "three of the largest tech companies".
Microsoft is very dominant in games because most PC games require Windows. If WebGL were to really take off/become a popular way of distributing/consuming PC games, which would be 10 or 100x more likely to happen if Windows supported it out of the box via Internet Explorer, you would have to expect to see lots of relatively inexpensive and even free 3D games that run in the browser, and take little or no time to install.
Even with Microsoft refusing to support it, now with Pointer Lock API coming very soon to a regular Firefox release (tomorrow??) and probably Chrome soon also, it will be possible to release a FPS or MMO on a website with native browser technology. Throw in the momentum and capabilities of Node.js, and I think that means choosing a web stack has big advantages as far as ease of development for a lot of multiplayer 3D games.
I also think that where JavaScript/JS-based languages like CoffeeScript are really going to shine and be popular is in scripting for multiplayer 3D environments online.
I think that mainly we are just waiting for Pointer Lock, maybe a tiny bit better collaboration between browser and driver developers, and some social momentum.
When WebGL takes off, Microsoft Windows sales will take a big hit because people will be able to play the popular games on Macs or even on Linux machines.