10 minute read

Please don’t play this.

It hurts people.


SUFFER.er was made in about 7 days for the Godot Wild Jam #74. The Jam’s theme was “Haunted”.

The Jam

While Godot Wild Jam #73 didn’t go great, I did like how the jam was run and still wanted to do another. But rather than dragging other folks down with my bad, muddy ideas, I needed to do this next one alone. And that’s what I did.

The Preparation

Unusually for a themed jam like this, I decided to prepare beforehand. I had purchased some Godot courses on the cheap from Zenva Academy, but had yet to follow any. I had also yet to make any 3D games in Godot despite my desire to. So I followed a simple 3D platformer tutorial from this collection. A very simple 3D platformer tutorial. Like… they didn’t even cover camera movement in 3D space. Ugh… well anyway. I followed this course a bit and did a bit of my own things with it (like 3D camera movement) with the plan to, regardless of the theme, do a 3D platformer-style game for GWJ#74. This was a mistake, as I soon learned.

The Theme

I despise the theme “Haunted”. It is by far my least favorite theme of any jam I’ve participated in. For one, it is way too on-the-nose for a jam hosted in October. If I wanted to do a spooky, “haunted” game, there is an endless supply of other jams I could have done with similar themes hosted around the same time. On top of this, “haunted” has limited interpretations. There are, by my count, only two distinct ways of interpreting “haunted”: being haunted by ghosts/supernatural beings, and being haunted by a thought or feeling. I was worried that the games that came out the other side would be repetitive and predictable. I was kind of right.

The Plan, part 1

As mentioned, I planned to make a 3D game going in. However, I had no plans beyond that. I had no conception of a story, no setting, no gameplay ideas. All I knew is I wanted to make something that controlled like either Jak & Daxter or Sly Cooper, two childhood favorites of mine. I had no plan, even less of a plan that I normally have for a game. But I dove in and started making things anyway.

The Work, part 1

For a previous project (which is not on this blog), I had written quite a robust 2D side-scrolling character controller for Godot in C#. The first task of the jam was to port this to GDScript and adapt it for controlling a 3D character instead. These things weren’t too difficult, as 2D side-scrolling and 3D platformer controls are shockingly similar, and essentially everything done in the C# script had a direct analogue in GDScript. It was a large script, so it took a bit of time, but within a day I had a capsule object moving around a 3D environment. It didn’t feel great to control but the code was highly customizable, and if I had played around with it enough I think I could have found something satisfying.

I then played around with the look of the game. I watched this video about indie game art styles maybe 3 or 4 times. I found a color palate and tried to do flat shading with aggressive outlines. I went and grabbed a CRT shader, changed the aspect ratio of the screen. All these lovely little tricks to get something looking decent.

A simplistic, unshaded environment rendered in low resolution. There is a capsule player object standing on a grey box surrounded by other grey boxes and a grey sky. There are aggressive and thick outlines on each object that don't quite connect at the corners.
The failed game, Project Trapdoor

And… I hated it. I enjoyed the process sure, but the lack of a plan or idea caught up with me. I had no direction, no thoughts about what to actually do with what I had built. I tried hard to pivot to something tangible, some excuse to add moves akin to those from Jak or Sly, but nothing was coming to me. An amazingly painful experience this was, realizing that I had nothing more than a tech demo when I was supposed to be making a game.

The Fall

This heavily demotivated me, put me in a nasty funk. My thoughts spiraled down and down, degrading myself for even trying. I knew going in without a proper idea was a bad move, so why did I do it? Why do I put myself through this? Why do I endure the pain of making games? Why do I make myself SUFFER?

And then it hit me. These nasty thoughts are not fresh because of a failed idea, no. They exist within me, they have always existed within me. They HAUNT me. And now I had my idea.

The Plan, part 2

A complete 180° pivot from the 3D platformer, I would make an interactive fiction game. A visual novel… minus the visuals. As someone would later describe it, a “wall of text”. And this wall of text would be a facade of an AI which the player chats with. And the chat is exactly the chat I had with myself after failing my last idea. A degrading, nasty chat. This AI would be mean, it would pull no punches. Yet at the same time it would be so, incredibly wrong. And in the end, to connect it to the theme, the creator of this AI (who you may call a self-insert or may just say is literally me), would lament that they made this AI to purge these nasty thoughts from themselves, but that it didn’t really work.

The inspiration came both from being in a particularly vulnerable state after my failed idea, but also from recently playing The Talos Principle. The terminal look of the final game, while more often compared to Fallout, was moreso inspired by The Talos Principle’s terminals. Additionally, the notion of speaking to an AI that pulls no punches was also pulled from The Talos Principle. SUFFER.er owes a lot to this game.

The Work, part 2

It started with writing. I spent the first 2 and a half days or so writing the dialogue tree. With the lost time from the failed idea, this put me nearly half way through the jam with nothing put down in Godot yet. But of course, the writing was the most important part, since, without it, there was no game to make. I knew it was critical to get it right.

And, at the time that I finished the writing, I did not think I had it right. It was bad. The writing is flawed in many ways. It’s repetitive, illogical, stilted, unnatural, and jarring. I do not like it. Yet, at the same time, it was extremely authentic. This was by far the most successful I had ever been at putting myself into my writing. And the fact that I didn’t like the writing maybe says more about my relationship with myself than it does the actual quality of my writing. But I digress.

For displaying the text and dialogue options, I initially considered using a dialogue system such as Dialogic, going so far as downloading the plugin and checking it out. But I wasn’t immediately able to do exactly what I wanted to do with it so I scrapped it and made my own system. While making said system was a pain, I’m glad I did it as it meant I was able to get the game to look and function pretty much exactly how I envisioned.

A screen capture of gameplay from SUFFER.er. There is the beginning of a conversation between the AI and the player with a harsh CRT filter and a green hue. I am not typing out all the text on the screen but there is a good amount.
Gameplay from SUFFER.er

One thing that was great about making SUFFER.er was that the gameplay itself was extremely simple. Once I had the dialogue written, making everything appear was all I had to focus on for the rest of the jam. I had over 3 solid days to just focus on polishing the experience, which I used as fully as I could. I still wish I had time to work more on certain elements, the sound in particular I felt was lacking. I had an idea for making an ambient song for the epilogue, but didn’t have time for it unfortunately.

The End

Being happy with the look and feel and experience of the game, yet still unhappy with the writing, I submitted it less than an hour before the deadline. I still regret not taking a few minutes to balance the audio a bit better, but ah well.

The reception to the game was… alarming. It wound up getting 7th place overall out of around 110 entries, 1st place in accessibility. Many people in the comments praised it highly, many saying that the game looks great and that… what’s this… the writing was good?? I guess, man. But seriously, it was a thrill to read one person mention that it sincerely gave them an emotional reaction. And that means so much to me.

When I started making things, making games in particular, a thought that was at the forefront of my mind was that I wanted to make things that made other people feel things, that evoked an emotional response. This is a big part of the reason why I got away from doing mathematics, it’s just not an easy medium to do that with (though not impossible). And SUFFER.er finally did just that. It evoked an emotional response, seemingly in a number of people.

And as I mentioned in the jam comments, the only reason why I am not freaking out and am not absolutely head over heels about this fact is precisely because I made SUFFER.er. A similar level of praise given to a game of mine prior to me making SUFFER.er likely would have gone straight to my stupid head and inflated it with delusions of grandeur. But not since SUFFER.er. SUFFER.er taught me how to keep a level head, and to not seek validation from others. At least, I like to think it did.

The Lessons

  1. Coming into a themed jam with an idea for a game is a bad idea.

    This can lead to having an ill-conceived idea, an idea shoehorned into a theme rather than an idea born from the theme. It leads to bad ideas, basically. Preparing for a jam by practicing can still be a good idea, but choosing anything about what you’re going to make before the theme is revealed is a recipe for disaster.

  2. Scrapping an idea isn’t the end of the world.

    I learned with The Tower of Babel that there are clear signs when you don’t really believe in an idea. This lesson is the follow up to that; it’s knowing when to walk away. I didn’t walk away from The Tower of Babel, but I should have. This time, I walked away from a failed idea and still wound up making something decent. Knowing when to throw an idea away is an important skill.

  3. Working alone is really hard, yet much simpler.

    I kind of already knew this going in, but making this proved it. You have to manage everything, every thought, every decision, every asset, all has to be chosen or made by you. This is a ton work, which makes it hard. But at the same time, it’s so much simpler, since there are no creative disagreements to settle, no personality clashes, no dragging other people down with your demotivation. It’s a trade off and, at least at the moment, I think making things on my own is the way to go.

  4. I can make something worth playing.

    This was huge for me. Not in that it inflated my ego, no. But it proved to me that, for once, I can actually make something that generally gets a genuinely positive response from people. I am capable of making good things.

What’s Next?

I have no reason to not do the next GWJ. Obviously the experience hasn’t been flawless, but that’s mainly due to flaws in my process and ability to make games, not with GWJ itself. So, onto GWJ#75, working alone again. Or at least that was the idea. I wound working with a team and making the best game I had ever made for a jam, Lapis and Rhubarb: The Orb of Doom

Updated: