top of page

Preparing for The best Liminal Space Game [Devlog]

Writer: 89o89o

This is a devlog for my game Teratomachine: grey loop.


It has been some time since I had last participated in a game jam, almost a year. I was eager to return, but there was one thing holding me back: a lack of vision. You see, over the past 8 years that I've been making games, my approach to game ideas changed drastically, and it didn't really fit with the target demographic of most game jams.


When I was just starting with game development, I'd just make the first thing I could think of, and that was immediately my passion project. My first finished game was literally just a platformer with a green square protagonist – can you get any more generic than that? – and yet I saw it as the amazing bestselling hit that it never became. Unsurprisingly.


My first ever finished game, S.Q.U.A.R.E. Yes, the title is that unoriginal
My first ever finished game, S.Q.U.A.R.E. Yes, the title is that unoriginal

Then began my game jam era. The premise was the same – first idea that I come up with gets created – but now with the limitation of a theme. This sometimes led to some more unique ideas, sometimes good, sometimes bad, sometimes fun, sometimes deathly boring, sometimes unique, sometimes incredibly plain. But at this point my game concepts were still at the level of "What if it's a platformer, but there's no gravity?" or "What if it's a rhythm game, but you have to play the beats 1 second after they move on your timeline?" or "What if it's a programming game, but instead of decimal, you're working in bijective senary?"


Now don't get me wrong, this is a great way to structure your game ideas. Starting with a "New way to play" is a lesson I learned from GMTK way back and I really took it to heart. Similarly, Jonas Tyroller thinks that with game ideas, you should strike a balance between "something nobody ever saw before" and "something players are used to and enjoy". And that is certainly a great tip if you want to make popular games.


Mirror Buddy: a short puzzle platformer where you can switch between two realities, if you're holding the mirror buddy
Mirror Buddy: a short puzzle platformer where you can switch between two realities, if you're holding the mirror buddy

But then, at last, slowly came the artistic eureka moment, when I realized I'm not a "content creator", but an artist. I'm not made to cater for the hungry gamers, I'm here to make the games that I decide are worth existing – and if anyone wants to play them, good for them. But if they don't, well, too bad. This was, in part, perpetuated by my growing appreciation for art in general, especially the little details.


I picked my game ideas more slowly, more carefully, but also more spontaneously in a way. I was now more focused on vibes (the youth synonym for "tone"), story, message, and meta-significance of my art rather than necessarily making it appealing, engaging and fun. This is how I made a game where (almost) all you do is retype receipts: S3CTOR; a game where you navigate with sound instead of sight: ciemno, and a literal programmable graphic calculator with a fourth-wall-breaking story: HI-216.


The nail on the coffin for me was Jonas's interview with Chris Zukowski about making games that succeed on Steam. The moment he said, "You need to not just make a great game, but the right game," I knew I wasn't the target audience. And this isn't really some kind of "rebellion against the evil game market", I just came to realization how lucky I am not to be a full time game developer, and to just have this as a hobby. To have the freedom to make games that people won't like.


That's when I started treating game jams more as excuses to start working on the projects I had already slowly curated in my mind, rather than incentives to come up with new ideas. One such incentive was "Break the loop". And it just so happened that I knew a game with plenty of loops.


S3CTOR has about the most boring and repetitive gameplay you can think of
S3CTOR has about the most boring and repetitive gameplay you can think of

Almost a year ago now, I got into Submachine. I had missed this gem in its flash-game heyday, primarily because I got stuck in the first three rooms of the second game and just kinda gave up. But somehow I found the remake, Submachine: Legacy on Steam and knew I wanted to give it a go. So I did. Then I learned speedrunning it. And started thinking of my own fangames for it.


One thing I didn't have enough of in the original Submachine was empty places. Sure, there were literally zero humans in the submachine, but there were signs of human activity everywhere. Apart from notes, there were contraptions, crates, gas tanks and all sorts of other gizmos that never quite made you feel truly alienated.


So that's what I'm trying to fix.


I'm planning a large-scale liminal space paradise called Teratomachine, in order to not infringe on copyright (the original title idea was Submachine: Teratoma, but that's out of the window), and seeing the theme "Breaking the Loop" in the 13th GoedWare game jam, I immediately thought of making a small-scale demo/prolog/epilog for this game. In equal parts to make the base point-and-click engine, to see how long and how painful the process is, and to get a gameplay demo out there for the Submachine fans to potentially criticise. All with a prize carrot-on-a-stick to motivate me to finish within a week.


(It might be worth mentioning here for non-Submachine fans that the series has plenty of "spatial anomalies" or, simply, loops. There are various different types, which I classified and will put in a note somewhere in Teratomachine.)


There's just too many man-made devices for my taste in Submachine: Legacy
There's just too many man-made devices for my taste in Submachine: Legacy

After some brainstorming, I decided to have the main game take place in the "grey loop", which in the full Teratomachine would lead you to a tally mark room with a... you know, let's not spoil that. Either way, the initial idea was to have you find 5 micro stabilizers (tiny marbles) in this loop, put it into a machine, pull a lever and have it break the loop, all at once.


And that would've been a perfectly valid solution, but then I thought, "what if the loop shrinks for every stabilizer you put in?" That would make it feel more and more cramped with each bit of progress, and create a tiny game progression of "rising tension - climax - resolution".


I was satisfied with that idea – however, it required the player to get the stabilizers in a specific order. If they could get them in whatever order they want, it could lead to stuckage and hardlockation. So here's where my other genius idea came in – slight changes to the gameplay elements in each room to force a specific order upon the player. This came with the extra perk of uncanniness and a sense that the structure you're in is alive (which is canonically true according to Submachine: Legacy). All that's left to add is a special mechanic that can sometimes add random empty rooms to the corridor to make you even more confused. And bingo, we have a game.


I tried extra hard to keep the scope down, which was a good call. It took me three days (obviously I wasn't working all day, I had studies to study) just to draw all the necessary art. To avoid unnecessary disk space, I made one loop room image and added all the unique elements as separate sprites in-game. (Unlike Submachine: Legacy, which has literally 10 identical copies of a room image for a certain "fake loop"...)


One important choice I made early on was a 300x300 resolution for the rooms. This was the resolution of the original Flash games, and I found that I really wanted to emulate their tone, rather than Submachine: Legacy's. They felt more raw, creepy, unfiltered – in part because of the lack of comfort features like speedrun mode, in part simply because of less "general visual/audial polish", in part because of the decreased "censorship"... yeah, from what I recall, there were two instances of blood in the original games, which were both removed in Legacy. And the note in chapter 1 was rewritten to a more "controlled" tone, to fit in better with the rest of the notes. Don't get me wrong, it was certainly the right choice for that game. But for Teratomachine, I want it to be raw like beef from a freshly slaughtered cow.


(If you want more arguments for why "bad" is sometimes better, I wrote an essay on that topic.)


The small screen size, lack of audio transitions, pause menu and sound and ambience controls are all perfectly intentional decisions... trust me...
The small screen size, lack of audio transitions, pause menu and sound and ambience controls are all perfectly intentional decisions... trust me...

Okay... from the artistic side of things, I must admit to one majorly heinous crime: I used generative AI for three images.


[Audible gasp from the audience]


Yeah yeah, I'm not a real artist. But for those who want to hear my reasoning: the paintings and menu graphic are traced over images made with AI. (Tbh the traced over versions look miles better than the raw AI images, I'm so glad I did that.) The reason is lore-related. To put it briefly, the place you're in created itself, "learning from" the other submachines and locations that already exist. I really wanted to recreate that uncanny, "trying to be human" look, which is most easily achieved with AI. So, concluding, I didn't do it to save time (tracing over those images still took a bit of time!) but rather to create an effect that couldn't be made another way – or, at least, not as well.


Probably the most striking example of this effect is the shifted painting (after inserting the fourth stabilizer), which shows the code for the secret ending. Uh, spoilers I guess. Anyway, I wanted the word "exit" to be written here in an AI-font: you know, with double letters, weirdly shifted letters and all that. And maybe I could've made a similar effect myself, but... you know, I wanted it to be authentic. So there. If you don't like it, send me a hate comment and we can just leave it there.


The "exit" – or should I say "exiltt" – text here was traced over what Stable Diffusion thinks the word "exit" looks like
The "exit" – or should I say "exiltt" – text here was traced over what Stable Diffusion thinks the word "exit" looks like

At this point I just want to mention a feature I'm unnecessarily proud of: the cursor. It's actually a sprite drawn in-game, because A) I don't know how to make the cursor change to a clicky finger in my game engine and B) this retro one looks WAY cooler and more fitting and C) I can now make it rotate for when you're moving left, right or down. I vaguely remember this rotation in the original original Submachine from 2005, and I really liked it.


After all the art (which wasn't actually all of it, obviously, there's always something you forget), I moved on to programming and actually implementing these rooms. That tooks me another 3-4 days of just plain grinding it out. I've been making games for 8 years and I always forget how much of this is just the grind. But, with breaks, and not thinking too hard about how much work I still have ahead of me, I made it through.


I will say there's one detail I want to change with the way I programmed my point-and-click elements (easier way to make room transitions), but apart from that it's a pretty nice system. I'll still have to think of how I want to manage the mazes and faulty loops in the full Teratomachine, though.


There's not much else interesting to write here, honestly. At this point, programming is not so much about finding solutions to problems as it is about just making it through and getting it done. And when I came upon a problem, I just slapped a band-aid solution and moved on. If you're taking the time to do everything right, you're gonna spend ten times as long making your games. Just get the base gameplay right, and all the UI and transitions and other fluff can be half-baked... at least that's how I do things.


As an example, I made the cursor not interact with anything during room transition by deactivating its collision layer – but then, when a transition ended with the cursor already on an interactable element, it wouldn't switch to the hand icon, it only did once I moved the cursor by a little bit. My solution? Budge the collision box of the cursor for one frame up and down after each animation ends. Nobody will notice, problem solved in 10 minutes.


Spoiler alert: a lot of my games (and many other games) are, below the surface, more like a house of cards than a concrete building
Spoiler alert: a lot of my games (and many other games) are, below the surface, more like a house of cards than a concrete building

A word or two about the story is probably in order. I'll be honest, I already had come up with most of the story for the full Teratomachine before the jam, so I just thought of a easy way to make a side-tangent to that main story, and then proceeded to implement my favorite storytelling technique: "Making everything with the assumption that the player already knows all of what you know." This ensures mystery and confusion, and forces players to come up with theories based on their available evidence. It's probably not the best way to do things from the players' perspective... but I'm the developer so screw them, lmao. Get rekt noobz.


Two of the notes had been written previously for Teratomachine, one was part of my loop classification note, and the last one was a short conversation mentioning "the Trap"... which happens to have something in common with the secret ending. And the ending cutscene is even more confusing. But don't worry, it'll all make sense in the full game. Once I finally release it.


The notes are very much taken out of context, very much on purpose
The notes are very much taken out of context, very much on purpose

And finally, my least favorite part: sound design. Truly, thank God for Freesound. I'd be lost without it.


ChipTone (a beefed up BFXR) was sufficient for some of the sounds, especially the recreations of Submachine sounds (which I obviously couldn't just copy over), and Freesound filled in the rest. (Just a tip for new developers: make sure to select "Creative Commons 0" in the licenses when you're searching for a sound. That basically means you don't have to credit the creator and have zero limitations for how you use the sound. Very convenient.)


Freesound also provided the necessary ambiences. I am planning to make some of my own for Teratomachine, but I didn't have nearly enough time to attempt that for the jam.


There were so many unique sounds needed for just this little game that I had no hope of making them all myself. Freesound to the rescue
There were so many unique sounds needed for just this little game that I had no hope of making them all myself. Freesound to the rescue

And there we go, that's how I got to the finished product. A sprinkle of branding later, a little GIF with some screenshots, and we're ready to collect ratings. As I mentioned before, this wasn't made to be the most fun, the most engaging, the most universal, the most liked, or the most playable entry. It was a proof-of-concept, a little demo for myself to see how long it takes to make a point-and-click game, and a starting point for the bigger project. I'm super glad I dragged myself to the finish line. And to everyone else who did: I salute you.

Commenti


© 2023 by 89o. Powered and secured by Wix

bottom of page