Misunderstanding Adobe Air for mobile platforms

date: 19 Feb, 2012, actionscript: 3.0, complexity: complexity level 5 of 5complexity level 5 of 5complexity level 5 of 5complexity level 5 of 5complexity level 5 of 5, feedback (votes): users score 5 of 5 (301 votes)users score 5 of 5 (301 votes)users score 5 of 5 (301 votes)users score 5 of 5 (301 votes)users score 5 of 5 (301 votes)

This is a funny thing, nowadays, even in this first quarter of 2012 when I speak with developers sometimes they get surprised when I say that I am working in an iOS project using Adobe Flash, people say, ehh? Hmmm? How come? Adobe Flash is not supported on iPad, nor on iPhone… To be honest I can't understand how Adobe has not made this very clear, people still think Flash is banned from iOS and only few of us know that this is a complete misunderstanding (this is wrong). Flash is not supported on safari browsers (in Apple mobile devices), so are not other plug-ins such as; java applets, unity3d, etc… but people don't see this; the only thing they see is Flash can't run on iOS.

I have spent countless hours testing adobe flash on iOS (yes using adobe air), my final conclusion is that it will never be (in terms of performance) as good as an app natively made in Objective C, but hey, this is not new for us, it was always like that, same on PC, same on MAC, we can't compare Flash with programs made natively in C++ and other languages that work closer to hardware. So we are in a very similar position to where we were before; depending on what we would like to achieve Flash will perfectly satisfy all our needs, as usual.

I am following what Adobe is doing from earlier stages with the flash platform. I am quite happy with all the progress they've got so far; they have made some serious improvements in the flash platform running on iOS and other mobile platforms. I know earlier versions of Adobe Air on iOS were not even a possible solution, they run badly comparing with other apps made in Objective C natively. Nowadays I have to confess, the current version of Adobe Air 3.1 is something you can seriously consider for building your apps, what you get in terms of performance is more than acceptable, sometimes equally good comparing to apps natively coded, and you know what's the best part of it? that you can transparently port everything you have done to other platforms. Maintaining different source code depending on its platform is really a pain.

Almost limitless

Did you know you can code part of your Flash App natively using Objective C? Yes you can, this is called Native Extensions, which allows you to communicate your flash app with pure Objective C code on the fly. This is really useful, before you didn't have any way of using some resources from the operating system like, accessing internal API, system notifications, app-in purchases, game center, checking battery status, etc… I highly recommend having a go with Adobe Air for mobile, it has changed a lot during the last year, I can't wait for the version 3.2, Adobe is promising fully control of the GPU (Stage3D for mobile), woohoooo!

So far the majority of the flash apps we can find in Apple, Android and Blackberry markets (made purely using actionscript) are very simple apps in terms of complexity, and games that normally demands extra work, are quite rich in visuals and sounds but very simple in terms of algorithms and processing. And I was wondering why? Is it all about performance?

Traffic Wonder was made purely using actionscript

I've been totally focused working fulltime on this project since october last year, for those who haven't heard about it from my previous posts, it is a crazy puzzle game aimed to be distributed on all existing mobile platforms (including desktops computers PC/MAC/Linux), the game is currently in QA at the very last stage, its release date is on March 15th for all platforms, you can find out more about it at http://www.trafficwonderapp.com

Traffic Wonder water level

I have tried making different prototypes of the game using C++ combined with Objective C but at the end of the day, I end up building it all using purely actionscript for many reasons, the most important one "portability". It was a big challenge make it work in all existing platforms, since there are big differences in hardware architectures from device to device, for example; flash could run on iPad1 about 5 times slower than iPad2 if you don't make some proper tweaks and optimisations, taking advantage of the device itself and relying less on its GPU. I have faced the same problems everybody did, my app sometimes suddenly crashes without giving me any particular error, and the reason was the same all the times "abuse of memory usage". Think about making a SWF file that will start running once forever, you cannot control when the user or the operating system will terminate it but yes you need to be worried about keeping it in memory running stable all the time, you have to manage very well resources which is a bit tricky when coding complicated algorithms manipulating lots of assets. I am recently, strategically using more often in parts of my code System.gc();

Here is a video I have filmed today with some interesting notes about its development, explaining the most important feature of the game "the drawing experience", at the end, the user experience dealing with the game mechanics is what really counts, I hope you enjoy it.

I can't wait for Adobe Air 3.2

Something very interesting that is really worth mentioning is that, we have spent a lot of time making the levels good looking, making them look as nicer as possible, each level has 3 different representations; of spring (green), desert (dry summer) and winter (snow). Have a look at this level for example:

Traffic Wonder spring level

Traffic Wonder desert level

Traffic Wonder snow level

At the moment each level has in average 20 millions vertices, I've made some tests with Flash Player 11, and apparently "there is a light at the end of the tunnel" a possibility in an early future to render all the levels on the fly and then cache them as bitmaps in (Adobe Air 3.2). That will be definitely a huge help for making the game far much smaller in terms of file size, maybe to 20% of its original size, at the moment all the levels are pre-rendered bitmaps, that's why the game is 150MB, which is still aceptable for a tablet game.

Traffic Wonder wire frame level

Some advices and tips (regardless what language you use) which apply only for paid apps

I have made a massive research during the last years on different mobile platforms and markets, there are some things that really surprised me a lot and I would like to share some of them with you:

Be careful using the accelerometer sensor, your app controls cannot rely totally on it; some users feel ridiculous when using it in public.

People will remember your app not only because its graphics and UI but also sounds, sound is part of your app identity, it needs to be unique, keep in mind it is extremely important and can destroy completely the user experience, be aware some devices won't play sounds as good as others do, and what I mean with this is, it could be really annoying (same sound) depending on which device it's being played, it might play louder or quieter, sometimes it doesn't even sound. Why!? Frequencies, some devices like iPads have really, really, really bad speakers, iPads are not even stereo, and if they are, it is completely pointless, they have only one speaker hole on the side; they are monophonic unless you use them with headphones. Some devices are not able to play low frequencies so you can't hear any bass at all but yes really loud high frequencies (treble) and that's the only thing users can hear, annoying treble noises. Have you ever wondered why Michael Jackson sounds the same everywhere, all speakers? Masterization, you might have to master sounds you use in your app in order to guarantee a good user experience (Best device speakers from my point of view – Playbook, it is stereo, better frequencies range, etc…)

Did you know that 1 in 20 persons in the world have some index of colour-blindness? That means that if your app rely on colours (like Traffic Wonder does) about 5% of users won't be able to look at your app exactly in the same way you do, be careful with the colour balancing.

You have only one chance with new users (listen very well, one chance only!), be careful with your app instructions, do not rely on text descriptions much, around 65% of the users don't read anything, be creative, make your app as intuitive as possible, otherwise they will give up and will never try it again. I am constantly struggling with this.

QA (quality analysis) is extremely important, spend more time than usual testing your app, do not make final users test it for you otherwise you have a massive big chance of burning your app forever, to the point of, if you want to improve/enhance it, you might have to change its name and its art for republishing it as a completely new app (this is a crazy strategy of many developers, especially on Android platform).

The main platform you have to be focused on is currently Apple. Why!? There around 200 million users in iTunes, 44% (88 millions) of these users are considered as active users which (unlike Android users) they like buying things, at least one app monthly in average. So whatever you do, do it, aiming to at least 1% of this audience :)

Guess how many apps are being published per day in the Apple Store? Between 150 and 200 (this is mad) that means that we have around 1200 per week, (52/12) x 1200 = 5200 per month. So indeed you app icon is super important, when you publish your app, you have only few minutes on the shared NEW tab at the store. Make your app icon attractive or at least not crabbed :)

Developing for Android is easy but it could be a pain in the ^&%$... When you think about Android, you think about it as an operating system itself, not as a specific device. So whatever you do (I am afraid) you can't guarantee it will work and run the same on every device, Google is facing same problem Microsoft did on 1994, there are people making Android devices in any garage in china where android crashes all the time and at end sadly what people see is Android is bad! I can see Android as one of the best mobile OS but not now, in 5 years time maybe.

For god sake, some users wants everything for free, so you better think in a proper strategy for selling your app, having "freemium" versions is not always the right way to go, be careful with lite versions, although it sounds odd, lite versions can affect negatively your sales "drastically".

Keep an eye on the Blackberry Playbook platform, regardless they are not even 10% of the 45 millions iPads out there (15 millions first generation + 30 millions iPad2), Blackberry users have no problems paying high for what they consider a good app. Nowadays you can find big titles for the playbook platform and they (unlike other platforms) are highly expensive, apps such as; Monopoly (EA) USD$5.00, SimCity (EA) USD$4.00, Angry Birds (Rovio) USD$5.00, etc.

Nowadays you have to compete with very high quality standards, do not spend more than USD$80K making the game (including marketing and your own time), the more you spend the higher your risk if you don't have a very clear marketing campaign, so stop thinking in those hero-champion-apps that have been sold millions of times like Angry B… this happens really rare, I wouldn't say it is a bit of luck but it depends on many factors, most of them about when your app was launched in relation with tendencies, quality, cost/benefit, etc... The market doesn't promise anything else that worth increasing a higher budget of USD$80K to "guarantee" some profit.

It is really weird, the way how apps get featured in the Apple Store, it seems to be at random rather than highly reviewed, evaluated and chosen, at the same time it feels odd when an app gets featured same day its release date, that means one thing only; it doesn't depend on users and acceptation, I don't like to speak about this much… just don't rely on this, if your app gets featured or not, it is not in your hands, so you need other alternatives to propagate your app.

Careful with what you read, this crazy market changes so quickly, 6 months old readings might be obsolete, I am writing this article in the morning of February 19th 2012, I have no clue if all I said here will be valid by the end of the year.

There are evil people out there buying your app, some of them are very ignorant, some of them are just 100% your competitors (enemies), be prepare for bad reviews, those bad 1 star reviews will always come over at some point, try to interpret them in the best way possible, regardless how much effort you put in your app, regardless how good your app is, we need to understand bad reviews are part of it all.

This is really serious; when you own a product there are 3 key elements that worked combined to reach your hands; "Idea", "Development" and "Marketing", I have asked many people I highly recognize and appreciate about these, most of them experienced entrepreneurs, interesting thing, they don't know each other, they are from different nationalities... my question was very simple which demands a simple answer, If we have to give percentages to each of these elements (idea, development and marketing) what these figures are? I couldn't believe this but surprisingly the average answer was 1% idea, 54% development, and 45% marketing. So marketing is SUPER IMPORTANT! my conclusions are; the idea is only good once you have proved it is, so at the beginning the idea represents only one thing "risk", it values nothing commercially, however it is the spark (soul) of the whole product. Development is what you can control 100%, and then marketing (the art of predicting the future) is what you can incite to happen but is never guaranteed. You might end up extremely frustrated unless you have the whole time of the world, and you are up for waiting ages to see results. If you don't make any marketing the chances your app has of doing well in sales are almost none regardless your app is a super-hero-champion-app, we are in 2012! It is not like 3 or 4 years ago when users don't have much to choose. Important thing! It is completely a waste of money and time if you don't have a good budget for it (at least USD$25K). Do not waste your money on small marketing campaigns, the results are very similar to doing nothing (cost/benefit). Although you might not have the right channels to achieve this, focus more on approaching magazines, news papers, critics and journalists... contact a good PR agency. If you don't have any budget at all for this, try finding a partner. Don't release your app alone (without marketing) the results could be undesirable.

the following were added on feb 22nd 2012

some people sent me some emails asking about during my research when making a game, how do I know how many levels to offer? how important is having a huge amount of levels? it is a really interesting question, there are some games out there saying we have 500 levels!! and others saying only 50, I wouldn't say it is about quality vs quantity, nah! it is all about one simple thing; the amount of time players spend on each level in average, so all combined must guarantee at least 8 hours of gameplay. Pay attention on those games offering a huge amount of levels, games like Run Roo Run for example, they offer over 450 levels, each level takes in average 3.5 seconds to complete (when you complete the whole game it still feels short). other games are a bit more sensible on this, games like; Spy Mouse, 76 levels, each level takes 6 minutes in avg (including retries), Plants vs. Zombies, 50 levels in the main Adventure Mode, it takes in avg about 8.4 minutes per level. In case of Traffic Wonder, it has 60 levels, it takes (with no medals, nor boxes) in avg 9.5 minutes QA has reveled. It is all about the time spend per level (althought variety on each is so important), take your own conclusions.

how to decide the price of your app (game)? well, only you know how much you have spent and how much you have to earn to make some profit, however it is always good to be realistic and compare your app fairly with similar ones, users don't feel upset when paying high for something they consider of good quality, even if you app (game) is not one of the best, it is like the cinema industry, if the movie's story is not fantastic but still is has good standard effects and good sound, the audience will still think it worth to watch it. Don't be afraid of charging high. Although this is not a rule, sometimes cheap apps make people feel like it-doesnt-worth-to-try, cheap prices are not only good for easy-fast propagation but also for attracting bad reviewers, those evil ones are normally the ones don't like to pay anything.

avoid unhealthy times, everybody hates making late changes and working in a rush. Be careful when contacting marketing, PR and media agencies, they work like a swiss clock through all channels, they will need a lot of very final assets from you (videos, screenshots, demos, etc...) you must be prepare for it, you must provide inmediate support and it could be a big pain in the %$^* when you don't have your assets ready. My suggestion is, only get in contact with them once you have your product totally ready to be launched (after QA), ideally already approved by the store, so everything will be smoother and you can guarantee have no undesired delays.

Guys, I will keep adding some more things later on, so keep in touch through the RSS feed,

Have a good day everyone!


Alex Nino (yoambulante.com)

date: 30 Apr 2012 - 03:17:06, published by santhakumar
It is very good recommendation for the flash developers who struck at web development and feel sad about the future as a flash developer in upcoming mobile world.
date: 22 Feb 2012 - 11:08:23, published by er453r
Hi. What kind of 3d engine are you using? It is the prerelease AIR with Stage3D?
date: 20 Feb 2012 - 23:56:40, published by Eric
(cont.) Your article really gave me hope, though. I think I can convince the managers here with my new pitch: "We can stay completely in ActionScript and expand into every mobile platform." You used to work at an online-based game shop too right? You hinted at this in your article, but I'm really curious, did you change the way you write your software now that you're targeting mobile? Less external loading, one massive SWF, etc.? Anyway, I totally owe you a beer. Good luck with your app. I'm first in line at the App Store when it comes out. Eric
date: 20 Feb 2012 - 23:56:00, published by Eric
Alex, this article is amazing. It is so great to hear your thoughts on this topic first-hand. I work at a Flash-only browser-centric game company, but this market is quickly shrinking. I've been so worried while pleading with management to expand our operations into mobile that I'm porting some of our Flash games to Objective-C on my time off to show them what our future can look like, but it doesn't seem like a sustainable option. (cont)
date: 19 Feb 2012 - 16:52:54, published by Chao
It is very good recommendation to everyone that wanna do app for ios or android platform!