本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:設定 Spot 執行個體的遊戲工作階段佇列
- 簡介
-
本教學課程說明如何針對低成本 Spot 叢集上部署的遊戲設定遊戲工作階段配置。競價型艦隊需要額外的步驟來維持玩家持續的遊戲伺服器可用性。
- 目標對象
-
本教程適用於希望使用 Spot 艦隊託管自定義遊戲服務器或實時服務器的遊戲開發人員。
- 您將學到什麼
-
-
定義您的遊戲工作階段佇列服務的玩家群組。
-
建立艦隊基礎結構以支援遊戲工作階段佇列的範圍。
-
為每個叢集指派別名以抽象叢集 ID。
-
建立佇列、新增叢集,並排定 Amazon GameLift 放置遊戲工作階段的位置優先順序。
-
新增玩家延遲政策,協助將延遲問題降到最低。
-
- 先決條件
-
在建立遊戲工作階段放置的叢集和佇列之前,請先完成下列工作:
-
檢閱 亞馬遜如何GameLift工作。
-
將您的遊戲服務器與亞馬遜集成GameLift。
-
將您的遊戲服務器構建或實時腳本上傳到亞馬遜GameLift。
-
步驟 1:定義佇列的範圍
在本教學課程中,我們會為具有一個遊戲伺服器組建變化的遊戲設計佇列。遊戲發行時,我們將在兩個地點推出:亞太區域 (首爾) 和亞太區域 (新加坡)。由於這些位置彼此很接近,因此延遲對我們的玩家來說並不是問題。
在這個例子中,有一個玩家段,這意味著我們創建一個隊列。未來,當我們在北美發行遊戲時,我們可以建立第二個隊列,以北美玩家為範圍。
如需詳細資訊,請參閱定義佇列的範圍。
步驟 2:建立競價型叢集基礎架構
使用符合您在中定義範圍的遊戲伺服器組建或指令碼,在步驟 1:定義佇列的範圍位置建立車隊。
在本教學中,我們建立了兩個位置基礎結構,每個位置至少包含一個 Spot 叢集和一個隨需叢集。每個艦隊都會部署相同的遊戲伺服器組建。此外,我們預計首爾地區的玩家流量會更重,因此我們在那裡增加了更多 Spot 車隊。
下圖顯示 Spot 叢集基礎架構範例,在 ap-Northest-2 (首爾) 位置有 3 個車隊,在 ap-Spot-東南 -1 (新加坡) 位置有 2 個車隊。兩個叢集中的所有執行個體都使用組建 MBG_prod_v1。AP-North-2 中的叢集包含下列叢集組態:執行個體類型為 c5.large 的叢集 1234_spot_1、執行個體類型為 c5.xlarge 的叢集 1234_spot_2,以及執行個體類型為 c5.large 的叢集 1234_ondemand。AP 東南 -1 中的叢集包含下列叢集組態:執行個體類型為 c5.large 的叢集 1234_spot_1,以及執行個體類型為 c5.large 的叢集 1234_ondemand。
![Spot 叢集基礎架構在亞太區域 (首爾) 和亞太區域 (新加坡) 設有據點,混合了隨需執行個體和 Spot 執行個體。](images/tutorial-queue-spot-step2.png)
步驟 3:為每個叢集指派別名
為基礎結構中的每個叢集建立新的別名。別名抽象車隊身份,使定期更換車隊更換效率。如需建立別名的詳細資訊,請參閱在 Amazon GameLift 叢集中新增別名。
我們的車隊基礎設施有五個車隊,因此我們使用路由策略創建五個別名。我們在亞太區域 (首爾) 地點需要三個別名,在亞太區域 (新加坡) 地點需要兩個別名。
下圖顯示步驟二中所述的競價型叢集基礎結構,並在每個叢集中新增了別名。叢集 1234_1 具有別名 MBG 點 _1,叢集 1234_SPOT 2 具有別名 MBG 點 _2,而叢集 1234 按需求具有別名 MBG。
![步驟 2 中所述的 Spot 叢集基礎架構範例,其別名指向每個叢集。](images/tutorial-queue-spot-step3.png)
如需詳細資訊,請參閱建立多位置佇列。
步驟 4:建立包含目的地的佇列
建立遊戲工作階段佇列並新增您的艦隊目的地。如需建立佇列的詳細資訊,請參閱建立遊戲工作階段佇列。
建立佇列時:
-
將預設逾時設定為 10 分鐘。稍後,您可以測試佇列逾時如何影響玩家進入遊戲的等待時間。
-
現在跳過有關玩家延遲政策的部分。我們將在下一步中介紹此內容。
-
排定佇列中的艦隊優先順序。使用 Spot 叢集時,我們建議採用下列其中一種方法:
-
如果您的基礎架構使用的是主要位置,且叢集位於第二個位置進行備份,請先依據位置排定叢集的優先順序,然後依機群類型排定
-
如果您的基礎架構同樣使用多個位置,請依叢集類型排定叢集的優先順序,並將 Spot 叢集置於佇列的頂端。
-
在本教程中,我們創建一個名稱的新隊列MBG_spot_queue
,並添加所有五個艦隊的別名。然後,我們首先按位置排定位置的優先順序,然後按車隊類型排序
根據此配置,此隊列總是嘗試將新的遊戲會話放入首爾的 Spot 艦隊中。當這些艦隊已滿時,佇列會使用首爾隨需叢集上的可用容量作為備份。如果三支首爾艦隊都無法使用,亞馬遜將在新加坡艦隊上GameLift放置遊戲會議。
下圖顯示逾時 300 秒和已排定優先順序目的地的佇列。目的地的順序如下:在東北-2 中的 1234_spot_1,在 AP-東北 -2 中為 1234_spot_2,在 AP-東北-2 中的 1234 點 _ 點 1,在 AP-東南 1 中為 1234 點 _ 點 1,以及在 AP-東南 1 的需求為 1234。
![具有多個 Spot 叢集和隨需備份叢集的 Spot 佇列範例。](images/tutorial-queue-spot-step4.png)
步驟 5:將延遲限制新增至佇列
我們的遊戲會在遊戲會話放置請求中包含延遲信息。我們還有一個玩家派對功能,可以為一群玩家創建遊戲會話。我們可以讓玩家等待更長時間才能進入具有理想遊戲體驗的遊戲。我們的遊戲測試顯示了以下觀察結果:
-
低於 50 毫秒的延遲是理想的。
-
遊戲在延遲超過 250 毫秒的情況下無法遊玩。
-
玩家會在大約一分鐘內變得不耐煩。
對於我們的佇列,我們會在 300 秒的逾時時間內新增政策陳述式,以限制允許的延遲。原則陳述式會逐漸允許較大的延遲值,最多可達 250 毫秒。
透過此原則,我們的佇列會在第一分鐘尋找具有理想延遲 (低於 50 毫秒) 的放置位置,然後放寬限制。在玩家延遲為 250 毫秒或更高的情況下,佇列不會放置位置。
下圖顯示步驟 4 中新增了玩家延遲政策的佇列。播放器延遲政策狀態,強制執行 60 毫秒的 50 毫秒限制,在 30 秒強制執行 125 毫秒限制,並強制執行 250 毫秒限制,直到超時。
![步驟四中新增了玩家延遲政策的範例佇列。播放器延遲政策狀態,強制執行 60 毫秒的 50 毫秒限制,在 30 秒強制執行 125 毫秒限制,並強制執行 250 毫秒限制,直到超時。](images/tutorial-queue-spot-step5.png)
總結
恭喜您!以下是您完成的事情:
-
您有一個遊戲工作階段佇列的範圍是您的玩家人口。
-
您的佇列有效地使用 Spot 叢集,並且在 Spot 中斷發生時具有彈性。
-
您的隊列會優先考慮艦隊,以獲得頂級玩家體驗。
-
隊列有延遲限制,以保護玩家免受不良遊戲體驗的影響。
您現在可以使用佇列為其服務的玩家安排遊戲階段。向這些玩家提出遊戲工作階段放置要求時,請在請求中參考此遊戲工作階段佇列名稱。如需提出遊戲工作階段放置要求的詳細資訊,請參閱建立遊戲階段、或為即時伺服器整合遊戲用戶端。
接下來的步驟: