Inspiration

We were inspired by classic “Twitch Plays” style experiments, where a crowd collectively controls a single game. Sokoban felt like the perfect fit . it’s simple to understand, but deeply strategic. We wanted to explore what happens when hundreds of players must cooperate, vote, and think together to solve a puzzle designed for one brain.


What it does

RPS – Reddit Plays Sokoban is a multiplayer, vote-driven Sokoban experience where Reddit users collectively control the player.

Every few seconds:

  • Players vote on a move (UP, DOWN, LEFT, RIGHT, UNDO, RESET).
  • The system calculates the majority vote.
  • The chosen move is applied to the shared game state.

The entire thread collaborates (or chaos ensues) to push boxes onto goal tiles and win the level together.


How we built it

  • Backend: Express server running on Devvit.
  • State Management: Redis for persistent shared game state, tick tracking, and vote counting.
  • Game Logic: Custom Sokoban engine implemented server-side (movement rules, collision, deadlock detection, win detection).
  • Multiplayer System:

    • Time-based tick system (every few seconds).
    • Votes stored per tick in Redis.
    • Majority move applied during tick processing.
  • Frontend Client: GameMaker client fetching state and animating moves based on server responses.

We implemented:

  • Deadlock detection
  • Win condition detection
  • Undo system
  • Full reset to original map state
  • Per-user vote tracking to prevent duplicate votes per tick

Challenges we ran into

  • Synchronizing state between many users in real time.
  • Preventing users from voting multiple times in a single tick.
  • Designing a fair and deterministic tick-based voting system.
  • Implementing undo/reset without corrupting the shared state.
  • Handling edge cases like deadlocks and invalid moves.
  • Making sure the backend remained the single source of truth.

Accomplishments that we're proud of

  • Creating a clean tick-based voting system.
  • Successfully implementing UNDO and RESET mechanics in a shared environment.
  • Designing a scalable backend using Redis for real-time shared state.
  • Turning a traditionally single-player puzzle into a chaotic but cooperative multiplayer experience.

What we learned

  • Multiplayer state management requires strict server authority.
  • Even simple games become complex when many users interact simultaneously.
  • Clear tick timing prevents race conditions and inconsistent state.
  • Redis is extremely powerful for ephemeral multiplayer state and vote aggregation.
  • Designing for collaboration means designing for chaos.

What's next for RPS – Reddit Plays Sokoban

  • Multiple levels and progression system.
  • Difficulty scaling.
  • Visual vote indicators in real time.
  • Leaderboards (top contributors, most accurate voters).
  • Smarter deadlock detection.
  • Special event modes (chaos mode, limited moves mode).
  • Expanding beyond Sokoban into other “Reddit Plays” games.

+ 6 more
Share this project:

Updates