Now that the dust has settled, it’s probably reasonable for me to write a bit about the development process of my Ludum Dare Jam entry, Crashed on Planed Minutiae.
That said, I’m happy with my choice. It allowed me to write the logic for the game at an very high level, including writing a (very) small domain specific language for generating random levels. The compiled code ran quite quickly, and I didn’t really have any performance issues with it (that said, the game runs at 30fps, and not at 60 like I would have liked. I attribute this to my reckless calls to the canvas, more than to any fault of ClojureScript). I was able to write a couple macros to ensure that my canvas stack usage was always valid (every call to
context.save() had a matching call to
context.restore()), and to ease some of the burdens of the canvas’s API. Once more of the quirks with ClojureScript are worked out, I’d recommend it to anyone.
More detrimental to my progress as a whole than the language I used, was the fact that there seems to exist no good tool for writing canvas paths. My process involved tweaking lots of numbers, much guess and check, and just ditching things that I couldn’t make look right. THis, more than anything else, was why I ended up entering the Jam as opposed to the primary competition itself (that and poor time management, of course)
The game itself is somewhat neat, it’s a top-down adventure game, I wish I had time to add more features. Originally my plan was to have beasts rise out of the ocean and attack you as you harvested the crystals. You would have also gotten a blaster, to fight them off (in fact, the dialog still says that you do get one, but it does nothing). I would also just used HTML for the minimap/health window. Much more hassle than it was worth, and for no benefit.
Overall, I count it a success, even though I wasn’t as excited about my product as I had last time I entered (which had the benefit of being my first game as well).