Now that I’ve had a chance to settle down, catch up on some email, spend some time with the family, upload my photos, and blog about Flash on the Beach 2009, I will post my slides:
As usual, seeing a bunch of bullet points and diagrams doesn’t replace the thrill of watching me babble on for an hour, but it’s the best I can do unless John releases the video taken by that camera man who was in my face the whole time.
In there, I mentioned the game toolkit I’m working on, called Asobu, which means “to play” in Japanese. A lot of people asked me about it at the conference, and I hope I didn’t set expectations too high. I’m not trying to revolutionize the Flash gaming industry or create the next big thing that everyone uses to make games. Really all I’m trying to do is make a few reusable classes to use in my own games and make things easier for myself. But I’ll release them and if anyone else wants to use them, they’ll be free to. And hopefully a few people will say, “why the hell did you do such and such that way?” which will lead to improvements for myself and anyone else.
So what does / will Asobu consist of? First of all, it’s going to be mostly generic, architectural type stuff. There won’t be any physics engines, collision engines, 3d engines, particle systems, tile maps, isometric engines, or anything else like that. Well, a few of those things might make it in there someday, but I’m concentrating more on the things that make up the different structural parts of a game and hold them together. So far it has:
- A state machine with scenes and transitions. This is named after and loosely based on the Director class in cocos2d for iPhone. I showed some examples of this in action in the presentation, and there are some code snippets in the slides. Basically, you make each part of your game a Scene – the intro, the game itself, instructions, high score table, credits, etc. – and move between them with the Director. There are various prebuilt transitions, or you can create your own.
- A few essential UI Elements: A configurable label for displaying text, a button, and a very flexible menu system. I might extend the label to make a larger, multiline text area. In my experience, these are most of what you need to show options, settings, instructions, etc.
- A sound/music manager allowing a single point for loading/embedding sound files and playing them with various options, mute/unmute, volume, etc.
- A library/asset manager for loading/embedding and accessing external assets in one place.
- The beginnings of a level manager class for loading/embedding external level definitions. I’d also like to see if I can extend a level editor I made for a game with my Minimal Components into something generic enough to be reused on multiple projects. It would be great to have a relatively easy way to create at least a good chunk of a level editor with drag and drop of custom objects and property inspectors for them. We’ll see how that pans out.
Anyway, there is a lot of work to be done on all of this. The Director and Scenes and the UI Elements are the furthest along. Stay tuned to see more. Again, I don’t think anything here is going to amaze anyone anywhere, but what’s there already has proven helpful to me, and hopefully will be helpful to someone else too.