About Sypanite (twitter: @Sypanite)

I turn orange juice and tea into source code.


Ludum Dare 33

Sypanite's Trophies

Sypanite's Archive

Dominion: Post-Mortem

Posted by (twitter: @Sypanite)
Monday, September 7th, 2015 12:20 pm

Howdy! This was my third attempt at a Ludum Dare event, and my first submission. Thus, my first post-mortem.

Dominion is the fruit of my labour. It was built in Java using the Slick2D and JBox2D libraries.

Dominion (noun) – rule; control; domination.



I went and bought a load of orange juice, soup, pasta, and a little celebratory chocolate. I already had the tea, so my body was ready.

I spent a short while writing a very basic generic-sidescroller codebase, which I wasn’t even sure I would use. I did, after pruning a large chunk of it away.

The compo started at 2AM local time (I’m British you see, pip-pip, etc.), I didn’t bother waiting up – I simply got up at 6AM and contemplated ideas over breakfast.


What Went Well

Ideas are nice: Unlike the last few attempts, I had an idea that I actually liked relatively quickly. It was born from an idea I’d had for another theme that I’d seen in the slaughter (and then the voting) – “Death Is Not the End”. You play as a spirit, and are able to possess people. When your body is killed, your spirit is released.
I tried thinking of alternative ideas for ‘You Are the Monster’ for a short while, and didn’t come up with anything better. My whole brain went ‘hey, what the hell’ – ghosts are regarded as monsters, in the supernatural sense of the word – and I began elaborating on the idea, ‘scribbling’ whatever cool stuff came to mind into a Word doc. In the end, I probably only got about 60% of what I originally envisioned, but I guess that’s how it goes!
To quote the first line in my ideas document – Dominion is a game about controlling the bad guys and doing your dirty work via them.”
It didn’t turn out exactly like this, but the general concept stuck.

Hold your breath: I CREATED ART. Holy hell, stop the presses. I managed to create art that isn’t good, but isn’t necessarily eye-wateringly bad, as I expected it to be. I used a lot of noise in my art – I like how it adds a kind of discount texture. It also provided a theme to the artwork, so I stuck with it for consistency. Without the noise, everything is solid colours and would look rather bland. Most of it is made with basic geometries mangled and/or smashed together.
I went for a dark colour scheme – given that you play as a ghost, it seemed appropriate. The game takes place at night. A mountain range can be seen in the background. It’s a little nonsensical given that what little story there is puts you in a ‘town’… nothing looks even remotely town-y, but let’s roll with it.

Alone: I was left alone all weekend. No distractions, no nonsense – just me and my PC, ‘Susan’. Bliss.

Basically everything not mentioned below: For the most part, development went pretty smoothly.


What Went Wrong

Newton’s downfall: The physics. Oh man, the physics. I wasted a load of time trying to get the movement/jumping mechanics working well; the standard I managed to attain in the end is far from great – jumping/falling is way too slow, and makes the platforming aspect no fun at all. A lot of the reviews on my entry have mentioned this – believe me guys, I know! It’s like platforming under water.
As mentioned previously, I used JBox2D – this is a Java port of the Box2D physics library (C++). I had very little experience with it, and some Googling told me that it was not a good idea to use it for a platformer – I kept with it to ensure I’d finish on time. I like JBox2D, I’ll try and get a better configuration going – if that fails, I’ll explore other options or write my own system.

Level ‘design’: There are three levels in Dominion – the third and final one was rather rushed, I created it about an hour before submission. That sounds like a long time, but I still had numerous bugs to patch, audio to add, and a menu screen to create – the latter never even made it. Submission hour was 2AM local time, so here I was creating a level at around 1AM having slept about eight hours over the entire weekend. The level is harder than I intended it to be – you need to be very conservative of your ectoplasm. If you are, you can complete it with around a minute to spare – if not, you’ll barely make it or you’ll run out of time. If you are not careful and run out of ectoplasm, you will have to wait for it to regenerate which is no fun at all.
The second level is probably my favourite. It’s the one that looks most like some thought went into it.
Fun fact: the names of each level are based on cemeteries near my home town.

World: In the corners of tiles there are gaps in the gravel-y stuff. It’s not a big deal, but the game would have looked much nicer if I had gotten around to fixing that.

Oops: Morning II, I wasted an hour or so trying to squash a bug in NPC movement where the NPC would not register a clipped tile in front of it and would continue walking into a wall / object indefinitely. Due to a monumental balls-up, I was accidentally adding its move direction to its position twice during a loop, so it was checking the tile in front of the tile in front of it. *sigh*
See, this is why we can’t have nice things.

Bugs: Just after submission, I noticed a horrific game-breaking bug that I had managed to completely miss while play-testing in my sleep-deprived state, as well as a several other more minor (but still pretty nasty) ones. Embarrassingly enough, the game did not reset properly. Seriously. Once you died or changed level, the last level would continue happening – countdown, NPCs, and all. Duh. You would inevitably lose.
The next day, I patched that along with the other nasty ones and an oversight or two, and updated it. These were very minor changes, as permitted by the compo rules. They are included in a changelog in the download.

Missed the cut: As mentioned previously, there were a lot of things that didn’t make it into the game. Most notably:

  • NPCs being able to fight off the possession: The unused ‘durability’ personality category was devised for this use – the more ‘durable’ the person, the more they can endure, the harder they are to possess. This would have been cool.
  • Ability to shoot: I wanted the player able to shoot while possessing a criminal (notice that they have guns). There are no projectiles in the game, but your host is technically ‘shot’ if you are found out to be possessing someone. Perhaps it would have made the game too easy.
  • Cosmetics: Some sexy particle effects would have been nice, as would some sort of transition from spirit to body and vice versa.



That'll do!


What Next?

On with my current personal project – “The Temple of Light” (hopefully I can douse the flames as it crashes and burns) – and back to university for the second year on my Computer Science degree. I’d love to participate in MiniLD 62 if I have time!

I had fun participating and genuinely look forward to LD34 – hopefully I won’t be too busy to join in.

This was not very techy / in-depth. I’ve seen some really interesting post-mortems from other developers detailing exactly how they went about working their magic, and this is not that – mainly because there’s nothing innovative or particularly complex in the game. However, if you’re curious about how I went about doing something, do feel free to take a look at the source code, leave a comment, or get in touch with me. Thanks for reading!

I’m Probably In

Posted by (twitter: @Sypanite)
Sunday, August 16th, 2015 1:00 pm


First post – I’ve technically been ‘in’ for the last two major events, with less than desirable results and no submissions. We’ll see how it goes this time!

Tools, may vary:

Programming: Java, in Eclipse
Libraries: JMonkeyEngine 3 / Slick2D (with JBox2D)
Graphics: Fireworks / GIMP
Sound effects: BFXR / Audacity
Music: FL Studio 12

Art is the bane of my life.

[cache: storing page]