多人游戏服务器的生命周期

游戏服务器 SDK (GSDK) 和游戏服务器进程生命周期

PlayFab 多人游戏服务器 (MPS) 中的游戏服务器生命周期与游戏服务器正在调用的GSDK方法以及游戏服务器进程的状态紧密相关。

注意

有关将游戏服务器与 GSDK 集成的详细信息,请在此处查看文档。

游戏服务器至少可以调用ReadyForPlayers GSDK 方法以集成 GSDK 并在 MPS 上出色运行。 但是,建议在游戏服务器进程启动时也调用启动 ,以便 MPS 知道游戏服务器正在初始化。 对于需要时间启动的游戏服务器,调用启动非常重要,因为当游戏服务器启动时,如果 MPS 未及时收到检测信号,它会关闭服务器。

游戏服务器的状态

以下是 MPS 中游戏服务器的主要状态:

  • 初始化:游戏服务器在调用Start() GSDK 方法时转换为此状态。 在此状态下,游戏服务器开始加载必要资产。 在此状态下,GSDK 开始向 MPS 发送检测信号。
  • StandingBy:游戏服务器在调用ReadyForPlayers() GSDK 方法时转换为此状态。 当已加载所有必要的游戏资产后,应调用此方法。 实质上,此状态向 MPS 发出信号,表明游戏服务器已准备好进行分配,以便玩家可以连接到它。
  • 活动:使用RequestMultiplayerServer API 调用分配游戏服务器时,游戏服务器会转换为此状态。 此状态意味着玩家可以连接到游戏服务器并享受游戏。 游戏服务器处于活动状态这一事实意味着,在潜在的生成规模缩减期间(即,如果 standingBy 数减少),不会将其关闭。
  • 终止:这是调用ShutDownMultiplayerServerAPI 时游戏服务器转换的状态。 此状态意味着游戏服务器正在关闭,玩家无法连接到它。

游戏服务器进程可以正常终止,也可以崩溃后终止。 这可能在任何状态下发生。 MPS 将:

  • 删除运行此游戏服务器的容器/进程
  • 收集并上传游戏日志,以便它们准备好存档(详细信息
  • 将在其位置新建容器/进程以替换已终止的容器/进程

注意

当游戏服务器处于“活动”状态后,它永远无法转换回 StandingBy 状态。 将游戏状态设置为“活动”后,获取处于 StandingBy 状态的新游戏服务器的唯一方法是退出游戏服务器进程。

最长服务器生存期

托管 MPS 服务器的虚拟机的最长生存期为 10 天,因此服务器的生存期受该生存期的约束。 我们保证服务器的生存期至少为 23 小时;MPS 不会在剩余时间少于 23 小时的 VM 上分配服务器。 GSDK 将在 VM 强行终止前 23 小时触发 OnMaintenanceScheduled 事件,以便 VM 上运行的任何服务器都可以及时正常关闭。 如果在 VM 达到其最长生存期 10 天后服务器仍在其上运行,服务器将被强行终止,并且不会上传日志。 要确保服务器不会被强行终止,请确保其会话始终少于 23 小时,或者使用 GSDK 的 OnMaintenanceScheduled 事件在截止时间之前正常关闭服务器并将玩家迁移到另一个服务器。

终止游戏服务器进程

游戏会话结束后,应正常终止游戏服务器进程,以便获取新的游戏服务器。 如果游戏服务器进程崩溃,MPS 将新建游戏服务器进程以替换崩溃的游戏服务器进程。 如果游戏服务器停滞或冻结,则始终可以调用ShutDownMultiplayerServer 服务器 API 以手动终止游戏服务器进程。 只有当游戏服务器进程无法自行终止时,才应调用此 API。 调用此 API 时,将看到游戏服务器转换为“正在终止”和“已终止”状态。 此外,系统将在一段时间后替换处于正在终止或已终止状态的任何服务器。

注意

GSDK 上有方法调用,如果使用该调用,会将游戏服务器标记为“不正常”。 目前,MPS 会忽略它,但这种情况未来可能发生更改。 如果此功能对你至关重要,请在此处的 GSDK 存储库中留下备注。

验证 GSDK 与游戏服务器的集成

MPS 具有开发人员工具,用于测试游戏服务器的 GSDK 集成。 工具称为LocalMultiplayerAgent,可以在此处下载,并且可以在此处查看文档以了解详细信息。

GSDK 示例

要检查演示与热门游戏引擎集成的 GSDK 示例,可以在此处查看 MpsSamples 存储库。