GMTK Game Jam 2025 Devlog: I Made A Game!


On 30 July – 3 August, I participated in the annual GMTK Game Jam. It ran for 96 hours, but even though that’s exactly four days, I will structure my journal as 5 days as it will reflect how I actually spent my time a little bit better.

30 July 2025 – Day 1

On the first day of the jam, the theme was announced. This time, it was… Loop! I quickly went to brainstorm for ideas. A sort of ‘obvious’ idea for me was to do something based off Majora’s Mask, like have some story elements that you slowly progress through as you gain more information/abilities across different runs. I tried thinking of more ideas for a while, but soon after I decided to draft a little story.

That’s where I ran into a bit of a problem: drafting up a good introduction alone took an hour or so, and I could quickly see that this wouldn’t go anywhere as I wouldn’t be able to code in all of the story before the jam ended due to scope.

I then did what I usually do on day 1 of a gamejam and implemented a basic player controller, sketched the player sprite, decided what the genre of my game would be (something between a puzzle-platformer and metroidvania), tried to think of some interesting game mechanics, and set up some important Unity project settings (16:9 resolution in play mode, turning off anti-aliasing, and so on…) When coding in the movement script, I was slightly annoyed at the VS Code’s automatic code aligning feature and wasted a decent amount of time searching how to turn it off before ultimately giving up and going to sleep for the day.

Lessons Learned: don’t be afraid to reject ideas, know the basic project settings needed to make a 2D platformer work in your game engine, and focus on mechanics rather than story on the first day.

Wise Decisions: Using Git! It really helps to track how your project evolved as time went (and write these devlogs as a result :) )

31 July 2025 – Day 2

I finally had some decent ideas for my game and did some paper sketches of the concepts and interactions for all my game mechanics (Rewind, Reverse, Pause/Play, Fast Forward and End tools, the Moving Blocks, Falling Blocks, Beanstalks, Spikes, Flags, and the Waterfall tiles and ON/OFF blocks which didn’t make the final cut).

I then alternated between trying to code their logic in, drawing their sprites and messing with the map UI. In the end, I managed to make a very flexible and customisable code for moving tiles (you can specify the entire path of a tile in the editor!) which I was quite proud of, added acceleration and improved collision detection to the player (and improved the platformer physics in general), and made the map UI open when [ E ] was pressed.

So, for the most part, this day was good in terms of progress. However, I made a horrible decision on this day, which was to use loading zones for camera movement. I would have to manually specify: a) the player’s x- and y- coordinates after going through the loading zone, b) the camera’s x- and y- coordinates after going through the loading zone, c) the x- and y- coordinates of the room in the map array after going through the loading zone, and d) the room group of the new room. This stupid decision would come back to haunt me on day 5.

Lessons Learned: Overcomplicating your player controller physics isn’t always a wise decision. Also, loading zones are a stupid idea in a game jam setting and there are often better approaches to solving a problem than the first one you think of (I realised I could’ve used the floor function right after the jam ended…)

Wise Decisions: Prioritising gameplay mechanics.

1 August 2025 – Day 3

I coded in the logic for falling tiles, spikes, flags, and beanstalk tiles. I also coded in most of the Fast Forward and Rewind tool logic. I also implemented most of the UI logic. I also finished drawing all of the object tile and UI sprites. I had a lot more planned for the day, but couldn’t finish it all.

Lessons Learned: Having a clear plan of what to do next is good, but the plan has to be realistic and keep what is unnecessary to a minimum. A game jam game should prioritise fun and interesting mechanics, not managing horrible UI design. Also, remember to keep up the game jam pace, but get some necessary sleep!

Wise Decisions: Writing down a plan for the next day on paper.

2 August 2025 – Day 4

I coded in the logic for picking up items and abilities, implemented all of the ability mechanics, and added some animations.

I also completely overhauled the player model, making it closer to a 1:1 blob-shape rather than a 1:2 humanoid shape (The reason was, obviously, to reduce the animation frames I would need to make); this affected a lot of the physics and collisions I had implemented so I had to fix those.

I then made all of the sound effects I would use in the game, finalised the camera and project settings, and designed some tutorial graphics and backgrounds for my levels. I did some playtesting of the mechanics across the first four days and was happy with the results.

I was now done with playtesting, and could finally do some proper level design.

Lessons Learned: try to finish the prototyping phase earlier, ideally when at most ~40% of the jam time has passed so that you have more time for playtesting and level design. Don’t make rushed last-minute decisions that could completely ruin your game.

Wise Decisions: sketching a rough draft of the map with level layouts/names on a paper map; this really helped on Day 5.

3 August 2025 – Day 5

I first composed two music tracks for my game using LMMS (ended up using only one of them though since I had to cut the intro screen out of the game).

The rest of my time on the last day was spent designing the levels, grouping GameObjects together in the Unity Editor and setting their values, and doing some rushed last-minute playtesting sessions to make sure the game was at least somewhat playable. However, I did still end up putting the game out in an unbeatable state :)

The most annoying thing in this day was getting the correct values in for all of the loading zones (again, it was such a stupid decision… If I hadn’t used loading zones, I could’ve probably made at least 2 or 3 more levels).

While designing the levels, a storm caused a power and Internet outage. Obviously this meant that I had to hurry up as my laptop battery drained quite fast (due to having like 10 apps, including Unity, open all at once). When it was at around 20%, the power thankfully returned and I could finish working on my game and submit it in time. I submitted my game to the jam and was happy that I managed to do it.

Lessons Learned: don’t leave everything to the last minute! There are some things (the servers crashing, thunderstorms) which will slow you down but you cannot control.

Wise Decisions: submitting my game, even if very much in an unfinished state, to the game jam so that I get some valuable feedback and improve!

After the Jam

I designed my game page, received some feedback for my game, and played some incredibly fun and creative games that others had created. I didn’t get an incredibly high score, but I would say it’s still quite decent (not my worst game!).

In terms of the complexity of the game’s code/mechanics, I would even say it might even possibly be the most stuff I coded in for a single game yet. Obviously, when it’s unfinished, the score drops down pretty low, but I’m still pretty happy with my overall game idea and don’t care much about the score. In this jam, I learned a lot about UI, physics, collisions, designing metroidvanias and many other things; received a lot of useful feedback for improvement; and that’s what really matters. And I’ve realised that metroidvanias just don’t usually make for good jam games, especially if you’re working alone – there’s just so much you need to implement, so I’ll probably stick to puzzle games for later game jams.

I will continue development of this game, with the first update (the Postjam Version, releasing soon after this post is out) focusing on implementing a lot of the key feedback I’ve received and fixing most of the bugs, while still staying true to the Jam Version (in particular, there will be no new levels for now). In future updates, there will be new levels and features, so look out for those!

Files

Jam Version.zip 20 MB
30 days ago

Get Breaking the Cycle

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.