Why I keep using Adobe Flash
In November 2012 I released my first mobile application: Mi Recetario, for Nestlé México. It was made in 2 weeks with Adobe Air 3.4 and this is how it looked:
I started to develop Flash in 1997 when doing SWF projects wasn’t called exactly “developing”. Since then until 2004 I became a Flash evangelist, won a couple of awards here and there, did lectures in universities, conferences inside and outside of my country, wrote in books and magazines or got mentioned in them.
Life was good. Then one day in 2004 I dropped Flash and switched to PHP/DHTML. That decision was made within the creation of my first company: Kol Interactive (it still exists as Kol.mx), one of my partners made me see how tendencies favored development in HTML instead of Flash.
Around 2007 I dropped Flash again. This time I was working in an agency and doing Flash sites didn’t make sense to me. But around 2009 we got a request for a Game, and again… had to come back to Flash.
I’ve dropped Flash in favor of HTML many times, but I kept coming back everytime.
So, it was 2012 and we had a meeting with a client. In this agency I was organizing their new interactive department, and we were looking for a project so we proposed to this client to make an application for iOS and Android with seasonal recipes. We brought a Flash demo, the client loved it, but then she said “can we have it in 2 weeks?”, after a quick pause I said “Yes” and I knew I was getting myself into troubles.
Originally I planned to outsource this development, but nobody would take the project. Native devs quickly refused to take it, I did not know anybody doing Adobe Air but knew a couple of Corona devs, but even they turned us off.
I didn’t wrote a single line of code in a year, but I knew it could be done in Air. So the first 2 days I documented myself about what I needed to use. I learned Starling and Feathers on the flight. The first build of the app exploded when I tested it on an iPhone 3G. I panicked, but discovered that just a few days ago Adobe released their ATF tools, that made the app work.
The app was finished on time, the client was happy and I took a good sleep.
The previous 2 years I was in management duties, but after building that app I wanted to develop again. So, I quit my job and in 2013 took a plane to Texas where I founded a company named Crazy Cricket and within 2 months we did this:
We even made it into the TV.
But life is hard and the studio collapsed, the guy that was injecting the money had a hard year and we had to shut down the studio in December of 2013.
Since the studio closed it’s doors I’ve been doing Air and HTML5 games for different clients. Fun fact: even for the HTML5 games, I use Flash IDE. In-frame coding is an advantage that only Flash CC provides, but I will talk about that in other post.
I wrote this mini resume of my professional life because I wanted to make clear that I’m not against the idea of dropping a technology. I’ve already done it more than once, even when that technology was at it’s golden era. Why I’ve come back is totally circumstantial, but I have some good reasons to stick with it.
It is free.
Yes, it is Free. You can download the SDK for Free and use the IDE of your preference. If you are hardcore enough you can even use VIM but since I’m not that hardcore anymore I use IntelliJ IDEA which is awesome. But there are some other options like FDT or Flash Develop.
I can’t stress enough how important is for me to do not be married with an IDE.
You don’t need to have a Mac
Some frameworks just export an XCode project that you have to compile in a Mac, so testing and debugging becomes a nightmare. Other frameworks like Corona, make server side compilation, but you have to keep your subscription or you won’t be able to update your app.
Compiling and testing directly in your device is invaluable. The latest versions of Adobe Air got improvements in the packing for iOS reducing times from 5-10 minutes of packing to only a few seconds, The Tapping Dead compiles into an IPA in 15 seconds.
Profiling with Adobe Scout and see exactly what is happening inside of an app in-device makes the difference between having 60fps or struggling to maintain 20fps. Yes, you can profile from your device.
One of the builds of The Tapping Dead was having a memory leak that it wasn’t noticed while testing in desktop, but in the Device after a few levels it became unplayable. Running Scout in the device allowed me to discover and fix the issue.
Adobe Native Extension
When Air can’t do something, you can use an ANE. Distriqt and Milkman Games have plenty of them. Github also has a good amount of free ANEs.
But if there is something specific, you can easily build one. We got a request from Blue Goji to integrate their Bluetooth Controllers into our game. A friend quickly built an ANE for iOS and Android for me.
If you have a question, it has already been solved
And that’s true. Every single question you may have about the language, it has already been solved. This is a mature and stable platform, it is not something that could change a critical API from one version to another.
In the last 2 years there has been more significant updates to Adobe Air than to Adobe Photoshop and Adobe Illustrator all together.
Some people that keep quoting Jobs don’t realize how different is Flash 2010 from Flash 2014. We are having 4 to 5 new versions of Adobe Air each year. Recently we got support for Android devices with x86 processors, AGAL2 and Anisotropic Filtering among other stuff.
This one has been controversial.
One thing is clear every time I try out new technology Stage3D offers hands down the best low level GPU access for a mutliplatform solution.
— Peter sHTiF Stefcek (@sHTiF) junio 15, 2014
Peter Stefcek is one of those persons that I take what he says. Adobe Air with Stage3D optimized, is faster than Unity2D. But if you need to see something to get convinced, look what these guys in Argentina are doing with Air:
And that’s December of 2013, there has been 5 new versions of Air since then, including AGAL2 (which is the v2 of Adobe Shaders Language). So, performance is not a valid excuse to attack the platform.
Tested and Proven
Do you know this game?
Well, that game was published with Scaleform instead of Air but technically it is Flash.
UBISoft just released CSI: Hidden Crimes in Air. Zynga also has released games with Air. There has been more than 1.8 billion of applications made in Air installed in the last year. And not just games.
Virtually every social game and Casino game has been done in Flash and basically every single AAA studio have used Flash with Scaleform (mostly for UI).
AS3 is 8 years old. The principal frameworks for other platforms (like HTML5) have been made by former flash developers. So, not only the amount of resources is huge, you may be amazed of how similar they look like. Even other languages are very similar to AS3 like Haxe, Typescript or Swift.
But what about 3D?
Well, the guys behind Flare3D are showing that Air can compete there too. But personally, I might use Unity3D in that regard (unless I get some experience that makes me change my mind).
So should I leave my platform and switch to Air?
Adobe Air is just an option, you should use the tool that best fits your needs. If one day a client requests a project for Windows Phone or anything that is beyond the reach of Air, and I accept that project for sure I will switch as I have done in the past.
I believe that having options is good, not everybody is going to like or use what you use, but everybody has the right to choose whatever they want. For the time being Air is just fine for me, it may or not fit your needs but until you try it you will know. The Air community is very active and helpful, despite these hard years we do believe that the platform still is a solid and strong option for cross platform development.
Thank you for reading!
Update: Today was announced that since Adobe Air 3.8 there has been 1.8 billion apps (up from 1 billion a few months ago).
I can’t agree more with you 😉
great post and I totally agree…
I thought to publish an Air app for iOS it had to be published on a Mac, is this not the case?
You can compile an Air app for iOS on a PC, and even install it in your iOS devices.
But for submitting said app to the AppStore from a PC I’m not really sure if there is a way other than using a service like http://www.macincloud.com/
You are half way correct. You can publish your app so that it uses the “.air” extension, and both Mac and Windows can play the same file assuming they have Adobe AIR installed… If you prefer to publish you AIR app as a .exe or .dmg… those must be published on on that specific system.
Nope, you can publish and deploy IPA’s from Windows as well. But you’re right that we can’t do DMGs
Well, AIR runtime can be integrated into App on PC/Mac/Android, since about AIR3.6. Well how about iOS? AIR has the magic to transcode AS3 project into Objective-C bytecode.
Not the case. You can develop, test on device and deploy for AppStore on a windows system.
Super agree. Great article.
Very nice article
[…] http://alesys.net/site/2014/07/22/why-i-keep-using-adobe-flash/ […]
Adobe Air is also good to develop desktop apps include Mac App Store.
Superstring was developed with Adobe Air.
I translated this to Chinese http://made.withflash.net/2014/07/23/why-i-keep-using-adobe-flash/
Wow, thank you sir.
U did it when I am just about to do the translation, great job! let’s shake hands! What a good thing happened for 3 million AS3 developers in China who r not so happy with Flash situation nowadays, most of positive Flash/AIR reports r either filtered by GFW or Chinese IT editors’ bias, let’s spread this article out in China!
Thanks for the article. Amongst all that’s been said about Flash and AIR, it’s nice to hear some kind words as well 🙂
I’ve been working with Flash for online gaming since 2002 and today I use AIR for mobile game development only because of my own convenience of knowing the platform so well. It helps in faster deliveries and simpler workflows when going cross platform.
Having said the above, I would also recommend exploring other platforms for their strengths. Dependency on one is not good for the growth any developer!
I agree with you Mariam. I think one of the advantages of a Flash dev is its capacity to explore other platforms and perform well in them.
CreateJS, Phaser, Haxe and OpenFL (among many more) are just part of the legacy of the Flash dev community.
Indeed I’ve been studying Swift, but funny as it sounds I can’t use it in a project yet since it is not cross platform.
Great stuff! And along with being free, and deployable from multi-platforms (don’t need a Mac) – I’m developing and testing entirely from Linux via wine and Emacs is my “IDE” – I guess I’m hardcore. =)
Here’s my setup: http://jcward.com/Setup+AIR+3.9+SDK+On+Ubuntu+12.04
It’s a beautiful creative technology you can freely use on a free OS to publish to the web, Android, and iOS (requires an Apple dev license, of course.) What’s not to love!?
And every company is trying hard to replicate the AS3 language – from TypeScript to CoffeeScript to Swift – gradually typed languages are awesome for productivity to maintainability.
The only question is – why isn’t Adobe fully backing their amazing cross-platform technology? Surely Apple is paying them off to stifle cross-platform development. But Haxe, as a similarly free and independent x-platform solution, somewhat ameliorates these concerns.
[…] people ran away from Flash because it wasn’t supported on iOS. Here are two recent articles (here and here) on the relevancy of Flash that I liked, but to add to that, I would say also that at […]