(Reposted from my game development blog)
If last week’s uproar is any indication, Flash’s tenure on the web is drawing to a close. And while few will mourn its passing, I’m worried that Flash’s eviction from the browser will also mean the loss of one of the best tools for cross-platform game development for indies.
The Cheerleader Part
Adobe AIR is the standalone Flash runtime: it’s still Flash, but uncoupled from a browser plugin. AIR is the framework behind a bunch of really good indie games, including Incredipede, Rebuild 3, and 1849. (It’s also what I’m using to develop Antihero.) An AIR game includes the Flash runtime in its executable - much the same as Unity games bundle Mono - and the AIR runtime is compatible with Windows, Mac, iOS, and Android, significantly reducing the amount of legwork needed to get a game on all the major non-console platforms.
Frequently, when another game developer asks about the tools I’m using to develop my game, they’re surprised when I say Flash - because for most people Flash means “slow games that run in the browser,” and because Steve Jobs’ Thoughts on Flash letter closed the door on the Flash plugin - though not AIR; they’re not the same thing - ever appearing on iOS. And this brings me to the “condemnation” part of the post: Adobe has been an absolutely horrendous steward of Flash and AIR.
The Ranty Part
I like their product, but I have no warm feelings for Adobe. Their developer relations are basically non-existent; the fact that “I’m using Flash” is bewildering to most other game developers I speak with is some evidence of this, but much more damning are the mixed signals Adobe has been sending to the developers who already use their tools. The strongest sentiment Adobe communicates vis à vis their commitment to Flash is that they have no fucking clue what they want to do with it, but they’ll be delighted if you’ll continue to buy their expensive software. (Lars Doucet wrote a great post about this over a year ago.)
The AIR “AOT compiler” is the tool that translates Flash bytecode into iOS-native code - it’s a critical component of the stack. I have some game code that crashes the compiler - with a very clear stack trace! - 100% of the time. And like a responsible developer, I filed a bug, posted in the support forums, and put together a small test case to demonstrate the error. This is an issue that a programmer should be able to fix in, like, an hour - but almost a year has gone by without any resolution. (The Adobe “support” staff who have gotten in touch with me about the issue have been comically inept - losing my emails in spam folders, closing the bug incorrectly as a duplicate of an unrelated issue, and finally just… ceasing communication entirely.)
This is just one example, but it’s representative of my experience with Adobe over the past 7 years that I’ve been using their tools. I came to Flash development after several years developing games in C++, and with a preconception that Flash was just a toy. But I quickly came to tolerate and then like it, not least because it was really the only game in town for getting keyframed animation into 2D games - something taken for granted in the 3D space, and that makes a world of difference when developing an animation-heavy game. I got work done faster in Flash than I’d ever been able to with any C++ engine. And so I would be totally happy to be a cheerleader for Flash… except that Adobe treats it like an unwanted child that they’d love to just be rid of, but have the sense that just killing it would be, like, kind of a faux pas and so are resigned to just neglect it until it goes away on its own. I’m not going to recommend those parents to anyone else.
Why it Matters
I’ll be happy to see Flash-the-browser-plugin disappear - lord knows we need fewer potential attack vectors living inside everyone’s web browser. But it’ll be a shame to lose AIR, because it’s a complete cross-platform 2D game development platform (“complete” because, in addition to the fundamentals like the compiler toolchain, it has solid code editors, a source-level debugger, and a good profiler) - and there aren’t enough of those. 2D only recently became a first-class citizen in Unity, and still has a ways to go by most accounts; and while there are other good-looking tools like Flambé and PlayN, none that I’ve seen have a large, committed community of game developers behind them.
And, you know, maybe Adobe will publicly recommit to keeping Flash/AIR alive, provide a solid development roadmap and stick to it, respond to bug reports in days instead of months or years (or never), and otherwise demonstrate that they give a shit. I’m not counting on it - it’s hard to imagine how any of that would fit into their business of selling subscriptions to Creative Cloud - but I’d be willing to forgive past grievances and be friends again.