SpacetimeDB:下一代多人游戏构建方案
Maincloud 现已上线! 在售完之前,享受 Maincloud Energy 90% 的折扣!
v1.0
InstallPricingMaincloudDocsBlogCommunity12K starsLogin
InstallPricingMaincloudDocsBlogCommunity
社区
12K stars try the demoinstall
事务性、关系型、多人计算。
构建多人游戏的最简单方式
RustC#
use spacetimedb::{table, reducer, ReducerContext, Table};
#[table(name = person, public)]
pub struct Person {
name: String,
}
#[reducer]
pub fn add(ctx: &ReducerContext, name: String) {
log::info!("Inserting {}", name);
ctx.db.person().insert(Person { name });
}
#[reducer]
pub fn say_hello(ctx: &ReducerContext) {
for person in ctx.db.person().iter() {
log::info!("Hello, {}!", person.name);
}
log::info!("Hello, World!");
}
尝试演示
首先编辑示例 Rust 或 C# 模块。 点击“Go live”以立即发布您的 SpacetimeDB 模块。
Go liveContact A Founder
Language PickerRustC#
use spacetimedb::{table, reducer, ReducerContext, Table};
#[table(name = person, public)]
pub struct Person {
name: String,
}
#[reducer]
pub fn add(ctx: &ReducerContext, name: String) {
log::info!("Inserting {}", name);
ctx.db.person().insert(Person { name });
}
#[reducer]
pub fn say_hello(ctx: &ReducerContext) {
for person in ctx.db.person().iter() {
log::info!("Hello, {}!", person.name);
}
log::info!("Hello, World!");
}
没有游戏服务器的游戏。
什么是 SpacetimeDB
您可以将 SpacetimeDB 视为关系数据库和服务器的组合。 无需部署位于客户端和数据库之间的 Web 或游戏服务器,客户端可以直接连接到数据库并在数据库本身内部执行逻辑。 不再需要 Docker、Kubernetes、VM、微服务或大量的运维基础设施。
SpacetimeDB 使我们能够以一个小型团队构建我们的大型多人游戏 BitCraft。 其整个后端,包括所有游戏逻辑、实时玩家位置和所有持久状态,都实现为 SpacetimeDB 模块。
支持者
我们的一些投资者
为什么使用 SpacetimeDB
部署到云服务提供商:
- 1 使用云提供商设置帐户/账单
- 2 确定用例的云服务
- 3 配置服务和机器
- 4 配置持久层/数据库
- 5 管理跨部署的持久状态
- 6 成为 Docker + Kubernetes 向导
- 7 配置网络策略
- 8 选择高性能的 Web 服务器技术
- 9 使用 ORM 或原始 SQL 与数据库通信
- 10 开发用于客户端/服务器状态同步的协议
- 11 为内存状态硬编码持久性逻辑
- 12 设计定制的权限系统
- 13 完成所有这些之后,仍然存在原子性、一致性和隔离性问题!
- 1 使用云提供商设置帐户/账单
- 2 确定用例的云服务
- 3 配置服务和机器
- 4 配置持久层/数据库
- 5 管理跨部署的持久状态
- 6 成为 Docker + Kubernetes 向导
- 7 配置网络策略
- 8 选择高性能的 Web 服务器技术
- 9 使用 ORM 或原始 SQL 与数据库通信
- 10 开发用于客户端/服务器状态同步的协议
- 11 为内存状态硬编码持久性逻辑
- 12 设计定制的权限系统
- 13 完成所有这些之后,仍然存在原子性、一致性和隔离性问题!
部署到 SpacetimeDB:
1 编写 SpacetimeDB 模块 2 将模块编译为 WebAssembly 3 上传到 SpacetimeDB
现代数据库环境
SpacetimeDB 将存储过程提升到了一个新的水平,允许您将整个应用程序直接部署到数据库中。 它就像一个智能合约……如果智能合约快速、便宜且易于使用的话。
部署您的整个应用程序。
关系数据库环境
云操作系统
您可以将 SpacetimeDB 视为云的操作系统。 就像您的 PC 操作系统抽象化硬件一样,SpacetimeDB 抽象化了管理云中许多物理机器的复杂性,允许您将它们视为运行一个大型分布式操作系统的一个逻辑计算机。
美妙的通用化
我们称之为游戏的应用程序类别范围从 Solitare 到 Among Us 再到 World of Warcraft。 唯一足够通用的系统可以用作游戏引擎的是数据库。 SpacetimeDB 不会将您限制于匹配,或实时移动,或枪支,或角色。
一切皆 ACID
您对应用程序状态的每次更新都是 100% 原子性、一致性、隔离性和持久性的。 您可以在直接从客户端调用的单线程原子函数中编写游戏逻辑,而我们在后台多线程处理所有内容。 您可以通过应用程序定义的索引、内存关系表访问所有应用程序状态。
面向数据和受 ECS 启发
SpacetimeDB 的设计和架构深受面向数据的编程方法的影响。 在 SpacetimeDB 中编写实体-组件-系统应用程序既自然又非常高效。 事实上,如果你眯起眼睛,ECS 模型就是关系模型的一个特例,其中组件是引用 Entityld 关系的关系。
旧的想法。 全新的范例。
SpacetimeDB 是一个开发者优先的平台,它建立在计算机科学的概念之上,这些概念可以追溯到 20 世纪 60 年代。 我们正在弥合理论基础和开发者体验之间的差距,使开发再次变得令人愉快。
Serverless
SpacetimeDB 是一种 Serverless 技术。 这意味着您无需处理机器、VM、容器或部署。 您所要做的就是上传您的模块,我们处理扩展、副本、调度、数据迁移等等。
ACID + 关系型
SpacetimeDB 是一个真正的、通用的关系数据库,具有 ACID 事务。 这意味着它与您的旧关系数据库一样强大,并且更好的性能只是一个索引声明而已。 想象一下能够查询运行时每一条实时游戏数据。
专为大型游戏而打造
SpacetimeDB 不是在真空中构建的。 它是驱动我们自己大型 MMORPG BitCraft 的系统。 我们专门为满足游戏性能要求而设计了它。 这意味着极低的延迟(~100 us/Tx)和极高的吞吐量(~1,000,000 Tx/s)。
- ECS Inspired
- Inter-module communication
- Expressive permissions
- OIDC authentication
- Composable applications
- Horizontal scalability
- User-generated logic (UGL)
- Anonymous identities
- Public key identities
- Delegated authority
- Secure atomic transactions
- Command line interface
- Real-time subscription queries
- SQL OLTP queries
- PostgreSQL OLAP queries
- Secure database replication
- Point-in time rollbacks
- Transaction log replay
- State snapshots
- 5,000,000 updates per second
但是等等,还有更多。
其他功能分解
空间和时间。
SpacetimeDB 命名的原因是我们为您的应用程序存储了完整的事务历史记录。 这使您可以将数据库的状态重置为之前的任何时间点,并从那里重放事务。 这意味着您可以免费获得重放。 这基本上是时间旅行,非常酷。
用户生成逻辑 (UGL)。
在 SpacetimeDB 中编写和托管应用程序非常容易。 这种易用性加上每个数据库都可以与其他数据库通信的事实意味着您可以将数据库组合在一起以创建服务挂毯。 您甚至可以让您的用户将他们自己的逻辑插入到您的应用程序中。 我们称之为“UGL”。
各种查询。
因为您的应用程序成为数据库的一部分,所以可以查询应用程序状态的所有部分。 查询是 SpacetimeDB 的重要组成部分。 客户端进行订阅查询以获取游戏状态的实时更新。 您可以进行 SpacetimeQL OLTP 查询,以便对应用程序状态进行一次性更新,或者进行更高级的 OLAP PostgreSQL 分析查询以进行数据分析。
可审计。
因为事务的逻辑本地化到单个原子函数,所以 SpacetimeDB 就像智能合约一样,易于进行安全性审计。 采用普通游戏服务器的临时结构,这是一个完全棘手的问题。 告别黄金复制漏洞。
SpacetimeDB 由 Clockwork Labs 设计和开发。
凭借 SQL 风格的查询语言、实时订阅查询、完全可编程的权限、事务性更新以及由于嵌入式应用程序逻辑而实现的超高性能,它是下一代 serverless 数据库。
导航
InstallPricingMaincloudDocsBlogCommunity
社区
©2025 Clockwork Laboratories, Inc.
/ Ask anything