Inspiration
The inspiration was r/place and the underdeveloped niche of massive multiplayer realtime games on Reddit.
What is Ace of Shades
It is like r/place except as an RTS. You can only paint tiles where there is at least one unit of yours and none of anyone else's. You can place buildings on tiles to defend them and send out units to attack others.
Accomplishments that we're proud of
Getting a game with realtime networked physics to work on a serverless setup.
How we built it
The key to getting a realtime game to work in a serverless setup is to have a deterministic game simulation so that the server only needs to stream player inputs and not game state. I built the RTS game simulation with novel server-authoritative deterministic rollback netcode in Rust, compiled to WASM. Both the client and the server invoke the same WASM functions for game state simulation. It was easy to use embedded WASM because Kiro handled making the Foreign Function Interface, which would normally be a tedious task. Kiro also greatly facilitated making the js frontend, rendering in pixi.js, and the devvit backend.
Challenges we ran into
I have never done web or "serverless" development, so it was a learning curve that the AI had to deal with--erm, I mean that I had to deal with.
What we learned
The serverless execution environment can be silently killed at any time, including and especially in between Redis writes!
What's next for Ace of Shades
I might see it through to a full release. A full release would include more units, resources earned from in-game actions that can be spent on cool units (this can not only be used as a progression mechanism but also as a driver of gameplay, e.g. players competing or working together for a source of resources), hostile AI opponents, which is important for players who are not motivated by pvp, and a better system for forming territory and teams.
I noticed a bug where the simulation sometimes desyncs when the server takes a snapshot of the game state (in part because serialization changes the iteration order of a particular data structure), as well as a bug where games freeze after 4 days (due to the game's unit of time hitting the i32 max)--I'll upload fixes after the hackathon.
And finally, if there is enough interest, I might release a template to enable others to more easily make this kind of massive realtime multiplayer game on devvit.
Built With
- devvit
- pixi.js
- rust

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