Ludum Dare 30 was this weekend. Taking part in Ludum Dare 29 was such a positive experience for me that I really felt I had to take part in this one. I had “booked” the weekend off with my wife, meaning I’d be spared of parenting responsibilities so I could really focus on the compo. As it was getting closer and closer to the jam deadline I realised that really I should be spending that time dealing with a few non-gamedev related stuff that had built up over time. I thought it would be a waste of my free time if I didn’t get some pressing stuff done.
So blissfully I spent my Saturday catching up on work that I’d promised for various friends and family. That worked rather well, but come Saturday night my brain was still thinking about Ludum Dare. The theme – Connected Worlds – didn’t really inspire any ideas in me immediately but slowly over time I had an idea for a game.
On Sunday I realised that I really couldn’t keep away from Ludum Dare so decided to crack out Construct 2 and have a go at making something. Those of you who have read my previous blog posts will probably know that I have a nasty habit of trying to rush through development of a jam game in Construct 2 in the hope that I can get something released.
My idea was probably a little too ambitious considering the time frame. I wanted to make a game where you have to assault other planets to gain resources to improve your own planets defences. I would use websockets so players could actually see and assault other players’ planets. That was the “connnected worlds” idea.
I couldn’t find anything in Construct 2 that does this natively. I’m used to just passing objects backwards and forwards when doing networking code. That’s what I use in Turnstile Football and I had naively expected to be able to use something similar here. Sadly not the case at all. I ended up finding a plugin that handles JSON encode and decode which uses lots of function parameters for traversing object trees. To get config.player.height you would do something like JSON.value(0, “config”, “player”, “height”).
A couple more things I found quite strange with Construct 2 – firstly, is the way that you do for/while loops as an event condition, not as an action. I feel that intuitively once a condition is met, you do an action that calls a loop, not call a loop in the event condition. The second issue I had with Construct 2 is that I couldn’t find a way to call a set of actions from other events. It’s probably possible somewhere but it would have made my “code” a lot tidier.
Edit: Henrique Lazarini has just pointed out to me on Twitter that the “Function” plugin should do what I need regarding reusing actions.
So after giving up on that, I decided to create a text adventure. Initially I was going to make the usual mistake of writing my own engine for it but then the lovely chap at Dark Square Games suggested I give Twine a go. I had used it before but for some reason failed to find it intuitive. This time around I had a ball with it.
Sadly I started working on it around 11pm last night and had to stop quite quickly (around 1/2am) due to being way too tired. Nonetheless I managed to write a (very short) Twine game. I really enjoyed making it and definitely plan to make another Twine game at some point. Possibly even a sequel.
The main reason I was desperate to get a game finished for the LD30 was because I really enjoyed the voting process last time around. I met some really nice people and had a lot of fun really feeling a part of the gamedev community. Also it feels great to finish something, no matter how small.
You can check out my latest Ludum Dare entry here.