Why the Angry Birds webapp needs Flash

[2011-05-14] angry birds, dev, gaming, webdev
(Ad, please don’t block)
Update 2011-05-21: Web gaming technologies: Angry Birds’ cross-compiled Java versus native JavaScript

Shortly after the Angry Birds webapp came out on 2011-05-11 [1], people were disappointed that it needed Flash. This post examines why that is.

If you start the Angry Birds webapp in a browser that does not support Flash, you are greeted with the following message.

Ray Cromwell explains:
[...] after the release of Angry Birds at Google I/O, people noticed that it was requesting Flash. Angry Birds is written in GWT and uses a GWT library written by Fred Sauer called GWT-voices. This library not only supports HTML5 audio, but has fallbacks to Flash and even <bgsound> on IE6!

There was speculation the Flash requirement was done for nefarious purposes (to block iOS) or because Chrome includes Flash, but the reality is, it was done both because Chrome has some bugs, and HTML5 <audio> just isn’t good for games or professional music applications.

It’s good to know that Angry Birds is a “pure” webapp, except for a little Flash used by one of its libraries. Web gaming has come a long way. Many graphics problems were solved by WebGL, but audio is still problematic. Thankfully, Google is working on a “Web Audio API”. Its support in Chrome was announced on the public-xg-audio mailing list on 2011-01-31:
I'd like to announce that Google Chrome now supports the Web Audio API. For now, it needs to be enabled in “about:flags” and runs on Mac OS X (Windows and Linux are nearly ready!). I've updated the demo page with a link to the binary:

http://chromium.googlecode.com/svn/trunk/samples/audio/

[...]

As a side note, the Apple Safari binary is built from the same audio engine code in WebKit. Not surprisingly, the experience in both the browsers is very similar when using the audio API.

Related reading:
  1. Google I/O, day 2: summary of the Chrome keynote