We’ve always loved the brain-melting mechanics of mirrored-movement puzzles; We wanted to build something that felt right at home on Reddit—a bite-sized, satisfying puzzle that’s easy to pick up but brutally tough to master.
What it actually does
Dual Knights is a mind-bending puzzle game played right inside a Reddit post. You control two knights (Red and Blue) simultaneously with one set of controls. The catch? They move in exact opposite directions. You have to guide both knights through a grid packed with obstacles (like barrels, pumpkins, and fences) to their destinations. But there are rules to this madness:
- Perfect Sync: Both knights have to land on their goals at the exact same time.
- No Crashing: They can’t cross paths or occupy the same tile.
- Kaboom: Hit a barrel, and you blow up. Back to the start!
Players can compete on a global leaderboard to solve levels in the fewest steps possible. We built a fully functional, seamless Level Designer right into the game so you can craft your own and challenge everyone on Reddit!
The Engine Under the Hood
To make this run smoothly inside Reddit's ecosystem, we put together a really tight modern tech stack: Frontend: Phaser 3 handles all the heavy lifting—grid logic, sprite rendering, tween animations, and audio. It’s bundled with Vite and runs inside a Reddit iFrame. Backend: We used the Devvit serverless environment (Node.js v22), pairing it with Hono and tRPC to build a rock-solid, type-safe API for submitting scores and fetching leaderboards. Storage: Devvit’s built-in Redis plugin securely manages the global game states, tracks attempts, and keeps the leaderboard updated in real-time.
Assets: We preloaded custom spritesheets, clean UI panels, and crunchy audio effects to give the whole experience a premium, arcade-like polish.
The Roadblocks We Hit
Smooth Movement: Getting the mirrored movement to feel right took a lot of tweaking. To stop the sprites from looking like they were awkwardly "teleporting" across distances, we had to fine-tune Phaser's tweens—switching from Power2 to Linear easing so the movement matched the frame rates perfectly. Tricky Edge Cases: Tracking failures when things happen at the exact same millisecond—like the knights swapping spaces instantly or stepping on the same tile together—required some pretty complex collision and coordinate checks, but thanks to Phaser it was easy to achieve. Reddit UI/UX: We spent a lot of time making sure the Phaser canvas scales responsibly whether you're scrolling on a tiny phone screen or a massive desktop monitor, keeping the leaderboards and rules perfectly centered.
Wins We're Celebrating
The Level Designer: We are incredibly proud of this tool. You can just drag and drop tiles, obstacles, and spawns, and it instantly spits out a clean JSON map that the game engine reads on the fly. End-to-End Type Safety: By using tRPC, our Devvit backend and Phaser frontend talk to each other with zero guesswork. It completely wiped out a whole category of annoying runtime bugs. The "Game Feel": Thanks to directional running animations, explosive audio, and smooth movement, the game just feels incredibly tactile and satisfying to play.
What We Learned Building for Devvit was a fantastic crash course in bridging a Phaser game with a serverless backend. We walked away with a ton of knowledge about optimizing asset loading, handling floating promises in TypeScript, and surviving the quirks of cross-origin iFrames. (We also developed a newfound respect for grid-based math while writing that mirrored collision logic!)
What's Next for Dual Knights: Upon receiving any interest in the idea, we have plans to add literally 100s of things! More Chaos: New tile types like teleporters, trees you can chop down, and one-way gates. Dynamic Audio: A background track that actually speeds up and changes tempo as you get closer to solving the puzzle!
Some levels for you to try: https://www.reddit.com/r/dual_knights_dev/comments/1ux8z5f/is_this_one_hard_to_solve/ https://www.reddit.com/r/dual_knights_dev/comments/1uv4177/trial_2/ https://www.reddit.com/r/dual_knights_dev/comments/1uv3zik/submission_level/ https://www.reddit.com/r/dual_knights_dev/comments/1utl9t6/easy_trial/ https://www.reddit.com/r/dual_knights_dev/comments/1ux92id/4_bombs_level/
If you guys find the idea interesting, feel free to crease some levels of your own!

Log in or sign up for Devpost to join the conversation.