My first Ludum Dare game required python plus a couple libraries. It got 9 ratings. That’s when I decided I had to learn to make web-based games if I ever wanted anyone to play them. So I tried hard to learn Flash, and didn’t like it. Then I heard about HTML5 and learned that instead. I looked around for an HTML5 game library I liked, and realized I’d learn best if I wrote my own. So a couple months ago I started making an HTML5 game library called UFX. Tondie and Zupe is the first game I’ve made using it, so that’s kind of cool. UFX is still pretty incomplete (the game locks up in Firefox, I suspect that’s due to a bug in UFX), but I hope that by next LD it’ll be good enough for people to use if they like.
UFX uses a component-based entity system. This is the first game I’ve made using such a system, and I’m hooked. If you’ve made a few games with a class hierarchy for your entities, I strongly recommend looking into component-based systems. It honestly felt liberating to write the code!
My code base stayed pretty sane this time around. If I continue development, I’ll be able to keep most of what I have. I do remember thinking to myself, as I was duplicating 10 lines of code, so this is when my camera module becomes an inelegant mess. Fortunately most of my modules didn’t suffer the same fate. JavaScript doesn’t really deserve its bad reputation, which only exists because tons of JavaScript was written by people who don’t know JavaScript.
Most people who comment on HTML5 as a game platform say it’s not ready. That may be true in certain ways, but I think people are still underestimating its potential. The best way to make that point, though, is just to make good games with it. With Tondie and Zupe, I was impressed at the performance I got. I never do any image caching or optimization. I just zoom, scale, and rotate, and draw the graphical primitives I need. Chrome does an excellent job keeping the framerate up, even with many enemies on the screen. It’s fun to see other people’s HTML5 entries too. I hope we can inspire each other to push the envelope and get HTML5 recognized as a contender.
The graphics in Tondie and Zupe are 100% hard-coded vector graphics. If you look at the source, you’ll see it doesn’t load any image or data files. Doing it this way seems like a pain at first, but it’s very powerful if you’re willing to try it. It makes animation very easy, which was important for achieving the right “bouncy” feel for this game.
Finally, I kind of lucked out with the theme. Cylindrical coordinate systems happen to be a specialty of mine. I’ve done similar things before (which I’ll write more about in the next postmortem), so this part was easy. I’ve gotten a lot of positive feedback about the controls and camera, so I think people appreciate it.