9 comments

[ 3.2 ms ] story [ 32.0 ms ] thread
We (Clockwork Labs) have been developing this database for several years as the backend engine for our MMORPG BitCraft (https://bitcraftonline.com). 100% of the game's logic is loaded into the database and then players connect directly to the database instead of to any game server. All the data is then synchronized with the client (trees, player positions, buildings, terrain, etc). We think it will substantially decrease the complexity of deploying a live service.

We've released the code under a BSL 1.1 license which converts to a free software license: https://github.com/clockworklabs/SpacetimeDB.

Our Discord is: https://discord.gg/spacetimedb

BitCraft is written in Unity and SpacetimeDB works out of the box with Unity, although we also support several client languages as well (Rust, Typescript, C#, Python).

> clients connect directly to the database and execute your application logic inside the database itself

Does it mean it is just an RPC server with data store?

> This means that you can write your entire application in a single language, Rust, and deploy it as a single binary. No more microservices, no more containers, no more Kubernetes, no more Docker, no more VMs, no more DevOps, no more infrastructure, no more ops, no more servers.

What about replication, backups, scalability, high availability?

> Does it mean it is just an RPC server with data store?

I suppose if you want to think of it that way, but you don't get atomic transactions, durability, consistency, and isolation with that.

> What about replication, backups, scalability, high availability?

All of that will be made available with time. We've already launched our cloud testnet for the database and we're moving rapidly towards the mainnet launch where all of that will be available.

This is very cool!

- What is SATN for? (Spacetime Algebraic Type Notation JSON format)

- Can DB instances be replicated using the WAL?

The Typescript support is especially interesting to me :)

- SATN is the message format for serializing the types in our type system: SATS (Spacetime Algebraic Type System). We need a new algebraic type system to abstract over all the different module language type systems that we support in the database. We need a unified way to represent data types in the database.

- Yes they can be replicated! Although at the moment they are not, we'll definitely have log replication by the time we launch our mainnet cloud product.

neat! any support for efficient spatial queries?
Not yet! But that will be coming. We need to add it in for BitCraft.
Can I see app example somewhere? And how auth is been done with this database server?