The Long Second

GameMaker Studio 2 | Time-Manipulation Puzzle Platformer

Made with: GameMaker Genre: Puzzle / Platformer Status: Released
Title screen of The Long Second

The Long Second is a 2D time-manipulation puzzle platformer made solo in four days for the 2026 GMTK Game Jam under the theme Countdown. In the game, you have ten seconds to escape a set of chambers designed to test your skills with four ways to bend time around you: rewind, slow, pause and fast-forward. Hwever, the player does not get affected by the time changes. You always move at 1x speed, and gravity never stops, so freezing the world will never carry you across a gap.


I had built a time system for a jam once before. Replica recorded player inputs and replayed them through the movement system, which worked because it only ever had to reproduce one object: the player. This time the whole level had to be able to bend to the time abilities given. All obstacles and platforms needed to be manipulatable. So I went the other way and gave every dynamic object a ring buffer of its own state, written each frame and read back during a rewind. Objects declare what matters about them in their Create event and the component does the rest.


The rule that made it hold together was learning not to store anything I could recalculate. My first pass snapshotted everything, including values derived from other values, and rewinding produced objects that were subtly wrong like a mace whose angle no longer matched its rotation count, a pendulum that drifted off its arc, etc. Once I switched to snapshotting only the true inputs to each object's motion and deriving the rest after the restore, every one of those desyncs disappeared at the same time.


GML only allows one parent per object, which was a problem when a moving platform needed to be both solid and rewindable. Rather than fight the hierarchy I wrote the time system as a set of functions any object can opt into. The time_init, time_can_act, time_scale, time_step functions we written so a platform inherits from the collision parent and still gets full time behaviour. Every obstacle I added afterwards plugged into it without the system changing shape, which is the clearest sign I have had that an architecture decision was the right one.


The jam version shipped with an hour to spare and the feedback was consistent: players used freeze for everything and barely touched the other three powers, and sadly, they were right. Freezing time stopped the countdown as well as the world, so it cost nothing, and most of my chambers were built around threats rather than distances. In the post-jam version, I rebuilt every chamber around the three things freeze genuinely cannot do such as crossing a gap, restore something already gone, and create something that has not happened yet. I also rebalanced the costs so freeze became a scalpel rather than a default. Reading that feedback was super beneficial as it helped me re-iterate the game to the polished state it has become today.

GameMaker GML GLSL 2D