TweenBencher, Another Flash Animation Kit Speed Performance Test By MosesSupposes

MosesSupposes posts a flash animation kit, TweenBencher, for benchmarking speed performance for Flash Animation Kits in AS3.

He also is calling for standards in Flash Animation kits but this is good and bad. I agree a common syntax should be used and the base components should be agreed upon and integrated into Flash, but standards need to be extremely simple and performing systems. We have seen how packaged Tween bloats and I think the Go approach mentioned below is a good direction for that. Adobe seems more open to this though talking about including SWFObject and possibly helping other kits like Papervision3D with performance enhancements.

I think that a standard is already emerging out of the AS3 toolkits leading the way Tweener, TweenLite, AS3Easing , Animation Package, Animation System, Twease and possibly Go (as Fuse had many users) which is the replacement in AS3 for Fuse that is unreleased. I think the developer market will decide that. Also, the big draws to good kits are simplicity, size, performance and maybe most important, the community and author’s willingness to get out there as technology changes. Right now Fuse is a bit behind in the last aspect, I think people are already enjoying the smaller Tweener, TweenLite kits that have simple syntax and are extremely small. Go is going the right direction in making the pieces much smaller as I agree when you have to use two kits there is extra uneeded duplication.

MosesSupposes might release a Fuse 3 still (built from Go?) but that is still in an private beta stage ( for Go- not Fuse) fairly recently and seems a bit unsure as to whether it will be released or not per the blog.

To forewarn the fanbase, this is not a release announcement, no major progress to announce at this time.

I’ve been holding my cards close since I came up with these concepts around January of this year but it’s time I layed ‘em on the table.

Fuse 3 (if built) will be a combination Physics + Tweening Engine with 2D + 3D animation & sequencing capabilities.

The idea is that all details are registered with a central class (probably FuseCentral) that monitors and prevents overlap between various handlers during runtime.

From the description of Go it seems pretty flexible and useful with making your own syntax but sometimes flexibility there creates a partitioned platform as syntaxes emerge, but it can also change with the best simple syntax. I think making it pluggable is more important than custom syntax, actually I wish animation kits all used the same syntax. Right now that is the biggest hurdle getting people to switch. Also, syntax that still works in AS2 is a bit attractive such as Tweener and TweenLite so that work in AS2 and AS3 does not hinder maintenance.

I have an idea cooking, now in private beta, called Go. I will be posting shortly with some background information on what led me to this approach, but right away let me share the concept and architecture with you.

  • Go is a lightweight – around 4k – portable set of base classes for creating your own AS3 animation tools.
  • Go provides an agile, purposeful architecture that is highly extensible.
  • Go is not a does-it-all Kit (a la Fuse), but such a kit can be built using Go. If Fuse was a vending machine, this is more like a knife and a pan and a way to cook for yourself.
  • Go does not require special syntax to use. You can instead, design your own.
  • Go’s engine is efficient, capable of processing a jaw-dropping 10-20,000 individual animations on a typical system. (Disclaimer: it remains to be seen how Go will perform in a real-world setting.)
  • Go is designed to encourage developers to use tweening, physics and 3D together.
  • Go is inspired by the popular Cairngorm framework in its approach. That tiny set of classes does so much, truly useful without dictating your code.

At this point in the Animation Kit game for Flash, real tests matter, and performance will start to become the main focal point as well as simplicity from released and completed packages that have strong communities and user bases. I think the kits that have succeeded well and created platforms have been the most simple and compact (the evolution is this way) that can be used as base kits in other larger systems. Starting with simple core systems that perform is good systems design to help minimize complexity as long as the pieces together aren’t too complex to use for general coders in Actionscript. Looking forward to watching this space progress.

  • http://onedayitwillmake.com mario

    Great write-up. I agree with everything you said actually.

    There’s already almost TOO many tweening packages

    They’re all essentially the same and based off of the Penner easing equations.

    I don’t know, to me GO seems like a tool for creating even MORE tweening packages, with all kinds of varying syntax. I don’t know if it’s something beneficial to anyone by this point in the Animation Kit game.

  • http://drawk.wordpress.com/ drawk

    Hey Mario,

    Yeh there is starting to be a crtical mass. I think that Go has the right idea creating common underlying components that are fast but giving the syntax freedom might be the wrong way to go. To be honest I think similar syntax is the key to making jumping from one kit to another no problem at all. The goal to get this into teh flash libraries is a good idea in theory but check the speeds of the fl.transitions.Tween class that comes with CS3 and Animation class from Flex… Both dogs. I think that the best ones will emerge as they are, but there is still freedom to do as you want. Although animation kits are a bit like linux distro, everyone wants to build their own.

  • http://www.mosessupposes.com/ mosesoak

    Guys, first off thanks for your interest in Go and for this excellent blog.

    Yes, Go is a tool for creating more tweening packages, it’s true. It intends to make it very easy for any AS3 coder to write their own animation code. Complete Kits can also be built on Go, or converted to use Go, which would only make them more compatible with each other & much easier to modify or expand by their users.

    I agree that there is a critical mass starting to happen, and it is in fact one reason I’ve held off on putting out a Fuse 3 yet. But, let me be very clear that Go is NOT another tween package adding to the mess, it is the exact opposite of that. This project is not about self-promotion, and in fact will probably be eventually released into public domain without my name on it. Go offers an alternative approach to the one being taken by animation system developers (Adobe included) at this time, who are going self-contained, top-to-bottom, lots of redundant code & mechanics, and no common thread.

    I guess after watching me try to take over the world with Fuse 2, your skepticism is understandable. ;) But I disagree that there is a dark side to the Go initiative. There is nothing mandatory or top-down being proposed here. I’m inviting the whole community to help build a system that does not exist today: a thin, flexible set of base classes that can be used to create any animation system. Developers can then do what they want with it. Maybe it seems late in the game to you but many agencies have yet to even touch AS3.

    Also, it’s healthy, not a bad thing, to have a lot of syntaxes and kits out there! They cater to different niches, filling needs of all stripes of Flash and Flex developer. The problem as I see it is not the branches and leaves, but that each has its own trunk & root system. Look at all the different but similar ways each tween package handles the common “motion complete” event. Now, try working with a few packages at once or in series, and keeping track of the minute differences for stuff like that. Things like this could stand to be standardized a little, whereas formats like Flash’s new MotionXML, Flex Effects MXML, Uhlmann’s object-oriented libs and Fuse/Tweener/TweenLite’s “object sytnax” are all totally valid, distinct “branches” that address different audiences and challenges.

    Please take the time to read up a bit more on Go at my blog, I invite all of you to get involved in helping create a truly useful and valuable standard! http://blog.mosessupposes.com/

  • http://drawk.wordpress.com/ drawk

    Hey Moses,

    It is good to finally see you coming out from your bat cave of evil masterplans hehe. :)

    I welcome the Go take and standardizing the components and simple elements that all kits might share (smaller functional components to help build complex systems is what architecture is all about). I am looking forward to it and my only recommendation would be, don’t wait, get it out there in the public now, I think there are many people clamoring to get together on this.

    I think a similar thing is happening in 3d for flash and physics the same thing might happen. What is great about AS3 is it is inspiring entire new platforms to build on and the fact that so many people are developing kits is a testament to a good, fun, cool and especially usable platform.

    You literally swooshed onto the scene just as performance for animation kits was getting to the point and I think this will allow the best, simple kits to advance in the market. The flash developer base is an interesting one for sure and any structure to help build even bigger platforms is always a good thing.

    >>Maybe it seems late in the game to you but many agencies have yet to even touch AS3.

    The moist middle are the only agencies not touching AS3 yet. They are the ones that only bend when the others push them or when everyone else has done it. Right now with flash9 at 93% by January the moist middle will be behind. AS3 platforms are being built and are already quite robust, the quicker you get in the more you can influence that. WIth the dog performance of AS2 to AS3 and with that news finally getting out and making waves it will make AS2 a very bad choice from here on out (actually a few months back). AS1 to AS2 was not that much of a performance jump more in capability (Bitmap, ByteArray etc) but the AS3 jump is one that is really kicking up the flash market and it needs to get out there quick to compete with Silverlight 1.1. I have to question the value of anyone still using AS2 for new projects that are meant to perform, over AS3 that runs 6-10 times as fast. AS3 is much more attractive for developers as well being based on ECMA4 or the Javascript2 spec (while AS2 was a toy). Just look at the clarification and removal of old hacks that have taken place in the new AVM2: http://livedocs.adobe.com/flex/2/langref/migration.html

    Maybe you will build Fuse 3 with Go?

  • http://www.mediareason.com/blog/ Ben

    Moses I think you just have to let stuff get out there. The whole ‘private beta’ thing is so 2002. :)

    I seriously dragged my feet going to AS3 knowing I’d have to do it without Fuse, but ever sense I made the switch, I haven’t regretted it. AS3 is more powerful, and having the Flex debugger makes a huge difference in development of AS projects.

    A fantastically thought-out solution does me no good if I can’t download it and look at it. Sorry if that sounds harsh, I am a huge Fuse fan, but bottom line is we all have projects going on right now and need a solution today.

  • http://www.mosessupposes.com/ mosesoak

    Thanks for the feedback and gentle nudges guys.

    I will certainly make Go into a normal live SVN public project very shortly but that requires that I spend the time to get the code where I want it for a public release, time I haven’t had. Actually that’s another side of why I haven’t put out Fuse 3, I know it would greatly benefit the Fuse user base but it also requires a huge amount of work, not just in writing the code but in supporting the project actively, creating documentation and so forth. I learned that the hard way on Fuse2 and so far I’ve been a little bit timid when it comes to committing to something that huge again.

    Also, I can’t stress enough that if I put Fuse 3 out now, I’m just adding clutter to an already cluttered world. My big push right now is to get people to take a step back from their own narrow view of the products they use and look at the larger picture: Adobe has Flash, Flex +Thermo, and After Effects and several other secondary products in their suite that rely on animation systems, and thus far nothing unifies these systems. Putting out one more top-to-bottom tween engine would be fun (for example everyone could bash it for being more than 2k or whatever), but in the end it is contributing to what I see as a growing problem. Then again if Adobe decides to continue their current course, there won’t be much we can do about it so eventually I will probably end up releasing something.

  • http://drawk.wordpress.com/ drawk

    hey Moses,

    Great on the public SVN. I think that it is fine to release when you feel ready to, contributions are always a good thing as differentiation can help make the best features and performers rise to the top or influence other kits. I agree Adobe is adding lots of plans in animation and plans for Flash 10 and their set of products, I see the open source tools as influencing these decisions heavily (many times in fact they are superior in performance and usability). I think if you do decide to release it will be up to you and not anyone else but I am sure there would be benefits beyond just another kit.