Update: I think I’ve found a solution to my problem. With the help of HTMLLoader and LocalConnection, I can get Flashplayer running inside AIR, and I can get the best of both.
Hey guys, with Epic Battle Fantasy 4 being in a Humble Bundle and having a lot of new eyes on it, I once again had the horrifying realization that I’m still making games in Flash. I thought a bit about this when I started working on Epic Battle Fantasy 5 a year ago, but pushed those thoughts to the side and decided to wait and see how things might develop. Well, things haven’t gotten much better.
Here’s the problem: Adobe suck.
Adobe AIR is their cross-platform solution for running Flash apps on Desktop, iOS and Android – and it would be perfect for my needs EXCEPT that the Desktop version doesn’t have the same performance optimizations that the mobile versions have. It doesn’t have the Stage Quality setting that Flashplayer has – this let’s you change the anti-aliasing of vector graphics and is a huge factor on performance. HUGE. My games always have this set to MEDIUM by default, with lots of users setting it to LOW. But in AIR, it’s permanently set to HIGH, making my games run 50 to 100% slower in AIR compared to the web Flashplayer! What the hell!
Another missing feature is GPU rendering for bitmaps. If I convert all of my vector graphics to bitmaps, they’ll run quite well on a phone! Not on my desktop computer though! Madness!
Word from Adobe is that they’ll consider features that are often requested, like these. But after waiting for a year (and hearing how other developers waited much longer than that), I think it’s time to assume it’s not a priority for Adobe at all.
I used Adobe AIR for my release of Epic Battle Fantasy 3 on Steam. And everything works very nicely, except that the performance is terrible! Many users pointed out that it ran noticeably worse than the web version, and that’s because it does.
My shooter game Bullet Heaven 2 worked well in AIR, but it didn’t use vector graphics very much, so this wasn’t an issue. It was made with Starling and Stage3D, which performs very well, but makes animation much harder than it is in regular Flash games, and there’s no way I could make an EBF game like that. There’s just too much complicated animation involved.
For Epic Battle Fantasy 4, which came out on Steam almost 3 years ago now, I used a Flash wrapper called MDM Zinc, which is similar to AIR but uses the standard Flashplayer, and therefore runs my games better. This worked well, but it had serious compatibility issues with a few users, and the company that made it is gone now, so I can’t use it anymore anyway. There’s a DRM-free build of it left over, but as far as I can tell there’s no way of getting rid of the “trial version” splash screen now.
Publishing on Steam using a simple Flashplayer Projector is an option too. The performance would be better, but I’d be restricted by not having common application features like being able to create save files wherever I wish, or controlling the size of the application window. Adding Steam features like cloud saving and achievements would require inconvenient work-arounds.
So what other options does that leave me with?
I could convert my animations to Unity files using something like GAF or UniSwf, and port all of my code over to Unity too. That could lead to great performance, and Unity is super popular and well supported now, unlike Flash. Downside is I’d have to learn Unity very well, port tons of work over, and overall I’d probably have a much slower workflow than I do in Flash. EBF5 was meant to be a 2-year project, if I switch to Unity I could easily see that being 3 years or more, with tons of unforeseen problems thanks to my lack of any experience with Unity. Not a risk I’d like to take with my biggest project ever.
Also the chances of releasing a web version of the game would go down drastically if it’s not made in Flash. Steam’s my main market now, but I still have tons of fans there who would lynch me if I didn’t release a web version. Sticking to Flash also makes any future mobile ports easy – Adobe AIR does work fine on mobile after all, it’s just the Desktop version that’s causing me grief.
Apparently Scaleform is a cool technology for running Flash content fast – it’s used for GUIs in AAA titles and also some mobile games. But it doesn’t look like they’re interested in the Desktop indie market, and I couldn’t even get permission to try it out.
OpenFl is another framework I considered, as its workflow is supposed to be similar to Flash. But it still feels like it’s in its infancy, not being fully implemented or documented yet, and would still require a lot of porting pains, much like a move to Unity would.
None of this really threatens EBF5′s development. I just think it’s likely that I’m going to have to make some compromises when it comes to Steam features or performance. Maybe I’ll make 2 launchers on Steam, Flashplayer and AIR, and users can decide which one works better for them.
For not developing Desktop AIR, and for leading me on.