loading font

Shahrazad

Rust
TypeScript
Axum
Next
Vercel
Docker
Dnd-Kit
wasm-pack
A table top simulator named after the MTG card and character Shahrazad, from "One Thousand and One Nights."
My goal was to replace the laggy generic table-top simulator my friends and I were using with a fast app specialized to play Magic The Gathering. No sign-up required, I made it quick and easy to create and play with friends.
Upon joining, all features to play a game of Magic are available. Players can import their decks, draw their starting hands, and start playing cards by dragging them into play. Everything updates in real time and feels far more responsive than alternatives.
The state machine to handle the game logic is written in a shared rust lib. It is compiled natively on the server and runs as a wasm pkg on client. In this way server updates and client updates are running the same code.
State transformations are sent as protobuf over websockets. For non-colliding moves, the server only sends the action, not the full game state. This keeps packets small, while keeping true state on the server.