
My
Post-Mortem & Story
Hello folks,
I know this might be a bit late but I’ve had a busy week, so here goes anyway. This post is divided into three parts (sandwiched with unashamed self-promotion at either end). The first tells the story of the event and what I went through creating it. It’s quite detailed, so if you’re not interested in that bit please jump ahead to the post-mortem and feedback sections, in which I critique my work and reflect on feedback from you guys so far.
The Game
For Ludum Dare 30: Connected Worlds, I created a game called Harmony, one of the many space-themed entries that made it into the gallery for the event. The game revolves creating an equilibrium in military (often accidentally spelt with two ‘L’s throughout the game, forgive my sins) and economic powers between the inhabitants of six planets so that they can live together peacefully. This is achieved by the player carefully selecting the geographic properties of the planets each of the six races start on and using various powers throughout the game to influence the rate of growth of the civilisations.
The game essentially takes place over three phases: the setup phase, in which the player creates the planets and settles the races; the pre-space phase, in which the player is given time to balance each of the races strengths pre-emptively; and the final space phase, in which planets start to interact with each other, the results of which can be catastrophic should the player have failed to setup and balance in the earlier points in the game.
You can read the story (with pictures!), post-mortem and feedback after the jump.
My First Event – A blow-by-blow of my LD30
Before the Event
Around the start of August, I felt confident I had finally built up the necessary skills (and self confidence) to participate in my first Ludum Dare. Not only would this be my first ever LD, but the first time I’d ever tried to create a game from scratch, as opposed to following a tutorial or working from the results thereof. I was looking forward to the challenge and spent time almost every day floating on the LD blog, picking up whatever precious nuggets of information the kind community were willing to offer via their own blog posts
In advance of the event, I had a good idea of what I was going to do: I was going to work with Unity and, in order to keep things simple, I was going to build a platformer. So, in the few weeks before the event, I spent plenty of time familiarising myself with the new Unity2D system and working with the (highly recommended) Pyxel Edit. In the week running up to the start of the event, although I didn’t create anything for the warmup (which I will try to do next time) I was tentatively confident in my skills both programming-wise and with my chosen software.
That all said, I can’t help but feel I may have left it a bit last minute, which will be discussed later.
The Theme Announcement
Being bang on GMT+0, the event would start at 2am. This meant I was largely torn between going to bed before the announcement and see what my not-a-morning-person self could come up with after a decent night’s sleep or to stay up until 2am, get the theme, jot down a few ideas and then turn in. I unintentionally opted for the latter, having spent some time agonising over the decision between youtube videos, I suddenly realised it was 1am, what could 1 hour more hurt?
So, I sat around and at 2am, lo, the theme was announced: Connected Worlds.
My immediate reaction was that it was not a particularly hard theme and it naturally leant itself to flow networks etc. I ummed and erred for ten minutes of so while lurking in the LD30 irc (the website was practically down at this stage) and came up with two ideas before turning in:
- A parallel world platformer, in which the player could freely move between 3 parallel worlds. The main idea was that switching between parallel worlds would modify the behaviour of mobs and terrain hazards, making them more or less hazardous depending on which parallel space was occupied. The focus would then be on the player choosing the appropriate parallel world for any given section to make advancing easier for themselves.
- A cyberpunk-esque detective game. Inspired by a combination of the Matrix and Uplink, the game would focus around the player stopping cyber criminals by digging up incriminating evidence and relocating their physical self via the internet (teleporters!) to allow them to approach targets from a different angle, potentially allowing them to bypass security measures.
With both ideas jotted down I turned in for the night…
The Event: Saturday
I got up around 9:30 ish the following morning full of excitement and eagerness to get started. However, over a rushed breakfast of cereal, I kept turning both ideas over in my head and couldn’t help but notice some major flaws in the two ideas I’d come up with.
- The first idea was, ultimately, predictable; chances are, hundreds of other people were going to come up with near identical ideas to mine and I was determined to create something unique that stood out (or at least, didn’t get lost in the mob of games that’d been thrown together from the first idea).
- The second idea was a lot more exciting, however it’s scale was far too large, what I wanted to create and the time I had didn’t see eye-to-eye. It’s definitely an idea I’ll be revisiting but, due to its scale, not something viable for LD.
I resolved that if I couldn’t come up with something better by the time I’d finished breakfast I’d roll with the first idea. By the time I’d finished chewing thoughtfully on Cheerios I had it. The idea for Harmony came strolling into my mind more or less fully formed: a game in which you balance the powers of various interacting peoples in order to achieve balance. I turned the idea over in my head multiple times, determined to find fault and could only come up with one…
It wasn’t a platformer game. It wasn’t the exact genre of game I’d been preparing for all this week.

My final LD30 brainstorm
However, I felt far more passionate about this idea than either of my others. So I decided to throw caution to the wind and run with it. Grabbing a fistful of paper and some pens I went back up to my room and jotted down the various mechanics of the game before cracking on with the art. I didn’t want to jump straight into programming mechanics as I wanted to give my mind a while to go through the various design decisions and pick them apart where necessary.

The canvas from Pyxel Edit of the final planet tiles and civilisation rings
As you can see from the above, I initially designed the planets to appear differently depending on the type chosen. Also, I would like to have done more for each planet type, however, time marches on. So, turning back to my paper, I worked out remaining issues for the components I’d be tackling today got on with the unity project and started programming.
Firstly, I started with allowing the player to be able to spawn in planets and settle races on them which suddenly meant I had to look into using the libraries for the mouse as well as creating GUI buttons. This was something I’d not anticipated during preparation earlier in the week, as my original plan had been to create a platformer that didn’t require mouse input. I’d really been thrown for a loop by this and it threw me right of course. My progress became agonisingly slow as it felt like I had to consult the unity documentation every 30 seconds to find out how to do something I felt I already should know how to do.
By the time I’d got what should’ve been very simple functionality implemented, it was approaching 4pm. This was possibly the lowest point in the weekend: over 25% of the time had gone already and all I had to show for it was a clicky button thing. Not good.

The race icons…

and planet icons from the ‘clicky button thing’
I took 20 or so minutes off to try and bleed off some of the frustration before re-engaging with the project. By the end of the day, I at least wanted the planets to be doing the basic job of growing their economy, military and science relative to the type of race and planet combined together. My recollection of the evening becomes somewhat patchy after this as I started programming again, my passion in the game rekindled by the fact that I was now working with the back-end data structure (something I was far more comfortable with).
As day turned to night I completed my target. I was now able to create a planet, settle a population on it and watch the numbers rocket upward thanks to larger multipliers I’d put in for testing purposes.
However, I quickly realised that I’d been reading the numbers out of the unity object inspector the entire time and my end users would have no way of doing that. For all intents and purposes, they’d just see spinning blobs and that would be it. I was very burnt out at this stage as I had now spent nearly 10 hours sat in front of my computer, elbows deep in C# and pixel graphics. I resolved to resolve the problem….after the much anticipated Doctor Who season opening.
One dinosaur and a cafe full of robots later, it was back to the coding and I once again met my goal.
Then promptly went to bed exhausted.
The Event: Sunday
I’d overslept.
Not ‘just 5 more minutes’ or ‘an extra half-hour beauty sleep’.
I’d overslept by three whole hours.
Three whole hours, and I still had to turn what was still essentially a clicky button thing (now with climbing numbers) into a game.
So, today’s objectives in more limited time than I’d intended were:
- Designing, programming and creating icons for the player powers.
- Making the planets interact to create the ‘connected’ bit of the Connected Worlds theme, including win condition checking.
- Final polish, including all sound, the main menu and game over screens
I allotted 4, 5 and 6 hours for each respectively and am pretty pleased to say I hit all of the deadlines more or less square on. In terms of telling you anything there’s not much to say, as Sunday was definitely a lot less of a bumpy ride compared to Saturday.

My ‘planning desk’ (read: camping table) with all the ideas creation going on. I made extensive use of paper when I was planning or unsure about something, right up to when I finished player powers.
It got a bit stressful toward the end, making sure the game ran well in the web client and with the 2pm deadline rapidly approaching. I ran into a few problems:
- So far, the mouse cursor had been changing in Unity without any bother to reflect the currently selected tool. However, the web player just showed lots of grey. It turned out, I needed a separate asset marked as a cursor (not a sprite). This ate into a lot of my polish time as I had to duplicate all my icon assets and rework a few areas of the code.
- At some point, I’d created a bug where the game will create several (as opposed to one) coroutine for each planetary relationship, resulting in hundreds of ships being spawned. The problem was one of those that seemed to fix itself for no apparent reason. It still sometimes happens in the final release after game over has occurred and I still don’t know what’s causing it.
- The game would sometimes appear to be ‘frozen’ when first loaded in browser (I only assume it was loading assets through). I need to look into this in future, as nothing is more off putting than a game that has seemingly locked up the second you load it.
I submitted my final piece at 1:30 am, with half an hour to go.
Then I realised there was still a submission hour…oh well.
I wound down the evening, basking in the glow of my own success of having completed my first Ludum Dare and checking out one or two entries by other people. It was lots of fun seeing what others had done with the theme.
So, that’s the story of how I made Harmony. The first in hopefully many games created by me.

The Harmony wall of text …err, I mean, Main Menu
End
Post-Mortem
Having been well aware of the flaws of my game even during the development process, I’m going to take a critical look at my game. Overall, however I am extremely pleased that I was able to create a functioning game and submit it within the deadline.
Good
- The mechanics feel and respond very well. This being a simulator type game, where mechanics are important, I’m proud to say these are probably the best thing about the game.
- The plan I came up with wasn’t too complicated as to give me too much to do in the time, nor was it too simple as to let me finish too early.
- Despite the hiccup on Sunday morning, I was able to keep time very well
- I’m pleased with how all the software I’d used worked with me. The ability to bring everything together in Unity was wonderfully seamless. I know many people aren’t a fan of unity games due to them needing the web client but it’s such a joy to develop with I think I’m going to keep using it for a while.
- The code itself was largely comfortable to work with. At no point during development did I feel my ability to implement something was hampered by what I’d written earlier.
Bad
- Getting snared up in unfamiliar libraries on Saturday. I lost a lot of time getting the project off the ground due to being unfamiliar with the mouse handling classes.
- Code structure. While it was largely good, there were areas of repeated code that I could probably compress further if I took a good long hard look at the overreaching flow. Similarly, an enum I’d originally intended for use in just identifying GUI buttons ended up being used virtually everywhere, however, a bit of renaming and maybe a touch refactoring would largely resolve this
- No music
- Limited graphics, I would’ve liked to add particle effects on ships moving/arriving and added other graphics as races moved toward space-faring capability.
- The planets: a strong lack of artistic theme hear meant planets weren’t as distinctive as I’d have liked them to be. Planets probably would’ve not only looked better but communicated their type better if I’d gone for a non-realistic colour palette.
- User feedback (the planet info panel). If I had more time, growing bars as opposed to numbers would’ve been a better visual cue for the player.
Ugly
- The UI. Both too many buttons and too small text made the game far more esoteric than it should have been. I knew this even at an early stage of development, but didn’t feel I had the necessary skills or time to change it.
- The ‘thousand ship’ bug, which still occurs sometimes during a game over. Thousands of ships spawn and lag out the game.
Despite my long list of cons here, I’m still very proud that this is not only the first ever Ludum Dare I’ve taken part in but it’s also the very first game I’ve made from start to finish.
Going Forward
- I’d like to remake this game at some point, iron out the bugs, address the various issues above and expand on the general concept (colonising new planets? more factors to balance? random events?)
- The second idea I had on the initial brainstorm is good. I’d like to go ahead and actually make it. Following the aftermath of LD30, I’ve decided to do #1GAM, so that might be my September game.
- I’ve learnt that I need to spend more time learning libraries. Too much time was lost on Saturday over something trivial.
- Although my code discipline is good, it still needs work. I need to start looking into the more abstract areas of C# (such as generics) in preparation for future work. This should hopefully limit a few duplication issues I had.
- I should probably spend more time with Paint.net, as when I had to use it, it was a bit of a ‘google everything’ moment.
- In future, I probably shouldn’t angle for a specific type of game, as a lot of my planning had revolved around me creating a platformer. This created a few snares on Saturday.
Feedback
Before I wrap up, I’d like to respond to a few comments made by people thus far. Thanks to everyone who has left a comment, I assumed this game wouldn’t be most peoples cup of tea, due to the nature of the game. I’m positively glowing to hear so many of you enjoyed it.
For the many of you that left constructive criticism (you’re awesome):
- The text is too small – I completely agree, and was aware of this before release, I’ll definitely keep this in mind for future. Due to my unfamiliarity with Unity’s GUIStyle classes, this was awkward to fix on the fly.
- It’s too slow getting to the interaction stage – I agree again, unfortunately, I didn’t leave as much time to playtest as I should’ve…you live and learn…
- It’s difficult to understand the state of affairs at a glance – Continuing the theme of ‘the GUI needs serious work, dude’ critique, I completely agree. The original plan was to implement coloured bars to show their size as opposed to numbers, but time was an issue again.
- Would be cool if the planets changed with their progress – You read my mind, this was going to be one of the first things I’d do if I found myself with time to spare.
The general reaction was the UI sucked. Therefore, I know exactly what I’m working with in preparation for LD31.
Thanks again to all you lovely commenters so far.
Finally, and in an attempt to spark some discussion in the comments, Joror mentioned he would like to see a multiplayer version. Although I can think of a few abstract ways of doing this, I can’t see how they’d add much to the game. Discuss 😛
Finally
If you’ve read this entire thing, you’re a saint, many internet cookies for you. If you’ve got a few spare minutes please feel free to check out my game: Harmony
LD30 was huge fun, I will continue to lurk until the results and LD31, when you can expect me coming back at full force! Bai for now.

Harmony: Interplanetary peace keeping
Tags: 2D, compo, deskphoto, final, LD30, post-mortem, postmortem, screenshot, unity