Equinox Exchange

A single-player puzzle-platformer for Reddit. You steer two linked blobs that share one pool of size: make one big and heavy and the other becomes small and light. Master that Equivalent Exchange — a big blob presses heavy plates and tips seesaws; a small blob jumps high, floats on bubbles, and squeezes through gaps — to guide both blobs to their matching exits.

Two blobs. One shared size. Trade it wisely.

How to play

  • Tap / click a blob to take control of it (a gold ring shows who you're driving).
  • Move: A D or ← → (or the on-screen ◀ ▶ on mobile).
  • Jump: Space / W / ↑ (or the JUMP button).
  • SWAP: E (or the SWAP button) — flips which blob is big. Size is shared, so one always grows as the other shrinks.
  • Goal: get both blobs onto their colour-matched exits at the same time.

The toolbox

Mechanic What it does
H / L plates H needs a big blob (or a pushable block); L needs a small blob. A held plate opens its matching coloured door.
Doors Open when their plate condition is met; "sticky" doors latch open for good.
Bubble columns Lift only the light blob — shrink to float up, grow to drop.
Seesaw A big blob's weight on one pan lifts the light blob on the other up to a ledge.
Swap-lift A violet elevator whose height is driven by SWAP — ride it up, step off.
Moving platforms Ferry you across gaps; they carry riders and stay glued going up or down.
Spikes Bounce you back — too wide for a heavy hop, so SWAP light and leap.

Game modes

Campaign (PLAY)

A fixed sequence of 15 levels (3 tutorial/practice + 12 main), each a unique mechanic or combination, ordered easy → hard. Progress is saved per-player and unlocked sequentially — you must clear a level to unlock the next.

  • Level Select (LEVELS on the main menu) shows every campaign room with clear visual states:
    • ★ Completed levels — gold-accented card with a gold star
    • ✦ Current level — gold glowing border with a gentle pulse animation to draw your eye
    • ◻ Unlocked levels — neutral elevated cards, ready to play
    • 🔒 Locked levels — dimmed cards with a lock icon, unreachable until you clear the one before them
  • Practice rooms are marked with a "P" prefix (P1, P2, P3) and teach the core mechanics before the main campaign begins.
  • Every room awards 1–3 stars based on your clear time (< 9s = ★★★, < 18s = ★★, else ★).

Daily (DAILY)

A date-seeded, side-scrolling level assembled fresh each day — every Redditor plays the exact same level on a given day, and it changes completely tomorrow.

  • Generated from a library of 10 section types (heavy gates, light gates, bubble walls, seesaws, swap-lifts, spike mazes, moving platforms, block gates, etc.) — each daily draws a random subset for a unique combination.
  • Always includes at least one signature hard beat (the seesaw wall and/or spike gauntlet) near the end.
  • Sections ramp from easy → hard so the level teaches as it goes.
  • Your best time is posted to a per-day leaderboard (top 10 players shown).
  • Consecutive daily clears earn a streak shown on the main menu.

Create (CREATE)

Opens the in-game level editor — place any object from the palette (blocks, plates, doors, spikes, moving platforms, swap-lifts, bubbles, seesaws, checkpoints) inside a blank room frame.

  • Drag objects to position them, tap to configure their properties (target position for movers/lifts, colour for doors, which plate opens which door).
  • Play-Test your puzzle to verify it's solvable — clearing it in play-test mode unlocks Publish.
  • Published puzzles become community posts that other Redditors can play.
  • Capped at 18 objects (plus the required 2 players and 2 goals).

Leaderboard (LEADERBOARD)

Per-scope leaderboard tracking the fastest times for each scope:

Scope Example Description
Daily daily-2026-07-14 Today's daily level — shared by all players
Campaign room room-1 Each campaign level has its own leaderboard
Community community-<postId> Published community puzzles (post-specific)
  • Each player only keeps their best time per scope — subsequent plays only improve it.
  • Leaderboards store the top 10 fastest times.
  • Viewed from the in-game 🏆 button (shows top 8) or the main menu LEADERBOARD button (shows top 6 for the current daily).

Progression & streaks

  • Campaign progress persists via the server: cleared rooms unlock future ones even if you leave and come back.
  • Daily streak grows by 1 each consecutive day you complete the daily. A missed day resets it to 1.
  • The main menu shows your current streak + campaign completion count at a glance.

Tech stack

  • Phaser 4 — the game client (Arcade physics), rendered in a Devvit web view.
  • Vite — bundles the client.
  • Hono — server routes (leaderboards, daily post scheduling).
  • Devvit Web — the Reddit app platform + hosting.
  • TypeScript throughout.

Built With

Share this project:

Updates

Submission history