Flash Community Fragmentation
My first impression of flash was that it was one monolithic technology that was mostly for designers, but had a programmatic interface for those sufficiently masochistic as to use it. After using it more, I decided that its programmatic interface was the good one and the IDE was for masochists. Over time I became aware of perhaps 5 distinct sub-communities inside of the Flash ecosystem. Each of these communities has its own set of tutorials and blog posts based on what community the author was apart of and writing to, and each seems to largely ignore the existence of the others.
From what I have been able to gather there are the following communities
- Flash the Original – There seems to be a lot of legacy information about this now defunct standard available as well as a lot of backwards compatibility hacks for it in the current incarnations of the language. There is still quite a bit of information swirling in the intarwebs about this technology.
- Flash 8 IDE – This seems to be the first of the modern, designer ready flash environments and there is still a ton of tutorials and blog posts available for this.
- Flash 8 ActionScript 2 – The programming interface to flash 8 is Actionscript 2. This also saw the first open source flash movement to gain traction (that I am aware of) with the MTASC compiler.
- Flash 9 / Flex Builder IDE – the most modern designer based environment.
- Flash 9 / Flex 2 & 3 / ActionScript 3 / MXML – This seems to be the most current branch of flash programmatic development and the ideal place to begin for noobs just getting started in flash development (esp. open source development).
- and then there is AIR
The first time I installed a flash, I installed the Flash 8 GUI/IDE, so that I could help one of our designers complete a project that was coming up on a deadline. The next time I worked on flash it was to begin development of a game (this eventually led to Celest). I installed all of the eclipse MTASC and ActionScript tools and just got to the point of being able to create a flash swf file when we quit on this again for some time. The next time we picked it up, we moved forward to Flex2, by mostly following ryepup’s tutorial for setting up a computer for flash development. We used this setup for most of the development of Celest. Finally when it was time to publish the product and I actually needed the distinction between dev and live versions of the game, I wanted the compiler to set that variable for me. This led me to upgrade to ActionScript3 / Flex 3 so that I could take advantage of the compiler “-define” switch (which allows me at compile time to set the value of a variable). Unfortunately, flex2ant does not provide the define directive, so I had to download the source, add that function call, recompile and finally tell eclipse where my new flex2ant binary was.
The long and short of the situation is that googling for info on flash development can lead to some real confusion if you are not aware of the splits in community. By starting with the most recent release (instead of upgrading three times), and by being aware of great resources (such as the language docs and the opensource flash community) you can vastly simplify your first experience writing a flash game.
