Scrambles
Real-time multiplayer chess, starting from real Chess.com middlegames.
The idea for Scrambles came after I got flagged (lost on time) in an endgame several times in a row on Lichess.org. I thought it would be a cool (and very personally useful) project to build an online training tool where both players are thrown into a late-game position and have only a few seconds on a clock to make sense of it and win.
However, as I worked on Scrambles and played games with friends and family, it became clear that people enjoyed the game for the excitement of managing a complex position with tactics all over the board, not so much for the time pressure involved. It was possible that Scrambles could grow into something more than a simple training tool.
Over the next few weeks, I improved the user interface, added premoves and server-side clock balancing, implemented a friends system, elo-based matchmaking, and most notably, bumped up the time per game to 5 minutes per player.
The feature I became the most proud of was the “Review Game” tool, Scrambles’s equivalent of Chess.com’s Game Review. It allowed players to go over their games move by move with the familiar Chess.com classification system (Brilliant, Excellent, Blunder, etc). My favorite feature was the option to view your position’s source, which allowed you to seamlessly compare your accuracy, positional plans, brilliancies, and blunders with the grandmasters from the original game.
- React
- TypeScript
- Socket.IO
- Express
- Postgres
- Stockfish WASM
- Google OAuth
Some technical choices:
- Games are streamed directly to the game server using websockets (Socket.IO). This allows the games to feel smoother, especially when including premoves, than the HTTP alternative
- Stockfish is run not through the API or web server, but through a client-side compiled binary (WASM). This allows for very fast, unlimited analysis without rate limits or expensive server costs
Some other fun features:
- Players can choose which players’ positions they want to play as/against
- Players can also choose how “wide” a range of positions they’re interested in playing, but tighter/rarer choices may lead to difficulty finding a pairing
- You can spectate any public game by pressing on the “Playing” menu in the main lobby


