I’ve been at FITC for the last three days.. here’s brief rundown of the presentations I attended, and what I found interesting about them… btw. the presentations were all recorded and will be on tv.adobe.com.
Apparently Japan has a thriving flash community. Here are some of the things that stood out for me:
Perhaps best-known is the wonderful site: http://wonderfl.kayac.com/ which allows you to edit actionscript code and see the results almost immediately rendered alongside it. I love the simplicity of this , and how it encourages you to experiment. You can also browse code by others, and if you want to edit it, you just ‘fork’ it and away you go. In the presentation this was described as ‘collaborate by forking’ which got a few chuckles from the crowd :) I must say that this site performs really well, considering the massive usage it must be getting, so the engineers - eg. mash - behind it clearly know what they are doing. I was really happy to discover that I can use ItsAllText firefox plugin to edit the code with Vim, so I can use my familiar environment for coding. I think the big win of this is the collaborative aspect - I think I’m going to learn a lot by reading and tinkering with other people’s code.
Of course, there’s the awesome FLARToolkit by saqoosha, which lets you do Augmented Reality stuff in flash (with a webcam). Check out http://livingsasquatch.com/. But there are also many other interesting projects in the SPARK project, as explained by ‘yossy’, a 20 year old who’s been doing actionscript development for 10 years! There’s a full listing of the Spark projects in English: http://www.libspark.org/wiki/WikiStart/en where you will also find links to the wikis by each developers about their projects.
sazameki this features a virtual instrument called ano gakki (?) There’s also a very simple sequencer and mixer, allowing you to control generated sound. It’s not hobnox but you can roll your own UI to do something different (I’d like to see a virtual tenori on)
betweenAS3 yet another tweening engine… I know, but this has a functional programming style (you can nest tweens inside each other) which I like. Also, it can handle tweening massive numbers of particles.. it outperformed other tween engines by far in the demo particle system yossy showed.
Frocessing a graphics library with a surprising range of capabilities, from HSL color, to 2D and 3D transforms, and SVG support.
swfasssist - a flash compiler and player done with actionscript - ?? Holy crap.
SwfWheel - better cross-browser and platform support for the scroll wheel, very useful for the UI developers.
OK, what else…
Joe Berkovitz’s moccasin framework for developing visual editor applications looks really good, having developed such an application before, I know it is hard, and having some of the mechanics readymade will help a lot.
Brian Lesser presented on using RTMFP , the new protocol for real time streaming between flash players. You still need a server to do the initial connection either Status or the yet-to-be-released version of Flash Media Server. Apparently Flash PLayer 10 now has UDP capabilties built into it, who knew?
Speaking of Flash Player, I checked out the Flash PLayer Internals session by Jim Corbett. This was pretty much the same as one I saw online but there were some interesting tidbits about Ichabod - the headless flash player being used by Google to index flash content. It operates in conjunction with a virtual user. They are currently working on issues to do with how it accesses network resources. There are many other possible applications for this technology, so I hope that it eventually becomes available to the rest of us, and not just Google. The new Text Layout Format is powerful, but low-level, so you probably want to use the actionscript components for it, which will be available in Flex 4 , coming soon ( I hope).
ByteArray for beginners gave me a head start on using the ByteArray class in flash, which is incredibly powerful, allowing you to implement encoders/decoders for any filetype, and also use any existing network protocol over a socket (or invent your own). The class provides methods to read and write data to a ByteArray as a String, or various other types, so you don’t have to speak binary :)
Ralph Hauwert was mind-blowing … starting off with his formative inspirations, he then took a deep dive (for me) into how to make normal maps, texture maps, bump maps and lighting even without doing traditional polygonal 3D. Then he explained some of the technical breakthroughs - a 3-way coordination between Alchemy, ByteArray, and PixleBender, which are going to appear in the next version of Papervision. He also explained how they are refactoring PV3D to allow alternative renderers. The demos of the new engine were very impressive, lightning fast, even rendering a version of Quake in the flash player without a single stutter. I also enjoyed the few demos of voxel-based 3D and 8 bit music, specifically a Commodore64 sound emulator, based on Tiny SID which lets you play the original music from those games.
The Commodore / Amiga era games cropped up again as inspiration in James Paterson’s presentation. James Paterson is behind presstube.com. He combines his own drawings and animations in flash, and recently has been developing some interative environments as a home for the various strange beings he loves to invent see here and click on the thumbnails to enter the enviroment. You may need to check on the presentation to understand how to use it, which I highly recommend as it gave a lot of insight into the creative process as well as being very funny. It’s great to see hand drawn art still alive and well in this over-digital era, and this is inspiring me to get back to my own drawings and see if I can bring them to life in a similar way.
I started off the conference with te presenation on SourceBinder a collaborative node-based editor for flash, built in flex. I was able to make an interactive 3D cube controlled by my WiiMote, in minutes. I found the interface mostly intuitive, though it is an alpha product, so there’s the occasional glitch. Its interesting to compare this with Wonderfl - similar goals, but different approaches: Sourcebinder avoids codingbut lets you connect other people’s code like lego. However you can also create your own nodes if you want.
To be honest, the Adobe Keynote seemed a bit flat compared to the other sessions, as they didn’t have anything major to announce, except that a new version of Flash Cs4 will be released soon, to address performance issues. There was an interesting demo of creating your own tool to do procedural drawing.
Joshua Davis was entertaining, the first time I’d seen him speak. Again, I enjoyed the insights into the creative development process of what he does : ‘computational design’. Instead of interactivity as an end goal, he ends up creating a static design by iterating on an interactive process. What I found interesting is how much time this takes, even weeks, before something worthwile is achieved.
This emphasis on iteration was a feature of Mario Klingeman’s session, called The Tinkerer’s Box. By use of some heavy computational geometry and recursive algorithms (as well as some simpler ideas) and many, many variations and experimentation, some really cool effects were achieved, like portraits made up of tiny triangles or spaghetti like lines.
Finally, I attended two sessions by or featuring Grant Skinner… the first about his work as a flash developer in the context of console game devlopment .. apparently console games are making increasing use of flash to develop in-game interfaces. To do this, they sacleform developed a custom flash player which pushes triangles up to the GPU. Some really hardcore engineering going on here. Grant has architected a component set for use in this enviroment, called CLIK. I enjoyed the insight into how to build components which are highly flexible and modular, a topic which he also touched on in his other presentation on Actionscript Development. I got some concrete tips on improving my coding practices here, such as the concept of cohesion, which is how focused a chunk of code (say, a Class) is. You should be able to express what it does in a single sentence, or at least very briefly, or it may be lacking in cohesion (ie, doing too much stuff that it shouldn’t be).
Of course this just scratches the surface… there was so much more which I’m still digesting, and I’m feeling inspired, motivated and informed to do more and better work (and play) with flash in the future.