本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
自訂相符演算法
FlexMatch 最佳化大多數遊戲的預設演算法,讓玩家在最短的等待時間內進入可接受的比賽。您可以自訂演算法並調整遊戲的配對。
以下是預設 FlexMatch 比對演算法:
-
FlexMatch 將所有開啟的配對票證和回填票證放置在票證集區中。
-
FlexMatch 會將集區中的票證隨機分組為一或多個批次。隨著票證集區變大, 會 FlexMatch 形成其他批次以維持最佳批次大小。
-
FlexMatch 會根據年齡,在每個批次內排序票證。
-
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
設定為newest
。newest
為預設值。 -
根據最舊的票證展開。此選項會根據潛在相符中最舊的票證套用擴展規則。使用此選項, 會更快 FlexMatch 地套用擴展,從而改善最早相符玩家的等待時間,但會降低所有玩家的相符品質。將
expansionAgeSelection
設定為oldest
。
"algorithm": { "expansionAgeSelection": "oldest", "strategy": "exhaustiveSearch" },