When Director was being overtaken by Flash, you could see the signs by what they were teaching at local colleges, what jobs were hiring for, and activity centers online based more around Flash’ growth vs. Director. The same happened with Flex; Macromedia employee’s typically involved on the Flashcoders email list started to go quiet and a significant amount of new blood, and old, popped up on the Flexcoders email list. Product strategies favored new features for the Flex component set and not Flash.
Now, while we’ve reached a point where while there is still room for innovation + needed features, the Flex & Flash community is losing developers. EDIT for JD: *** Not en-masse; the Flex community is growing continuously, I’m speaking specifically about a small, yet influential group of developers I follow on Twitter. *** This isn’t a wholesale abandonment like it was for Director to Flash. There are still many developers who utilize multiple technologies on a variety of projects. I’m speaking specifically about the variety of developers in the Flex & Flash community who’ve publicly shifted their focus to talk more about iPhone & Unity development then 100% Flash/Flex. Keith Peters, a prominent Flash Developer, has been doing a significant amount of Objective-C development for iPhone apps. While not 100%, he hasn’t coded AS3 in 6 weeks. I’ve read about many others on Twitter who typically brand themselves as Flash/Flex developers who have started doing iPhone development, some professionally. If you’re getting paid to create applications for the iPhone, you’re not getting paid to utilize the Flash Player.
Others have, at a minimum, been really impressed with Unity3D’s offering: a wonderful gaming platform for the web with many features Flash Player has, and many important gaming specific ones it does not. Additionally, it has other devices it can run on that Flash Player cannot, specifically iPhone. Others have thrown their entire being at Unity3D as opposed to Flash/Flex, even if Flash/Flex still pay’s their bills.
The above, combined with some recent discussions on Twitter from Mike Chambers (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) and Ted Patrick (1, 2, 3) from Adobe, are starting to show yet another shift in Adobe’s direction, one that appears towards supporting gaming more formally. To be clear, Flash Player has always been a wonderful gaming platform for both web and desktop, for both indie and bigger companies. From the simple/addictive/viral/spawned many clones Penguin Baseball to the French MMORPG Dofus. Alien Hominid, which started as a Flash game, became so popular it evolved into a platform game. The reverse has happened as well with indie games being built around alternative themes for existing brands such as Starcraft Tower Defense, and Half Life’s Codename: Gordon. Some really show off the power of the Flash Player’s performance such as my favorite, Raiden X.
Why games? In 2007, according to an ESA report, it was a $9.5 billion dollar industry. With the exclusion of films like Titanic, Spiderman, and Batman: The Dark Knight, many game profits exceed movie profits. The budgets for creating games has already surpassed what it costs to make some movies.
Games also have a significant impact on user’s time spent on the site as well as the frequency they return the the site. This increases the chance for higher advertising conversion rates. This is used a lot in sites such as MySpace & Facebook, as well as other larger brand properties who utilize games to enable incentive for users to come back while the community grows.
In short, a good business opportunity to spend resources to support that industry in adding features for it into Flash Player 11.
The challenge with Flash games, however, has been piracy. SWF’s are notoriously hard to make domain specific; meaning it can only run from a certain website. The SWF format is open enough, therefore decompilers make it easy to remove whatever protections were there. Being just another web asset, countless sites either link to other sites with the games, host on theirs, and profit from the ads. This happens a lot on Flash Lite mobile portals as well. Some services such as a MochiAds have helped game creators track their content, know where it’s being used, and profit from it.
Bottom line, though, SWF’s are really easy to hack around and most games that I’ve seen are just that; easy to work around/defeat their protections. This is mainly due to it being, as I said, easy to decompile. Additionally, it’s hard for the developer to protect his/her content.
So what is Adobe planning? Based on what I’m reading, here are my inferences:
- True hardware acceleration for GPU. If a system doesn’t support it because of the challenging nature of supporting various hardware, you can still fallback to Flash Player 10 which has the hybrid software GPU renderer. Having to learn how to optimize AS3 is an oxymoron; you should just have a well performing language that allows you to utilize normal gaming development API’s. Doing this will allow a larger audience to tap into the hardware that’s already there, and thus enabling a large gaming developer audience more opportunities.
- Improved API for gaming interactions. While DisplayObject.hitTest is nice, PixelBender and/or BitmapData.hitTest can often be better. You’re sometimes forced to make design changes, such as using meta-tiles (coordinates of the screen that, if objects are in, qualify for hit tests vs. all objects on screen) for large number of targets. Wouldn’t it be better if you could just use native API’s that run at C speed vs. having to “work around platform limitations”? This goes beyond just hit testing objects, basically anything you need to create games as well as powerful lower-level API’s for linking phyiscs and the existing 3D boilerplate code that Flash Player 10 offers. The strategy from Adobe since Flash Player 9 has been to offer powerful, low-level API’s which allows both Adobe and the community to build libraries on top of it vs. burdening the player’s backwards compatibility when new versions are to be released. An example is Flash Player 10′s latest 3D apis that allow 3D engines to be built on top of it vs. forcing a particular one upon us.
- New Sound API: If you’ve used the AS3 one, enough said. Whack API with old b|u|g|s. Granted, you can create magic, but we shouldn’t have to be a group of geniuses to create great audio experiences.
- DRM solution for content. Adobe already has a server and client one in place for video. When large brands want to put video online, they are often concerned about misuse of their content. Utilizing both the encrypted RTMP protocol as well as the DRM API’s in the Adobe AIR runtime, video content is already being protected & controlled this way for video content creators. This would help application developers as well, not just game developers.