Game Maker's Toolkit Game Jam August 2025

Introduction
A year has gone by since I tried game development for the first time in a decade, which means it’s time again for the Game Maker’s Toolkit Game Jam. This year theme was “Loop”.
My idea merged Feed The Deep, where you collect items while diving to buy upgrades, with an iterative time loop like in Outer Wilds and Prey Mooncrash, but with a map that loops around top to bottom.
Development
The first mechanic to implement was the looping map. The map is made up of four segments, coloured for debugging.
The camera shows less than a whole segment’s height, allowing segments to be swapped to either end to give the illusion of a continuous loop. The logic is based around there always being a non-visible segment either side of the one or two visible segments. If the first segment is visible, the fourth segment is inserted before it, and vice versa.


After 2 hours work, with that in place and basic player movement, as well as a countdown until the loop would reset and a safe zone where the timer stops and resets, the game looked like this.

I couldn’t work on the game for much of Thursday as I took my niece to Lichfield Maze Maze, but I did draw some designs for the map (it is in a way a maze, so it was research, right?).
On Friday I started working on items you can pick up. I reused the basic logic from another game I’m working on, and some gem icons by AntumDeluge as the dropped items. I had originally planned to have a greater variety items, and an economy similar to Moonlighter where the more you sell an item the less people will pay, but I ran out of time and it didn’t fit the eventual story I crafted. I also designed the player’s inventory UI and a vending machine to sell gems and purchase keys and upgrades, and doors you can open with the keys. The doors will reset when the loop resets.
The map was drawn with the Cave Tileset by MrBeast on Open Game Art. By Friday evening, with the first part of the map drawn, the game looked like this.


The gaps are because the tileset uses a foreground and background tile for the bottom overhanging cliffs, so the player can be slightly obscured. This then highlights a bugbear with the new TileMapLayer
node. Because of the way I structured the world, each of the cycling map segments is a TileMapLayer
, but the controls for switching layers therefore go from segment to segment. To allow the player to be obscured by foreground walls, I added another TileMapLayer
as the child of each MapSegment
, but Godot will not switch between those layers with the next/previous layer buttons. If each MapSegment
was the old TileMap
node type instead I would have access to both the base and foreground layers directly on the node. In the end I programmed the MapSegment
to identify the tiles that need fixing and automatically place the right tiles on itself or its child TileMapLayer
.

By Saturday morning the first two map segments were drawn and populated with items and doors.

After drawing the next two segments, including the control room with the button to stop the loop (but requiring a keycard to access) I added a one-way drop on the left of segment 1. With the rest of the map designed this is the only occurrence, but it could be used more if the game had additional, perhaps procedural, levels.
The next step, on Saturday afternoon, was upgrades to sell in the vending machine. There are two types, those that increase your inventory capacity and those that give you more time. These went through several iterations to adjust the price and the benefit they give you.
By Saturday evening the game was mostly complete, and playable through to the end (with an outro screen showing how long you played and how many gems you collected). I redesigned the safe zone and control room with space sci-fi tiles by Hyptosis on Open Game Art to make them visually distinct, and make it clear when the player is or isn’t in the safe zone. I also added a main menu and an intro cinematic explaining the background lore.
Sunday was concerned with polishing the game, including a menu explaining how to play, menu background images of mines and caves from Wikimedia Commons, and creating the itch.io page for the game. In the last few hours I also added sound effects when opening doors, picking up items and selling at the vending machine.
“Round and Round” was developed in Godot 4.3 . I wasn’t a fan of the new TileMapLayer
node when I used it in my last GMTK jam, and I’m still not convinced. I think I’ll stick to TileMap
unless I’m sure I’ll only be using one layer. Hopefully TileMap
, while deprecated, remains in the engine for a long while.
Feedback and changes.
Feedback on the game during the jam included:
- Increase the player’s movement speed. I concur.
- Add upgrades to increase movement speed. I had considered this originally before deciding on increasing the available time instead.
- Reduce the price of the upgrades.
- Adjustments to the controls, including allowing movement with the arrow keys.
- Make it clearer what the upgrades to. There are tooltips but they don’t show up immediately with the mouse, and not at all with the keyboard or controller. I think there should also be a menu for the player to review upgrades.
I also feel the gems should be embedded into the walls to gel with the story theming, as they’re supposed to be being mined. And I think the character should be animated. He’s currently a sprite from Kenney’s Tiny Dungeon asset pack, but at least he faces the direction he moves.
Since release I’ve patched the game to add instructions to the pause menu in addition to the main menu, rework the movement and fix some bugs. I’ve changed the inventory selection buttons to be PgUp/PgDown and shoulder buttons in the latest release, which frees up the arrow keys for movement and allows menu navigation with the left analog stick on controllers too. Further changes to implement the above suggestions will be made in the next few weeks.
Finished Game
You can play the finished game, and find future updates, over at itch.io.
Enjoy Reading This Article?
Here are some more articles you might like to read next: