I was at the HTML5 session at GDC on Monday last week, and was impressed by the sheer number of sessions on HTML5. This was a big contrast to last year, and it speaks volumes about HTML5 is picking up as a platform. However despite the gaining momentum, the dream of “Develop once, deploy everywhere” is still a long way to go. A very long way. I say this from the game development perspective, but its still true for almost all serious apps that want to compete with Native platform apps.
Before I begin, let me clarify that in no way do I want to undermine HTML5, as a platform. On the contrary I have very strong hopes from it. I think its on the right track, but has a long way to go. There is a lot to be done before it is ready for prime time, especially when it comes to the Game development community. There are many reasons why I say this, but the foremost of them is the setup cost. When you see people talking about how they took 6 months to write wrappers to make stuff work, you already know its not a viable platform of choice. Most startup these days can not really afford to wait for two quarters to get the tools ready to their development (unless you are developing the tools themselves). This seems to be the case with almost any one working in HTML5 (especially gaming). Once you start moving your app over to HTML5 the rate at which complexity increases is phenomenal. This means while simple apps are much faster, even slight bit of game play, and you are already being taken for a ride. Try drawing simple lines on the canvas, and you have already started thinking about optimization just to get it working. Basically you spend more time getting it to work across browsers, and keep up an acceptable level of performance.
To further add to the frustration is the fact that things dont work out of the box. In a utopian world we would have consistent feature set and implementation across all browsers, but then again, we dont live in a utopian world. What this means is either you develop for the “lowest common denominator” or face the ire of users who think it is ok to use IE (any version) or Chrome from 2 weeks back. With browsers like Chrome releasing every 6 weeks, we are getting more and more features in, but we are also distancing the gap between browsers. One can argue that you can target only a specific browser, but wouldn’t that defeat the original purpose? Coming back to the point, this “Lowest common denominator” approach has its own set of problems. First off the features at your disposal start shrinking rapidly, and at the same time complexity increases very rapidly. Moreover fragmentation can no longer just be a factor of resolutions and browsers (and their versions). We are now also fragmented on actual display size, available processing powers (CPU and GPU), battery power, connectivity etc, amongst other things. This means that way more thought needs to go in when designing an app.
One of my gripes with HTML5 platform has always been the slow rate of standards, and even slower rate of adoption. At one of the talks by Rachel Blum, she highlighted how it took a couple of years for Audio to make it into the standards and then finally to actually get adopted by browsers. What is worse is that for any kind of serious game development, you still have to do enough “wrapping” before the audio actually becomes usable. However this is changing, but a lot of it has to do with the optimizations and improved hardwares. I am very hopeful this is will no longer be the case. As more and more serious development starts happening in HTML5, I am sure we will see the pressure for quick adoption and standardization. Right now there are not many pure cross-platform HTML5 games available (at least professional ones). However there are enough people who are experimenting with the platform. Almost everyone is waiting for that break through to happen to jump on the bandwagon.