> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

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

> PlayFab Multiplayer Servers 游戏服务器会话的生命周期,从 GSDK 的 Initialize 和 ReadyForPlayers 到活动状态、终止状态和日志上传。

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

PlayFab Multiplayer Servers (MPS) 中游戏服务器的生命周期与游戏服务器所调用的 [GSDK](https://github.com/PlayFab/gsdk) 方法以及游戏服务器进程的状态密切相关。

<Note>
  有关将游戏服务器与 GSDK 集成的更多信息,请查看[此处](/services/playfab/multiplayer/servers/integrating-game-servers-with-gsdk)的文档。
</Note>

至少,你的游戏服务器只需调用 **ReadyForPlayers** GSDK 方法即可集成 GSDK 并在 MPS 上出色运行。但是,我们建议在游戏服务器进程启动时也调用 **Start**,以便 MPS 知道游戏服务器正在初始化。对于启动需要时间的游戏服务器来说,调用 **Start** 非常重要,因为如果游戏服务器启动时 MPS 未及时收到心跳,MPS 将关闭该服务器。

## 游戏服务器的状态

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

* **Initializing**:游戏服务器在调用 **Start()** GSDK 方法时转换到此状态。在此状态下,游戏服务器开始加载必需的资产。在此状态下,GSDK 开始向 MPS 发送心跳。
* **StandingBy**:游戏服务器在调用 **ReadyForPlayers()** GSDK 方法时转换到此状态。应在所有必需的游戏资产已加载完毕后调用此方法。本质上,此状态向 MPS 发出信号,表明游戏服务器已准备好被分配,以便玩家可以连接到它。
* **Active**:游戏服务器在通过 [RequestMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.requestmultiplayerserver) API 调用被[分配](/services/playfab/multiplayer/servers/allocating-game-servers-and-configuring-vs-debugging-tools)时转换到此状态。此状态意味着玩家可以连接到游戏服务器并享受游戏。游戏服务器处于 active 状态意味着在可能的构建缩容过程中(即 standingBy 数量减少时)它不会被关闭。
* **Terminating**:这是游戏服务器在调用 [ShutDownMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.shutdownmultiplayerserver) API 时转换到的状态。此状态意味着游戏服务器正在关闭,并且不再可供玩家连接。

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

* 删除运行此游戏服务器的容器/进程
* 收集并上传游戏日志以便存档([更多信息](/services/playfab/multiplayer/servers/archiving-and-retrieving-multiplayer-server-logs))
* 在其位置创建新的容器/进程以替换已终止的容器/进程

<Note>
  游戏服务器在处于 Active 状态时无法转换回 StandingBy 状态。一旦游戏状态设置为 Active,获得处于 StandingBy 状态的新游戏服务器的唯一方法是让游戏服务器进程退出。
</Note>

### 最大服务器生命周期

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

### 终止游戏服务器进程

当游戏会话结束时,你应正常终止游戏服务器进程,以便获得新的游戏服务器。如果游戏服务器进程崩溃,MPS 将创建新的游戏服务器进程来替换崩溃的进程。如果游戏服务器卡住或冻结,你可以随时调用 [ShutDownMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.shutdownmultiplayerserver) API 手动终止游戏服务器进程。仅当游戏服务器进程无法自行终止时才应调用此 API。当你调用此 API 时,你将看到游戏服务器转换为 "Terminating" 和 "Terminated" 状态。此外,任何卡在 terminating 或 terminated 状态的服务器将在一段时间后由系统替换。

<Note>
  GSDK 上有一个方法调用,如果使用它,会将游戏服务器标记为 Unhealthy。目前 MPS 会忽略它,但此情况将来可能会更改。如果此功能对你至关重要,请在 GSDK 存储库[此处](https://github.com/PlayFab/gsdk/issues)留言。
</Note>

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

MPS 提供了一个开发者工具来测试游戏服务器的 GSDK 集成。该工具名为 **LocalMultiplayerAgent**,你可以在[此处](https://github.com/PlayFab/MpsAgent)下载它,并可以查看[此处](/services/playfab/multiplayer/servers/locally-debugging-game-servers-and-integration-with-playfab)的文档以获取更多信息。

### GSDK 示例

要查看演示与流行游戏引擎集成的 GSDK 示例,你可以查看[此处](https://github.com/PlayFab/MpsSamples)的 MpsSamples 存储库。


## Related topics

- [在 VM 创建期间运行自定义脚本(预览)](/zh-CN/services/playfab/multiplayer/servers/vmstartupscript.md)
- [多人游戏服务器构建的生命周期](/zh-CN/services/playfab/multiplayer/servers/multiplayer-build-lifecycle.md)
- [多人游戏服务器构建区域的生命周期](/zh-CN/services/playfab/multiplayer/servers/multiplayer-build-region-lifecycle.md)
- [XBOX services 多人游戏概述](/zh-CN/services/xbox-services/multiplayer/overviews/live-multiplayer-intro.md)
- [创作游戏服务器生成](/zh-CN/services/playfab/multiplayer/servers/author-a-game-server-build.md)
