Skip to main content

Game Server SDK (GSDK) 与游戏服务器进程生命周期

PlayFab Multiplayer Servers (MPS) 中游戏服务器的生命周期与游戏服务器所调用的 GSDK 方法以及游戏服务器进程的状态密切相关。
有关将游戏服务器与 GSDK 集成的更多信息,请查看此处的文档。
至少,你的游戏服务器只需调用 ReadyForPlayers GSDK 方法即可集成 GSDK 并在 MPS 上出色运行。但是,我们建议在游戏服务器进程启动时也调用 Start,以便 MPS 知道游戏服务器正在初始化。对于启动需要时间的游戏服务器来说,调用 Start 非常重要,因为如果游戏服务器启动时 MPS 未及时收到心跳,MPS 将关闭该服务器。

游戏服务器的状态

以下是 MPS 中游戏服务器的主要状态:
  • Initializing:游戏服务器在调用 Start() GSDK 方法时转换到此状态。在此状态下,游戏服务器开始加载必需的资产。在此状态下,GSDK 开始向 MPS 发送心跳。
  • StandingBy:游戏服务器在调用 ReadyForPlayers() GSDK 方法时转换到此状态。应在所有必需的游戏资产已加载完毕后调用此方法。本质上,此状态向 MPS 发出信号,表明游戏服务器已准备好被分配,以便玩家可以连接到它。
  • Active:游戏服务器在通过 RequestMultiplayerServer API 调用被分配时转换到此状态。此状态意味着玩家可以连接到游戏服务器并享受游戏。游戏服务器处于 active 状态意味着在可能的构建缩容过程中(即 standingBy 数量减少时)它不会被关闭。
  • Terminating:这是游戏服务器在调用 ShutDownMultiplayerServer API 时转换到的状态。此状态意味着游戏服务器正在关闭,并且不再可供玩家连接。
游戏服务器进程可以正常终止或因崩溃而终止。这可能在任何状态下发生。MPS 将会:
  • 删除运行此游戏服务器的容器/进程
  • 收集并上传游戏日志以便存档(更多信息)
  • 在其位置创建新的容器/进程以替换已终止的容器/进程
游戏服务器在处于 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 存储库此处留言。

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

MPS 提供了一个开发者工具来测试游戏服务器的 GSDK 集成。该工具名为 LocalMultiplayerAgent,你可以在此处下载它,并可以查看此处的文档以获取更多信息。

GSDK 示例

要查看演示与流行游戏引擎集成的 GSDK 示例,你可以查看此处的 MpsSamples 存储库。
最后修改于 2026年8月25日