You run game logic “inside” the DB, model world state as tables, and expose moves/damage/spawns as reducers. Clients (like Three.js) subscribe over WebSockets and get fine‑grained diffs instead of polling, so the server stays authoritative and the client just renders and interpolates. Generous free tier, paid starts at $25/month.
https://discourse.threejs.org/t/spacetimedb-threejs-support-...
I'm tech lead of UGC at Rec Room and had to do similar work to support live synchronization of UGC content. We essentially built a database in our game engine (Unity) with similar capabilities.
Since it grew out of our production needs, we ended up with a lot of bespoke solutions specific to our game. I'd love to try this out and see if I could make a small UGC personal project with it or exchange notes with the people who built it.
I'm wondering about temporary gamestate that doesn't need to persist. Things like terrain or destructible voxels, where the size could be prohibitive to keep in a databases, but would work well in memory or with a cache.
I may explore spacetimedb as a project sometime, although i am reluctant to be tied into a platform that my project cannot work without, that i cannot host myself, that can change their pricing/limits/terms of at any time and for which there is no alternative.