Postmortem: how cheese ruined the game.


I was hyped going in this game-jam after my last participation in it, the last one had a game that I enjoyed working on and playing even though it was built on such short timespan and under a lot of stress, so I thought that I would have a better chance at making something a bit more polished and less rushed this time now that I’m not under constant pressure due to real-life issues. Unfortunately, as many things in life, expectations don’t always meet reality. So, what happened?

Day 1, brain-storming.

The theme of “monsters” is quite vague and is more open for different ideas. We always think of monsters as threats against us, so playing into the theme of threats was a bit repetitive, at least in my opinion. I originally had the idea of making a high-speed dating simulator, where you have to satisfy monsters you encounter to “collect them all for your harem”, but this idea was shutdown by my lack of self-confidence in my art skills. So, I went to another idea; tower defense.

The outlined concept that I had in mind was the following:

  • You’re an unknown person who is given the task of harvesting as many resources using shadowy monsters.
  • Over time, enemies will start attacking your “core” that is used to harvest said resources.
  • Using the resources you obtain; you hire more monsters and towers/items that will protect your core from different enemies.
  • You have to take care of the monsters you hire, so they don’t go attacking each other.
  • To use the “Collect them all” wild-card, the idea is that there would be a number of unique monsters that you can collect, and it would use a long array of monster names to give people the ability to encounter different types of monsters while playing and reducing the amount of repetitiveness.

And with that, I had a goal in mind and I slept on it as I was already tired from studying and fasting during that day.

Godot, my beloved.

I mainly use Unity a lot due to my work on unitystation, so having an excuse to use Godot for hours on end is always welcome in my book. But when you use a mind-numbing engine like Unity 24/7, you end up carrying over the wrong mindset with you. Going into the first 3 days of the project, I over-complicated things due to me being used to Unity not providing any solutions to any of my problems. It wasn’t until I encountered a game-breaking bug regarding the slot system of the game that I started realizing how I’m complicating everything by doing everything from scratch; when Godot already has the solutions that I need. The way the slots UI used to work beforehand is that I was manually looking for what control elements where in the middle of the screen, it was largely inaccurate and would lead to many bugs that would pull me away from working on gameplay and other stuff (like a fun little spook that appears if you open and close the menu a specific amount of times). I started to rely on Godot’s many nodes, signals and functionality, and life became much easier. The slot system now uses Area2Ds to detect what’s in the middle of the screen, and it’s 100% bug free and allowed me to add sounds more easily as it only relied on signals emitting when slots entered the pointer’s area.

I cannot stress this enough, Godot is a godsend when it comes to built-in solutions and obscure functionality. While unity cannot offer a straight-forward way to change your game’s window title without importing a DLL that will only work on windows; Godot instead offers you a way to do that from the OS (Window if you’re on 4.0) class, and it works on all platforms without issue. And like I’ve said, this doesn’t extend to just niche scenarios. Having signals for common actions like hovering your mouse over something is always a welcome feature to have.

A few years ago, people would have sworn that Unity is the easiest engine out there to use; Nowadays, Godot simply is the easiest engine simply due to how many solutions and tools it offers you for free while Unity still demands that you use the asset store to add functionality that should have been already there for years, like tweens.

Ups and downs

For the first three or so, days everything was running smoothly and there was many features added.

  • Monsters had varying AI behaviors depending on what type of monster they are and each one comes in different qualities that produce different amount of resources.
  • Human enemies actually shot projectiles at first that were inaccurate, but had longer ranges.
  • Experimented with the idea of randomly generating terrain for monsters to inhabit in and humans to navigate.
  • Added the computer shader
  • Drew monster sprites
  • Created a consistent theme for all the game.
  • Implemented a graph system using Graph2D to showcase progress over-time.

But then, came the one feature that ruined the game’s momentum, cheese.

The idea is that there would be different types of items with various different effects that all serve different scenarios. Problem is, each item had to be coded manually because at that moment I did not create a common blueprint to handle these sorts of things, and even if I did, this idea was too ambitious from the start, and it did not help that I kept mass-producing several ideas during one sleepless night without properly testing them.

As a result, I woke up the day after when my autopilot finally turned off, and I was met with a bunch of hard-coded items that all had various glaring bugs with them and the one that stood out was the damn cheese. To paint to you how stupid this item was, let me list you all its properties that I can remember from the top of my head:

  1. It healed only monsters that had the name “A French Man” and gave no happiness to anything.
  2. It instantly called queue_free() on anything it came in contact with, including the map. Which means that it was basically a nuke that deletes everything.
  3. It also shot multiple raycasts to every single monster and human in the game to force their AI to run away from where the initial explosion is if they’re within 767 units nearby it. Don’t ask why that specific number and this range also assumed that the unfinished terrain generator would be active.
  4. You could not buy it, it just randomly spawns around the map as an item that can be claimed by the first faction that finds it.

At first, I tried to salvage what was created and fix all the issues it had. But time only continued moving faster as I kept trying to fix all the mess I’ve created.

Note: this is all without me mentioning all the issues I encountered with WebGL and how the terrain generation system was poorly designed by me.

Downfall

The human mind cannot come to rational decisions while it is in a state of panic or anxiety. My mind only kept thinking about how I’ve wasted a lot of time as I kept staring at the countdown on my phone while visiting family, It was not clear why I was worried about the idea of me missing out on a game jam or what was so important for me to start building paranoia again; but it was clearly starting to mess with my mental and was starting to physically affect me. So I’ve gone with the nuclear option, remove all the unfinished and broken parts and go for simplicity.

To previous me, the current game’s idea sounds fun; you only have to spin slots and manage your monsters to make sure you continue to obtain as many resources and money as you can, so you can collect all 80+ unique monsters while you watch numbers go up. But in reality, it lacks any depth and relies on you shutting your brain off to find enjoyment in seeing higher numbers in rarity or profits. I know one guy who actually like this sort of games, but for everyone else and me? This is just.. boring.

What’s worse is that I’ve built all this atmosphere and amazing tone that I’ve set for the game; and it all went on something I heavily don’t like.

Lessons learned

Earlier I’ve mentioned my lack of self-confidence in my drawing skills, this situation would have been completely avoided if I told myself to not think this way and go with the idea that I was more interested into and wanted to actually work on.

Part of why I love Cursed Deals is that I’ve managed to create a game I actually enjoy despite me being put on a very tight schedule and was dealing with a lot of stress IRL due to family problems. I do not enjoy Containment-02 because it was just an idea that I had to force myself to create and when it all came tumbling down I did not waste any time trying to find a different idea or start from scratch to avoid working on it. I’ve proven that I can indeed draw when I created those shadowy monster figures and I could have used them for that dating simulator I wanted to work on, but instead they’ve gone into this failure.

Next game-jam, I’ll try to only work on what I really want to work on from now on. Rather than creating a game just for the sake of meeting a dead-line.

Files

Linux.zip 30 MB
Apr 23, 2023
Mac.zip 54 MB
Apr 23, 2023
Windows.zip 30 MB
Apr 23, 2023

Get Containment-02

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.