Ludum Dare

This weekend, I participated in Ludum Dare, a game programming competition where you make a game in 48 hours. Here’s the final result:

Screenshot of the action

And the source, including all images and music: https://github.com/kchodorow/ld27. Incidentally, it worked out to 48 commits over 48 hours.

If you’re registered, please try it and rate my game.

All in all, this was so much fun. I thought it was really cool how much I could make in 48 hours (I can basically implement Candy Crush in two days!). I found it surprising how much art even a really simple game took (I ended up on “New Document #87” in Inkscape by Sunday… I at least started 87 pieces of art!). There were some “this is held together with spit and glue” moments (particularly Sunday afternoon) but I don’t think there are any game-stopping bugs.

Things that worked:

  • Named constants for everything, with good names. Taking the extra couple seconds to create a constant for everything kept saving my ass.
  • Making so much crap global. At first I wanted to carefully pass around just what I needed but then I just gave up and made almost everything global.
  • My level class. I ended up being able to crank out a nice variety of levels in a few minutes.
  • Using music from http://www.nosoapradio.us/ was a huge time saver. I just plopped in an awesome free MP3 and bam, atmosphere.
  • If you win Dirty Rotten Seconds, the little duelist floats off into the sunset. It’s subtle and most people probably won’t notice, but the effect made me happy.

Things I would do differently:

  • Spend some time the first night working on a deployment script. I ended up with something that sort of worked, but deploying was always nerve-wracking and I ended up with all sorts of unnecessary junk uploaded.
  • Not make a game with people in it unless I’m using someone else’s assets. I hate making art assets for people, and I kind of committed myself to making 12 of them for this game. I was dreading taking care of it all Saturday.
  • Start out by adding lines every 100px on the screen. It would take 20 minutes, tops, and would have saved me endless frustration over where things were being placed/aligned.
  • I need to work on my animation skills. I’m not sure what free tools are good for 2D animation, but Inkscape isn’t it.

Overall, I wish I had had the time to make it more of a strategy game and less of a twitch game. Also, making levels turned out to be so easy I wish my theme had allowed 50 levels or so.

The competition ended at 9pm last night, so afterwards Andrew and I were trying out other people’s games. Some people came up with some really neat stuff. Some of my favorites so far:

And now I have 1500 new games to try out! Pretty amazing.

On the downside, I feel like I didn’t get much of a weekend. I had a lot of fun, but I’m starting the week with my brain and hands all tired.

Still, it was an awesome experience and I’ll definitely be participating the next Ludum Dare!

2 thoughts on “Ludum Dare

  1. Very cool! I wanted to try tinkering with your code, but I’m having issues launching it…getting dependency errors, e.g. failing on
    “`goog.require(‘lime.ASSETS.duelist.json’);

    Any tips on how to arrange the files so that dependencies are satisfied? I’m running from within my limejs folder.

    Like

    1. Cool! Happy to help. Make sure you checkout limejs and have a directory structure like:

      limejs/
      |- bin/
      |- lime/
      |- ld27/
      |-… other files that come with limejs

      Then, in the limejs directory (not ld27), generate the project’s dependencies by running:

      $ python bin/lime.py update

      Once that completes, lime.ASSETS.duelist.json should be findable. (If this doesn’t work, try renaming the ‘ld27’ directory to ‘duelists’ and running update again, but I think the directory name shouldn’t matter).

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: