4. 部署和运行时

上一章:3. 负载拆分和无缝分区的服务器

部署

SpatialOS 为您托管游戏。在 SpatialOS,一个正在运行的游戏的实例被称为“部署”。在部署中,SpatialOS 为您启动服务端 worker 实例,并在云端或裸机中运行。您无需直接与服务端 worker 实例交互。游戏的客户端 worker 实例会连接到部署。

图像:一个 SpatialOS 部署,已连接了服务端 worker 和客户端 worker 实例

客户端 worker 实例

由于每个客户端 worker 实例都绑定一名玩家,并且在玩家的本地计算机上运行,​​所以 SpatialOS 不会像管理服务端 worker 实例的工作负载那样管理客户端 worker 实例的工作负载。这意味着在游戏开发过程中,客户端 worker 类型和服务端 worker 类型的设置不同。主要区别在于您如何与游戏世界同步数据。

与服务端 worker 实例一样,客户端 worker 实例仅可看到一部分游戏世界。但是,客户端 worker 实例可以看到跨越服务端 worker 实例的边界。SpatialOS 采用 高效且灵活的兴趣管理系统,来决定客户端 worker 实例可以看到什么。该系统与虚幻引擎网络层 API 充分集成。

图像:不管服务端 worker 实例之间的边界如何,客户端 worker 实例都可以 “看到” 附近的实体

SpatialOS 托管您多人游戏的服务器部分。您通过 SpatialOS 部署来设置服务器托管。

在生产过程中,您始终使用云托管。但在开发过程中,可以使用云托管和本地托管 (您的开发机在其中模拟云托管) 来测试游戏。

由您决定游戏世界需要多少数量的服务端 worker 实例,以及如何在世界中管理它们。服务端 worker 实例通常被称为“服务器”。在部署中,SpatialOS 为您启动这些服务端 worker 实例,并在云端机器中运行。

SpatialOS 还会协调客户端 worker 连接。客户端 worker 通常被称为“客户端”。

您无需直接与机器交互,SpatialOS 可以为您编排服务端 worker 实例。但是,您可以通过 SpatialOS 工具来监测和管理部署。SpatialOS 提供一系列工具,包括 Inspector (允许您实时观察 SpatialOS 游戏世界中发生了什么)。

运行时

SpatialOS 运行时管理您的游戏世界。每个游戏部署都对应一个运行时实例。它包括一个实体数据库,这持有全部 SpatialOS 实体数据的规范性存储。运行时决定哪些服务端 worker 在游戏世界中具有更新实体的管辖权。

每个服务端 worker 和客户端 worker 都仅接收其被允许的那部分游戏世界的更新。由运行时掌控哪些 worker 将收到哪些更新。

您的 worker 实例不会直接与实体数据库通信。当 worker 实例想要对实体进行更改时,它会将该请求发送到运行时。然后,运行时代表 worker 实例,将请求转发到实体数据库。

下一章:5. 管辖权和兴趣


最近更新时间: October 13, 2021 (306bf955)