3. 负载拆分和无缝分区的服务器

前一章:2. 世界、实体和组件

与原生虚幻引擎使用单个服务器和多个客户端的方式相同,SpatialOS 也使用多个 服务端 worker 实例客户端 worker 实例

虚幻引擎开发套件开箱即用,与 SpatialOS 网络层和原生的虚幻引擎网络层类似:单个服务器与多个客户端。然而,当您的游戏使用 SpatialOS 网络层时,它还可以在多个服务器上运行。

在 SpatialOS 中,服务器被称为“服务端 worker 实例”,而客户端被称为“客户端 worker 实例” (或游戏客户端):

  • SpatialOS 使用一个或多个 服务端 worker 实例 来计算游戏世界。
  • 每个游戏玩家使用一个 客户端 worker 实例 与游戏世界连接并与之进行互动。

负载均衡

在一个多服务器游戏世界中,负载均衡策略将计算负载分配给两个或多个服务端 worker 实例。这使游戏的规模超过了单个虚幻引擎服务器所能提供的。虚幻引擎开发套件具有两种预定义的负载均衡策略:

  • 负载拆分服务器
  • 无缝分区服务器

每个游戏并不仅限于一种负载均衡策略。例如,您可以将一款游戏的 AI 计算拆分到 AI 专属服务端 worker 上,然后使用另一组服务端 worker 为该游戏落实分区服务器。您还可以使用虚幻引擎开发套件来开发您自己的负载均衡策略。

负载拆分服务器

负载拆分服务器会分配计算负载。它们定义了一组服务端 worker 实例,这些实例分别计算游戏世界中的一组 Actor 类型。例如,专用于处理 AI 计算的服务端 worker 实例。

AI 是负载拆分策略的理想对象,因为 AI 计算很昂贵,但是对延迟的容忍度较高。这使得游戏的主服务端 worker 可以腾出更多算力来大规模运行其他游戏系统。

无缝分区服务器

无缝分区服务器将游戏世界划分为多个管辖区域,其中各个服务端 worker 实例分别负责一个区域。同时,负责该区域的服务端 worker 实例要向该区域内的实体发送更新。每个区域由一个服务端 worker 实例执行计算。

如果您将游戏部署到云端的虚拟机或者裸机,那么服务端 worker 实例将存在于该机器上。SpatialOS 支持云端的虚拟机和裸机,以及使用两者的混合基础设施。

图像:使用多个服务端 worker 实例对游戏世界进行分区

下一章:4. 部署和运行时


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