Skip to main content

Under the hood of Angry Birds: Java

A PDF annotation webapp and Angry Birds both use Java via GWT.

Web gaming technologies: Angry Birds’ cross-compiled Java versus native JavaScript

After it became clear that Angry Birds was basically a true webapp with only a little Flash to overcome the limitations of web-based audio [1], more information came to light regarding the technology it is based on [2].

Cross-compiled Java

Following the naming school of “fun with double-entendres”, the technology is called “ForPlay”. Quoting the website:
ForPlay is a cross-platform game abstraction library for writing games that compile to:
  • Desktop Java
  • HTML5 Browsers
  • Android
  • Flash
[...] ForPlay is free and open source, and we hope you will make kick ass games with it!
That is, you write your game in Java and then can cross-compile it to Desktop Java, a webapp (via Google’s GWT), Android, or Flash. Quite impressive, even though some platform-specific code is always necessary. Creator Ray Cromwell gives a few more details:
The game is built on an abstraction (ForPlay) that allows it to use the optimal path for each browser. If WebGL is present, it uses that in order to achieve the highest framerates. If not, it falls back to 2d canvas, which is accelerated by the GPU on browsers these days, but not always guaranteed to be *fully* accelerated.
It is written in Java, developed and debugged as a Java desktop app, and then cross-compiled at the end step via GWT. Many things in the native version have been converted to more web friendly data formats, for example, data that was in XML or LUA format was converted to JSON.
Two of the ForPlay creators held a talk on the technology at Google I/O.Summary:
Kick-ass Game Programming with Google Web Toolkit
GWT does more than make awesome Enterprise Apps, it's a great tool for games too. Learn to write 2D and 3D games using HTML5 and GWT, leverage and port existing game libraries and physics engines, share game code between GWT and Android, publish to the Chrome Web Store, and of course, see demos of really neat GWT games in action.
A video [3] is online.

Native JavaScript

If Java is not your cup of ... tea, then Google will also help you: There was a talk on “pure” HTML5 game development at Google I/O. Summary:
Super Browser 2 Turbo HD Remix: Introduction to HTML5 Game Development
HTML5 provides the foundation for rich and interactive experiences. Which is great, but we really want to build and play games! Learn the basics of building an HTML5 game and explore the related technologies. We'll write a simple game and give you the tools and techniques to create your own worlds and fun.
Video [4] and slides [5] are online.

Related reading

  1. Why the Angry Birds webapp needs Flash
  2. FunctionSource: HTML5 Audio Issues; Why Some Flash Snuck Into Angry Birds [original source of this article]
  3. YouTube - Google I/O 2011: Kick-Ass Game Programming with Google Web Toolkit
  4. YouTube - Google I/O 2011: Super Browser 2 Turbo HD Remix: Introduction to HTML5 Game Development
  5. Super Browser 2 Turbo HD Remix: Introduction to HTML5 Game Development [slides]


Popular posts from this blog

10.6.8 update spells Joy for Minimacs everywhere

If, after updating to 10.6.8 you get into a reboot loop, never fear the update is the same as every other update, except there is a step involving replacing the kernel.

This is very easy to do if you either (a) download it and save it on your Minimac before you update to 10.6.8, or (b) you have a mac formated USB key that you can copy it onto after your Minimac starts looping.

Here is the super-condensed minimal effort path to get you into Minimac heaven... (no not a dead Minimac, a running one), at least until Lion comes out.

On another computer (preferably a Mac or Ubuntu)
Download the legacy kernel[mirror]Put it on a Mac formated USB key * On the Reboot Looping Minimac
Hold down Shift as you bootAt the boot loader screen type (once you start typing it will apear in black letters on the bottom of the screen)  recovery=yes, -x Once it has finished loading, plug in the USB keyCopy the legacy_kernel-10.6.8.bz2 to your MinimacDouble click on it to unzip itMove the legacy_kernel-10.6.8 to …

English Noun Incorporation?

I was at a talk today with some Ojibwe data where invariably the claim that "English doesn't have incorporation" or at least incorporation of objects came up. We have "vacume clean" but generally we only incorporate the instrument. I remember a similar discussion coming up a few years ago in 2007 and I asked myself about apple picking. My colucators said, sure, but you can't say apple pick right? I thought about it a bit and came up with a linear string of words that might get google results. I remember I searched for "we apple picked" and found a few results, indicating to me that some people say it, generally when discussing their weekends. So, having my Android with me at the talk I googled again. This time I found a lot more examples than before, 394 to be exact, all of the first page clear examples with native speakers, speaking naturally.

I've heard this claim can be traced back to Baker 1988. When I got home I googled the claim "…