Mid-Project Crisis

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.

Oh well.

Thanks, Adobe.
For not developing Desktop AIR, and for leading me on.

36 thoughts on “Mid-Project Crisis

  1. Mace

    WELP
    you made it very clear how fukt you are on this, even if I don’t know the first thing on coding :scared:
    as much as I’d hate to hear EBF being delayed, its far better than it having performance issues…

    Reply
  2. Dutczar

    I have no idea how programming works so this suggestion is probably really dumb, but can’t you choose not to use Adobe Air and just stick to old versions?
    Unless you want EBF5 on mobile, I dunno

    Reply
  3. Raining Swords from Above

    Have you thought about shipping a limited browser stack with Flash in it? Not sure if any of the following can run the flash plugin: Adobe Brackets, Apache Cordova, Electron, WebDGap, XULrunner, etc.

    Basically something along the way that html is loaded in most phone apps using a webview component that also exposes some functions to a higher level (accelerometer, flashlight etc.) With Steam Integration possibly in your case.

    Good luck.
    :smirk:

    Reply
    1. Matt Roszak Post author

      No idea how I would even implement something like that at the moment, but I guess it’s worth a look.

      Reply
  4. MrBobSaget

    😡 uuugh freaking adobe, GET YOUR STANDARDS UP AND FREAKING FIX EVERYTHING DAMMIT, seriously this is starting to tick me off :bleh: i believe this is the 3rd time it’s happened in game creation i was waiting for, but dammit i can’t remember for the life of me what the hell the other two were 😐

    Reply
  5. Piotrj3

    Hello Matt.
    I would like to tell you one possible solution that one programmer used in the past and is in AS3. Colony (on armor games)
    http://armorgames.com/play/4264/colony
    uses a technology that loads everything and after converts vector graphics into raster, bringing small sizes and big performance boost. Whenever I never heard before that actually adobe air lacks performance features that flash have (lol), I believe this is solution you look for. As far as I know gameinabottle (gemcrafts) uses that as well.
    http://cache2.armorgames.com/news/colony-new-strategy-game

    Also don’t even bother to look at people who say html5/java script is future. For example webgl (3d in html5) is not even near as fast as molehill from adobe, and lacking of objective code and visibility of all codes, and terrible performance totally discredit it as potential replacement. In best case you could try unity.

    Reply
  6. Zee

    “Also the chances of releasing a web version of the game would go down drastically if it’s not made in Flash”
    For those who would rather play the brower version, you could release on steam a somewhat “demo version” or “non-premium version” that would be free with content restriction.
    I don’t know much about adobe, or flash, or unity, or hell, anything really, but i know this much: If you start learning unity now it will take you ages to release the game.

    Reply
  7. Nuno Alves

    Flash is a tecnology supposed to die sadly, personally i would recommend Unity, it will take longer yes but in the end it will be better than to do weird workarrounds via flash.

    Im still in university but teachers are saying that flash is set to be replaced by Html (also unity as a WebGL wich good 🙂 )

    Either what u choose to do, we will support you 😉

    Reply
  8. bluhbluh

    If I may ask, what makes it difficult to convert the Flash animations to something like Starling? Have you tried Spriter/Spine?

    Reply
    1. Matt Roszak Post author

      Starling uses spritesheets and is overall much less flexible that Flash. I could do it but it would require serious cleaning up of my animations and code.

      Reply
  9. EnderChain513

    Just like what everyone else is saying just stick to flash for now. You could start learn unity in your free time not working on EBF5 because then you can decide if you want to transfer from flash to unity or continue the next game with unity. Take your time :hurray:

    Reply
  10. RashtorNesmarck

    Well, i personally don’t mind waiting 2, 3, even FIVE years or whatever, because i KNOW that game developers are really busy with everything they have on their hands. I think a wise decision would be to stick to flash and finish your current project (EBF5) and for the next ones you could use a diferent dev system. I’m not an expert, but honestly, whatever makes you comfortable to stick with is the best for me.

    Reply
    1. Matt Roszak Post author

      That sounds about right. I’m not going to spend 5 years on a game though, I’d rather die.

      Reply
  11. flat

    Hey kup, long time follower and fan of your work, first time posting here.

    Sorry hear these woes, you don’t deserve this given the quality of your work. When I first heard you’d be sticking to flash for EBF5 though I have to admit I got a little nervous. As a preface, I used to be a Starling / AS3 dev myself.

    I’m guessing you’re probably leaning towards just sucking it up and suffering the performance impacts for the sake of delivering this project, but I’ve been meaning to have a word with you about potential stack considerations in this post flash world. I understand Unity is quite popular right now, but it’s a substantially different workflow than Flash + AS3, and frankly a big heavyweight for what EBF5 needs to (technically) achieve.

    To solve this problem, my suggestion is createJS (including all of its constituent components), or pixi.js, both of which use webGL as their rendering backend and were developed keeping flash’s stage and child-based rendering framework in mind. So they are quite similar to the AS3 workflow and should suit you well. Going native with any of these javascript frameworks is quite easy; you could simply package it into an Electron app for the desktop, and the SPA would be fb’s react-native to support mobile. They all support dragon bones as well, which I know you use for your animations and rigging.

    Personally, I think this is a good compromise without diving balls-deep into Unity. Unity may be a more grandiose choice, especially in the future, but for the sake of workflow, I think you should consider pixi.js, or another “flash-alike” javascript framework, which will accomplish everything EBF5 needs and more.

    Reply
    1. Matt Roszak Post author

      Thanks!

      I haven’t heard of createJS and the other stuff you mentioned. I’ll have a look at it.
      I don’t use dragonbones for EBF, it’s just plain old Flash content.

      Reply
      1. flat

        Ah, yeah I noticed you using dragonbones with BH2, so I assumed you were sticking with that for EBF5. Adobe Animate is on the way to provide an HTML5 first approach while maintaining Flash’s unique workflow for producing illustrations and animations. And yeah I think react-native is a good solution for webapp + mobile, but it’s got a bit of a learning curve to it. Thankfully, you really only need it to just launch your pixi.js or createJS game, nothing else. Anyways, just trying to help out man, best of luck, much love from the west coast.

        Reply
        1. Matt Roszak Post author

          Thanks. Last time I checked, flash’s HTML5 export options weren’t all that advanced yet. Maybe they’ve grown a bit since then. I’ll have to start paying attention there.

          Reply
  12. komodor

    as someone once compared flash to unity to pistor and rifle and after a decate the pistol transformed into a tank…yea stay at flash Matt. optimalization can be hard and annoying I see, but I believe you will figure it out, maybe write some other developers for help.

    Reply
  13. Shraderc.inc

    thanks for telling us this knowlage is power ad you have helped your fans understand your dilema. any choice you make we will be behind you :smirk:

    Reply
  14. Karyete

    Are you planning to stick with Flash even after you’re done with EBF5? Perhaps that might be a good time to look into Unity or other options, but Flash seems to be serving you well nonetheless.

    Reply
  15. Uriel

    Man, just when you are creating your biggest success ever, I hope for a good turn of events, not because of the game, but because of how much work you are putting into it.

    Reply
  16. Manderby

    Till now, I saw better performance with Air than with Flash when gaming. It surprises me to hear it this from you the second time now. :wut: Maybe it is because you are using far more vector graphics as you say. But I have fun with playing it no matter what technology.
    Unity may be nice for simple things but huge projects require serious hardcore how-the-fuck-am-I-able-to-do-that-with-this-technology bugfixing.

    Reply
    1. Matt Roszak Post author

      Yeah, AIR is great if you use Starling/Stage3D. But not so good for vector graphics. Which is a shame. Being forced to use High quality really hurts a lot of people.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *