自訂相符演算法 - Amazon GameLift

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

自訂相符演算法

FlexMatch 最佳化大多數遊戲的預設演算法,讓玩家在最短的等待時間內進入可接受的比賽。您可以自訂演算法並調整遊戲的配對。

以下是預設 FlexMatch 比對演算法:

  1. FlexMatch 將所有開啟的配對票證和回填票證放置在票證集區中。

  2. FlexMatch 會將集區中的票證隨機分組為一或多個批次。隨著票證集區變大, 會 FlexMatch 形成其他批次以維持最佳批次大小。

  3. FlexMatch 會根據年齡,在每個批次內排序票證。

  4. FlexMatch 根據每個批次最舊的票證來建置相符項目。

若要自訂相符演算法,請將algorithm元件新增至規則集結構描述。如需完整的參考資訊,FlexMatch規則集:綱要請參閱 。

使用下列選用自訂來影響配對程序的不同階段。

新增批次前排序

您可以在形成批次之前排序票證集區。這種類型的自訂對具有大型票證集區的遊戲最有效。批次前排序有助於加速配對程序,並提高已定義特徵的玩家一致性。

使用演算法屬性 定義批次前排序方法batchingPreference。預設設定為 random

自訂批次前排序的選項包括:

  • 依播放器屬性排序。提供播放器屬性清單,以預先排序票證集區。

    若要依播放器屬性排序,請將 batchingPreference設定為 sorted,並在 中定義您的播放器屬性清單sortByAttributes。若要使用 屬性,請先宣告規則集playerAttributes元件中的屬性。

    在下列範例中,根據玩家偏好的遊戲地圖來 FlexMatch 排序票證集區,然後依玩家技能排序。產生的批次更可能包含想要使用相同映射的類似熟練玩家。

    "algorithm": { "batchingPreference": "sorted", "sortByAttributes": ["map", "player_skill"], "strategy": "exhaustiveSearch" },
  • 依延遲排序。建立具有最低可用延遲的相符項目,或快速建立具有可接受延遲的相符項目。此自訂對於規則集形成超過 40 個玩家的大型比對很有用。

    將演算法屬性strategy設定為 balanced。平衡策略會限制規則陳述式的可用類型。如需詳細資訊,請參閱設計 FlexMatch 大型相符規則集

    FlexMatch 根據玩家報告的延遲資料,以下列其中一種方式排序票證:

    • 最低延遲位置。票證集區會依玩家報告最低延遲值的位置預先排序。 FlexMatch 然後,將低延遲的票證批次處理在同一位置,進而建立更好的遊戲體驗。它也會減少每個批次中的票證數量,因此配對可能需要更長的時間。若要使用此自訂,請將 batchingPreference設定為 fastestRegion,如下列範例所示。

      "algorithm": { "batchingPreference": "fastestRegion", "strategy": "balanced" },
    • 可接受的延遲會快速相符。票證集區會依播放器報告可接受延遲值的位置預先排序。這會產生較少批次,其中包含更多票證。隨著每個批次中有更多票證,尋找可接受的相符項目更快。若要使用此自訂,請將 屬性設定為 batchingPreference largestPopulation,如下列範例所示。

      "algorithm": { "batchingPreference": "largestPopulation", "strategy": "balanced" },
    注意

    平衡策略的預設值為 largestPopulation

排定回填票證的優先順序

如果您的遊戲實作自動回填或手動回填,您可以根據請求類型自訂 FlexMatch 處理配對票證的方式。請求類型可以是新的比對或回填請求。依預設,將這兩種類型的請求 FlexMatch 視為相同。

回填優先順序會影響票證批次處理後 FlexMatch 處理它們的方式。回填優先順序需要規則集才能使用詳盡的搜尋策略。

FlexMatch 不符合多個回填票證。

若要變更回填票證的優先順序,請設定 屬性 backfillPriority

  • 首先比對回填票證。此選項會嘗試比對回填票證,然後再建立新的相符項目。這表示傳入玩家加入現有遊戲的機率較高。

    如果您的遊戲使用自動回填,最好使用此功能。自動回填通常用於遊戲工作階段較短和玩家周轉率較高的遊戲。自動回填有助於這些遊戲形成最少的可行相符項目,並讓他們開始,同時 FlexMatch 搜尋更多玩家來填滿開放的插槽。

    backfillPriority 設定為 high

    "algorithm": { "backfillPriority": "high", "strategy": "exhaustiveSearch" },
  • 最後比對回填票證。此選項會忽略回填票證,直到評估所有其他票證為止。這表示當傳入的玩家無法將他們配對至新遊戲時,會 FlexMatch 將其回填至現有遊戲中。

    當您想要使用回填作為最後機會選項,讓玩家進入遊戲時,例如當沒有足夠的玩家來建立新的比賽時,此選項非常有用。

    backfillPriority 設定為 low

    "algorithm": { "backfillPriority": "low", "strategy": "exhaustiveSearch" },

偏好具有擴展的舊票證

當相符項目難以完成時,擴展規則會放鬆相符條件。當部分完成比對中的票證達到特定年齡時,Amazon GameLift 會套用擴展規則。票證的建立時間戳記會決定 Amazon 何時 GameLift 套用規則;依預設, 會 FlexMatch 追蹤最近相符票證的時間戳記。

若要在 FlexMatch 套用擴展規則時變更 ,請依照下列expansionAgeSelection方式設定 屬性:

  • 根據最新的票證展開。此選項會根據新增至潛在比對的最新票證套用擴展規則。每次 FlexMatch 符合新票證時,都會重設時鐘。使用此選項時,產生的相符項目往往具有更高的品質,但需要較長的時間才能相符;如果相符請求花費太長的時間才能相符,則在完成之前可能會逾時。expansionAgeSelection 設定為 newestnewest 為預設值。

  • 根據最舊的票證展開。此選項會根據潛在相符中最舊的票證套用擴展規則。使用此選項, 會更快 FlexMatch 地套用擴展,從而改善最早相符玩家的等待時間,但會降低所有玩家的相符品質。將 expansionAgeSelection 設定為 oldest

"algorithm": { "expansionAgeSelection": "oldest", "strategy": "exhaustiveSearch" },