Game Server SDK (GSDK) 与游戏服务器进程生命周期
PlayFab Multiplayer Servers (MPS) 中游戏服务器的生命周期与游戏服务器所调用的 GSDK 方法以及游戏服务器进程的状态密切相关。有关将游戏服务器与 GSDK 集成的更多信息,请查看此处的文档。
游戏服务器的状态
以下是 MPS 中游戏服务器的主要状态:- Initializing:游戏服务器在调用 Start() GSDK 方法时转换到此状态。在此状态下,游戏服务器开始加载必需的资产。在此状态下,GSDK 开始向 MPS 发送心跳。
- StandingBy:游戏服务器在调用 ReadyForPlayers() GSDK 方法时转换到此状态。应在所有必需的游戏资产已加载完毕后调用此方法。本质上,此状态向 MPS 发出信号,表明游戏服务器已准备好被分配,以便玩家可以连接到它。
- Active:游戏服务器在通过 RequestMultiplayerServer API 调用被分配时转换到此状态。此状态意味着玩家可以连接到游戏服务器并享受游戏。游戏服务器处于 active 状态意味着在可能的构建缩容过程中(即 standingBy 数量减少时)它不会被关闭。
- Terminating:这是游戏服务器在调用 ShutDownMultiplayerServer API 时转换到的状态。此状态意味着游戏服务器正在关闭,并且不再可供玩家连接。
- 删除运行此游戏服务器的容器/进程
- 收集并上传游戏日志以便存档(更多信息)
- 在其位置创建新的容器/进程以替换已终止的容器/进程
游戏服务器在处于 Active 状态时无法转换回 StandingBy 状态。一旦游戏状态设置为 Active,获得处于 StandingBy 状态的新游戏服务器的唯一方法是让游戏服务器进程退出。
最大服务器生命周期
托管 MPS 服务器的虚拟机具有 10 天的最长生命周期,因此服务器的生命周期受该生命周期的约束。服务器的生命周期至少为 23 小时;MPS 不会在剩余时间少于 23 小时的 VM 上分配服务器。GSDK 将在 VM 被强制终止前 23 小时触发 OnMaintenanceScheduled 事件,以便 VM 上运行的任何服务器可以及时正常关闭。如果 VM 达到其 10 天的最长生命周期时服务器仍在 VM 上运行,则该服务器将被强制终止,并且不会上传任何日志。为确保你的服务器不会被强制终止,请确保其会话始终少于 23 小时,或者使用 GSDK 的 OnMaintenanceScheduled 事件在截止日期之前正常关闭服务器并将玩家迁移到另一个服务器。终止游戏服务器进程
当游戏会话结束时,你应正常终止游戏服务器进程,以便获得新的游戏服务器。如果游戏服务器进程崩溃,MPS 将创建新的游戏服务器进程来替换崩溃的进程。如果游戏服务器卡住或冻结,你可以随时调用 ShutDownMultiplayerServer API 手动终止游戏服务器进程。仅当游戏服务器进程无法自行终止时才应调用此 API。当你调用此 API 时,你将看到游戏服务器转换为 “Terminating” 和 “Terminated” 状态。此外,任何卡在 terminating 或 terminated 状态的服务器将在一段时间后由系统替换。GSDK 上有一个方法调用,如果使用它,会将游戏服务器标记为 Unhealthy。目前 MPS 会忽略它,但此情况将来可能会更改。如果此功能对你至关重要,请在 GSDK 存储库此处留言。
