The Future of Flash (Pro)

Today, the Flash Pro team is releasing an update that should be a fairly major milestone in the tool’s history. In this post I’ll explain my personal view of what’s changed, why it’s a good idea, and where Flash goes from here.

Note that this post is about Flash-the-animation-tool. The runtimes (Flash Player and AIR) are a separate topic, but suffice to say that today’s update doesn’t affect them. 

Background: FLA types

Observant Flash users will have noticed that, starting a year or two ago, there began to be more than one kind of FLA. Rather than having a single project that could be exported as SWF or AIR or HTML, Flash began to natively distinguish between AS3 projects and HTML projects. This was done so that Flash could match the authoring experience to the target format - giving you Javascript code hints when you’re making HTML, disabling features that aren’t supported by CreateJS, and so forth.

Then a bit later, Flash gained a WebGL file type (currently in tech preview). Along with other new features to publish SVG and sprite sheets, Flash Pro was becoming more and more a multi-purpose tool. Which brings us to…

Announcing: Custom Platform support

CreateJS and sprite sheets are great but there are tons of other formats and libraries out there. In an ideal world Flash could publish them all, but waiting for Adobe to implement them one by one is not the way to go. So, today’s Flash update introduces a mechanism whereby anyone can extend Flash to natively support any library or format, just as it supports SWF and CreateJS.

Here’s how it works. Let’s say you’re an animator and you want to create an animation to play back in Unity or Starling. You might decide to use the GAF format. So first you’d go and get the GAF extension for Flash and install it. Then re-launch Flash and you’ll find a new FLA type to choose from:

When you create a GAF project you’ll notice a few changes - for example the 3D rotate tool will be grayed out (because GAF doesn’t support perspective transforms). And when you open the publish settings, you’ll see custom settings for GAF:

Finally, when you hit File>Publish you’ll get your GAF file, which you can then play back in Unity, Starling, Cocos2D, Marmalade, and so forth.

Neat. Why is this important?

The nice thing about being an evangelist is that I’m pretty free to go off-script and speak my mind. (There isn’t actually a script in this case, but nonetheless.) So here’s where I do that: I believe that custom platform support is the feature that will determine whether Flash Pro is still around 5-10 years from now.

This reason is that this feature decouples the authoring process from the output format. Until now, Flash Pro has been a “SWF creation tool” or an “HTML canvas animation tool”. Support for arbitrary platforms it can simply be called an interactive animation tool, as it should be.

This also means that Flash can now be used as “the authoring tool” for most any 2D format that lacks one. For example, suppose you’re a game company starting work on a new 2D platformer. In most cases, your first job would be to build a level editor, with all the overhead that implies. But starting today, it might be a lot easier to write an export plugin, and design your levels in Flash.

I’m sure you can think of other use cases. The important thing is that you don’t need to ask Adobe for anything, or to wait until we implement the format you want. And, even if the ghost of Steve Jobs comes back tomorrow and uninstalls Flash Player from every PC on earth, Flash Pro can still be your go-to animation tool. (HHOS)

Ok. More details!

Some questions you might have, if you’ve read this far:

Q: Where would I get these extensions?
A: Typically from Adobe’s add-on site, or else you’d get a .zxp file from the extension’s developer and install it with Extension Manager. The process is identical to using extensions for any Adobe tool.

Q: How do I create an extension?
A: Short answer: in C++. The team wanted custom platform extensions to be just as powerful and flexible as native SWF publishing, so they created a C++ SDK that uses all the same internal hooks and APIs. I’m not a C guy, so if I go into any more detail than that I’ll get something wrong. But if you speak C++, here are the custom platform SDK docs.

(Note: actually, it’s only the publishing logic that is done in C++. The rest of an extension is mostly XML config files and HTML panels for dialogs. But the export logic is the main part.)

Q: What can and can’t extensions do?
A: Briefly, extensions do the following:

  • add a FLA type and description
  • declare a list of any tool features to disable
  • define custom panels (e.g. for publish settings)
  • implement logic to be run when the FLA is published

One thing extensions can’t do yet is customize the coloring and code hinting in the script editor. (Custom formats can use scripts, but for now the editor treats them as plaintext.) We’re working on this for a future update.

Q: What extensions are available today?
A: None quite yet. The GAF extension is now released! And now that the SDK is open to everyone, more should be cropping up in the coming days/weeks.

The Future

So where does Flash go from here? In the short term the team will work on rounding out custom platform support, like with code hinting and coloring. We’re also working with a bunch of third parties who are building extensions, to help them get ready for release.

In the longer term, Flash will continue down this path toward being a truly format-agnostic creative tool. Just as Photoshop doesn’t care whether you’re making a jpg or a png, Flash will focus on giving you the best tools for making interactive animations, without trying to dictate what format or runtime is used to play them.

PS:

Today’s update has several other nifty features too - WebGL projects now support frame scripts, and you can customize the drawing nib of the brush tool. Here’s the full list of Flash updates.