SpacetimeDB 2.0 makes the database your game server.
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.
From a technological risk perspective I would never tie myself to a vendor like that. I know people do it all the time, but you are totally at the mercy of the vendor increasing price and having no choice but pay since you are so tightly integrated.
Always add an interface is my moto.
One of the troubles with games is that you don't know if your product will be successful up front. You can go down the route of building everything (engine, multiplayer server, game DB), but if you frontload the tech and your game isn't fun 5 years out, you're in a bad spot.
My experience has been that it's critical to frontload "fun discovery" which means taking concessions on 3rd-party technology. If you make something successful you earn the chance to replace 3rd parties with custom solutions. Often they're fine if your margins are high enough. If you fail, you won't be paying those monthly subscriptions long anyways.
I hadn't heard of SpacetimeDB but this tech looks genuinely interesting.
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.
We have been experimenting with adding Spacetime multi-player to our current threejs app. It was surprisingly easy to build the standalone demo but the full integration obviously is not as straightforward.
This looks very promising. There's a need for persisting game state in a central place, but also have that data streaming in.
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.
Great question about the non-persistent game state — Implementing a custom setup on your own server is likely the best approach paired with CDN if alot of people are downloading.
The company that is building SpacetimeDB is also making a voxel MMO with it, so it looks like it works well enough. But I am still a bit skeptical at how scalable this is.
this is pretty cool! what I do for my project (3d voxel web page platform) is treat the scene as a document and push updates to the server when things change. this works well for distribution and simplicity, but does mean multi-player is "difficult". using spacetime to manage and track that info and have threejs render would be cool and enable a lot of things.
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.
ryker2000|4 days ago
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-...
Sytten|10 hours ago
tyleo|10 hours ago
My experience has been that it's critical to frontload "fun discovery" which means taking concessions on 3rd-party technology. If you make something successful you earn the chance to replace 3rd parties with custom solutions. Often they're fine if your margins are high enough. If you fail, you won't be paying those monthly subscriptions long anyways.
thrance|10 hours ago
tyleo|10 hours ago
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.
batisteo|9 hours ago
KaiserPister|11 hours ago
siriusastrebe|4 days ago
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.
ryker2000|3 days ago
thrance|12 hours ago
agentifysh|16 hours ago
usernamed7|17 hours ago
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.
rizky05|15 hours ago
[deleted]