Mobile Flash’s Growing Pains
I’ve recently commented on the lack of games on Android and thought that the Android market could use a good tower defense game. Of course, it would be nice to make money on my side projects, so I thought it would be really good to port my game to iOS and other modern devices, maximizing my potential market and ideally, selling a lot more games.
The problem is that me and a friend working on a game don’t have the time, energy or mental fortitude to port our game to all those platforms. This has been the dilemma of the mobile application developer for years. Unlike desktop development where 90% of your market runs the same platform, mobile is, has always been and very likely will always be a fractured market with no clearly dominate player.
What this means is that I need to put in a lot more work for my apps to reach the majority of smart phone users. I have worked at companies that make their own mobile frameworks with the dream of one day being able to plug an xml file through their machine and have a blackjack game (for example) spit out the other end. Problem is that platforms are always being updated forcing you to always update your framework. The biggest problem though is that if your apps are so simple that a framework can make them, it will be faster and cheaper to just build the apps using reusable code.
Adobe is trying to be the new Java (only focusing on the front end rather than servers). As an independent developer, I applaud their efforts but gotta say mobile Flash is in an alpha stage right now and is not ready. After trying to port my tower defense game to my Nexus One, I was surprised to find everything was just really slow, across the board. I put in some diagnostic code and discovered that the mobile version of my game takes 50% longer to do everything. 30 FPS became 20 FPS. What I thought would be the processor intensive parts of the game (the path finding) actually ran fine. It was the graphics, drawing one circle around a selected tower slowed things by a further 35-50%. I have heard that when doing mobile Flash development to avoid using any vector graphics (using the Graphics API), but the truth is that any vector graphics kills your apps performance to the point where vector drawing shouldn’t be allowed on mobile Flash, it is unusable.
Of course, the problem is that once you do that, you fracture your cross-platform platform. But that doesn’t really matter anyways as just using Sprite’s and bitmaps alone slows my app down to the point off being unusable (and those are essential to Flash). If you look at Adobe evangelists showing off Flash on their phones, they are usually apps where there is very little movement (showing an image gallery is common). I wish they would stop doing this as I find it misleading. What would be great is for Adobe to instead advise developers on how to optimize their Actionscript code for mobile devices (other than a few forum posts, there is really nothing on the web providing guidelines on this). If this isn’t possible, developers are going to abandon Flash as a mobile platform, but if Adobe keeps acting like there isn’t an 800 pound gorilla in the room, developers might start abandoning Flash all together.
Of course, if RIM and Adobe are able to make their new QNX OS and Flash work fast and zippy together, that could be the time where Adobe can start shaking the “poor performance” monkey off it’s back. If they don’t pull it off, I hope RIM has a native SDK in the works.
[a Cobworks commentary]