GMTK Game Jam 2024 - DevLog #2


Hi !

Daugsilius here :)


Second day of the GMTK Game Jam 2024 !

It took me a while yesterday to decide on a concept for this game. My ides were either seemed either not fun to play, too hard to code, or just not very inspiring for me. But I ended up finding one I like and that seemed doable :) It's mostly a play on all the meanings of the word "scale".


It would be something like "Scales Cubed : help your scaly friends to scale blocks as high as possible - but be careful not to tip the scales".

The core gameplay loop is to stack blocks on both plates of a weighing scale in a 2D world. The blocks follow physics, so they can tilt, bounce... And the challenge comes from having to balance the scales at all time, by placing blocks on each side fast enough. And of course, you have a finite amount of blocks and their size and weight is randomized.

For flavour, there will be a small lizard (a creature covered in scales) on each side, that climbs (or scales) to the top block if things are stable.


That's already plenty !

It might be a race between both lizards, but the balancing challenge forces you to pile blocks for the opponent too.

Or the lizards might be partners, and the goal is simply to go up, either up to some fixed height or just as high as possible.


There are not many systems to implement, but they're still no joke :

- the weighing scales mechanics, with plates that move up or down based on weight difference and make you lose if the weight is too much.

- procedural block generation (that hopefully does not get the player stuck).

- lizard animation.

- lizard pathfinding, to get to the top block.

- an entire physics engine to resolve 2D block collisions and find which blocks should apply weight XD


It fits several of my personal, technical goals for this jam :

- procedural generation.

- rewind/undo mechanics (I'm hoping I can introduce a limited "Undo" option for the player).

- optionally, some math-based animation (for the lizard movement).

- optionally, a turorial mode.


I have started to work on the block physics part, but it's way more complicated than I expected.

After a few hours, I have gravity and collisions (from the top) with bouncing that mostly work. But I had to fix an issue with perpetual bouncing by a few pixels when a block should be resting on the one below, and that fix is really ugly... And I don't yet have block rotation, collisions from the side or bottom, collisions when edges are not parallel... I looked up some of it, collision resolution involves computing "impulses" from "relative point velocities" and "inverted "moment of inertia matrices".

Now, I'm OK with all that. I come from a scientific engineering background, I've studied some of that, I'm confident I can code a reasonable 2D rectangles physics engine. But in the given time frame (2 weekend days + 3 evenings), it seems very unlikely to get it done correctly. It's probably wise to just pick up an existing open source 2D physics engine and focus on my game's specifics. Even though it frustrates me :)


For those who are interested, I found a good tutorial on Youtube : https://youtube.com/playlist?list=PLSlpr6o9vURwq3oxVZSimY8iC-cdd3kIs&si=UgHkwGJLWcGjWLO-. They also share the final product (FlatPhysics).

For my framework (C# Monogame), there also seems to be another engine called Aether : https://www.nuget.org/packages/Aether.Physics2D/. I'll give this one a try.


Next update this evening !

Get Tower of Scales - GMTK Game Jam 2024

Leave a comment

Log in with itch.io to leave a comment.