> ## 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 多人遊戲伺服器遊戲伺服器工作階段的生命週期，從 GSDK Initialize 和 ReadyForPlayers，到作用中狀態、已終止狀態和記錄上傳。

## 遊戲伺服器 SDK (GSDK) 和遊戲伺服器處理序生命週期

PlayFab 多人遊戲伺服器 (MPS) 中的遊戲伺服器生命週期，與您的遊戲伺服器所呼叫的 [GSDK](https://github.com/PlayFab/gsdk) 方法以及遊戲伺服器處理序的狀態密切相關。

<Note>
  如需將遊戲伺服器與 GSDK 整合的詳細資訊，請查看[此處](/zh-TW/services/playfab/multiplayer/servers/integrating-game-servers-with-gsdk)的文件。
</Note>

至少，您的遊戲伺服器只要呼叫 **ReadyForPlayers** GSDK 方法，就可以整合 GSDK 並在 MPS 上順利執行。不過，我們建議在遊戲伺服器處理序啟動時也呼叫 **Start**，讓 MPS 知道遊戲伺服器正在初始化。對於需要時間才能啟動的遊戲伺服器，呼叫 **Start** 很重要，因為如果 MPS 在遊戲伺服器啟動時未及時收到活動訊號，就會關閉伺服器。

## 遊戲伺服器的狀態

以下是 MPS 中遊戲伺服器的主要狀態：

* **Initializing**：遊戲伺服器呼叫 **Start()** GSDK 方法時會轉換為此狀態。在此狀態中，遊戲伺服器開始載入必要的資產。在此狀態中，GSDK 開始向 MPS 傳送活動訊號。
* **StandingBy**：遊戲伺服器呼叫 **ReadyForPlayers()** GSDK 方法時會轉換為此狀態。應在載入所有必要的遊戲資產後呼叫此方法。基本上，此狀態會向 MPS 表示遊戲伺服器已準備好被配置，讓玩家可以連線。
* **Active**：使用 [RequestMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.requestmultiplayerserver) API 呼叫[配置](/zh-TW/services/playfab/multiplayer/servers/allocating-game-servers-and-configuring-vs-debugging-tools)遊戲伺服器時，遊戲伺服器會轉換為此狀態。此狀態表示玩家可以連線至遊戲伺服器並享受遊戲。遊戲伺服器處於作用中狀態，表示在可能的組建規模縮減期間 (亦即，如果待命數目減少)，它不會被關閉。
* **Terminating**：這是呼叫 [ShutDownMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.shutdownmultiplayerserver) API 時遊戲伺服器轉換的狀態。此狀態表示遊戲伺服器正在關閉，玩家將無法連線。

遊戲伺服器處理序可能會正常終止，或因損毀而終止。這可能在任何狀態下發生。MPS 將會：

* 移除執行此遊戲伺服器的容器/處理序
* 收集並上傳遊戲記錄，以便進行封存 ([詳細資訊](/zh-TW/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 天的存留期上限時伺服器仍在其上執行，伺服器將被強制終止，且不會上傳任何記錄。為了確保您的伺服器不會被強制終止，請確保其工作階段一律少於 23 小時，或使用 GSDK 的 OnMaintenanceScheduled 事件，在期限之前正常關閉伺服器並將玩家移轉至另一部伺服器。

### 終止遊戲伺服器處理序

遊戲工作階段結束時，您應正常終止遊戲伺服器處理序，以便取得新的遊戲伺服器。如果遊戲伺服器處理序損毀，MPS 會建立新的遊戲伺服器處理序來取代損毀的處理序。如果遊戲伺服器卡住或凍結，您隨時可以呼叫 [ShutDownMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.shutdownmultiplayerserver) API 手動終止遊戲伺服器處理序。只有在遊戲伺服器處理序無法自行終止時，才應呼叫此 API。呼叫此 API 時，您會看到遊戲伺服器轉換為 "Terminating" 和 "Terminated" 狀態。此外，任何卡在 terminating 或 terminated 狀態的伺服器都會在一段時間後由系統取代。

<Note>
  GSDK 上有一個方法呼叫，如果使用，會將遊戲伺服器標示為 Unhealthy。目前 MPS 會忽略它，但未來可能會變更。如果此功能對您很重要，請[在此處](https://github.com/PlayFab/gsdk/issues)的 GSDK 存放庫中留言。
</Note>

### 驗證 GSDK 與遊戲伺服器的整合

MPS 有一個開發人員工具，可用來測試遊戲伺服器的 GSDK 整合。此工具稱為 **LocalMultiplayerAgent**，您可以[在此處](https://github.com/PlayFab/MpsAgent)下載，並[在此處](/zh-TW/services/playfab/multiplayer/servers/locally-debugging-game-servers-and-integration-with-playfab)查看文件以取得詳細資訊。

### GSDK 範例

若要查看示範與熱門遊戲引擎整合的 GSDK 範例，您可以[在此處](https://github.com/PlayFab/MpsSamples)查看 MpsSamples 存放庫。


## Related topics

- [在 VM 建立期間執行自訂指令碼 (預覽)](/zh-TW/services/playfab/multiplayer/servers/vmstartupscript.md)
- [最佳做法與推出檢查清單](/zh-TW/services/playfab/multiplayer/servers/best-practices.md)
- [多人遊戲伺服器組建的生命週期](/zh-TW/services/playfab/multiplayer/servers/multiplayer-build-lifecycle.md)
- [多人遊戲伺服器組建區域的生命週期](/zh-TW/services/playfab/multiplayer/servers/multiplayer-build-region-lifecycle.md)
- [PlayFab 多人遊戲伺服器 SDK](/zh-TW/services/playfab/multiplayer/servers/server-sdks/overview.md)
