GMTK Game Jam 2020 Postmortem


For the 2020 GMTK Game Jam I made Relinquish — a game where you 'relinquish control' of your character every time you press a button.

The theme for the jame was 'Out of Control'.

Day 1 (Friday night)

At 8pm on Friday, the theme was announced. I'd already set up a git repository, blank Godot project file, and a quick page for notes in Notion. As soon as I heard the theme, 'Out of Control', I started writing down quick bullet points of ideas that popped into my head. I found that putting words into thesaurus.com and seeing what related words came up helped with thinking of interesting concepts.

Initially, I wanted to go down a route of 'bewitching, corrupting, enchanting'. The game would be about having control taken away from you, or you taking it away from enemies via magic or something — you'd be bewitched or be bewitching the enemies.

That idea had to go however, as I had no idea how I'd make something so complicated in only 48 hours.

I settled on a platformer (snore) with a fairly interesting mechanic — when you press a button, it breaks. This can leave you literally 'Out of Control' in two senses. First, you could be no longer in control of your character, and secondly, 'Control' is a kind of resource you can spend.

on the first day, I set up a basic character controller, some art for the character (a red square!), and made a quick test level.

I ended day 1 at about 10pm. 2 hours worked so far.

Day 2 (Saturday)

Day two for me started at about 10am.

I got the main mechanic of the 'controls' breaking every time you used them working. I created some little sprites to show the working state of your controls: left, right, and jump, and made them update whenever you pressed the buttons.

I then set about creating a little 'heal' pickup which would fix your controls and stop you from moving/jumping endlessly. I made a quick green square (epic art skills) and attached it to an area and rectangular collision shape which, when entered, would call a 'fix' method on whatever body triggered the event. This would only ever be the player, so there was no need to make it any more complex than that.

Once that was done, I added a finish line — which was a blue square (amazing once again). I copied the same logic from the 'heal' pickup's collision detection and instead of fixing the player's controls, it sent you to the next level.

I then made a couple of levels to test the new bits I'd made

My goal for the Minimum viable product of Relinquish were:

  1. 6 levels
  2. jumping, moving left and right
  3. controls that break
  4. pickups that fix your controls
  5. sfx
  6. music

By the end of Day 2, I had completed objectives 2, 3, and 4.

I ended Day 2 at around 5pm. I estimate I worked about 5 hours on Day 2.

Day 3 (Sunday)

Day 3 started at 11am.

The first thing I did was implement a 'reset' functionality. This was pretty tricking, as I hadn't organised my code very well, and I had to make sure I put the 'heal' pickups back in the right places properly. I did the reset like this:

  1. Set all the heal pickup to 'ignore' mode — this would ignore collisions.
  2. Set the player's position back to the original spawn point.
  3. Set all the heal pickups back to normal mode — so they would detect the player again.

I had to implement the 'ignore' mode as it was possibly for the player to reset the level while they were positioned in a way that collided with a 'heal' pickup. As soon as I moved the player back to the spawn, the heal pickup would detect another collision and disappear. So while the level is resetting, all the heal pickups ignore collisions now.

Once that was done, I made a title screen and end screen, and built some more levels.

I tried to explore the mechanics of the game through the level design and to introduce more complicated ideas as the player progressed.

Once that was done, the only two thing left were the sfx and music. I studied sound design at university, so I managed to put together some interesting sounds (from scratch) pretty quickly, and implemented them in the Godot engine without too much trouble.

I made a few variations of the different sounds and got them to play in a 'round robin' fashion by picking a random variation whenever the sound was needed.

Once the sound and music was created and added to the game, I sent the work in progress to a few friends. The first bit of feedback I got was to add the ability to mute the game. As I figured I could add that quality of life improvement quickly, I went ahead and did it.

Once that was done and working, I did some more testing to make sure I hadn't left in any bugs, and once I was sure the game was pretty solid (but very short...) I submitted it.

I submitted initially about 7 hours early but made an update later to add the mute button, so my Day 3 ended at about 5pm. I estimate I worked around 4 hours on day 3.

Conclusion

All together in the 48 hours, I only used around 11-12 hours to make Relinquish.

I think next time I could push myself harder to make something more complex, or perhaps just with more content.

In the end, I got bored of my game so I didn't want to make more levels — I was more interested in just getting it finished.

I did however enjoy working on Relinquish — perhaps I'll expand on the idea further in the future and try to make it more interesting to me with better art etc.

I felt that I had to be prudent with the amount of content as the game was targetting html5 and I didn't want to cause long loading times or laggy behaviour.

If you read all of this, thanks!

Files

dist-v1.1.zip Play in browser
Jul 12, 2020

Leave a comment

Log in with itch.io to leave a comment.