Post-Mortem for GM48 #49

Hello

Hello. I recently participated in GM48, a Gamemaker game-jam, and made my first original (non-clone) game, Silenced. Its a cryptic reverse-horror game where you play as a Thing and need to escape containment, but you can’t see and must rely on touch and your hearing.

I’d like to reflect on the experience, what did and did not work, and what lessons I’ve learned. But first we need to address the Controversy.

Sound-gate

My jam version of Silenced doesn’t have any sound. My excuses for this are as follows:

  1. I listen to music (usually the same song on repeat) when working so any ideas for sfx are drowned out by sick beats. (Silenced was brought to you by Proleter’s The Misfit Song)
  2. I have no experience making sound effects and did not prioritize it when planning (due to lack of experience).
  3. I ran out of time :c (but likely would’ve added additional levels instead of sfx or music).

With that being said, the criticisms are 100% valid and made me reconsider the importance of sound for games (which we’ll talk about later). My post-jam version has simple sound effects from JSFXR which (in my opinion) does help the atmosphere and immersion.

Ok now some context

Now that I’ve absolved myself of any wrongdoing, I can give some more background. I remembered the Jam late on Friday, decided it was too late to join, then spent four hours (while desperately trying to sleep) plotting game mechanics and became too invested to not make a game. Since I didn’t plan around the jam, I “only” spent 20ish hours doing active development, which is feels low for a 48 hour jam.

I also started with a mechanic first (“what if you couldn’t see and ‘saw’ sound?”) and bent it into a game later, which definitely affected the end product. Silenced is cryptic and vague because I stumbled into the “what if the player doesn’t know they’re killing people” (spoilers) by accident and thought it was a neat concept. Did it succeed? I don’t know, but its a jam game and no-one thinks that deep about it.

As for my experience, I’m a well-trained software engineer but not a game developer. While I’ve done modding with Gamemaker, I’d never made a game from scratch before and there’s definitely things you can ignore when modding that you can’t when making a game (sfx, art/concept, ui, camera, movement, etc).

Now we can start the retrospective.

What Worked

First, some quick things that I fully liked.

What Barely Worked

Now for some things that barely worked, starting with my new nemesis.

The Blackout Effect

One of the mechanics I wanted for the game was to hide areas from vision until the player “touches” them by getting close. This was implemented using a persistent Gamemaker surface the size of the room, which had a few consequences.

For starters, the whole “surfaces are ‘volatile’” thing meant I built the entire system around backing up the surface to a buffer each frame. No-one reported low framerate, so I assume this was fast enough when combined with my other tricks.

First, each room in the game is limited to 512 by 512 pixels with 16x16 tiles for a 32x32 tile grid. This imposes restrictions on the level design (a surprise tool that will help us later), but shrinks the size of the surface. Second, its a red-channel-only surface (surface_r8unorm) which shrinks the surface size by one fourth and gives the vision effect its distinct red color. In total, the surface occupies 2mb which is a lot but could maybe be larger without causing huge memory bandwidth issues.

A consequence of the room size is that room transitions need to move the revealed content to the new part of the screen. This is done in a very hacky way and a lot of time was spent attempting (and mostly failing) to make the room transitions seamless.

While I think the vision system worked really well, I don’t think the surface was the best choice but I also don’t know a better method aside from keeping the game to one large room or adding a fullscreen vision reset.

The Mechanics

The only real mechanic in the game is block pushing, which is implemented using a “track” system. Blocks can only be pushed on a single axis, and only within a set bounds. The blocks themselves work fine enough (I did custom collision that mostly works), but there definitely could have been more mechanics there (buttons and locked doors or noise generators maybe).

Level Design

As teased earlier, the level design is kinda bad. Because of how the surface is preserved, the level entry point has a large deadzone where no content can be placed, so each level is very small. I also ran out of ideas for levels (mostly due to lack of mechanics), the last two levels are a simple maze (boring) and a second water tunnel (repeated).

Cryptic Gameplay

The game design is intentionally cryptic, which has upsides and downsides. The lack of direction helps the reveal at the end, but you also need to be engaged with the game in the first place (which should never be expected, and a lack of sound doesn’t help). It also imposes design constraints, like how there isn’t big text to tell you how to push blocks or what to actually do in the game.

Its possible to “accidentally” make it all the way to the end without killing anyone by ignoring all of the sounds. I’m not sure the best way to solve this, Joey (the guy in the second room behind a block) is the best-designed NPC for teaching the player how to interact with the NPCs, but I’m not sure how well it works.

Reflections on the Jam itself

Before continuing, I’d like to preface by saying that I had a lot of fun with GM48 and would recommend participating in the future. While I have some negative opinions on the Jam, I don’t think my opinion is worth much (as a newbie gamedev with one jam of experience who doesn’t run jams) and should likely be ignored.

But would I change anything? Probably not. Giving some users higher voting power (such as previous event winners) could help, but has its own downsides.

What I Learned

Thanks for scrolling to the end, see you’s all next time.