One Step Forward
A narrative platformer built for Shovel Jam 2025, focused on emotional friction and movement-heavy level design under game jam constraints.
Overview
One Step Forward was my second game jam project. I built it with three friends for Shovel Jam 2025, running from July 12 to July 21.
Out of 1,147 entries, we placed #34 overall.
The theme was “Just get started”. We interpreted that as progress through internal resistance, then built four platforming levels around four emotional blockers: Perfectionism, Distractions, Overthinking, and Fear of Failure.
Core Loop
The game is a 2D platformer with four short levels. Every level shares the same movement foundation, but each one introduces a different obstacle pattern and framing mechanic.
The player objective is simple: move through the level and reach the finish. Under that simple goal, the design tries to connect movement pressure with emotional themes instead of relying on dialogue-heavy exposition.
Technical Build
Because this was our second jam, we intentionally aimed bigger than our first project. Moving from top-down gameplay to a movement-heavy platformer raised implementation complexity fast.
Beyond left-right-jump basics, we needed dash directions, wall slide behavior, wall jumps, and cleaner animation transitions. To keep the code manageable, we built a locomotion state pattern and reused the same state pattern for animation handling.
A typical state controlled enter/tick/exit behavior, which let us coordinate movement logic and effects in one place, including dash particles and animation clips. We also added observer-style event handling where useful to reduce hard references between systems.
With a 9.5-day schedule, we still made room for game feel polish: screen shake on key events, particles, and stronger audio feedback.
Level Breakdown
Perfectionism
This level introduces the idea that “perfect execution” is not required. The main mechanic is a time-trail ghost that replays a perfect run, while the player still progresses with their own mistakes.
Distractions
Distractions is built around optional paths, visual noise, and tempting side routes. The critical path is straightforward, but many spaces invite detours that do not help completion.
Overthinking
Overthinking provides multiple valid paths to the finish. Most routes work, so the player does not need to over-optimize every decision.
Fear of Failure
This level is mostly dark except for local light sources. Torches act as both visibility tools and checkpoints. On death, a ghost replays the player path from checkpoint to failure, while also emitting light.
That turns past mistakes into navigation help for the next attempt, making failure both pressure and guidance.
Key Mechanic: Time-Trail Ghost
The ghost system records player positions frame-by-frame, then replays that path directly. This gave us a flexible replay mechanic without rebuilding full character simulation for AI clones.
Because ghosts are visualized as hovering entities instead of full humanoid movement, we avoided expensive animation-state parity and kept implementation practical for jam scope.
Outcome and Lessons
One Step Forward performed well for our second jam and gave me a much stronger development process than our first attempt.
The biggest gains were architectural discipline and documentation quality. Using design patterns early prevented the movement code from collapsing into one large controller script, and that made iteration much faster during the jam.
The clearest weakness was communication clarity in a few moments where narrative were conceptually strong but not always self-explanatory to players. That is the main improvement target for future projects.
Play the Game
You can play One Step Forward on itch.io: One Step Forward on itch.io