

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 遊戲伺服器的生命週期
<a name="gsg-howitworks-lifecycle-gameserver"></a>

透過Amazon GameLift Servers FleetIQ，遊戲伺服器會經歷下列生命週期，包括佈建和狀態更新。遊戲伺服器預期會是短期的資源。根據最佳實務，遊戲伺服器應在遊戲工作階段結束後取消註冊，而不是重新用於另一個遊戲工作階段。此方法有助於確保可用的遊戲伺服器一律在遊戲託管可行的最低成本資源上執行。
+ 當遊戲伺服器程序在 Amazon GameLift Servers FleetIQ連結的 Auto Scaling 群組中的執行個體上執行時，會建立遊戲伺服器資源，呼叫 Amazon GameLift Servers API `RegisterGameServer()` 以通知Amazon GameLift Servers FleetIQ它已準備好託管玩家和遊戲。遊戲伺服器有兩種狀態可追蹤其目前的可用性：
  + 使用狀態會追蹤遊戲伺服器目前是否支援遊戲。此狀態最初設定為 AVAILABLE (可用)，表示已準備好接受新的遊戲。一旦遊戲佔用了遊戲伺服器，此狀態會設定為 UTILIZED (已使用)。
  + 佔用狀態會追蹤遊戲伺服器是否已受到即將進行的遊戲佔用。處於 CLAIMED (已佔用) 狀態的遊戲伺服器表示已暫時由遊戲用戶端 (或遊戲服務，例如配對機制) 保留。此狀態Amazon GameLift Servers FleetIQ可防止 將相同的遊戲伺服器提供給多個請求者。您可以佔用其佔用狀態為空白的遊戲伺服器。
+ 下圖說明遊戲伺服器的使用狀態和佔用狀態在其生命週期內如何變更。  
![遊戲伺服器資源的生命週期。](https://docs.aws.amazon.com/zh_tw/gameliftservers/latest/fleetiqguide/images/gsg-lifecycles-gameserver.png)
  + **步驟 1. ** 一個遊戲伺服器群組有六個已註冊的遊戲伺服器。四個的使用狀態為 AVAILABLE (可用) (A、B、C 和 D)，兩個目前狀態為 UTILIZED (已使用) (E 和 F)。
  + **步驟 2.** 遊戲客戶端或配對系統會呼叫 Amazon GameLift Servers API `ClaimGameServer()` 來請求新的遊戲伺服器。此請求Amazon GameLift Servers FleetIQ會提示搜尋可用的遊戲伺服器 (D)，並將其宣告狀態設定為已宣告 60 秒。 會使用遊戲伺服器的連線資訊 (IP 地址和連接埠） 以及其他選用的遊戲特定資料來Amazon GameLift Servers FleetIQ回應其請求。由於遊戲伺服器尚未開始進行遊戲，其使用狀態仍然是 AVAILABLE，但無法透過其他要求佔用。
  + **步驟 3a.** 使用提供的連線資訊，遊戲用戶端可以連線到遊戲伺服器並啟動遊戲。必須藉由呼叫 Amazon GameLift Servers API `UpdateGameServer()`，在 60 秒內觸發遊戲伺服器 (D)，才能將其使用狀態變更為 UTILIZED (已使用)。
  + **步驟 3b.** 如果遊戲伺服器的使用狀態未在 60 秒內更新，則佔用計時器會過期，且佔用狀態會重設為空白。遊戲伺服器 (D) 會返回可用且無人佔用的遊戲伺服器集區。
+ 遊戲伺服器上的遊戲完成且玩家中斷連線後，遊戲伺服器資源會予以移除。在關閉之前，遊戲伺服器程序會呼叫 Amazon GameLift Servers API`DeregisterGameServer()`，通知Amazon GameLift Servers FleetIQ其離開遊戲伺服器群組的遊戲伺服器集區。