Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

What was the hackiest thing you did during the game jam?

A topic by Crime Dog created Aug 07, 2019 Views: 3,033 Replies: 161
Viewing posts 1 to 54
(1 edit) (+1)

Yo jammers!

I love hearing about all the workarounds, hacks and 'I'll definitely fix this later' moments that happen during gamejams.

So in the spirit of that, what's the hackiest, quick-fixiest, that'll-do-iest thing in your game jam game?

For our game, Negative Nancy, I uh... may have derived the colour palette entirely from screenshots of the Emmy-Award winning 90's sitcom 'The Nanny'. In my defense, it's got a lot of range!

(Game here if you wanna check it out: https://itch.io/jam/gmtk-2019/rate/462193 )

I've shown you mine, so show me yours! What's YOUR secret quick-fix shame?



Submitted

Every animations you could see in our game were not really made like regular animations, they are all done with a primarily UI Tweening plugin haha

"If it works, ship it!" was said a lot during that weekend.

(Find it here https://itch.io/jam/gmtk-2019/rate/462077)

Haha, as someone who personally hates doing animations, I respect this!

Pretty sure there was more than one sleepless 'ship it' muttered during our jam too.

The animations for the only Neone turned out pretty good! What plug-in did you use, out of curiosity? 

Submitted

On Unity, the plugin DoTween, easy one-liner animations.

(+1)

Thanks dude, that looks great. I'll have to use it on my next project!

Submitted(+2)

I  had the user press space to start playing the game, which then switched to the play scene, but space was also the controls for aiming and shooting, so no matter what, the space bar would trigger the aiming action in the play state. So, instead of messing around with cancelling input listeners and events and things, I just ignored the first key-up event for spacebar when the play scene loads. 

Here is my game: https://itch.io/jam/gmtk-2019/rate/461622

Classic! 

We were doing something similar at one point and kept wondering why we ended up stuck in a scene-select debug loop...

Submitted

I probably should have done the same thing - Space to start + no delay means you could jump straight into the enemy at the start.

Submitted (1 edit) (+1)

I wanted to have a restart level option but I couldn't get the Reload Scene function in Unity to work. Since my game is pretty much just moving in a straight line, I had the reset button set velocity and position to zero.  So it looks like the level is being reloaded but it's actually just the player character getting sent back to the starting point :P.

here it is: https://swegdude.itch.io/bullet-heaven

(+1)

Haha, that's amazing! Yeah, Unity's scene system can get pretty janky. I think we just ended up using  the one. 

Speaking of weird workarounds, I think you just posted a link to a Joe Rogan podcast instead of your game?

Submitted

woww im dumb. had the wrong thing in my clipboard. fixed it now, sorry.

haha all good, it's been a looong week

Submitted(+1)

Everything in my game, You have One Shot,  is modeled with the Probuilder tool for Unity; Every Environment, Character, and Object is either a unity primitive (in the case of the perfect spheres) or a Probuilder object xD 


Oh dude, Probuilder is the best. We used it too. The less time I spend staring at blender, the better!

Submitted(+1)

i had about an hour to get the enemy fireballs up and working before the deadline and i didnt have time to code proper spawning and ricochet code.  So i literally picked a random point around the player (slightly off screen usually) and a random direction and launched it at velocity...  rather than coding the movement i gave it to the physics engine in unity with zero friction and 100% bounciness. And let it go.  If it gets too far from the player it just respawns and goes again, technically there are only 3 fireballs at all in the game, but with this, it seems like the maze is full of them

Ebrius Maleficus

This version was a bug fix after the deadline (about an hours worth of work the next day) so its not really judgeable for rating, but I would love honest feedback.

Hahahaha, that's greeeat! I'll play it now!

Just played it! Man, I wouldn't have picked the fireball hack, it's even more hilarious now that I've played it. What was that vocoder you used? It's great!

Submitted

Acapella box for the voice

Submitted (2 edits)

In the beginning you can just move left and right in the game and see the title blinking in the background

pressing the up arrow actually starts the game........and you need to be really quick about it since you jump as well and a pair of platforms appear which are basically the crux of the game . I felt this was a much more visceral and fast-paced into than having a menu or anything else in the way

Game: https://vcp.itch.io/only-one-pair-of-platforms

Rate : https://itch.io/jam/gmtk-2019/rate/461979


Good stuff! We did something similar, in that you have to  say 'no' to remaining on the menu page (our game is dialogue driven with 'no' being your own option.

Submitted

Made a tower defense with no actual proyectiles fired x)

I really wanted to have some kind of lightning effect come from the eye of the tower, but having no idea how to do it with sprites in an elegant fashion (to have the sprite get stretched between the enemy and the tower ina  good looking way) i just made it look like the enemies die FROM THE EVIL GAZE OF COUNTERFEIT SAURON. It's hacky and i love it, and i totally need to change it when i get a chance, hahahaha

Hah! Yeah, stretching sprites in a way that doesn't look horrible is a pain. I remember wrestling with literally this problem a while ago, lightning and all. I think there a Line Renderer thing in Unity you can use.

Submitted

Using gamemaker, though! Which does have a draw_line function, though using draw events at all in GM is wonky and i kinda have bad experiences with it, hahahah

I guess i might need to master them if i want good effects though! god help me (?

Yeah, I remember when I was learning particles in unity most of it was me replacing sprites in preexisting particle effects with random UI elements and textures to get ideas for proper fx, haha.

Are there some FX you could grab in a pack or something to pull apart and see how they work?

Submitted

For my game Ride Share, I wanted to make all of the maps using svg in HTML to make them procedural, but I didn't have time, so I exported them as a png and used mspaint to find the pixel locations and loaded those into my .js. It would have wasted a lot of time to make each level that way, but luckily that was not an issue... Play my game to find out why lol

https://itch.io/jam/gmtk-2019/rate/461186

That's.... that's out of control. That might be hardest hard-coding of all time.

Submitted

I didn't really want to make art for the game so I made all the players and enemies circles

My game is called One Shot In The Chamber, a wave based survival game where you must fight off hordes of enemies with the catch being, you have only one bullet. Fortunately, the bullet is magic and you can summon it back to you or teleport to it. Using this unique ability, you must survive as long as possible in the chamber. Here is a screenshot of the game and the link to the game page: https://mark-auman.itch.io/one-shot-in-the-chamber

(1 edit)

The subtle glow around the circles definitely helps to sell the art, though! Great sound as well. It looks pretty good with the VCR scanlines too.

If you play our game you probably noticed that most of our characters are behind counters or tables, because who has time to draw legs...

Submitted

Nick Hack ;)

Submitted

We made this game where the idea is that you are a jelly that has to shoot enemies with a rock-paper-scissors mechanic using colors (Blue > Red > Green > Blue). Every time you get shot, you absorb the color of the bullet and then shoot it back to try to defeat your enemies. Since we only cared when things made contact with another, we used Triggers for everything.

Anyway, at some point during development we decided it would be cool for the bullets to bounce around and to reflect them once you were hit with the color that is weak against you. But we had already used Triggers instead of Colliders!!! And time was running out!!! And we hadn't slept!!! So... we hacked collisions and bounces using recasts after each trigger 😂

It was horrible, we are not proud, it's a bit buggy, but it worked! And I honestly think our game has potential to become a real game someday. But before that day comes we'll rebuild it from the ground up using collisions for everything. Lesson learned. Here's a gif showing off our super awesome Trigger physics haha. You can play it at the link above and give us any feedback and ratings here :)


Oh man, I once worked on a mobile game where reflecting things was the main mechanic. I would NOT want to have to hack that in 48 hours, nice job haha!

Submitted

Sooo many "that'll do" moments for this one! The humanoid animation pack wanted to move the model outside the player's position with "root motion", sort of fixed it but not really. The dragon is calling functions from inside its animation to get it looping. There are three separate methods checking for "isGrounded" (for jumping) being used and it still doesn't always work lol!

https://itch.io/jam/gmtk-2019/rate/462198

Yeah, collision detection can be a real pain (as can Unity's inbuilt animation system). We kept our animation pretty light for that reason!

Submitted

Umm,,, That's hard, since there are so many, but I think the main one is with how I structured my code.

My game is chess inspired (https://itch.io/jam/gmtk-2019/rate/459874, if you want to check it out. And if you do, don't forget to read the section after IMPORTANT in the itch.io page's description, and don't forget rating the game), and I decided to use class Tile, Player, and the main one. In player I didn't really have much, other then the variable "hisTurn" (which I could keep global as a boolean "white's turn" or something like that) and was useless, and the having only the Tile class makes it a mess of a code.

It's always so tricky trying to decide when you need to refactor your code, and when doing so would be a waste of time. It's doubly hard in a game jam; trying to weigh up how much time any given rewrite will save in the long run is definitely a skill!

Submitted

Yeah!

Ah, the old entire-program-is-one-class trick. Hope you didn't have to spend too much time debugging that monster ;)

Submitted

Well, I only had one day to work on the game anyways, so it was ok to write hackey code. But it did mean that now I am having a hard time making a better version. The first thing I did was make like 5 more classes. 

Sometimes I find it's almost nicer to take a step back and start from scratch with the code.

I like drawing out my class dependencies on a whiteboard or big bit of paper, but it probably makes me look like a crazy person.

Submitted (1 edit) (+1)

I never animated before, but decided to do a fighting game. The whole code is a clusterfuck of public stuff, where everything knows about everything.  Oh, and Unity crushed 9 hours before a deadline,  and corrupted my project (I was able to recover). 

But the most hacky thing is this. I encountered a bug, where menu music never started playing. I solved the problem calling PlayMusic twise in a row. 

Submitted

Yeah, for my game, almost every variable in the game is a global.

(+2)

I feel like calling PlayMusic twice in a row is the gamedev equivalent of kicking a jukebox to make it work

Also "I never animated before, but decided to do a fighting game" is maybe the bravest thing I've ever read!

Submitted

The strangest thing that this worked out somehow. https://itch.io/jam/gmtk-2019/rate/462244

(+1)

Oh man, yes it did! Just finished playing your game, really really funny. The animations are exactly as good as they need to be to sell the concept. Glad you were able to recover, the world deserves to play more one-character fighting games.

I guess gamedev is sort of a one character fighting game... Past me garroting present day me with spaghetti code.

Submitted

Just played yours and damn it's good. 

Submitted(+3)

Our game isn't multiplayer.

https://big-breakfast-collective.itch.io/waldoio

(+1)

low key best hack

The theme is “only one” so we felt it’d be a good twist on it haha

(+1)

absolutely devious

Submitted

dude, thats absolutely amazing :D

Submitted (1 edit) (+1)

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




(+1)

Oh, that's clever. Your game looks really good in motion, just gave it a play then! Such clean art.

Submitted

Thank you!

Submitted

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.

Submitted

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

Oh, this speaks to my soul. The fact that we didn't have to worry about physics when making Negative Nancy is probably the only thing that stopped me dying from stress-related complications...

Submitted

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!

https://jotlane.itch.io/one-leg

(+1)

As hacks go, "I fixed my lighting problems by changing the context of my entire game around them" is certainly up there! (Also oh my god I'm bad at your game)

Submitted(+1)

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

(+1)

The game-feel is really good! I love the hit stop on the impact, lends a lot of weight to the hits.

Any art style that means not having to UV is a good art style in my books.

Submitted

Haha, thanks a lot!

What books do you read? I want them too! :D

These would be my metaphorical books, but if you want actual book recommendations most of mine are going to be fantasy novels, haha!

Submitted (1 edit)

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).

Submitted(+1)

In my game, there's actually a one pixel gap in between the player and the ground.  To fix that, I just made the graphical display of the platforms one pixel wider than they should be.

Flawless. Absolutely flawless.

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 :(

Detecting corner cases (pardon the pun) with collision detection for corners is very painful, my condolences!

But what if... we make them ROUND?!

Yeah, we were loosing our minds a bit at one point...

(+2)

I am almost certain I have screamed the exact same thing to the heavens when prototyping  a platformer.

Then you discover that detecting slopes is arguably even worse...

We don't talk about slopes. Slopes hurts us. Slopes burns us. 

(1 edit)

An object wasn't attaching to the characters hand in unity with an object constraint. so in blender i used a boolean unity to make a super budget version. we were stuck on this for about 3 hours and yet it still hurt to "fix" it by fusing the bow to the character mesh.

https://fastandblast.itch.io/one-with-the-woods

Haha, that's one of those 'It's not a problem, the player will never notice' fixes.

Developer: <eye twitches> But I know, damnit. I know...

precisely

Submitted (1 edit)

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... 

https://itch.io/jam/gmtk-2019/rate/462605

There are shudders nested within my shudders trying to picture that...

Submitted

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

(+1)

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...

Submitted

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

(2 edits) (+1)

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!

Submitted

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).

Submitted

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

Oh, that's a classic. I once worked on a game where every enemy type was named 'helicopter' in the inspector.

There were quite a lot of enemy types.

Only one of them was a helicopter.

Submitted


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'.

Submitted (1 edit) (+1)

I only have one 1x1 pixel texture in my game. Everything you see in my game consists out of multiple stretched squares with the same black 'texture' and 3 different transparency levels. I am not good at drawing sprites :D

https://itch.io/jam/gmtk-2019/rate/461649

Texturing is such a massive time sink, I reckon it's wise to avoid it in a jam setting wherever you can.

(I am also not good at drawing sprites.)

Submitted

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:

https://itch.io/jam/gmtk-2019/rate/463231

(1 edit)

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.

Submitted

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

Submitted

I'm fine with being considered a wizard.

Submitted

Why don't you get off the toilet and join the meeting, oh dark wizard?

Haha, crank dat bloom.

We started off making our game have a bunch low-res crunchy textures (think doom/doom2).

We were making a whimsical dialogue driven game.

Fortunately we realized we were being silly somewhere in the first day, the 2 hours left scene delete is a bold move, haha!

Submitted

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

https://itch.io/jam/gmtk-2019/rate/462355

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).

Submitted

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.

The amount of little finesse helper mechanics in platformers always blows me away.

Have you seen this GDC talk? It's probably the craziest example I've ever seen

https://www.youtube.com/watch?v=OfSpBoA6TWw

Submitted (5 edits)

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:


(+1)

Oh, that cloud thing is particularly clever. Thanks for sharing!

Submitted(+1)

Seconded! I may have to take note of that.

Submitted (2 edits)

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:

https://itch.io/jam/gmtk-2019/rate/463308

That's such an 'everything worked better than expected' moment.

I feel like if I did that the player object would find some way to die on the menu screen and crash 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!

Submitted

The trails of the projectiles in our game are never really destroyed in the first build of our game. They just stop moving so they stop emitting particles, but at the end of tha game the map is filled with particle systems. We fixed this in following out-of-jam versions.


The game with infinite particles: https://filogc.itch.io/one-man-army

Oh, that's horrifying...

At least if they're not emitting you're not creating some kind of infinite overdraw nightmare? I guess?

I really want to try your game, but my controller is busted :(

Submitted

In a previous jam, we had a game breaking bug riiiiight at the end of the game that caused it to crash. After a futile attempt to fix it, we ended up just wrapping the whole game in a try-catch block. When the game crashed, it just took you back to the title screen. Thankfully, the game was hard enough that only a couple people made it to the end, but they had some funny reactions.

We hit an issue right before submission with this game that almost got us to do the same thing, but we thankfully didn't have to resort to that. Though, I won't promise our game is perfect by any means XD    https://itch.io/jam/gmtk-2019/rate/460345

Try-catch, the programming equivalent of a warm hug.

Perfect? Maybe not, but damn I enjoyed your game. Great art, and satisfying puzzles.

Reminded me of stuff my dad used to bring home on floppy disks.

The animation on the onion man was top tier, would love to see you round out the sound and juice for a further release.

Submitted

Thanks for the kind words! Our artist restricted himself to the CGA color palette -- so you're right on point with the era of games we were aiming for with the art direction. We definitely had to leave out some animation rigging due to time constraints. I'll be giving your game a play this evening when I get home from work (meant to play it yesterday, but got  busy and had to forgo playing jam games).

Submitted

My game was meant to have five characters, each of which has a unique ability. Not only did I decide to completely skip one ability so I'd have time to build actual levels, but I also couldn't think of anything to do with the replacement ability (which another character shared). Consequently, the game features two entire characters who only appear in the first, final, and semifinal levels, none of which make use of  character abilities at all~

On the note of the semifinal and final levels: the entire first day was spent trying to build a completely different game out of magnificently incoherent mechanics. Most of the levels were built on the second day, after completely replacing the core mechanics, but I decided to tack on levels 1 and 2 from the original game at the end, just to avoid having to make a proper ending screen.

https://sirius-bizdness.itch.io/one-by-one

Oof! A core mechanics change late in the game is brutal, that must have been rough.

Submitted (1 edit)

Honestly, I thought it would be, but it turns out that most of the supplemental mechanics didn't actually rely on any core mechanics beyond "character can move into this space when s/he wasn't before." UnityEvent is a beautiful thing, and I have absolutely been underutilizing it.

...Then again, I stayed up until about 5 in the morning struggling to add in the softball throwing, build out all the character abilities, and make enough levels to properly utilize at least three of the characters, so yeah, there was definitely a drawback to it :)

Huh. I said "completely different," didn't I....

I haven't actually tried using UnityEvent yet, does it work OK out of the box or do you have to modify it a lot to get it do what you want vs. rolling with your own event system?

Submitted (2 edits)

I've never used another event system, actually. Just so we're on the same page, what exactly is an event system in your book?

It works fine, I believe--I didn't have trouble with it for a small-scale game like this--but there are copious replacements out there to fix problems, and I know several caveats have stopped me before:

  • Callbacks don't run in a particular order, and in fact may be outright non-deterministic.
  • Methods to call must be public void. No idea if this is standard; all I know is, it's tripped me up at least twice.
  • To pass multiple parameters, or even a single parameter if it's not static in the editor, you have to create a class which inherits from UnityEvent<T0...T3> and use that for your UnityEvent field. To make it accept parameters when you Invoke() it, you have to explicitly select the dynamic variant from the dropdown menu.
  • Oh yeah also you get four parameters max, but I've never run up against that barrier (but I've also never used UnityEvent to link together whole gameplay systems before).

Again, I've no idea what other event systems are like--all I know is, UnityEvent lets me use the editor to connect systems~

Pretty much just any system where you push out events, and they get picked up by any listeners subscribed to listen for those events.

Definitely sounds like it's worth me having a look at though, it would be nice to not have to make my own on projects if Unity has one that's robust.

Glad it worked for you!

Submitted

Ah, okay, simple enough.

With UnityEvent, you can add listeners from the editor, complete with up to (I think) one static, unchangeable-at-runtime parameter. I've no idea if that's common (it is among replacements), but I know I love it to death~

(Actually, it's the very same thing the GUI system uses for buttons and the like. Maybe you knew that already....)

Submitted

In our game, "A Light in the Dark", the hands were too small and were placed very close to the camera because of that, and when we added the lamp, it was either way too small in the world or way too big in your hand, so I just made it change its size as you picked it up and dropped it.


Also, for enemies noticing the light, I wrote some math that calculates the light level, but it was not at all accurate in actually calculating the light level. I called it good enough when I got the output number to grow as the light got brighter.


https://itch.io/jam/gmtk-2019/rate/463759

Calculating light level is a pain, I feel like I would just cheat and manually position trigger volumes or something based on eyeballing the light haha.

I suppose that doesn't factor in obstacles though!

Submitted

Yeah, it also doesn't factor in the fact that the light in our game gets brighter the higher it is

Submitted (1 edit)

One of the best moment it this game jam for me was when I implemented the jumping mecanic for the enemies. So basicly when an enemy come close to you it jump on you. What I didn't expect was that it allow the enemy to jump over the only projectil of the player. The was a total surprise and I used the idea to create an elite enemy that avoid the player attack and make thing much more interesting.

Also In my game when the Player GameObject is deleted it crash the game because some script need it.  So when the Player died, rather than deleted the GameObject I move it under the map and set it's speed to 0.

Check it here https://thebigroom.itch.io/harpoon-labyrinth

Submitted (1 edit)

I wanted to build my game from scratch, without engines or libraries. I ended up not using any assets either, mostly to save time looking for them and managing them. Instead of assets I just used emoji, which are really easy to work with (at least in the canvas API), since I can use the emoji directly in the code. The big downside is that the look of the game does change between different platforms.

There's a bunch more smaller hacks that I use to save time. If there's other plain html5 devs out there that are interested, I'm happy to share some of these.

The game is here:

https://kaesve.itch.io/pocket-rocket

Haha, the weird thing about having 'skins' of your game based on platform is it sort of mirrors reskin mods for traditional games.

(+1)

Hey, just played your game! I really liked the UI you built around 'linking' the generator to boosters, rather than just hitting a switch or something like that. It really clearly communicated that you could only have one booster on at a time, as well as felt good to do.

We went through so many iterations of the 'No' indicator at the bottom of our dialogue boxes (it's supposed to double as a timer), it's nice to see the focus you put on having good UI.

Submitted (1 edit)

Our game (right here https://itch.io/jam/gmtk-2019/rate/463306) is physics based (can you see where this is going ?), made with Unreal Engine 4 (CAN YOU SEE WHERE THIS IS GOING ??) and the player controls a bullet which, of course, moves at high speed (you probably see where this is going) and so if the player tries to go through the floor with enough momentum, they glitch out of the universe and have to restart the game.

How did we fix that ?

We hoped the player wouldn't try to go through the floor.

Just played your game!

Your hope paid off, I uh... didn't try to go through the floor?

So glad I didn't have to deal with physics programming for Negative Nancy.

I still have nightmares about forces and counter-forces...

Submitted (1 edit)

I can say that I'm a bit normal tier when it comes to coding a game, But when it comes to art & animation... I'm damn horrible. So this jam (as always) I've gone nuts and did some programmer art & programmer juice.
One example of my hacky programmer juice is that I've abused (a lot of) programmatically (procedurally?) generated animations (aka spamming cos()/sin() and random() functions) to add some amount of juicy feeling.

Here, The GIF below is one of the motion that can be seen in game, And below that is the code that I used to make it come alive.

Motion:

Code :

Quite a programmatic apocalypse, And beautiful... Isn't it?
(Also looks like my code readability is just as horrid as the hack... lol)

(PS2 : oh yeah.. the link for those curious adventurer, You can see this tech in action : https://zikbakguru.itch.io/game-game-game-game)

This looks great!

Next time you're at the normal-tier programmer's ball, push your glasses up your face with one palm and state to the room:

"Mmwhy yes, I have indeed dabbled with procedural animation."

You'll be the life of the party!

Seriously it looks great, thanks for sharing your code! I rarely have the luxury of working with an animator, so stuff like this is super helpful. I think the outcome looks fantastic!

Submitted

Well, I did something "hacky", but I later found out it didn't work as intended...
So what I did was, when you die in my game, you just respawn without the scene loading, as I thought it'll cut the loading screens time.
But, after adding new ideas, it didn't help at all, as enemy health didn't reset at all, and there were a lot of mines on the field! There were many bugs in the game, I found out recently!

If you want to try it out, here it is:  https://itch.io/jam/gmtk-2019/rate/462383

Oooh yeah, that can be a pain.

I don't like getting scenes to reload in Unity either, but you do have to think up your own ways of managing game-state if you don't use it.

If you have some kind of levelStart() function where you spawn all the enemies and such, that could be a good place to reset everything?

Submitted

Bit Late on this but I kinda cheated on graphics for myself, I dont have much talent on digital art so it was faster for me to hand draw all my art. I did a card game (https://ilprinny.itch.io/one-card-income for context) so I saved time by hand drawing then just taking a picture with my phone. the rest of the graphics are unity defaults!

The picture of your hand for the drake made me laugh.

Your game is faaaaantastic by the way! Totally hooked me.

I would love to see you develop it further!

Submitted

thanks so much, yeah I totally ran out of time for the drake xD and I've been working on a "Patch version" for post jam with plans to work on it further. Would love to see where it can go 

Yeah for sure. The cool thing about a game like yours is that it's really easy to commission art to spec, so you can make it look reeeeeally good on a shoestring budget once you're happy with it!

Submitted

yeah, if I decide to invest in it I probably will get prober art. I Think I may do the art myself, it will be good practice incase I cant invest in a future project. I dont how far I will take it yet so I'm uncertain for now.

Submitted

This is less of a hack and more of "I'm too lazy to do it the right way"

I'm using Godot for my entry https://mrcdk.itch.io/only-one-finger-driver-mark

Godot UI system is really powerful (the Godot's editor is made with the same UI parts you have access in the engine) so  I used them to create all the "GUI" elements in the game. My game gimmick is that you only have one finger so I wanted the cursor to be that, only one finger. Each UI element in Godot has a property to select the mouse cursor it will use (the arrow, the pointing hand,...) when you are interacting with it. Because my game uses a lot of those elements, changing the cursor mode to each one would take a while... unless you are me and do this in a autoload/singleton (in Godot, a node that loads at the beginning before the scene is loaded and is always loaded) :

func _enter_tree(): # a function called by the engine when the node first enters the scene tree
    # set the default cursor to pointing hand
    Input.set_default_cursor_shape(Input.CURSOR_POINTING_HAND)          # load a custom graphic for the cursor          Input.set_custom_mouse_cursor(preload('res://assets/hand.png'), Input.CURSOR_POINTING_HAND, Vector2(17, 5))
    # connect the scene tree "node_added" signal to the function "_on_node_added"
    get_tree().connect("node_added", self, "_on_node_added")
    
func _on_node_added(node): # the function connected to the scene tree "node_added" signal
    if node is Control: # if the node added is a Control (base class for all UI elements in Godot)
        node.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND # Set its default cursor to be a pointing hand

Part of https://github.com/mrcdk/gmtk_gamejam_2019/blob/master/Globals.gd
This way, I made sure that the cursor will always be the pointing hand one and didn't have to worry about adding new UI elements.

Another "I'm too lazy" moment was inputing the text in the fields. I really didn't want to code an input field from scratch... so... I created fake input key events when clicking on the on-screen "keyboard" buttons here https://github.com/mrcdk/gmtk_gamejam_2019/blob/master/Keyboard.gd and blocked all the input events that came from the physical keyboard:

func _input(event):
    if event is InputEventKey and not event.has_meta('fake'):
        get_tree().set_input_as_handled()

Part of https://github.com/mrcdk/gmtk_gamejam_2019/blob/master/Main.gd
Notice how I set metadata in the fake key event I generate in keyboard.gd and only consume the input key events that aren't marked by that metadata (all the ones triggered by the physical keyboard) 

So, some explanation on how this work. In Godot the input event system has the following flow explained in the documentation. As you can see, first the _input() function will process the event and, if the event isn't handled, then the GUI input will process it. Because I'm dealing with GUI elements, if I handle the input event in an _input() function I'll be sure that the event won't reach any GUI element. Put 2 and 2 together and that's how I did it.

That's unreal.

You're the living embodiment of 'that'll do'.

I applaud you.

Submitted

Our character is two halves connected by a tail. The tail joints kept breaking so we had to increase the position calculations in Unity and devise a system to reduce the characters movement force the faster they go ':D

See how it turned out: https://itch.io/jam/gmtk-2019/rate/463922#post-881731


(+1)

That kind of physics engine manipulation makes my teeth itch.

The result was great though! I had a wonderful time winning your game.

I think it would be totally worth tightening up the physics and expanding this out into a little game, it was really fun, even playing it solo!

There's a great GDC talk by Bennett Foddy on YouTube talking about gamefeel guidelines for physics, might be worth tracking down?

Submitted

Thank you I'll start looking now :D If we continue it I'm not sure using Unity's physics is the right option either. The joints are just so easy to break just by doing things like setting constant velocity. Also, I've played it solo so many times testing it I've gotten good at it :'D

Ah, here it is! Give some of this a go before rolling your own solution, maybe?

https://www.youtube.com/watch?v=NwPIoVW65pE

Submitted

Thank you, watching it now! :D

No worries, let me know what you think! I found it helpful.

Submitted

Hey! My team and I attempted something quite tricky for the jam, but I'm super proud of it and it would mean a lot if you were able to take the time to give it a play and rate the game!

MICROVANIA - A One Screen Mini-Metroidvania with a Twist!  

https://itch.io/jam/gmtk-2019/rate/462198

And a few notes to help you play it! (The Game Jam build has a few bugs and quality of life issues) 

  • - It works with Keyboard OR Gamepad 
  • - You can view the controls in the menu (Esc or Start) 
  • - The Player has 3x Health but will be instantly killed by Dragon Fire
  •  - If you die twice, you should close and reopen the game (it breaks more and more with each death) 
  • - There are two Winning Endings (You Kill the Dragon, or You Give the Dragon What it's Looking for!) 
  • - There are 5 secret Gems hidden throughout the game if you can't find the last one, keep looking!

Ah, yes I gave it a play on the first day I think!

Do you have any stories of dodgy hacks you had to pull to get it working?

Share!

Submitted

Yes, actually! Sorry, I meant to write more than my copy/pasta, but I got caught up!

We had to get SUPER hacky and call in reinforcements!

The core team was myself and my programming buddy, Damon.
On Saturday we realize we overscoped and overplanned a bit, but not to be outdone, we called in one of my other coder buddies to give us a hand. He got the moon up and running and started on the dragon but had to leave in a rush and wasn't able to give us any progress on the dragon. On Sunday, we had most of the game running, but had no dragon!

The dragon was vital to giving reason for one-screen!

So I called in another programming buddy and he gave us 5hrs to cram the dragon in!

We couldn't fit anyone else on the Unity Collab group, so we had to send unity packages back and forth between the two others who joined late. The dragon originally was going to breathe fire in a bomber-man format, but in the time crunch we had to mix it up! The dragon is completely tied together at the last minute. 

That and every asset you see is from the asset store!

"Slides curly bracket cut out over the spotlight on the roof"

PROGRAMMERS, ASSEMBLE

(2 edits)

My main menu and game over screens are just pictures slapped on top of the game level. If you press jump on the main menu it even plays the sound effect.  I had my 11 year old daughter voice Zeus

https://padr81.itch.io/by-zeus-beard

Perfect.

Considering zeus' penchant for shapeshifting, who can say that zeus CAN'T be an 11 year old, haha!

Good point, I can now say that was intentional and not a hack.

Submitted

In our game SURVIVOR, I left the main menu design and programming to the last few hours. The menu consists of 3 buttons (Next Level, Previous Level and Play). After laying out the buttons, I discovered that they are not working and do not respond to mouse clicks. I think the error was due to the pixel perfect camera but I had no time to debug. Therefore, I added 3 lines of code to do the button function by keyboard presses (Left, Right and Space) then changed the text on the play button from "Play" to "Press Space to Play". I then assumed that I never planned to add clickable buttons to the menu (the button are still there just for cosmetics :D).

We also had a hedgehog-like enemy which I wanted to give a rolling attack or spine melee attack but I didn't want to animate any of those. So I changed my mind and made it use the same bullet attack I was making for the cannon enemy and assumed that they are gun-armed hedgehogs.

The only other hack I always use in any jam (which seems to be pretty common) is the large singleton class "GameManager". Any info that needs to be known by everything is there. It is also responsible for all of the sound effects (except jumping which I dirtily embedded into the character controller). I know that this is a horrible programming practice but tight deadlines always wins over code cleanness every single jam.

Submitted (1 edit)

1) death trigger was originally quickly implemented as a test on whether position.y was lower than some constant (like, -10). However in one of the scenes the level was moved around a bit and was entirely below that constant, so... yeah, we had to change that quickly ^^

2) again with death triggers, I didn't have the time/didn't want to look how to restart/re create the player object/relink it to the camera and so on, so death is actually just a Teleport of the player to the last checkpoint. This can be seen whenever there are moving platforms around, as they don't reset.

https://itch.io/jam/gmtk-2019/rate/459177

Also not a hack per se, but since this was our first time using unity (we only had a few hours of xp with it watching a couple of online tutorials) we lost quite some time with functions that where not performing as advertised in the documentation, becouse those functions where meant for 3D games and we had to use the 2D variant... After loosing like 1.5 hours on one of those and 30 minutes to another, I put up a sign on the desk in big letters : "DOESN'T WORK ? TRY ADDING 2D AT THE END OF THE FUNCTION!"

Submitted

I really wasn't liking my game's looks for most of the jam, so halfway through I decided to draw a cupcake to calm down... Turns out it looked cute in the game with a different color palette so i just went with it xD

Cupcakes ftw. :) 

Here's the free cupcakes --> https://itch.io/jam/gmtk-2019/rate/462549

(+1)

Hey, just chucked your game a rate! It's a really cute aesthetic, had a good time with it.

Those cupcakes made me hungry though.

We had a similar moment when we accidentally doubled the dialogue text in Negative Nancy, and it created a drop shadow effect that looked so much better. (for context -->https://itch.io/jam/gmtk-2019/rate/462193?after=40#post-887310)

It's the best when stuff just works out (feel like it's a rarity in game dev, haha)

Submitted

I swear, for the majority of the development time, I was using THIS to check for negative numbers:

str(move.y).begins_with("-")

What that means is I was converting the characters vertical velocity into a string and checking if the first character was a minus sign.

._. Don't laugh, I was in a hurry.

I eventually went on Reddit for help on an unrelated bug and got schooled on that and other crappy code lol. Thank you random Reddit user for making my game run better.

Submitted

I accidentally left the dev "skip room" button in my game's final build.  1 commenter found it.

Submitted

in my game, there are doors that make a sound as they open. The doors are opened by specific light switches. I wrote a system for making the audio quieter as the distance to player increased. 

In one of the levels, the player activates a switch to open a door that’s pretty far away. I had an issue, though, the door was so far away that the the audio’s gain was 0. So, rather than fixing the audio system, I just placed another door in the level slightly offscreen so the sound would play from that door instead as it opens offscreen. Problem solved!

Submitted

Crafty!