GoASAP & Fuse featured in Open Source Flash book

Because Flash is a proprietary plug-in technology and its coding language evolved gradually over about a decade, it took a while before the words Open Source meant anything to its developer pool. But when it hit, it hit hard: Aral Balkan’s seminal site OSFlash introduced an already-thriving community to a whole new world of licensing code for the purpose of free and easy sharing, modification and reuse. Open Source took off in the Flash world and some of the most powerful software ever produced for the Flash Player is available for free, such as the incredible Red5 media server and the mighty PaperVision3D.

Friends of Ed is now giving you the chance to catch up on this little revolution with their new book, The Essential Guide to Open Source Flash Development, and I’m proud to say that I’m one of the contributing authors! My chapter covers several Open Source animation tools that I’ve released for ActionScript 2.0 and 3.0.

Updated benchmark

as3tween-fps3-sm.jpgThis more recent benchmark shows that GoASAP is staying efficient despite having some great features added recently. A few other systems are shown for comparison but keep in mind that Go is a complimentary, not a competitive animation library. More info here.

Flash Player feature idea: SyncTimer

It’s no secret that Timer (even setInterval) is not accurate. It drifts quickly as event-handling lags get compounded with each cycle. This might come up when say, building a video-sequencing app or something similar.

It’s also no secret that part of GoASAP’s mission is to promote the idea of various animation systems being able to combine their processing. Large numbers of animations process the fastest when they’re all kept in a single list, and that list is updated “on the beat” all at once.

Adobe could address these issues with an additional player-level timer class:

package flash.animation {
public final class SyncTimer {
  public static function addCallback(closure:Function,
                                   interval:Object="enterFrame",
                                   priority:int=0):void;
  public static function removeCallback(closure:Function):Boolean;
  public static function pause(interval:Object=null):void;
  public static function resume(interval:Object=null):void;
}}

This hypothetical class might use callbacks instead of events for speed. It would always use weak references to avoid trapping object references. Intervals other than ENTER_FRAME would ideally be corrected for lag, so they stay as close to accurate as possible.

This might provide a real performance boost for larger numbers of animations. And importantly, all animation systems could be synced very tightly from one centralized update list, making them work much better together.

This feature would lay the groundwork for Adobe to provide a base animation package in AS3, a set of core classes that both their own and also 3rd-party systems could be built on, eliminating a lot of the redundancies between these overlapping systems. (Currently Flash and Flex don’t even share an easing package!)

import flash.animation.easing.*;
import flash.animation.SyncTimer;
import flash.animation.AnimationEngine;
import flash.animation.AnimationEvent;
import flash.animation.IPlayable;
import flash.animation.PlayStates;
import flash.animation.BaseTween;

Sure, that’s basically a suggestion that Adobe adopt the concepts behind GoASAP, why not? If they wanted to go all the way and make a statement in a Silverlight-tinged world, they would consider the creation of a standardized ECMA animation library that could be ported to AS3, JavaScript, and After Effects; however that’s a different and much bigger proposal and one I’ve already made (see earlier posts at this blog). For now, simply by adding a centralized SyncTimer feature to the player and a few slim base classes, at least AS3 animation systems would share a common core instead of all having to reinvent the wheel.

FlashBelt guests from Scifi.com, ZAAZ

Some exciting news:

I will be joined on stage at FlashBelt by Donovan Adams of Scifi.com and Jud Holliday of ZAAZ!

Donovan has been doing great work on HydroTween. It has a Tweener-like syntax plus sequencing, it’s compact (one extension class), very fast and does a load of fancy tricks: color & HSB tweening, filter tweening, 3D tweening with automatic scene updating, start properties and more. Tween groups and sequences as quick as you can say “Fuse.” :-)

Jud and Graeme have been taking a nearly opposite approach at ZAAZ, with a fully OO strictly-typed tween library (and sequence extensions), but no syntax parsers so far. Graeme’s also been working with John Grden on expanding his Go3D library. When this library lands it’s gonna be with a thud, and my guess is that it will become a standard in the Go community.

Why I’m excited and honored to have these guys co-present with me is that their different approaches really illustrate the wide range of possibilities with Go. There is no wrong answer!

I hope to get a chance to talk a bit more about Go’s decoupled management architecture. This is one feature that makes Go unique and so sexily flexible. While other kits “bake in” management features and lock you to them, this is a way to be able to infinitely expand the automated side of your animation tools, while leaving them entirely optional for the end user. ‘Managers’ – it sounds dry… but in fact it’s a richly creative opportunity. For example I made an AutoBlurrer manager that adds horizontal and vertical blur to any moving object based on its velocity.

The other point of excitement around FlashBelt 2008 is just the killer lineup of speakers, one of the best I’ve seen at any conference.
http://www.flashbelt.com/

GoASAP & PaperVision3D: Go3D, Timeline3D

The great thing about Go is that it’s small and versatile. You can do just about anything animation-related with it, or should be able to figure out a way!

Tim Knip and John Grden from the PaperVision3D team are getting into the groove.

Tim and I are creating a Go-based system for animating the data exported from 3D programs called Timeline3D. John has started coming up with his own strict-typed syntax for tweening DisplayObject3D’s and Go community member Graeme Asher is planning on contributing some classes of his own for animating cameras and other 3D objects.

John’s latest blog post on his Go3D system
John’s blog

Be sure to join the Go mailing list to keep up on all of this fun!

Fuse+Go book chapter

I’ve been asked to contribute a chapter on Fuse and the Go Platform for Friends of Ed’s upcoming book, The Essential Guide to Open Source Flash Development. The book will also feature articles from the likes of John Grden, Carlos Ulloa, Chris Allen, Wade Arnold, Nicolas Cannasse, Aral Balkan, and others. It’s an honor!

Go 0.4.7 Drops!

So far, GoASAP has grown into being a solid Animation Platform with a coherent Core Compatibility layer and a highly evolved animation engine and linear-tweening base system. No physics classes yet, but the architecture leaves plenty of room for that to grow.

The latest drop, GoASAP 0.4.7 is a major improvement in the tweening arena, adding a “useFrames” alternative to time-synced updates and more cycling options. Looping has also been added to group & sequence utilities. This update also affects any LinearGo extensions you’ve already written so be sure to read this article!
(more…)

Go Video Tutorial #2: Write a Fuse-like Sequence parser in minutes

Now that you can build a tween over Go (outlined in the 1st video tutorial), find out how with just a few lines of code you can parse a generic object into a tween, then build a sequence parser that supports parallel-tween action Arrays just like in Fuse Kit! At the end of this video we’ll add sophisticated custom-advance features that let you specify exactly when a sequence advances forward. (Fuse had a couple custom-advance options; Go ships with 4 plus makes it easy for you to create new ones, so in some ways this basic parser is already ahead of Fuse!)

Having written Fuse myself I have to say that the simplicity of this system is pretty shocking. I can’t tell you how happy I am to open up this kind of functionality for you to be able to work with directly instead of just being stuck with the API’s others create for you.

Tutorial: Creating a simple parser with Go

Accompanying video tutorials are available at GoPlayground.

Introducing GoPlayground!

The Go Playground is a shared repository where members of the Go community can post their utilities to share with others. Accompanying source files for the Video Tutorials are also available here for download.

Want to get involved with Go? First get the Go source files, check out the official website and online documentation. Browse the Playground to see what the community is up to, join the mailing list so you can get involved, then join up when you’ve started to make your own tools with Go and wanna share the love!

Official GoASAP Website Launch

Our membership is growing and we’re proud to present our new website! This should clear up a lot of questions about what GoASAP is all about.

http://www.goasap.org/


What do you think?