Our game isn't multiplayer.
At one moment in the game there is a "reverse action" card, and it's in fact the opposite of the one before with a different sprite because I didn't have the time to actually code the method :'(
The game: https://itch.io/jam/gmtk-2019/rate/462407


RPG Maker VX Ace doesn't allow for out-of-the-box manipulation of random encounter probabilities, so I had to write a custom Ruby script for my game that manipulates the current map's encounter table in the memory after each battle. I then discovered during playtesting, that this table is reset every time you re-enter the dungeon, so I had to move the code to a common event with two separate triggers, which would be carried across locations, which was a lot of ugly code, but it worked. I have since made the code much more elegant, and it will be included in the post-rating period re-upload...
There's something so satisfying about cleaning up a hacky solution... we've got a laundry list of fixes and quality-of-life improvements for our next build. We somehow managed (largely due to our very talented programmer) to not have too much spaghetti, but there's certainly some err... sub-optimal ways I handled branching dialogue in our game behind the scenes.
I have a one-bullet top-down shooter. I had the idea of recalling the projectile while it is travelling, but since it's powered by physics, applying a force towards the player while it is travelling in an unknown direction proved to be quite unreliable. So, I decided to make the recall work only at low projectile velocities to lower the randomness of the trajectory.
Judging by the comments on my rating page, I should have actually fixed this, instead of sweeping it under the rug. :D
Game is here: https://itch.io/jam/gmtk-2019/rate/461473
When I started working on my second level, I couldn't get the directional light working properly on 2 walls without one wall being covered in shadow. I tried using a point light instead which did light up both walls but gave the level a creepy dimly lit atmosphere. Was too lazy to figure out the lighting problem so I decided to roll with that and my game ended up becoming a horror game. Definitely don't regret it!
We actually used many hacks to make a game feels right. Name just a few of them:
- Distance of dash towards enemy and without it is vary - you can dash to enemy from a slightly longer distance
- At the end point of the dash we're checking if any enemies in a range and if any - we'll stick to them. This and hacks makes dash way easy to control without noticing it
- We used specific shader material on characters in order to not create any UV and textures for them
- Props are not have UVs either - it's just a three separate materials for 3 different colors
- Colors of environment was chosen from Japanese flag - just clear white with a little of red. Nice and simple!
Game is here: https://itch.io/jam/gmtk-2019/rate/462992
I had a problem with character's jumping animation - it was set to trigger the moment he hits the platform. But it turned out to be too late, as the same collision also triggered his next jump. I didn't want to just add delay to the bounce (because I wasn't even sure how I'd go about doing it - I didn't learn about platform collider in Unity until it was far too late to change it, so the platform had a collider function as a trigger - if I just added some delay to the bounce, player's character would fall straight through).
Solution? Change the animation from character getting squished by the impact to character getting taller and thinner, basically stretching him out vertically. It triggers at the same time and looks perfectly normal.
You can check it out here: https://itch.io/jam/gmtk-2019/rate/462343

Ooh hoo, that's a very hacky hack!
Played your game by the way, I really liked the feeling of controlling two different entities, one with each hand. Closest point of comparison to how it felt for me wasn't so much any existing game, but more how I feel juggling stuff while cooking a meal (not literally juggling, that would be a disaster, but you know what I mean).
https://itch.io/jam/gmtk-2019/rate/460811#post-872659 this is ours - we kept glitching out the game when you hit a corner. We fudged it with a 1x1pixel boundry in the corner but you can still break it pretty easly :(
Not really a hack, but I wrote the ugliest code I never written =)
I used unity for the jam and I used DoTween everywhere for animating stuff and I used lamda as callback to launch other animations.. in one place I have something like 8 nested lambdas in one callback.. this thing is several hundred lines long...
My game is set in a little forest and all the trees are generated on a grid, so that I can use the data structure for the enemy's pathfinding (it moves from tree to tree so it checks which tree around the current one is the best one to move to next), but the forest is circular and I also wanted to not have trees in some tiles to make it more organic… But for some reason my brain wasn't working properly and I didn't realise until after the jam that I could've just not generated those tree objects and nulled those indices in the grid data structure, but instead I just deactivated the objects, so they're still there, using up memory. x_x
We totally had one of those moments too! Our code that parses the conversation file was expecting either no option, or the two options 'wait' or say 'say no'. (for context, those are two ways you interact with conversations in our game). Spent ages squashing bugs caused by accidentally putting in the wait option without a 'no'... and at the end of the jam we were like... wait, if the parser only picks up one option why don't we just uh... pick it?
Just finished playing your game! I quite enjoyed your take on that style of horror game, the feeling of some fae creature snatching my damn keys was unsettling. Can you actually reach them? I was listening to the sound of them jangling and creeping up in the dark, then sprinting full tilt to try and grab them during a lightning flash, and I swear I got to them...
Haha, ouch. I've had similar issues with branching dialogues in past jam games. Can get messy. Thanks for playing my game! I see yours has a Mac build so I'll put it on my list too—it looks like fun~ And yeah, you can get the thing, but like the intro dialogue says, the ghost keeps moving them when the player is keeping a safe distance, as an incentive to get you to keep taking risks by staying close to the ghost, but I admit it wasn't super clear. xp
Ah, that's what was happening! I got that she was moving them, but I was never quite certain of where she was (I did peek her running between trees a few times, but would lose sight of her between lightning strikes. Which was cool, but made following her basically impossible for me).
It's a really cool mechanic, I'd love to see you play with different ways to communicate it. The way I moved in your game was completely different to how I usually would in this style of horror game.
<Peer around, see nothing, run as fast as I can>
<See charm, run closeish to it, watch it from behind a tree at what I judged to be a safe distance>
<Creep forward in the dark toward the jangling, lightning strikes, sprint for the charm with metaphorical arms outstretched>
Maybe there needs to be a wide aura around the ghost (fog? visual distortions? skittering insects on the ground?) visible from quite a distance away, even when the ghost isn't. You know she's in there somewhere, but not where... And you know you can only grab the charm when you're in there with her...
Not sure whether that would work! But I definitely think it's worth exploring different ways of communicating the mechanic if you end up working on it post-jam; trying to get an object from a creature that doesn't want you to have it is a far more interesting horror experience than something chasing you and it would be cool to see what you can do with it!
Wow, thank you for that writeup!
Can't say for sure if it makes for a good game but here's how I intended it: the ghost does keep pursuing you so you don't really have to go looking for it, and the corners of the screen get tinted with a fuzzy vignette in the direction they are relative to you (but it's possible it's hard to see if you're playing the game in broad daylight or if you have some form of colour blindness—unfortunately I didn't have time to test for that) and the sound of laughter and swishing between the trees is three-dimensional too (headphones recommended!) so you don't really need to actually see the ghost itself. p:
Thanks a bunch for your feedback! I already have a big project I'm working on between jams so I won't be working more on this for now at least. Feel free to steal it if you liked it and think it can be improved upon and you're feeling particularly keen on doing the work, haha. 💃
Just played and rated your game too BTW. So good!!
I didn't pick up on the vignette actually! I feel like all of the FX would maybe need to pumped up a little in intensity to compensate for the lightning strikes, they're so disorienting! (Which is good, but it presents an interesting FX challenge for sure.)
Yay! I'm glad you enjoyed it! (I did all the writing and some art, and yeah, it was a looooot of work).
Main mechanic of my game is switching between two robots by throwing a battery from one to another. In the first level you play volleyball to get familiar with controls, but the ball you toss is actually a battery but with a different sprite and physics properties! Even in hierarchy it's called "Battery", because my cheeky GameManager needs to find it by name with a string :v
If you want to play it, there is some important info in the install instructions :)
https://huscat.itch.io/powerbros

In my game, the world view is 1D, all by a filter I made. But I've got no clue how to do shaders, so I made it by hand. The game renders an offscreen scene, and puts it into a render texture. I added a line, and then set up a gradient to set the colour of the line. Basically, the line would read what colour was drawn on the offscreen scene, and put that colour onto a small segment of the line. This would've worked... If Unity's gradient system supported more than 8 colours. So instead, I had to rework that system and generate a texture, that had to be mapped onto the line, instead of the super simple gradients. This took a long freakin long time to set up, and there was this whole issue with the created textures causing a memory leak that crashed Unity at least five times. I was wondering why this was, soI looked into the profiler, and apparently there was 100 textures being added each second, which unsurprisingly isn't healthy. None of these were being destroyed, so Unity was gladly storing thousands of textures, equating to gigabytes of memory, simply because I might be using them again (but clearly wasn't).
Oh, but that's not all; 1D had SO MANY shenanigans that I've got to talk about. Like for example, there are these boxes you can push around. Issue was that I couldn't use Unity's 2D colliders, because of how the world functions. The world is actually 2D, and you've got a 1D perception of it. Issue was that 2D colliders would collide with things that you couldn't see, any walls or whatever else you passed, which did not feel smooth. So I had to make my own 1D collision system that only handles collisions with the parts you can see, and by golly that was janky.
Now then, last one; mirrors. These posed the biggest pain for me, with EIGHT HOURS of headbanging, trying to figure out what was happening. I got into that terrible habit of not changing the code and hoping it would somehow perform differently. So mirrors could bend your 1D view, and are an important part of some of the puzzles in the game, but my gosh did they eat me up. I was able to get the view bouncing no issue, but instead it was another feature that made mirrors painful; the fact that you can only travel along your line of sight. If you look into a mirror and move into it, you get reflected so that you keep moving along your line of sight, but by golly the game hat make some big mental leaps. To be completely honest, I still don't know why this was such a pain, but I ended up recoding the entire game. That's right, 12 hours in, I was trashing my game, and restarting. It was just one of those issues that seemed nonsensical, I printed out every relevant value and nothing explained the behaviour. Restarting miraculously worked out, but remember those pushable boxes that I talked about earlier? Well what do you think happens when you push a box into the mirror? Hint, the game hated it, so I told the game 'if a box touches a mirror, then figure out a reasonable spot to take it and just teleport it there'. In the end, I couldn't even think of a level idea that contained both a box and mirror.
I got the game working but still, after all that, Unity still hates me. I must have somewhere used a function not supported by WebGL, since this build simply doesn't work. So now everyone's gotta waste time downloading, which we all know cuts a games view count in half. Anyways, the game somehow was completed, and surpassed all of my expectations, so please check it out, it'd be nice to know that the pain was worth it. I even had some time to do voice acting, and I could ramble on about the strange things I did to record the wacky voices, but I've talked long enough. https://justcamh.itch.io/tunnel-view
I've booted up your game a few times (and I will be doing so again) despite making absolutely no progress because I want to understand what thinking in 1D feels like. Seriously. The way people comment on your game I feel like I'm missing something, some secret I'm not privy to. This is how cults start.
Yeah. So if I'm this bad at even playing in one dimension, I can't even start to comprehend how bad I'd be at developing in it!
We also had issues getting WebGL to work, so I feel you there.
You're more patient than I re: mirrors, at that point I probably would have just removed them! Who needs mirrors? To hell with mirrors!
I liked the wacky narrator voice! I'd be interested to hear what you thought of how we handled wacky voices in our game (assembling mouth sounds into randomized 1, 2 and 3 syllable clusters based on the dialogue to give the impression of speech). Except for Nancy. Nancy gets special treatment. She gets spoken lines.
We tried all kinds of voice modulation and such, before settling on just telling our sound guy to 'just say no in a Nancy-sounding voice'.
Sound designer here!
The hackiest moment was butchering the EQ trying to get my voice to sound the way it sounds in my head and not like it actually sounds, failing miserably, and then just adding a s**tload of reverb thinking "that might just cover it up". Also, splicing every single drum hit to align it to the rhythm as electronic parcussion ia not my usual instrument :P
To hear both, hit the gong:
Reverb is a dark art as far as I'm concerned. Our sound guy would have me listen to sounds with heaps of reverb that sounded wrong, and just tell me to 'wait until I hear it layered over the music'.
At which point it sounded perfect.
At which point he would say it wasn't, and would go and fix it.
My theory is you're all wizards.
Programmer here,
We were trying to have the game play out on a semi-realistic terrain with a whole monastery setup and designed, a little lake, mountains etc.
So we take a step back 2 hours before the original deadline and just go: "Ok, this looks like a piece of sh*t"
I quickly delete the whole level (except the gong), grab the post processing stack, turn bloom up to 11 and assign emissive materials on EVERYTHING. And it looks kinda nice now :P
About half way through building the wall I realized i needed something to spice up the game-play a little, so i whipped out a tile-map that pushes you away from it to take away some of the freedom of movement they have, give them some things to avoid, etc...
problem was that it was janky as all get out! if you entered it from above or below it would flip you out. so I just ended up making sure the player could never enter them from above or below instead of fixing it. XD
Oh, that's amazing. I love how much of a slippery slope that kind of fix can get when you make games.
"It's fine, I'll just not put these in those locations"
eventually becomes
"Trampolines may only layeth next to spike blocks under the light of the player, but not upon the seventh level, for the code abhors the seventh level"
I played your game by the way! Having one dash in each direction was really interesting. It vaguely reminded me of playing Bayonetta in smash bros.
Definitely my favorite moment though was having (what seemed to me to be) infinite cling time on roofs. That was really fun! I love climbing and clinging in platformers but it's always so limited (I understand why, but let me cling, darn it).
My platormer The Sad duo has solid blocks, but I didn't want to implement complicated collision-handling code for corners that would be required for solid blocks, so I just have the player character instantly jump to the top if they are near the upper corners, and designed the levels so the player would never be able to touch the bottom side of any of the blocks.
My game is a space invaders/breakout style of game where you're a squirrel throwing an acorn to kill spiders.
https://itch.io/jam/gmtk-2019/rate/463448

This is maybe not a hack, but I decided to implement a combo system where you can earn extra points by killing multiple spiders before the acorn lands on the ground again, which will make the game a bit more dynamic. The implementation is simple: when the acorn collide with the ground, the combo counter resets to 0.
The thing is that it's possible for the player to pick up the acorn before the acorn hits the ground. But instead of adding extra logic to reset the combo counter when the acorn is in the player's hands, I thought it's better to leave it as it is. Then skillful players are able to stack even longer combos by catching the acorn before it hits the ground + I write less code. I saw it as a win-win.
Another "hack" I'm proud of is the clouds in the backgrounds. The clouds are actually based on the inside of a cylinder that rotates around the scene. Incredibly easy to implement, and I think it adds to the game.
Here's how it looks like in Blender:

So I was putting together a tutorial for the game with 10 minutes left and wanted there to be an image of a player on the screen. So I just tried putting a player object into the scene (instead of making a new object that was just a sprite) and somehow it worked. It actually turned out really well because the player can actually move around and figure out the controls before going into the game.
Play the game:
Incidentally, there's an interesting thing that happens in your game with the first boss where his attack patterns almost have a musical rhythm to them, especially the <blue target place > rush to blue target> .
Not sure if you intended that or if it was a happy accident, but it might be a cool thing to lean into if you end up working on the game further!