Posts Tagged: AS3 & Flash


2
May 10

The Grand Compromise

I propose the following Grand Compromise:

  1. The WHATWG and W3C revise the Canvas API to align with Flash’s Display List API.
  2. Adobe donates the Flash Player to the WebKit project to serve as an initial implementation of the revised Canvas API.
  3. Apple, Google and Microsoft adopt and implement the revised Canvas API in all of their desktop and mobile browsers.

I think this is an ideal compromise: everyone gives a little, everyone gains a lot. There are no losers.

I’ll address each point in more detail this week.


21
Apr 10

Flash is my platform.

Hi, my name is Troy. I’m a Flash Developer.

Like many people my age, I first experimented with Flash during college. It was the 90′s, the web was new and exciting, and honestly we’d try anything.

I got into it deep. I created the site OpenSWF.org. I maintained an updated SWF file format spec and built a Java-based player. In fact, this was pre-ActionScript, so I even designed an extension mechanism that leveraged Java’s dynamic class loading to allow on-the-fly, distributed updates to the player itself.

Then, I graduated from college, I got married, I got a grown-up job; I left my childish Flash ways behind me and got serious: C++, vector units, video game consoles, multi-million dollar projects.

Five years later I read an incredibly influential whitepaper from Scott Bilas, former Bungie engineer, based on his GDC 2005 presentation: What About Flash? Can We Really Make Games With It? I fell back in love.

Within a year I set out to launch my first (and only) startup, Mockingbird Games, with the goal of making game making as fun as game playing. Much like YouTube, we leveraged the Flash Platform to deliver our core experience to as many people as possible.

For the last 3 years I’ve been developing on the Flash Platform all day, every day. I’ve designed and built a flexible game architecture, a large and complex web application, and many games and apps for clients such as MTV, Paramount, Disney, Mattel and Hasbro. Me, myself and I programmed every single line of code. Millions of people have played these games and used these apps, and tens of thousands of games/levels have been made with just our apps.

During those 3 short years, the Flash Platform has gone from v8 to v10, from ActionScript2 to ActionScript3, from purely interpreted to a modern, JIT’d virtual machine, from a vector-only renderer to a high-performance raster/bitblit renderer. We’ve gotten a declarative markup language for building apps, a high-quality UI framework, multiple free & commercial IDEs and an open-source compiler.

I can write an app for the Flash Platform, compiled with free, open-source tools using a free, open-source SDK, and it will run on Windows, OS X, Linux, Android and iPhone with zero changes. I don’t need anyone’s permission to do this, or anyone’s blessing. My app sinks or swims based on its quality, including not only the work I’ve done but the work I’m building on top of, the Flash Platform itself.

Amazingly, I could have done this 4 years ago with Flash. In fact, in 2006 I could have used a freely available compiler (mtasc) and free toolchain (swfmill) to produce a SWF that would still work today, unchanged on these platforms. But I digress…

I’m not alone in my experience: there are thousands of Flash developers out there building fantastic interactive content. Fantastic webapps like Picnik, Audiotool, Playcrafter and Balsamiq. Even more fantastic games like Canabalt, Machinarium and Club Treasure World. And about a hundred thousand more examples.

There’s something all of these examples have in common: their monetization and distribution are entirely within the control of their developers, and they are freely accessible by virtually any modern desktop computer. For me, this is the definition of an open platform.

Furthermore, many of these apps were built with freely available, open-source tools. They’re all published to a bytecode format that’s documented, well-defined and backwards compatible. They run on a player that’s freely available and is actively being maintained, improved and migrated to new platforms. For me, this is the definition of an open platform.

Flash has provided some unbelievable shoulders for me to stand on. I have used Flash to make my livelihood, to create my dreams and to share them with millions. I’ve used dozens of others languages and platforms over my last 20 years of programming, and none have done as much for me.

I support Flash. I’ll defend its role in the modern web. Flash is my platform.


31
Mar 10

Club Treasure World

Last week saw the launch of Club Treasure World, the latest project powered by Mockingbird. Built in collaboration with Aspyr over the last four months, it’s the biggest project yet using our game making tech.

I suggest visiting CTW to get the full run-down of what’s offered, but a quick description: CTW is place for kids (and adults!) to build their own games and “chat worlds” to share with their friends. Everything is built from treasures that folks can purchase through micro-transactions or earn using the Nintendo DS game Treasure World which Aspyr shipped last year.

CTW was the first project I used Robotlegs on. Even though we didn’t use it extensively—the other developer on the project was not familiar with dependency injection—it provided a nice solid architecture to jump off of. And due to its minimal nature, even when we weren’t leveraging it, it was never in the way.

While we were working on this project I also started several other smaller projects leveraging Robotlegs (none yet released) and have gradually refined my own workflow with it. I’m still a fan, though I’m quite curious about Swiz because it appears to be even more minimal, if that can be believed. I am completely sold on the idea of dependency injection and have started applying it to my API designs.

My latest Robotlegs project is also my first project to leverage Rob Penner’s excellent AS3 Signals. These two together have significantly cleaned up my code and are definitely quashing many of the architectural issues I ran into when developing the original Mockingbird app. In fact, I’m itching to go back and rebuild the whole app and site—not to add features but to clean up the codebase in such a way that it’d be ready for some rapid feature addition in the future. Robotlegs definitely provides a very agile framework.

For CTW we also used SmartFoxServer for the first time. In the end, I was less enthused about this choice. While it got us up and running really fast with it’s simple API and built-in chat functionality, it was a pain to develop with and debug, and I wouldn’t choose to use it again. The API originates from AS1/AS2, so there’s very little type safety and none of the current AS3 conventions. The documentation leaves out a huge amount of caveats present in the API that don’t necessarily make sense, even though it’s clear from the support forums that developer after developer encounter the same issue. The next time around I plan on using a more robust option, like ElectroServer, or possibly the still-in-alpha Union Platform.