Imminent Death of Adobe Flash

My fellow Flash developers, this post’s title and the post is not to start a new flaming war on the subject, it’s just an opinion which you may or may not agree with.

I posted some of the following ideas in a private forum, so I thought I’d just save some typing and add some more thoughts in original forum post(s) and publish here on my blog. This post is also long overdue, so here it goes.

I think Flash is really a strong brand and awesome technology. There are certain things Adobe have done wrong in terms of strategy and vision for this technology.

Macromedia and later Adobe pushed Flash Player too hard on mobile devices. Back in 2005 when I won a t-shirt from Flash Lite competition, all the developers sent a clear message to Flash team, that on mobile, Flash apps are the future, as all the apps submitted were installable apps on Symbian OS, not mobile browser based.

Flash’s experience in mobile browser was too bad, there were no contents optimized for mobile, and Adobe tried to run existing content in mobile browser, which failed miserably. So we saw Steve Jobs’s thoughts on Flash. Which I agree to, also for lazy engineers part. The focus should’ve been on installable mobile apps from the start. For same reason Adobe had to pull the Android version. I do not see why Flash team failed to see it early.

I also noticed that Flash product team tried hard to sell the Flash Player / AIR to ODMs to embed / pre-install in devices. They did for some, like Nokia / Blackberry. Idea was a clear fail from start, as there was no way to update Flash Player / AIR until ODMs releases an OS update. Also the failed idea to get share of revenue from Flash Player based games/apps if a developer makes more than a million in a year. That was just crazy.

Pretty late, Adobe recognized and thought, oh! we should package the runtime with the app, so it will run correctly with its required version of runtime, and not depend on ODMs (we made a product SWF2Go in 2007 which did this). I can’t believe what sort of people were in Flash team who did not recognized this from the very start where I personally sent emails to Flash team, managers with same idea, am sure many other developers may have asked them the same.

Now in current situation, the only bad name Flash gets is from its Flash Player in the browser. What Flash team can do now is to split the player, one only with AS2 support, which I believe is the root cause of most security issues, and one with only AS3 runtime. This should’ve been the strategy from the start. But Adobe kept two runtimes in same player. Continuously improving on AS3 version, and deprecating the AS2 version.

We need tons of new language features in AS3, not just renamed APIs. Look at C# for example, evolution from v1 to latest. And this is really important moving forward. I do not see any new language features since AS3 was introduced with Flash Pro CS3. Here I’d like to share a post from Dave Yang’s FB feed, which summarizes exactly my point about why I and many other Flash developers held on to AS2 for too long.

DaveYang-FB-Post-Programing

For installable apps, AIR needs to drop HTML (webkit) and just keep AS3. I have not seen a single AIR app which is done with HTML, it’s a useless feature which wastes bytes with every deployment. All I see is AS3 apps and games in stores, so I always think why there’s this HTML thing in AIR, when Adobe also promotes another product PhoneGap, which does the same thing, makes mobile apps with HTML. Can anyone from Adobe tell me why AIR needs HTML support?

Also, AIR needs to support more platforms if it needs to gain some ground in future, i.e. Windows Phone / Mobile support which is top requested feature, but it seems that no one at Adobe cares anymore.

flash-cs3

Now Flash Pro, this tool was awesome until CS3. Even before that there were versions which didn’t come with new features but just re-write of the Panels system. I’ve seen so many versions of Flash Pro which just did that. The team wasted time in re-writing Panels system, instead if improving on or adding new useful features. For example, the Info Panel did not show real-time X, Y and other details when mouse was held down (fields just froze until mouse is released), until I filed a feature in CS4 (I was first time in beta), and it was implemented in CS5.5. Two versions later, because team were re-writing the Panels (lazy engineers as Jobs pointed out). Unbelievable.

There are tons of things which Flash Pro team can bring, return to the core idea which made Flash popular, Design, Timeline, Animation and Scripting them. Each of these features Flash Pro can borrow ideas from other tools. And even they can come up with a new version in one iteration which can be so new and feature rich, many designers and developers will appreciate and will upgrade for sure.

I see why Flash is dead as there’s no revenue coming from this investment for Adobe. I.e. Flash Pro CC, most are holding back on CS6 or older versions like myself. AIR is free and a developer can use AIR SDK with free FlashDevelop or other tools to make apps, so Adobe do not get anything for their investment going forward with AIR. Flash Player team also gets a bad name when we see some security issues now and then, again there’s not much revenue from Flash Player (other than the Flash Player install page which keeps trying to install some useless software along).

Update 1:

Another reason, that all my Flash developer contacts from 2004 onwards have moved on to something else around 2010-ish. Some switched technology, some even on different directions doing amazing 3D printing, embedded hardware stuff.

What Adobe needs to do is to make Flash Pro, the tool so feature rich, so awesome that developer buys a copy, like the old days of Flash 5. Make the app store prominent and attractive to developers, to buy and sell pre-built assets ready to use in projects or to extend the editor.

unity3d

Unity is a perfect example Flash team can follow. Look how they’ve not wasted time in re-writing panels, but they made Unity Editor so open that there’s a whole ecosystem for extensions. And brilliant idea of selling pre-built assets. They are making tons of money from this idea. They were able to give away free version of Unity, along with a perpetual or subscription version and cloud build. I see great strategy to make revenue from tool, and the assets store for developers. I am using free version, but I have bought extensions, from which they got something. Maybe in future I might go for Pro version as well.

There’s still time, and if Adobe can make and follow good strategy, which I currently don’t see (hence the post’s title), they can come back in game again.

BTW, about me, I am developing with Flash since 1998 (ver 3/4). Done great stuff with Flash, contributed to Flash Player (no credits) and Flash Pro (top beta tester, CS4 to first CC), and developer of SWF2Go.com, Flash Lite to Symbian app maker.

Would love to hear what you think about Flash and its future.

// chall3ng3r //

Slides and Code From Mobile Game Development with Adobe Flash Workshop

Recently I did couple of workshop for Mobile Game Development with Adobe Flash at Jinnah University for Women. In first one we covered basics and getting used to the Flash Pro IDE, and basics of ActionScript 3, Timeline, MovieClips and other concepts in Flash.

Mobile Game Development using Adobe Flash- chall3ng3r - final

In 2nd follow-up workshop, we did some intermediate experiments, and completed a game, Popcornia, with real graphics, Timeline and AS3.

Download Source: mobile-game-development-with-flash-chall3ng3r.zip

The download contains full source of the game Popcornia, I did some more tweaks when I got home from workshop, so I recommend participants to download this updated version.

Ported to BlackBerry 10 OS

I ported this game for BlackBerry 10 based Z10 with very small modifications. Download full source code and batch files which use BB10 SDK command-line tools to package and signing.

// chall3ng3r //

Icon Maker for BlackBerry PlayBook is now live!

If you are following my recent tweets, you might have noticed that I am working on some applications for upcoming BlackBerry PlayBook tablet. So far, I am having fun developing for PlayBook using AIR SDK.

I noticed that the icon requirement for BlackBerry PlayBook AIR SDK are a little complicated. Developer have to make an icon of 86×86 pixels PNG, but he must not fill the entire area with graphics. Developer have to keep his graphical contents inside 77×77 rectangle so it could look similar in size to other application icons on PlayBook.

BTW, 77×77 is an odd size for 86×86 icon. As on the two sides (top-left) the transparent buffer is 5 pixels, and on remaining two sides (right-bottom) it becomes 4 pixels. Out of center by one pixel.

So, I thought we tweak our SVG Icon Maker tool for Symbian applications, to make icons for BlackBerry PlayBook as well. And of course, we did take care of that odd 77×77 size by using 76×76 selection rectangle.

Now you can create great looking icons for your BlackBerry PlayBook tablet games and applications right from your web browser!

Start using Icon Maker at: http://www.orison.biz/apps/playbook-icon-maker/

And as usual, below are couple of screenshots of the Icon Maker in action.

icon-maker-screenshot

icon-maker-screenshot2

Do let us know you feedback or suggestions so we can keep improving it in future.

// chall3ng3r //

Quick Workaround: AS3 gotoAndStop Nasty Bug

Okay, I admit it. I am old-school. I use Flash Pro CS5 as my only Flash development tool. I do all my coding on timelines and I like it that way.

I have been working with AS3 for few months now, and I have to say, I have to write twice the code to actually do what I was able to do using AS2. I miss those good old days.

Anyway, I’ve been developing an AIR Mobile application and hit by this nasty gotoAndStop bug. If you are feeling lazy to click the link and see detailed explanation, here’s a excerpt from the post:


Leading to following error:

TypeError: Error #1009: Cannot access a property or method of a null object reference.

To clarify: in this context, result_txt is the name of a TextField that exists on the stage, and only exists on the frame with the label "FINISHED_SCREEN". If you haven’t previously displayed this frame, and you run the code above, then sometimes you will find that the result_txt TextField object hasn’t been properly instantiated by Flash yet when the second line is run – therefore myMC.result_txt will resolve to null, and you’ll get the error above.

I tried and found many kind of solutions, but they were more like adding a lot more code and changing the way my jumping from frame to frame works.

So, experimented a little, and ended up with my own solution. It’s kind of dirty one ;)

First you need to Export for ActionScript your problematic MovieClip from Library. Make sure you add text Class at the end of export ID/class name. i.e. my original Library item was named "mcCircle", so I Export it as "mcCircleClass".

Now, on the keyframe where you are getting that null reference error. Initialize your MovieClip as follows:

After this you can access mcCircle as before. You might have to set it’s properties (x/y etc.) again, as we just created a new instance which doesn’t have values from previous instance. In my case, I just had to set it’s X and Y to position it back where it belonged.

It’s not as optimistic as other solutions, but it does the job when you need to quickly get through it.

I am quite disappointed by Adobe since Timelines are the basics of Flash from the very core. This bug is around since Flash 9 days, and Adobe still haven’t fixed it. Come on Adobe, you can do better!

Update: Some other references to the problem:

// chall3ng3r //

Adobe is back in business with AIR for Android

air_132x132 Today Adobe released AIR for Android for all regions on Android Market. The timing of the release is just perfect, read on to know why ;)

For last few years Adobe is trying hard to enable Flash content inside mobile browsers, it’s been not a big success because of lack of processing speed on mobile devices, complexities of mobile operating systems and of course, Apple.

Personally I think Flash inside mobile browser is only good for video, and that’s it. In last 3-4 years, I have hardly seen any Flash content inside browser (other than video) optimized for mobile on my Flash enabled Nokia devices which include Nokia N95, N78, N96, 5800XM and so on. And even I tired once to make something myself, but the performance and interaction complexity of in-browser Flash content was completely non-acceptable, at least for me. However, I managed to make some cool projects using Flash Lite which allows out-of-browser apps using SWF2Go.

I have been using Google Nexus One for some time now, and viewing Flash content inside browser is just a cool experience and performance is great as well. But interacting with Flash content is still not really a nice experience, except Flash content which only have one or two big clickable buttons, i.e. ads :)

Welcome to Installable Flash Apps, a.k.a. AIR (Adobe Integrated Runtime)

This is where Adobe is going to win big time. There are many good reasons why, but I’d like to share some important ones which will make a greater overall difference.

1) Today there are many mobile OSes out there including Android, iOS, Symbian, WinMo, WinPhone, MeeGo, QNX, webOS and many more. Every OS have different programming language and set of APIs, and mastering them all is really a hard task.

AIR for Mobile is going to ease this by providing familiar development tools we have been using for years, Flash Professional and Flash Builder (Flex) and single programming language, ActionScript 3 with consistent set of APIs.

2) When I first started playing with Android SDK, I was completely disappointed because of lack of GUI designing tool. You have to write everything via code, be it JAVA or XML representation of GUI.

Now with AIR for Android, you have those GUI designing tools, Adobe Flash Professional CS5 and Flash Builder 4. With Flash Pro there are millions of developers who can now reuse their skills and tweak thousands of games and applications to run on Android based devices within days. Time to market is a lot quick for applications developed on AIR, so it will also make a huge impact for sure.

Expect Android Market to flood really soon with tons of cool games and applications. Apple, get ready for real competition ;)

3) This is perfectly the right time for AIR on mobile devices. We see every day there’s a new mobile device released. Even I read couple of Tweets saying "another day, another Tablet" :)

Just today, I was invited in launch of Samsung’s mobile devices Wave II, Galaxy S and Galaxy Tab for Pakistan region. I tried Galaxy Tab firsthand, it gave a really pleasant experience. Performance of UI and interactions were real smooth, but the browser showed a little lag when scrolling. It wasn’t deal breaker, so it’s all sweet I can say :)

Galaxy-Tab

The good thing was, I took my laptop and Nexus One along to demo a fun online collaboration game-application I developed a day ago. So, one user was on Nexus One, another on Galaxy Tab and one on my laptop, and it was pure fun when we all were able to play around with the application, it worked flawlessly!

I will be posting a sneak peak demo of this new collaboration game-application done in AIR over the weekend, so stay tuned ;)

And finally wrapping up this post, I can see Adobe is getting lot of traction in coming days and tons of games and applications for Android. This is all good news for owner of the cool new devices, and developers who are going to make some cash ;)

AIR for Android is a really big milestone for Adobe and millions of Flash developers around the world. Excellent job Adobe!

// chall3ng3r //