Thursday, April 17, 2014

Adobe AIR VS Haxe. Which is better for creating Android Games?

Adobe AIR VS HaxeFlixel

If you use FlashDevelop before, in the New Project menu, you will notice that there are a number of project types available to create Android Games. However, which one is the best one?

Here i would like to compare Haxe and Adobe AIR.

 I came from Actionscript 3 background, have been using Starling Framework for Android Games with the Adobe AIR. It has been so far a great experience. But recently I start considering an alternative due to some reasons.

1) Adobe AIR App File Size is too BIG

 Due to the nature of the Adobe AIR, there are two options of building Games:
  • Export Application with captive runtime
  • Export Application that uses a shared AIR runtime
The first one results in a large Android apk file, with about 10MB minimum. Even if you only have a line of "Hello World" in your app, the release version of the apk would weigh about 10MB. That's simply too clunky.

Meanwhile, the second option does solve the file size issue, but it requires the users to install an additional plug-in. As you can expect, although it is only an one-time installation, the requirement of the additional plug-in would drive the user away.

2) Adobe AIR requires a third-party Adobe Native Extension (ANE)

 The Adobe Native Extension (ANE) itself is actually a convenient element. However, the important Social network platform such as Facebook or Twitter, and the Mobile Ads Network like Admob DO NOT officially provide the Adobe Native Extension for you. As the native Android is in Java, to apply those features, you have to rely on the ANEs instead, which are created by some Samaritans out there (if you are lucky enough to find them). This begets one issue: inconsistent update. I do not blame the ANE creators. But the rapid development of Android, Facebook, Adobe AIR, or etc would cause the version conflicts if the ANE are not updated in time. If you come from the native Java programming before, you will definitely understand the scenario.

Is Haxe + Flixel + OpenFL a good alternative?

Recently, HaxeFlixel is a common term. It is still young but it seems promising with the active community. From the official sites, there are a number of sample projects (+ source codes) with demo for beginners.

I have personally attempted the HaxeFlixel. First, the file size issue doesn't appear as noticed when using the Adobe AIR. However, the initial setup is horribly tedious. It isn't hard to make a work-able Android Game actually. But still, it requires a bit of a learning curve.

Apart from that, there is a critical drawback - lack of an Android debugging emulator/simulator. If you have tried Eclipse IDE before, you may find that, the real bottleneck of creating Android Game is the debugging process. The matured IDE such as Adobe Flash Builder comes with both Android and iOS simulator. The debugging process will come in handy with simply a few buttons. However, with HaxeFlixel in the FlashDevelop, it is a different story. Technically, you have no choice but to compile the apk file first before testing it on your device or the third-party tool such as BlueStacks. Although the codes are debug-able in the Flash platform first, different platforms may behave differently. (and hence, you can't deduce that a game which is working on the Flash is also working in the Android device)

So back to the question - Which is better out of Adobe AIR and Haxe (or HaxeFlixel)?

I couldn't provide a solid answer here. But at the moment, i still embrace Adobe AIR, for its stability and the awesome Starling Framework. At the same time, i will keep an eye on the HaxeFlixel, and start learning it to see how far i can go with this alternative.


  1. This comment has been removed by the author.

  2. Great article. I'm making the same thing. The debugging process is terrible on Android Native (with Haxe/HaxeFlixel).