tabletop-p2p is a tactical virtual tabletop — the pitch I use is "a Baldur's Gate 3 camera, but it's a VTT". It's built in Rust on Bevy, and the defining constraint is in the name: peer-to-peer. There is no game server. A tiny signaling service exchanges WebRTC handshakes and then gets out of the way; every byte of game state flows directly between players over DataChannels.
No server doesn't mean no authority. The GM is the authoritative host: players send requests — move this token, create that one — and the GM validates and broadcasts. Cheap infrastructure, and cheat-resistant enough for a table of friends. Rooms are a five-character code; if the signaling drops, clients retry with backoff, and when the GM comes back everyone re-handshakes and receives a full resync.
The scene is actually 3D
Orbital camera, directional light with shadows, and terrain built from low-poly prisms — deforming the ground raises the actual column height, and tokens standing on it rise too. Tokens are physical-feeling board pieces: a puck, an art disc, and a ring in the owner's color. Trees are procedural low-poly. Square and flat-top hexagonal grids (axial coordinates) are both supported, switchable by the GM, with snap-to-grid on each.
My favorite pipeline decision: all the 2D art — token faces, the default parchment map, icons — is SVG generated in the repo and rasterized at runtime with resvg, then applied as textures on the meshes. Version-controlled, procedural art; no binary blobs. Importing a real map is drag-and-drop: the image is sliced into 14KB chunks and replicated to every peer over the data channel.
This is the newest project on this page and it says so — it exists because I wanted my RPG table to have it, and because Bevy's ECS plus WebRTC networking is exactly the kind of systems problem I like. dist/ already ships portable Linux binaries with assets embedded, so two machines on a LAN can play today.