設計遊戲工作階段佇列 - Amazon GameLift

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

設計遊戲工作階段佇列

本主題說明如何設計佇列,以最小的延遲提供玩家體驗,並有效使用主機資源。如需遊戲工作階段佇列及其運作方式的詳細資訊,請參閱為遊戲會話放置設置亞馬遜GameLift隊列

這些 Amazon GameLift 功能需要佇列:

定義佇列的範圍

您遊戲的玩家人口可能有一群不應該一起玩的玩家。例如,如果您以兩種語言發行遊戲,則每種語言都應該擁有自己的遊戲伺服器。

若要為您的玩家族群設定遊戲階段位置,請為每個玩家區段建立個別的佇列。調整每個佇列的範圍,將玩家置於正確的遊戲伺服器。範圍佇列的一些常見方法包括:

  • 按地理位置。在多個地理區域部署遊戲伺服器時,您可能會為每個位置的玩家建立佇列,以減少玩家延遲。

  • 通過構建或腳本的變化。如果您的遊戲伺服器有多個版本,您可能會支援無法在相同遊戲工作階段中遊玩的玩家群組。例如,遊戲伺服器組建或指令碼可能支援不同的語言或裝置類型。

  • 按事件類型。您可以創建一個特殊的隊列來管理比賽或其他特殊事件的參與者的遊戲。

建立玩家延遲政策

如果您的刊登位置要求包含玩家延遲資料,演算法會在所有玩家平均延遲最低的位置尋找遊戲工作階段。根據平均玩家延遲放置遊戲工作階段,可防GameLift止 Amazon 將大多數玩家置於高延遲的遊戲中。但是,亞馬遜GameLift仍然會使玩家處於極端延遲狀態。若要容納這些玩家,請建立玩家延遲政策。

玩家延遲政策可防GameLift止 Amazon 將要求的遊戲工作階段放置在任何地方,讓請求中的玩家可能會遇到超過最大值的延遲。玩家延遲政策還可以防止 Amazon GameLift 將遊戲工作階段請求與更高延遲的玩家進行比對。

提示

若要管理特定延遲規則,例如需要群組中所有玩家的類似延遲,您可以使用 Amazon 建立以延遲GameLiftFlexMatch為基礎的配對規則。

例如,假設此佇列的逾時時間為 5 分鐘,以及下列播放程式延遲政策:

  1. 花費 120 秒搜尋所有玩家延遲少於 50 毫秒的位置。

  2. 花費 120 秒搜尋所有玩家延遲少於 100 毫秒的位置。

  3. 花剩餘的佇列時間,直到逾時搜尋所有玩家延遲少於 200 毫秒的位置。

控制台中的示例屏幕,配置先前描述的隊列。

建立多位置佇列

我們建議所有佇列採用多位置設計。這種設計可以提高放置速度和託管恢復性。需要多位置設計才能使用玩家延遲資料,以最小的延遲將玩家投入遊戲工作階段。如果您要建立使用 Spot 執行個體叢集的多位置佇列,請按照中的指示進行。教學課程:設定 Spot 執行個體的遊戲工作階段佇列

建立多位置佇列的一種方法是將多位置叢集新增至佇列。如此一來,佇列就可以將遊戲工作階段放置在艦隊的任何位置。您還可以添加具有不同配置的其他車隊或主位置以進行冗餘。如果您使用的是多地點 Spot 執行個體叢集,請遵循最佳做法,並包含具有相同位置的隨需執行個體叢集。

下列範例概述設計基本多位置佇列的程序。在此範例中,我們使用兩個叢集:一個 Spot 執行個體叢集和一個隨需執行個體叢集。每個叢集AWS 區域對放置位置都有下列項目:us-east-1us-east-2ca-central-1、、和us-west-2

使用多位置叢集建立基本的多位置佇列
  1. 選擇要在其中建立佇列的位置。您可以將佇列放置在靠近部署用戶端服務的位置,將要求延遲降到最低。在此範例中,我們在中建立佇列us-east-1

  2. 建立新佇列,並將多位置叢集新增為佇列目的地。目的地順序決定了亞馬遜如何GameLift放置遊戲會話。在此範例中,我們會先列出 Spot 執行個體叢集,第二個列出隨需執行個體叢集。

  3. 定義佇列的遊戲工作階段放置優先順序。此順序決定佇列先搜尋可用遊戲伺服器的位置。在此範例中,我們使用預設的優先順序。

  4. 定義位置順序。如果您沒有定義位置順序,亞馬遜GameLift會按字母順序使用位置。

主控台中的範例畫面,如先前程序所述,設定佇列放置位置和目的地。
主機中的範例畫面,如先前程序所述,設定遊戲工作階段放置優先順序和位置順序。

排定遊戲工作階段位

Amazon GameLift 使用 FleetIQ 演算法,根據一組已排序的準則來決定要放置新遊戲工作階段的位置。您可以使用預設的優先順序,也可以自訂順序。

預設優先順序

對於包含玩家延遲資料的位置要求,FleetIQ 會依照下列預設順序排列遊戲工作階段放置標準的優先順序:

  1. 延遲 — 請求中所有玩家的最低平均延遲。

  2. 成本 — 如果多個位置的延遲相等,則託管成本最低。託管成本主要取決於執行個體類型和位置的組合。

  3. 目的地 — 目的地順序,如果多個位置的延遲和成本相等。FleetIQ 會根據佇列組態中列出的順序排列目的地優先順序。

  4. 位置 — 位置順序 (如果延遲、成本和目的地在多個位置相等)。FleetIQ 會根據佇列組態中列出的順序來排定位置的優先順序。

自訂優先順序

若要在 Amazon GameLift 主控台自訂佇列的優先順序,請將優先順序值拖曳到您想要的位置。若要使用 AWS Command Line Interface (AWS CLI) 自訂佇列的優先順序,請搭配--priority-configuration選項使用create-game-session-queue指令。您可以使用此指令來建立新佇列或更新現有佇列。

FleetIQ 演算法會根據預設順序,將未明確提及的任何條件附加到清單末尾。如果您在優先順序組態中包含位置條件,您也必須提供排序的位置清單。

視需要設計多個佇列

視您的遊戲和玩家而定,您可能會想要建立多個遊戲工作階段佇列。當您的遊戲用戶端服務要求新的遊戲工作階段時,它會指定要使用的遊戲工作階段佇列。若要協助您判斷是否要使用多個佇列,請考慮:

  • 遊戲伺服器的變化。您可以為遊戲伺服器的每個變體建立單獨的佇列。佇列中的所有艦隊都必須部署相容的遊戲伺服器。這是因為使用佇列加入遊戲的玩家必須能夠在佇列的任何遊戲伺服器上進行遊戲。

  • 不同的玩家組。您可以根據玩家群組自訂 Amazon GameLift 放置遊戲工作階段的方式。例如,您可能需要針對需要特殊執行個體類型或執行階段設定的特定遊戲模式自訂佇列。或者,您可能需要一個特殊的隊列來管理錦標賽或其他賽事的位置。

  • 遊戲工作階段佇列指標。您可以根據收集遊戲工作階段放置指標的方式來設定佇列。如需詳細資訊,請參閱亞馬遜隊列GameLift指標

評估佇列指標

使用指標來評估您的佇列執行情況是否良好。您可以在 Amazon GameLift 主控台或 Amazon 中檢視與佇列相關的指標CloudWatch。如需佇列測量結果的清單和說明,請參閱亞馬遜隊列GameLift指標

佇列測量結果可提供下列項目的深入解析:

  • 整體佇列效能 — 佇列測量結果指出佇列回應放置要求的順利程度。這些指標也可協助您識別刊登位置失敗的時間和原因。對於具有手動調整叢集的佇列,AverageWaitTime和指QueueDepth標可指示何時應調整佇列容量。

  • FleetIQ 演算法效能 — 對於使用 FleetIQ 演算法的放置要求,指標會顯示演算法找到理想遊戲工作階段放置的頻率。刊登位置可以使用玩家延遲最低的資源或成本最低的資源來排定優先順序。還有一些錯誤指標可GameLift以識別 Amazon 找不到理想位置的常見原因。如需指標的詳細資訊,請參閱 監控亞馬遜GameLift與亞馬遜 CloudWatch

  • 地點特定刊登位置 — 針對多地點佇列,量度會依地點顯示成功的刊登位置。對於使用 FleetIQ 演算法的佇列,此資料可提供有用的深入資訊,瞭解玩家活動發生的位置。

評估 FleetIQ 演算法效能的指標時,請考慮下列秘訣:

  • 若要追蹤佇列尋找理想放置位置的速率,請將指PlacementsSucceeded標與 FleetIQ 指標結合使用,以獲得最低延遲和最低價格。

  • 若要提高佇列尋找理想放置位置的速率,請檢閱下列錯誤指標:

    • 如果高FirstChoiceOutOfCapacity,請調整佇列叢集的容量調整。

    • 如果FirstChoiceNotViable錯誤指標很高,請查看您的競價型執行個體叢集。當特定執行個體類型的中斷率過高時,Spot 執行個體叢集被視為不可行。若要解決此問題,請將佇列變更為使用具有不同執行個體類型的 Spot 執行個體叢集。建議您在每個位置加入具有不同執行個體類型的 Spot 執行個體叢集。