blog

consistent inconsistency

ludum dare (part 1)

It's almost Ludum Dare time again! I like to go back and look at my old entries sometimes. I've never really gone back and looked at the code though. Will it be horrific? Or will I be pleasantly surprised?

"Alone" - LD20

"Alone" was my first ever Ludum Dare entry for Ludum Dare 20, just under 10 years ago. The theme was "It’s Dangerous to go Alone! Take this!".

/blog/uploads/Screenshot-11-550x413.png

Overall, I think it's a pretty solid concept and execution. It's pretty straightforward (puzzle platformer with blocks), but I think it's actually got enough twists to be interesting for a 48 hour game. We've got:

which all interact fairly well to potentially make some interesting puzzles. Sadly though, I'm not sure I made any good levels. The first two levels are a tutorial, the next two are probably the best, if a little simple, and the last two are just annoying. I did end up making more levels (I got to 20 in the end), but as it wasn't during LD I don't want to look at them now.

I actually ended up getting sponsored for $500 for "Alone"! I worked on it for a few months afterwards. My parents were a bit suspicious, and I don't think they really wanted to encourage me as I wasn't putting a huge amount of effort into school at the time (it was GCSE time...). Still, it was a very positive experience for me, and really cemented my love of LD.

What about the code? It's... surprisingly readable? There are definitely some rough edges: some odd use of static variables, some repetition of boilerplate where I've tried to push OOP where it doesn't fit, and some questionable logic (especially around resetting the level - why don't I just reload it from scratch?). In general though, it was suspiciously easy to follow and understand. Especially considering this was apparently my first game with FlashPunk and AS3, I give 15 year old Nathan a big thumbs up.

DRUGSDRUGSDRUGS - LD21

Ah, DRUGSDRUGSDRUGS. I made this game whilst on holiday with my family in Scotland. In reality, I only had two half days to work on the game, which explains why it's quite so short. I also spent about half my time on ideas that were ultimately scrapped. Still, I have a real soft spot for this game. It's just so silly, and doesn't really try to be anything other than a fun little jaunt. There's a tiny bit of skill - jumping behind doctors and juggling them is surprisingly fun, and I think if I'd added a combo counter and fleshed out the rest of the game a bit, it could actually be quite fun.

/blog/uploads/Ludumdare211-550x293.png

The theme was "Escape", and apparently my connection to the theme is that "drugs let you escape from reality". Sure, why not.

The code is... not as good. You can still see the remnants of my failed ideas, which clutters things up a lot. Honestly, it's a miracle it all works. The punching mechanic is cool, but I'm really not sure how I got it to work in code. The logic and flow isn't clear in most places either. Still, for less than 24 hours work, it's not too bad.

Revolves - LD23

I definitely intended to participate in LD22, but I had stayed up all night the day before, and I was almost finished with my first sprite when a friend accidently turned the power off on my computer. I lost everything, as well as my will to continue. So onwards to LD23, which is "Revolves".

/blog/uploads/revolves.png

This was my worst ever LD. The theme was "tiny world", and I wanted to make something with tiny planets you could explore in space. I was never really clear on what my idea was or how it would work, and I spent 90% of the time on broken maths and gameplay that didn't really work. I think I got pretty upset with how long I spent on a bad idea, and never really recovered.

Fun fact - this was the first LD that I used an IDE. The previous two I was using gedit (basically Notepad for Linux). For some reason as well, I dropped FlashPunk. I think this is around the time I was working on DIG, and wanted to understand more how Flash worked. The resulting code is fine - there's not a lot of it, but what's there is fairly clean. Still lots of OOP, but here it seems to work.

10 Second Army - LD27

And then I took a break for more than a year! Looking at some files apparently I tried to do LD25, but not sure what happened. I got a job on Sunday around this point, which made it hard to compete in Ludum Dare.

In the summer of 2013 though, I somehow got my friends to agree to make a game with me. I'm not sure who's idea it was, or how it came about, but a group of 5 of us all piled into my parent's house (who were away on holiday, conveniently) and spent 2 and a half days making a game. I'm so glad we did, because it started a tradition that we've continued to this day. For me now, Ludum Dare is about spending a weekend with my friends, getting to be creative.

/blog/uploads/26056-shot0.png-eq-900-500.jpg

Our first game was 10 Second Army. The theme was "10 Seconds", which none of us really liked. That being said, I don't think we've ever liked the theme. It's hard to put your finger on what would make a good theme - something still abstract, but a little leading? I'm not sure. Still, we came up with some sort of idea. I think it was hard to find something we all agreed on, so in the end we had the least bad idea. It didn't turn out great.

I'm not sure there's much good to say about the gameplay of 10 Second Army. It's trying to be some sort of... memory puzzle game? The time limit doesn't really help though; I find it just makes me panic and want to give up. Combined with the fact there's no real fun in the game, as for 90% of the time you're just watching your troops, it doesn't really pan out. I think there are some kind of interesting ideas - the bridge builder and the cliffman needing to be tactically placed is kind of interesting, but in practice is just kind of easy.

The music and art are pretty good though. I especially like the SFX. This was my first LD game with proper art, music and SFX, and I'd be sad to go back to the Compo without them. It's a different challenge, I guess.

The code is bad. The game is very buggy, and it's clear to see why, looking at the code. Logic is scattered around various parts of the Unit code, I decided to make everything static, and the enemy and unit code is separate and not related, which goes some way to explain why the interaction is so buggy. The Tower Enemy (which is rooted in place) still tries to walk, which leads to some fun bugs. On the positive side, I think the level generation code is actually suspiciously nice! There's some duplication and bits that could be cleaned up, but it's actually alright.

Still, for our first LD working as a team and with all of the overhead that comes with that, at least we got something done.

Unicode - LD28

I'm not 100% I can remember the story of this game. I think I was home from Uni for Christmas and realised it was Ludum Dare, and wanted to make something. I'd been thinking a fair amount about procedural generation, which is where the main part of the game comes from. I'm actually fairly impressed by the generation and work for only 6 hours. It's a pretty sturdy base.

/blog/uploads/screeny1.png

I had to look up what the theme was. Apparently it was "You Only Get One" - and my idea was that you would get to pick between two random weapons each time you found a chest, or something. A bit ambitious for 6 hours!

I'm actually really impressed looking at the code. It's readable, things are named well, I can follow most of what it's doing, and why. There are some brute-force sections in there, especially for corridor placement, but for a 6 hour game jam, it is pretty good! In my description for the game, I apologise for the fact it's all in one file, and that there are no objects. I'll let you in on a secret Past Nathan: that's not a bad thing.

Ports Ahoy! The Age of Trade - LD30

I love naming things badly. I'm a real sucker for subtitles; I think they add much needed pomp to things that often don't deserve it. Given that, I think you can probably tell who forced the name of this game on their friends just before the deadline...

/blog/uploads/Title.png

My friends agreed to come back for another attempt at making a game, which was awfully nice of them. Once again, by some stroke of luck, my parents were on holiday, so we all piled in to my childhood home. I remember being extremely excited about this LD. Over the summer break from University when this LD was taking place, I had got my job back at the coffee shop in the children's soft play centre I used to work at every Sunday. Being a place for children to play inside, the weather was often a big factor in how many customers we had: if there was nice weather (which does sometimes happen in England in summer), we often had no children for a large portion of the day. I have a vivid memory of sitting in the completely empty soft play centre, on a baking hot day, messaging Felix (who does our art) and planning out the meals and "streaming schedule" for the upcoming Ludum Dare.

/blog/uploads/StreamSchedule-550x384.png

Did all this preparation help? Not really! Ports Ahoy has some real issues. Frustratingly, I think it's actually a fairly decent idea! At it's core, it's an incremental/idle game, and there are moments where you're building up your trade routes and making money and buying upgrades and it really scratches that itch of seeing numbers go up. But then you fail to make a trade route for the third time in a row and then a pirate sinks your new ship and you look at the distance you have to travel to get across the Atlantic and the magic disappears. Especially when you're still actually making pretty good money and can buy the upgrades pretty quickly; so then you just use your boring, safe trade routes and wait for a while. It doesn't draw you in, which is sad.

On a more concrete level, the waypoint system and how you draw your trade routes is very unclear. The waypoints are not very visible, and the tiny little colour changing highlight I put on does not help in the slightest. The cramped starting location doesn't really help that - perhaps just tweaking where some of the waypoints are, as well as how clear they are could really help. And that's not even mentioning the pirates; I remember arguing about how to do pirates, and being unhappy about having them invisible. Thinking about it now, I think the real issue was trying to have a feature that reduces your progress at all; I think the drive in incremental games is all about seeing numbers go up exponentially and that feeling of making progress. Taking that away doesn't feel good.

How is the code? It seems like I was very pragmatic - everything is very linear, and most things just happen in the main update function. Some more functions would probably have been good. I didn't even try to be too clever when creating the waypoints and connections - lots of the special cases are just explicitly handled manually, which is probably the best solution. There are still a fair few situations where I'm passing around state and doing logic implicitly rather than explicitly, which makes things hard to follow. This was definitely an issue for me generally in game programming - how to deal with sequences of events that all deal with, are affected by and change the state of the world.

This was the first LD that I wrote a real post-mortem for! That's something I enjoy doing almost as much as I enjoy the game creation itself. I think there are two facets of it for me. Firstly, I love being able to look back on them and see how my thoughts and process have grown, and to understand how I can grow and learn going forwards. Secondly, it's a chance to really think hard about game design. Game design is one of those wonderful, unsolvable problems. There's no "best" game, but I love trying to tease out exactly what worked and what didn't, and why.

Well this post is getting far too long.

tags: ludum-dare, games, game-jam

permalink | posted by nathan on Friday, the 23th of April, 2021, when he should have been getting ready for bed