Ludum Dare 23 Post-Mortem

I'm about a month overdue in writing this entry, but better late than never. Back in April, I participated in the 23rd Ludum Dare by creating a game in 48h by myself. You can play my finished product: Tiny World Defense. Results of the competition were released last week, and I was really proud. I managed to get #176 in the "Fun" category, and #244 overall. For a field of over 1000 games, that's pretty good. If you're looking for some really fun games, check out the top 50, and top 25 per category. They're pretty awesome. Remember, each one was completed in 48h.

Overall, it was a great experience. I got to challenge myself to finish something that I never had before, and I learned a lot along the way. It's a lot of fun to watch the #ludumdare IRC channel during the compo, and the community is fun, even though I didn't participate much.

Without further adieu, what went well:

  1. The Keynote. Ludum Dare had an awesome, interactive keynote this year. Go check it out.

  2. Working at KwartzLab. Having other people around who were working at the same time as me was extremely helpful. It was really encouraging, and provided a means to talk to people about successes/problems. For an extrovert like me that's necessary.

  3. Choosing Flixel. It's a very good framework, and helped me out a lot. Probably won't use it next time, but that's no fault of its own.

  4. Tools. mtPaint and bfxr made graphics and sound FX really easy. Aww yeah.

  5. Participating in Warmup Weekend. This was probably the most critical factor for my success. The fact that I had already done something with my language and framework allowed me to get to work quickly when I finally started working.

  6. Getting food delivered. Meant that we didn't have to get up in order to eat. Very important for continuous work. Pepi's Pizza is the bomb.

  7. Going out for food. Spending all your time in one place, even if it is as awesome as KwartzLab, sucks. Going for a walk is important.

  8. My heating regime. KwartzLab is cold in the spring and fall because of stingy heating from the landlord. I got myself a heated shrug for my legs, and a lizard heat lamp for my hands. Vital to my success in that environment.

  9. Sponsors. CCJ Clearline and TribeHR each bought us some food. That was awesome.

  10. Support from my wife. She recognised that this was important to me and let me do it. Without that, it never would have happened. Thanks, hon.

Things that could have been better:

  1. Better planning of snacks. I bought some at a Shoppers Drug Mart on day 2, but the whole situation was meh. Need to plan that better for next time.

  2. More sponsors! Food costs about $50/person for the weekend. I'm going to try to get that all raised so that it's all covered next time.

  3. Go deeper with the framework. There's a lot of tools out there for making certain types of games in certain frameworks. Working with those to lessen my personal workload would be a good way to improve.

  4. More testers, more often. One of the things that didn't quite work out with my game was the balance of the powerups. Had I taken more time to get that balance right earlier and had people test, I think I could have had a better game at the end.

  5. Participate in the community more. That would have been one way to get testers. Also to get help.

  6. Theme. Tiny World? Really? What's up with that? Bah.

As I said above, overall it was really awesome and one of the most fun things I've done in my life. Now I need to get ready for the next one in August!

What I'm going to be using for Ludum Dare 23

I've now been playing with Flixel and PyGame for a weekend, and I think I'm going to end up working in Flash for Ludum Dare. PyGame was great. I was able to get up and running quickly, and working in Python definitely matches my brain nicely. Flixel is just so fast to build things though, and the language feels like a type-hinted bastard child of PHP and Javascript, so I'm comfortable enough with it.

I did find some new awesomeness with tools, however. First, mtPaint is great for pixel art. Much easier than GIMP. Second, Audacity has a bunch of new stuff in 2.0 that makes generating sounds a lot easier.

Oh, and for developing in Python, I would now recommend Aptana Studio (with vrapper if you are like me and need vim keybindings). Wonderful integrated environment. I might start using it on Linux for my PHP development at work. Of course, FlashDevelop is great for Flash (under Windows or Wine).

Overall, I'm very happy with what I got accomplished. My PyGame source and Flixel source are on GitHub, and you can try the Flixel game I made from a tutorial. See if you can beat my high score of 80!

Play the game!

Deciding on a Toolset for Ludum Dare's warmup weekend

This weekend is warmup weekend for the 23rd Ludum Dare. Ludum Dare is a 48-hour solo game-making competition. I've been wanting to participate since competition #2 or 3, but never had the chance. This April is the 10th anniversary of Ludum Dare and I decided that there's no time like the present to to finally throw my hat into the ring.

This will be my first time making a game from start to finish. I'm fully prepared for the possibility that I won't finish and if I do that the game will suck. One of the things that everyone says that helps improve your chances is to know your toolset well. Since I'll have to write all the code, create all the art, and record all the audio during the weekend, I need to figure out what tools I'm going to use so I'm not wasting time learning the tools when I should be creating.

If you're interested in coming out to try your hand at making a game in 48 hours, you can checkout my post on the KwartzLab blog on how you can sign up and join us at KwartzLab!

Engine

Picking the game engine is probably the most important decision I have to make. The engine will dicate what will be easy/hard during the competition itself. Different engines have different strengths and weaknesses. I've been looking at 3 different options:

  1. Unity: This is an awesome engine that a lot of indie devs use. It's a 3d engine that publishes to web, Flash, Windows, Mac, iOS, Android, and Wii. I'd really love to learn this engine, as it would be great for converting my Ludum Dare project into a real game. Sadly, it's 3d, which means I'd need to do modeling, etc. I'm not that good at it, and so I've concluded it would take too much time for my first try.

  2. Flixel: Flixel is a Flash-based engine for doing rendering and collision detection. Apparently it's really easy to use. I see a lot of games that are using it. I think this would be a good choice for getting something up and running that's easy to publish (which is important for the sprint to the finish at the 47th hour). The only problem is that I haven't touched Flash or ActionScript in about a decade.

  3. PyGame: PyGame is a 2d engine written in Python. In terms of capability, it's pretty similar to Flash+Flixel. I'm much more familiar with Python than ActionScript, so that's a huge advantage in terms of time. Packaging PyGame games is a fair bit harder than pushing a Flash file to a website, so I could lose some time there.

I think this is where I'm going to be spending most of my time during warmup weekend. I just don't know whether Flash or Python will serve me better. I think I just have to try them both and see what fits.

Visual Asset Creation

I think I'm just going to use pixel art, so The GIMP should do. It has everything I need (I think). I've never done pixel art though, so I'm going to have to practice this a bit during warmup weekend too.

Audio Asset Creation

For sound effects, I'm probably just going to use Audacity and a crappy mic. If I have time, I might create some fancier stuff, but still in Audacity. If I get time for music, I'll likely do some chiptunes. I found two guides online that give some tips. If I have spare time during

I'm going to be quite busy over warmup weekend...