Ludum Dare: post mortem thoughts from a first timer

As some of you may already know, Ludum Dare is a game programming event-like online challenge that takes place a few times during the year. It gathers a huge amount of game developers from around the globe and gets everybody working on a short game over the course of the weekend.

It has been going on strong for 12 years already and not only amateur game developers take part in it, big industry names like Notch (Minecraft) use to submit a game every now and then, so you could say it’s quite a popular event.

For these and some other reasons I have been wanting to submit a game for it for quite some time, but I didn’t take the leap until the last edition that took place just a month ago.

Here’s a quick analysis of how it all went down.

 

Setting up

To be honest, this was the second time I attempted to take part at Ludum Dare. The first time was last summer, when I somehow tried to finish something over the weekend while also attending a wedding in the meantime. As you can easily figure out, that didn’t go too well, so in the end I only completed a a few sprites and some code groundwork. Such a lame attempt that was.

This time I somehow managed to get an almost free weekend, so I could spend most of the time working on the game. Another aspect that presented a few problems during my first attempt was the fact that I tried to code my submission using Libgdx, a framework I didn’t really knew at the time and as a consequence of that I struggled trying to get to work very basic things, which summed up with the fact that I had zero time to work on the game so it finally ended in a bad way and I gave up.

Considering that, I decided to code my game using enchant.js. I’m quite familiar with it by now, since I’ve been working with it for a few months already, and I work everyday with javascript, so I was sure things would go a lot faster taking this road. And they did, for the most part.

 

The compo starts

Since I live in Europe I didn’t really want to wait until 2AM to get to know the theme right from the start, so I decided to take a good night sleep and wake up early on saturday morning. The theme was “Beneath the surface”, and it really inspired me from the beginning. Problem was, I could not decide on a simple idea from the lot I had. Considering most of the ideas I got involved mining or digging at some point I decided to go with a different approach. I figured lots of people would be doing platformers with random-generated levels where you have to explore a cave or dig your way out from it, so I decided I wanted to make a different game and from a different genre.

Then the idea of making a simple point and click game hit me. I thought I could somehow develop a short story where the player starts out without having a clue of who or where he is and where he has to explore an underground complex solving simple puzzles along the way.

It was different enough from what I thought the other games would be and I really liked the idea. I even got an art-style in mind for it, which brings me to the next point.

 

Making the art first

I was so excited about my adventure game that I started out drawing a few backgrounds and the main character right from the bat, without even planning the storyline or even a single puzzle.

This was the first art I got together:

Start screen for the entry game

Start screen for the entry game

It’s simple, you are an astronaut, there is a crashed ship behind you and you are obviously not in earth, since there are two suns in the sky. You haven’t even touched the controls but you are already set in the mood of the game. I really liked this approach, since I’ve always enjoyed games that let you figure  out things by yourself and that manage to tell a story without text or videos.

I was on a roll, and I made a few more background before this one. This approach was great because as I was drawing the background I started to get ideas on how the game would flow. On the downside, this proved to be troublesome down the road, since I didn’t thought thoroughly how the scene system was going to work on enchant.js. Either way, I’m glad I started things this way, and i’m sure I would not have gotten that many ideas if I had started building the game engine right from the start (I would probably just have ended up giving up the concept all together).

 

Coding trouble

The main problem I stumbled across when I started to code up the game was the fact that I thought I knew how to handle myself around with my engine of choice. This turned out to be true for the most part, but I hit a wall that kept me banging my head against the screen for a few hours: I could not figure out why my text labels weren’t reacting to mouse clicks.

In the end I figured out what the problem was (apparently the width property for a text label in enchant.js only relates to the graphical size of the sprite, not the area on which in can react to user interaction).

By the time I figured this out and had it fixed The first day was almost over. Real life called in and I called it a day. At the moment I only had the first 3 scenes working, but I was confident I could manage to get a lot more content in it and speed things up during Sunday now that I had figured out what my main problem was.

 

The dilemma 

On sunday morning I started to feel that I wasn’t going to make it in time at all, so I basically gave up. The fact that I didn’t want to spend another free day fighting against my engine’s shortcomings didn’t help either.

I already had made up my mind and spent almost the whole day out, but I couldn’t help it and I surprised myself a few times during the day thinking about how the game should continue or how cool would it be to do this r that.

I spoke with Antonio that night, and he encouraged me to finish as much as I could and submit it anyway, being sure that doing so would make me feel a lot more accomplished. I suddenly realized he was right, and I decided to wrap it up with the few first scenes I had planned and then end it in a cliffhanger situation. The important part was to have something finished and playable. I could care about the ratings later.

With this in mind I set up the scenes that were missing and I event implemented a small cutscene (which turned out to be a bit hackish but worked perfectly). By sunday night I had the game finished and given that my game didn’t really relate that much with the compo proposed theme anymore I decided to submit it to the Jam.

 

Reviews start to come in

On monday the compo ended. I was feeling quite alright, considering I had finished and submitted something. It was far from perfect and it ended in a cliffhanger but it was playable, bugfree and the art pleased me. I even started to think about expanding and finishing it properly in the future. I wasn’t expecting much, so at first I didn’t payed much attention to the reviews (in fact I spent more time playing some of the awesome games other people had submitted) but the I got a review. And then a comment. And a few more afterwards.

ludum dare review

ludum dare review

I was shocked. I didn’t expect any attention at all, let alone the few positive and encouraging comments and reviews I was getting.

I then realized it was totally worth it. I really wanted to finish my game now and let all those kind people play it till the end. The art and the mood of the game were the things most people liked about it which encouraged me even further.

In the end, I got the following ratings:

Ludum dare scores

Ludum dare scores

 

Not too bad for an unfinished game, I must say.

 

All in all, it has been a great experience. I am far from being a serious contestant yet, but I’m sure I’ll get there. I feel like I’ve learnt a lot just by submitting my game and getting some feedback from real people that anything else, and that is priceless.

 

Next Ludum Dare takes place this August, and you can bet I’m going to take part in it 😀

 

P.S- Oh, by the way, if you want to play it you can do so here.

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.