Now that I just moved to a new domain, I think it’s an excellent time to write a large post about everything I’ve been doing over the last year or so, and start writing regularly on this blog.
First off, I competed in Ludum Dare 22 this last December. I never got around to writing a full post-mortem, and by now all the finer details of my experience have slipped away, so there won’t really ever be a post-mortem for that game. Still, writing a full game from scratch in under 48 hours is quite the experience. It really pushes you to get all the low-level technical code done as quickly as possible so that you have time to actually design the game. The theme for Ludum Dare 22 was Alone so with a little inspiration from this xkcd comic, I made Rover’s Spirit, a small top-down “puzzle” game with only one real puzzle. The full submission can be viewed here.
Looking back at it, I’m actually a bit surprised that I got the ratings that I did. While the environment was constructed pretty well, the game was very lacking in content. And from the comments it’s clear that I had a lot of game-crashing bugs and was frantically looking for solutions. The long-term lessons I’ve taken away from my participation in Ludum Dare are the following:
- Before competing in a game jam, make sure you’re familiar with your tools and know how to handle all aspects of a game (audio was the big issue for Rover’s Spirit)
- When making a game of any size, get the technical programming done as quickly as possible and get on with the actual design of the game. Only go back and add on to the technical stuff when you really need to. Good art assets can cover up bad code most of the time.
- If possible, use third party libraries and game engines. In a competition like Ludum Dare, I find it fun (and challenging) to write the game from scratch and I won’t sink too much time into it since it’s only 48 hours, but if you scale the time I spent on “engine” code during LD22, using a ready-made engine can cut your development time significantly. If your game can’t be made on any existing game engines, at least use libraries to handle physics and anything else that would be standard in your game.
- Make the asset/level pipeline as nice as possible. In the context of Ludum Dare, time is limited so you can’t get too fancy with it, but at the same time you want to avoid huge time sinks like how I create levels in Rover’s Spirit. Seriously, don’t ever spend that much time manually calculating offsets for every entity…
- Failure is just as good as success, as long as you’re trying something new and putting a lot of effort into it. We learn more from our failures than we do from our successes. Even if you don’t win a game jam, you still learn quite a bit and become a better game developer for it. This short list of lessons is proof of that.
I wasn’t able to participate in Ludum Dare 23 due to the timing of the competition, and Ludum Dare 24 will also happen during a very hectic week for me, but I’ll try to enter something anyways.
I’d also like to mention that since last September, I’ve made a github account and have released a lot of my smaller projects under the permissive MIT license. On there is a project called SharpFont, which are FreeType2 bindings I’ve written in C# for any .NET language. It’s not quite complete yet (I need to move some methods around and get Windows 64-bit working), but it does provide a much nicer interface than the old Tao bindings. I’ll post more on that soon. Also included on my github account is the source for Rover’s Spirit:
The last thing I wanted to mention here is the game I’ve been working on with my friends for the past few months. Over the past year we’ve been hopping from one idea to another but we’ve finally decided to settle on a single idea and push forward with it. The screenshots I put up in the previous post are from that game. Some of the details of the game are still up in the air, so I won’t post much about it until we get close to an alpha build. I’ll still post the occasional screenshot and video as we’re developing. In fact, here’s the most recent video of the game showing off recently added Bézier curves: