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!

  • beeee

    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.

  • kristina1

    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).

kristina chodorow's blog