Inspiration
I grew up playing classic arcade fighting games and wanted to bring that same competitive, head-to-head energy directly into the Reddit feed. The idea that Redditors could literally battle each other using their customized Snoo avatars felt like a perfect fit for a community-driven platform. I wanted to create something that was visually striking, nostalgic (with a retro 16-bit aesthetic), and genuinely fun to play against friends or random opponents.
How I built it
Snoo Brawl is powered by the Devvit framework on the backend, utilizing a serverless Node.js environment. I used Redis to build a robust matchmaking queue, handle skill-based rating (MMR), and manage turn-based game states.
On the frontend, I used Vite and React to handle the initial entry points, but the core game engine is built entirely in Phaser 4. I used the Devvit Realtime API to synchronize turns and broadcast events between clients during live PvP matches. The game is fully responsive, supporting both desktop landscape and mobile portrait layouts with scaled UI and custom touch zones.
Challenges I faced
Building a fully synchronous PvP game inside a serverless environment was definitely the biggest challenge. I had to figure out how to handle edge cases like players disconnecting, stale matchmaking queues, and ensuring that turns resolved at the exact same time for both clients.
What I learned
I learned a massive amount about managing distributed state using Redis and how to push the Devvit Realtime API to its limits. I also learned how to seamlessly bridge communication between a Phaser canvas game and the Devvit web client wrapper, passing initialization data, realtime events, and API calls back and forth securely.
Built With
- devvit
- node.js
- phaser.js
- react
- redis
- typescript
- vite
Log in or sign up for Devpost to join the conversation.