I entered a 5-day game jam last weekend, called the curdle jam, with the theme “clumping together”. The Jam had 60+ participants with 12 entries by the end of it. You can see all of the submissions here.

Out of the 12 I played:

Unfortunately, most of the games were downloadable EXEs, which I’m not totally comfortable with. Still, I plan to play some of the rest of them

You can check it out on Itch.io here:

Or just play it right here:

The main mechanic involved sticking to other objects in order to reach a goal. Even though the time limit was 5 days, I didn’t start till close to the end, so I stuck with a 2D game, with circle collision only.

The goal ended up being something you just had to reac. Sometimes its out of bounds, or has obstacles, so cumping together with “friends” is the only way to reach it.

Each level has a basic boundary, made up of a bunch of overlapping circles. The player can’t leave the boundary, but the “friends” can. Levels can also contain baddies, that will kill you and your friends. If it kills a friend in the middle of a long chain, you’ll separate from those friends and have to pick them up again.

The main challenge during development was parenting and un-parenting the friends. Once rotation was added into the game, it needed to be taken into account when calculating the offset. Instead of doing the maths on paper, I did it in my head and used trial and error till I got it right. If I did it again, I might have even chosen to use rotation matrices instead.

The game was written in typescript, and transpiled/minified by Webpack. Its become my standard for game development just because its fairly painless to set up, and of course browser games are more accessible. In the end, the code (zipped) ended up only being 6kb.

I actually use Pinterest to find gamedev inspiration, and colour palettes. Restricting myself to only 5 colours really helps save time. This one was a simple gradient from a dark slate blue, through a muted red, to a yellowy white

Leave a comment

Your email address will not be published. Required fields are marked *