Go, and why AS3 needs it
{What is Go? Please see the post just before this one for an introduction.}
In March of 2006 I talked to Sho Kuwamoto to discuss my idea of a system that could be shared between Flex and the upcoming release of Flash 9. I was too late: Adobe was just then announcing the release of Flex Beta2, sporting a robust animation system of its own. (Generously, Sho said he wished I'd approached him 6 months prior.) Later a proposal by a certain Mr. Skinner and myself was turned down after Adobe hired Robert Penner. My plea for Unification fell by the wayside, although that was for the best. Robert is the right man for that job and, like everyone out there across the board, I have the utmost respect for him. His copy/paste Motion package is a really elegant upgrade to Flash's capabilities.
Adobe has in fact produced quite a number of excellent animation libraries, including the whopping Effects system shipped with Flex, that really couldn't make application transitions any easier. In many ways it's a dream, and whatever developers still lack they can find in 3rd-party kit solutions. My own such kit, Fuse (for AS2) gained wide adoption including many top agencies, and now a similar kit called Tweener for AS3 is being developed by one of the early scripted-animation proponents, Zeh Fernando. And all along, Alex Uhlmann's excellent and fully object-oriented Animation Package has set a strong standard. (Alex is currently kicking Flex Effects up a few notches, to great – well, effect.)
But in the midst of all of this activity, there's an underlying issue that has been troubling me. The problem is not diversity – the flourishing of creativity we've seen in this niche is a truly positive thing. But we've also witnessed engineers from various camps solving the same animation problems from their own respective angles. What I'm feeling might be missing is any sort of a shared codebase, although many of the details of these various packages are in agreement already.
Today, a coder might bring two, three or more solutions – Flex Effects, Tweener, Motion, perhaps someday Fuse 3, APE, Animation Package 3, etc. – into a SWF to get a job done. For the most part these all do fairly similar things. But sadly, a great deal of what could have been shared code, formulas, and filesize is duplicated between these packages, which drags on Player performance and bloats SWFs. (Picutre cramming three engines in your car, complete with caburetors, timing belts and cooling systems, just to drive down the block.) This is also taxing for the mechanics – sorry, developers – who are perhaps willing to learn a custom syntax or two, or five. But now they're faced with wrangling similar-but-different event APIs, non-synced animation pulses, piles of docs and very little hope of coordinating these tools. What's really going on inside that SWF might make a person a little seasick to look at very closely.
Finally, the consumer must stream all code libraries used, down the pipe and into their Flash player, before they can get to the content. Let's hope the drive down this block is really bumpin', because a lot of chrome died for those rims, kids.
But, there ain't no use in cryin'. Years have passed since a combination physics/tween architecture was proposed quite eloquently by Robert Penner, in his book that really started all of this. A man truly ahead of his time, this was in AS1!
During that time we've refined the best ways to make animation work with the Flash Player, which itself has evolved dramatically. (I don't want to get tacky about trying to promote this platform since it is not about me, it's a concept and a set of tools that should be created by and for the AS3 community. WIth that in mind, I can't help but drop mention that Robert is one of several very highly-respected developers with at least a passing interest in the Go concept.)
To address the issues starting to emerge from this growing pool of animation systems with no common core, I would like to propose that we get together as a community to create an ultimate set of ActionScript base classes. I'd like scripted animation to be something that's more easily accessible to all developers, and easier to share. This does not in any way stand in opposition of the current crop of tools — In fact, any of them could hypothetically be built over Go.
And like Robert back in the days of AS1, I'm also casting a glance toward a future in which tweening, physics, and 3D are commonly scripted from a single setting — an idea whose time may have finally arrived.
Leave a Reply