The biggest event to happen to internet and mobile in a long time is the ongoing development of HTML5. Currently there is partial support but the new standard’s definition still isn’t finalized. I have no doubt that it will be a large advance for the web developers; my particular challenge was determining if HTML5 was going to outclass Flash for game development.
The technologies that compose HTML5 really are not new, what is new is the push for defining a standard that will be consistently supported, universally across all browsers and devices. There are some new emergent components like the new video and audio tags, plus perhaps the most critical addition for games – the canvas. There are also traditional web building tools like javascript formally being added to the standard. Anyone that has ever dealt with cross platform development issues will tell you universal support is huge, but it is a brutal problem to solve. In game development there can be teams of people ‘porting’ a title from PC to a console like the Xbox, or across consoles like the Wii to PS3. With the explosion of quantity and diversity of mobile devices and tablets, the complexity of developing something ‘for the internet’ has reached critical mass (besides issues of hardware limitations, most mobile devices have their own internet browser too). Flash and HTML5 have different approaches to solving this problem. Flash has been trying to adapt reactively to changes in how people use the web, and HTML5 is trying to get everyone to agree to a set of features to support. The goal for both is the ability to write one version of code (sparing performance issues) that works universally on all devices.
Full disclosure, I am completely biased to Flash. I have been using it for several years now, I am an expert at it, I know it inside and out, and have amassed a collection of work and library of resources. As I mentioned in my article about new technology, since I am a veteran developer in the existing space, there needs to be a substantial improvement in capabilities for me to change technologies. I am invested in Flash (which evident to me after upgrading to CS6). I had been hearing whispers about HTML5 from as early as 2009, but it really didn’t get my attention until Adobe halted development of its mobile flash plug-in (no more support for flash embedded on web pages, AIR apps are continuing, and Adobe is working on a converter for flash to HTML5). The official statement from Adobe claims Flash’s future is going to be based on advanced gaming and premium video. Which inevitably led to Adobe laying off a large number of employees with their own vision for where things are going. For the next couple months I voraciously digested any article that was even half interesting on HTML5. So through the narrow lens of Flash veteran focused on game development, I am going to dissect this technology. Is it really ‘taking over’ or is it all hype? Is it as capable as other technologies? How much of the marketplace could it reach?
Flash is really mature these days, revenue and traffic – particularly for Flash games, is still increasing. Flash is not standing still, with social gaming, pressure from other competitors like Unity 3D, Flash is growing in capabilities. Flash recently released version 11.3. As pervasive as Apple products are, there are actually more Android phones in the market than iPhones, and more people are targeting Andriods for game development. This article from May 2011 is now fairly dated (Firefox and Chrome have both surpassed IE in browser marketshare), but had the best breakdown of the market and browser support. Flash is already everywhere, and is supported by older browsers HTML5 will never run on. I also like this logarithmic graph that shows PC is an order of magnitude larger in existing devices than Mac, and more androids than iPhones and iPads put together.
The future is a bit questionable, but I am going to build for what is out there right now. The Flash plug in doesn’t work on Apple product’s browsers because of politics, not because the technology is incapable of it. Also, Flash developers can still develop apps for mobile apple products via Adobe AIR, and there is evidence that it will be a while before HTML5 eclipses apps. While things are changing, Flash is not getting replaced, it isn’t even contracting.
Currently HTML5 is still very rough around the edges. The Wall Street Journal had an insightful article that conceded that “The excitement has spread despite the fact that HTML5 is missing some key features. Many users, moreover, won’t notice striking differences from websites that use Flash.” I am not entirely sure what Flash’s future is going to be in an increasingly mobile world with browsers that refuse plug-ins, and without Adobe adding touch screen support. However, HTML5 is not without its flaws and uncertainties.
As of right now, HTML5 is still a fledgling technology. I had come across several articles discussing HTML5’s unpredictable performance, including this overview of HTML5 from Gamasutra. Audio support is severely lacking, audio appears to have grown very divergent. There is no audio codec that works on all platforms, and some devices like the iphone can only play one sound at a time. HTML5 is only going to work on modern browsers, and you will need them to keep upgrading their browser to have access to the latest features. Depending on your target audience that could be a huge hurdle to overcome, in my experience the casual web game audience is older people running older software and hardware – or kids with hand-me-down electronics. In an article where Zynga refers to HTML5 as the ‘pain machine’ ‘”HTML5 was not created with games in mind,” and the working group behind the specification has historically had no members from game companies.’ In contrast, while it is obvious that the early versions of the Flash player’s focus was animation and video, advanced gaming is now at the forefront. Another case study is the company Moblyng an early adopter of HTML5 “… a protocol for creating software that can run on web sites, mobile phones, and social networks. But in games, HTML5 has had mixed results, since many games in HTML5 run slow.”
Personally, I find the canvas really weak, and that is a big turn off. I have heard of, as well as seen, performance inconsistencies between using DOM or the canvas for rendering. I’ve complained about not having enough core support in Flash, the canvas is a step down from that – isn’t much more than a pixel painter. In order to just get running with basic elements, you need to hunt down 3rd party rendering / game engines or write one yourself. If you are in the middle of a project and reach a performance or capability impasse, it isn’t going to be fun to swap out renderers. Also, just the numbers game of so many different libraries and engines means it will be harder to find solutions and answers to development questions.
I’m not sure HTML5 improves upon existing alternatives including Flash. HTML5 is free, but you are going to need potentially spend time and money to get to the state Flash is out of the box (currently). It really just seems to come down to preference and what platforms mean the most to you. As of this writing, with specific focus of game development, HTML5 developers are looking at reaching fewer users and not having as many capabilities as Flash. Going forward, the majority of experts closest to Flash and HTML5 think they will coexist with their unique specializations.
While the technical capability to write a singular code base that is universally supported on all devices sounds like a panacea to developing cross platform, it is only a small part of the solution. Everyone seems to overlook that design, interfaces, and controls have entirely different needs and demands on users per device. Screen size, buttons, having a mouse or keyboard, touch screens, does you game get interrupted by phone calls, power and performance limitations, network speeds, adjusting for optional peripherals, and a host of other concerns rise once you start thinking about /everything/ that is out there. Even if your tech can effortlessly transition between devices, your product design might not, and if it does it probably suffers to serve the least common denominator. Something ‘working’ usually isn’t good enough; the ease of use it matters.
HTML5 is still really important; I am sure anyone that wants to do anything on the web will learn it. I am just not going to use it to build games. It should be an interesting step forward for the internet, but I am sure there will be plenty of websites that stick with the same eight year old site they got someone to build as a favor. If you create a great experience, people will seek it out. It is easy to forget in the surge of free to play mobile / browser / social network / PC games that there are those games out there drive people to buy a console, or blow a bunch of money on fake musical instruments – just for one game. “Ultimately, technology is just a tool to build, publish, and be a point of sale for our content. I am not sure there has ever been a game that was successful just because it had the best technology. People still purchase board and card games, there is still a strong community and ongoing development in paper and pencil roleplaying games, and table top games have their niche. Your main focus should be creating a compelling and enjoyable experience, the pleasure and delight of your audience takes priority.”
Thanks for reading, and remember, we are all in this together.
Edit (March 30th, 2013): Another great article on the topic has been written by the author of greensock TweenMax, whose code I have used extensively in past projects. Also, for anyone that hates on Flash because they find flaws in the ActionScript language, I would like to point out that every language has its quirks.
|
|