Inspiration
We wanted to build a game around a simple question: what if your past actions could actually help you solve the present?
That idea became ECHO//LOOP — a time-loop puzzle game where every reset leaves behind an Echo of your previous run. Instead of simply replaying a level, you gradually build a team of past selves and use them to activate switches, block hazards, distract enemies, and create paths for your current self.
The goal was to make the player experience that “wait... I can use myself?” moment as early as possible.
How We Built It
The game is built with TypeScript, React, Vite, and Phaser 3.
The core challenge was the deterministic replay system. Every run records the player's actions and state frame-by-frame. When the timeline resets, those recordings are converted into Echoes that replay alongside the player.
We built the puzzles around this system, gradually introducing pressure plates, timed doors, lasers, moving platforms, crates, and sentry turrets. We also added Echo Sync, which rewards moments when the player and an Echo perform actions together.
To keep the game lightweight and easy to deploy, we created the sound effects and ambient audio using the Web Audio API instead of relying on large external audio assets.
Challenges
The hardest part was making Echoes feel reliable. A replay that is even slightly out of sync can completely break a puzzle, so we focused heavily on deterministic movement, timing, collision handling, and reset behavior.
We also had to balance the levels carefully. The Echo mechanic can become complicated very quickly, so each level introduces one new idea before combining it with mechanics from previous levels.
What We Learned
We learned that a strong game mechanic doesn't need dozens of systems around it. Most of ECHO//LOOP comes back to one idea — your past is part of the puzzle — and everything else exists to make that idea more fun, understandable, and satisfying.
The biggest lesson was to prioritize game feel and player experience alongside the technical implementation. Responsive movement, visual feedback, sound, and small details make the difference between a mechanic that works and a game that feels good to play.
Built With
- 3
- api
- audio
- css
- html5
- javascript
- phaser.js
- react
- typescript
- vite
- web
Log in or sign up for Devpost to join the conversation.