CHAO BIAN / SELECTED WORKAll projects ↗
GAME DESIGN & DEVELOPMENT / 2025GMTK GAME JAM · THEME: LOOP

Echoes
of Time.

A 2D puzzle game where rewinding time turns your past actions into a physical partner, creating puzzles of timing, passage, and cooperation.

Play on itch.io ↗
Echoes of Time title screen in a pixel-art stone courtyard
GMTK GAME JAM 2025 / ECHOES OF TIME

Built with external art and audio assets. Asset credits on itch.io ↗

01 / THE CORE IDEA

Your past becomes
part of the puzzle.

The jam theme “Loop” led me to time loops, then to rewind. I designed and programmed a system where rewinding creates an echo of the player’s recorded actions. The player stays at their current position while the echo returns to the beginning of its recording.

Once time moves forward again, the two share the same physical space. An echo can hold a switch, open a route, or block the player in a narrow passage.

  1. 01 / RECORD

    Make a plan.

    Move, wait, or keep moving toward a closed gate. Plan the actions you want your echo to repeat.

  2. 02 / REWIND

    Stay. Turn time back.

    Press R to rewind the recording and recover countdown time. The player cannot stop rewind early.

  3. 03 / REPLAY

    Act alongside the echo.

    The echo repeats the recorded movement, then fades out. Its limited duration makes waiting part of the plan.

02 / A PROGRESSIVE INTRODUCTION

Teach one consequence
at a time.

The first three levels separate the system’s ideas: creating an echo, recovering time without losing position, and using a past action to change the environment.

Player and echo together after rewind in the starting courtyard
GAMEPLAY STILL
LEVEL 01

Meet your past self

Introduce the hourglass and rewind. The player creates an echo that repeats their previous actions, then continues from their current position.

Gameplay excerpt · Normal speed · Captioned
LEVEL 02

Recover time, keep your ground

A deliberately short countdown makes a direct run fail. Rewinding restores the countdown while preserving the distance the player has already covered.

Echo holds switchPlayer passes gate
GAMEPLAY STILL
LEVEL 03

Leave someone at the switch

For the first time, an echo must hold a pressure plate. The player records time on the plate, rewinds, and uses that window to pass through the gate.

03 / FROM SYSTEM TO LEVEL

Two puzzles.
Two ways of finding them.

Level four grew from an unexpected behavior in testing. Level five began with a planned solution that shaped the implementation.

LEVEL 04 / A DISCOVERY IN TESTING

Make room for your past self.

Testing revealed that the player and echoes could physically block each other. After considering whether to remove that behavior, I kept it and designed a level around a shared narrow passage.

The player must coordinate route and timing with the echo: which one enters first, when to wait, and how to leave room for the other to pass. Recording a successful route is only half of the solution; the player must also be able to coexist with it.

PlayerEchoPlayerEchoShared narrow passage
Player and Echo must use the same narrow passage between the two left-hand walls. Solid-body collision makes their timing part of the puzzle.
LEVEL 04 / 21-SECOND TIMING EXCERPT · NORMAL SPEED · GAME AUDIO

LEVEL 05 / A PLANNED INTERDEPENDENCE

Help the echo help you.

I designed this level around mutual dependence: the player creates the conditions for the echo to advance, and the echo returns the favor. Each actor must enable the other’s next action.

→ Movement ┄ Active switch → matching gate · A and B identify the same mechanisms in every view. The camera follows Player.

Player →Gate A · closedSwitch BSwitch AGate B · closed
01 / RecordKeep moving against closed Gate A even while it blocks the player. Echo will replay this sustained movement when the gate opens.
Switch BGate A · openEcho → Switch BPlayer · Switch AGate B · closed
02 / EnableAfter rewind, Player holds Switch A. Echo passes through Gate A toward Switch B.
Gate A · closedSwitch AEcho · Switch BGate B · openPlayer →
03 / CooperateEcho activates Switch B, opening Gate B for Player to pass through.
LEVEL 05 / CONTINUOUS SOLUTION · Rewind sped up 2× in editing; all other actions at normal speed · GAME AUDIO

IMPLEMENTATION / SUPPORTING THE INTENDED SOLUTION

Restore positions backward.
Apply velocity forward.

← Rewind

Read backward

  • Restore Position
  • Restore Sprite

ONE RECORDED SEQUENCE

t₀PositionVelocitySprite
t₁PositionVelocitySprite
t₂PositionVelocitySprite

Rewind: t₂ → t₁ → t₀

Replay: t₀ → t₁ → t₂

Replay →

Read forward

  • Apply Velocity to Rigidbody2D
  • Unity physics handles current collisions
Backward playback restores the recorded path. Forward playback applies movement, letting Echo respond to the current collision environment.

Rewind restores the past; replay responds to the present. Reading recorded positions backward returns Echo along its original path. Forward playback instead applies recorded velocities to its physics body, so current gates and collisions determine where it can move.

What the recording preserves: Each frame, the movement controller sets the rigidbody velocity from the player’s input, and the recorder then samples that value. This is the controller-set velocity, not velocity calculated from actual displacement. Holding movement against closed Gate A therefore records motion toward the gate even while it blocks progress. During replay, Player opens Gate A, allowing that motion to take Echo through to Switch B. This distinction makes level five’s mutual dependence possible.

04 / HIDDEN LEVEL 0

One last loop.
A different intention.

Unlocked after level five, the hidden ending returns to the starting courtyard. The player’s goal changes from helping their past self to stopping them.

Player and Echo meet again in the starting courtyard in hidden level zero
HIDDEN LEVEL 0 / RETURN TO THE STARTING COURTYARD
“Go back. Stop yourself—stop me—before we ever touch the hourglass.”

Earlier levels ask the player to cooperate with their past self. The ending reverses that relationship: take the hourglass first and stop the loop from beginning.

Watch the story & ending excerpt
HIDDEN LEVEL 0 / ENDING EXCERPT · NORMAL SPEED · GAME AUDIO

PLAYER FEEDBACK & NEXT STEPS

Keep the cooperation.
Revisit the pacing.

Players responded positively to the progression between levels and the ending’s reversal. Several comments also highlighted long rewind waits and slow movement; one player reported finishing level four with only 0.15 seconds remaining.

My next step is to test faster rewind playback and recalibrate level time limits around the revised pacing. I would also test movement speed separately to understand how it affects passage timing. These changes are planned and have not been implemented.

Read the player feedback ↗