Reflecting on Das Underseaboat and GBTK

This will be more of a philosophical post than a technical deep dive, so apologies in advance to anyone who is accustomed to that kind of content.

In each of the three Game Breaker’s Toolkit Jams I have participated in (#3, #5, and #6), my entry has taken first place. That is a dubious honour if there ever was one, but I shall consider it an honour nonetheless.

With that being said, I think this will be my last GBTK jam. I’ve enjoyed all of them- though trying all the entries is sometimes more “interesting” than truly fun- but I feel like I’ve plumbed the deepest fathoms, scraped the bottom of the barrel, or whatever metaphor you prefer. I don’t feel there’s anywhere left to go, certainly nowhere useful left to go.

Truthfully, I’d felt that way after GBTK5. GBTK3, meh, it was my first time, winning it seemed like a fluke to me, and I knew I could do worse. I held that thought for a while. I entered GBTK5 basically on a whim; it happened to fall on a holiday weekend if I recall correctly, and I implemented basically all of my “do worse” ideas I had after GBTK3. Iam Ajn Donita was close to the worst possible game I could make, and there was nothing I felt could be learned or enjoyed by trying to go lower. This was a game that even if it loaded (it hard crashed some machines and failed to load on a few others) was basically unplayable, completely un-fun, and was a few lines of code away from being actual malware. There was nowhere left to go in my mind.

Well, except for the web. After GBTK5, I figured I’d only try GBTK6 if I could make a “worst possible browser playable game”. A lot of what I did to make Fight Dot Net and Iam Ajn Donita so horrible could never be done inside the constraints of a web browser, so I’d have to look elsewhere. I had some ideas immediately after and in my head over the next few months, but it wasn’t until one night in the middle of GBTK6 when the pieces clicked together and I figured out how to actually do it. I looked up how to interact with Javascript from a Unity WebGL project in the middle of the night and laid in bed figuring out the rest of the plan. Over the next two days, I built what would become Das Underseaboat.

I’d come up with the basic concept almost immediately after GBTK5. I knew there were certain things that could only be done in response to user input, in particular playing sounds and opening popups. I realized I could work around this with a mechanic that forced the player to repeatedly press a button.  My first thought was some kind of watercraft you had to pump out or you’d lose the game. I’m not sure exactly why I went with a u-boat exactly- maybe because Silent Hunter III is one of my favourite janky old games- but that decision was also made early on. I also came up with the gameplay concept pretty quickly. It would be a ridiculously hard maze you have to navigate through while at random some kind of wave would sweep through and kill everything in its path. Grossly unfair and luck-based. I think I decided to make the game in German (which I do not speak) pretty early on as well, and I’m pretty happy with how the mix of bad German, fake German, broken English, and Dutch turned out.

I never really decided how I wanted to implement it until that late-night eureka moment, but I had been considering plain Javascript, Unity WebGL, or a mix of the two. I ended up writing the “outer” part in Typescript, with the UI made up of stock images and hacky HTML. Health and flooding are actually handled in the outer part; the Unity game calls into the Javascript when the boat takes damage in the Unity world and flooding is added in a game tick implemented with setTimeout. All the popups and some of the sounds are handled in the Javascript part. I never implemented the kill wave mechanic, though I did add some nearly impossible to see depth charges as a substitute. The maze is generated using some random asset from the asset store, and originally I set it too big and the game took a minute to load even on a powerful computer. The “periscope” vignette was a pretty late addition but worked well for making the game almost impossible to play.

For the most part, the game went together well, and it was finished in about a day, but there are a few things that I could have done better. When and how the game crashes is poorly refined, it’s a random chance biased by how long the game is running with a few special cases for first and second run, but it would have been better to be more consistent. I wish I’d made the controls on the left side of the window actually work, but it was the second day by that point and I was too tired to bother. I think I provided too much instruction for a GBTK game, but conversely I also wish I’d done a better job of directing players to push the Pumpe button and buttons along the bottom (which open a “buy now” page). Visually the game isn’t ugly enough for GBTK; it’s bad looking but not truly eyeball destroyingly horrendous.

Considering the time I spent on it, though, as well as how it ultimately performed I don’t see any of the flaws as critical, and there will be no update to fix them.

On a side note, Das Underseaboat is theoretically winnable, but almost entirely at the mercy of the RNG. Or, rather, several RNGs. First, the maze generator must generate a maze where there is a path from the starting square to the ending square, which is not guaranteed. Then you must not be hit by enough depth charges, which are spawned semi-randomly, to destroy your boat. Finally, the game must not trigger the “snow crash” which typically causes the browser tab to die anywhere from a few seconds to a few minutes later. This is probably the hardest part as it starts with a 1% chance every game tick (250ms) and increases from there.

I’m going to get a bit philosophical about the concept of GBTK Jam now. It’s a fun jam, and I appreciate the work of Adrien Dittrick (who runs the jam and plays every entry), the jam participants, and the wider community. However, I feel it’s also a jam that can’t keep going forever, for two reasons:

1. There is a formula to creating a winning entry

There are a few different rating categories in GBTK Jam. For the most part, there are pretty clear-cut ways to do well in each one.

  • Frustration – Difficulty is probably the biggest contributor here. Wasting people’s time by forcing them to wait or jump through hoops (especially after they fail) also helps.
  • Unfairness – Just crank the difficulty up. It should not be possible (or at least not practical) to win your game.
  • Confusion – Baffling interfaces and unclear or nonexistent instructions work well. It should not be obvious how to play your game, how to win it, or even what the goals are.
  • Uncanny valley – Make your game as ugly and eye-searing as possible. Bright colours, eye-bleeding patterns, flashing lights. Each of my games backed off on this a bit, and each did successively worse.
  • Ear Destruction – Loud, ear-piercing sounds and constant changes in volume are probably the way to go. Then again, Iam Ajn Donita got second place in this category with nothing but 60 hz hum. Basically, make your game intolerable to listen to.
  • Bugs – Run horrible, randomly crash, throw out graphical glitches. I don’t think it’s necessary that the effect be hugely convincing, but I like to do it anyway. 
  • Microtransactions – Ads, DLC, and features “locked away”. The only thing to be careful of here is that it remains just plain terrible for the player and doesn’t edge into the territory of parody or satire.

Note that while there is a theme, it’s usually something pretty easy to do a token implementation of, and crucially it’s not a rating category. Most voters don’t seem to weigh it heavily if at all in individual categories, so you can basically pay lip service to it and move on.

I’ve also seen some games that are too long or don’t reveal their worst aspects until after a lot of tedium, which is a mistake. There’s a good chance the player will just exit out or never get to that part. I’ve been pretty aggressive about front-loading all the degenerate content; Das Underseaboat will give you horrendous visuals, ear-destroying audio, a crash and likely an ad within the first minute of gameplay.

To be honest I’m kind of surprised this isn’t all well-known information at this point; a lot of games are bad (or sometimes not that bad) but miss the mark completely even though it’s pretty straightforward to put together a high-scoring game. I think there’s still some potential for innovation and creativity- and maybe I’m wrong about this completely- but I think over time the top-ranked entries will converge toward the same point.

And it’s a bit of a scary point...

2. Every jam edges closer and closer to actual malware

In the quest to create the worst possible game, some creators push the limits of technology and sanity, adding all sorts of degenerate behaviour to their games. There’s a thin line between a bad game and malware that will inevitably be crossed.

Depending on your point of view, I crossed this line with either Fight Dot Net or Iam Ajn Donita. Das Underseaboat might cross it, too. Some of the Sufferjump games have apparently crashed computers. One entry in GBTK6 forces system volume to 100%, which I consider crossing the line as it could damage eardrums and audio hardware.

Sooner or later someone is going to try to win the Microtransactions category by uploading actual ransomware.

With all that in mind I don’t feel, at least for me personally, that there is any worthwhile challenge to pursue in a future GBTK Jam.

There are goals I could pursue in a future GBTK, of course. I could try to do the worst mobile game. I could try to take first in every category. I could try a new technology stack. However, none of these really interest me. I could write page upon page defending that view but I think it’s best to just leave it at that: I’m not interested. I don’t think I’d enjoy the process that much, and I don’t think I’d learn anything from it I couldn’t learn elsewhere.

That being said, I think GBTK Jam is still a neat jam. It’s interesting to see how people approach the problem of creating a terrible game, although I’m not sure if I want to run these on my computer anymore. The games range from truly horrendous to surprisingly compelling in a so-bad-its-good way. I see a lot of new devs entering the jam, and it’s always good to see new devs, but I think the challenge is actually more interesting if you’re accustomed to making good (or at least not as bad) games. I’ve learned something from every GBTK game I’ve made, and I think that rings true for a lot of other devs as well.

Will I have brilliant idea I just have to do, or some other revelation? Maybe. I’m not saying definitively that GBTK6 is the last GBTK jam I’ll ever do. But I don’t have any ideas or goals and I’m not planning on making anything for GBTK7.

Thank you all for coming with me on this journey to the depths of hell.

Get Das Underseaboat


Log in with to leave a comment.

that was a good read