

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

# FlexMatch 規則集屬性定義
<a name="match-ruleset-property-definitions"></a>

本節定義規則集結構描述中的每個屬性。如需建立規則集的其他說明，請參閱 [建置FlexMatch規則集](match-rulesets.md)。

**`name`**  
規則集的描述性標籤。此值與指派給 Amazon GameLift Servers [MatchmakingRuleSet 資源](https://docs.aws.amazon.com/gamelift/latest/apireference/API_MatchmakingRuleSet.html)的名稱無關。此值會包含在描述已完成配對的配對資料中，但不會用於任何Amazon GameLift Servers程序。  
允許的值：字串  
是否為必要？ 否

**`ruleLanguageVersion`**  
正在使用的 FlexMatch 屬性表達式語言版本。  
允許的值："1.0"  
是否為必要？ 是

**`playerAttributes`**  
包含在配對請求中的玩家資料集合，用於配對程序。您也可以在此處宣告屬性，讓玩家資料包含在傳遞至遊戲伺服器的配對資料中，即使資料未用於配對程序。  
是否為必要？ 否    
**`name`**  
配對建構器要使用的玩家屬性的唯一名稱。此名稱必須符合配對請求中參考的玩家屬性名稱。  
允許的值：字串  
是否為必要？ 是  
**`type`**  
玩家屬性值的資料類型。  
允許的值："string"、"number"、"string\_list"、"string\_number\_map"  
是否為必要？ 是  
**`default `**  
當配對請求未提供玩家時要使用的預設值。  
允許的值：播放器屬性允許的任何值。  
是否為必要？ 否 

**`algorithm`**  
自訂配對程序的選用組態設定。  
是否為必要？ 否    
**`strategy`**  
建置相符項目時要使用的 方法。如果未設定此屬性，則預設行為為「exhaustiveSearch」。  
允許的值：  
+ 「exhaustiveSearch」 – 標準比對方法。 會根據一組自訂FlexMatch比對規則，評估集區中的其他票證，在批次中形成最舊票證的比對。此策略用於 40 名或更少玩家的配對。使用此策略時， `batchingPreference`應設定為「隨機」或「排序」。
+ "balanced" – 最佳化以快速形成大型配對的方法。此策略僅用於 41 到 200 名玩家的配對。它透過預先排序票證集區、建立潛在配對並將玩家指派給隊伍，然後使用指定的玩家屬性平衡配對中的每個隊伍來形成配對。例如，此策略可用來平衡配對中所有團隊的平均技能水準。使用此策略時， `balancedAttribute` 必須設定 ，且 `batchingPreference`應設定為「largestPopulation」或「fastestRegion」。此策略無法辨識大多數自訂規則類型。
是否為必要？ 是  
**`batchingPreference`**  
分組配對建置票證之前要使用的預先排序方法。預先排序票證集區會導致根據特定特徵將票證批次在一起，這往往會增加最終配對中玩家之間的一致性。  
允許的值：  
+ "random" – 僅適用於 `strategy` = "exhaustiveSearch"。未完成預先排序；集區中的票證會隨機批次處理。這是詳盡搜尋策略的預設行為。
+ "sorted" – 僅適用於 `strategy` = "exhaustiveSearch"。票證集區會根據 中列出的玩家屬性預先排序`sortbyAttributes`。
+ "largestPopulation" – 僅適用於 `strategy` = "balanced"。票證集區會依玩家回報可接受延遲層級的區域預先排序。這是平衡策略的預設行為。
+ "fastestRegion" – 僅適用於 `strategy` = "balanced"。票證集區會依玩家回報其最低延遲等級的區域預先排序。產生的配對需要更長的時間才能完成，但所有玩家的延遲往往很低。
是否為必要？ 是  
**`balancedAttribute`**  
使用平衡策略建置大型配對時要使用的玩家屬性名稱。  
允許的值：`playerAttributes`在 中宣告且 `type` = "number" 的任何屬性。  
是否為必要？ 是，如果 `strategy` = "balanced"。  
**`sortByAttributes`**  
在批次處理之前預先排序票證集區時要使用的玩家屬性清單。只有在使用詳盡的搜尋策略預先排序時，才會使用此屬性。屬性清單的順序決定排序順序。 使用 Alpha 和數值FlexMatch的標準排序慣例。  
允許的值：在 中宣告的任何屬性`playerAttributes`。  
是否為必要？ 是，如果 `batchingPreference` = "sorted"。  
**`backfillPriority`**  
符合回填票證的優先順序方法。此屬性會決定何時在批次中FlexMatch處理回填票證。只有在使用詳盡的搜尋策略預先排序時才會使用它。如果未設定此屬性，則預設行為為「正常」。  
允許的值：  
+ "normal" – 形成相符項目時，不會考慮票證的請求類型 （回填或新相符項目）。
+ "high" – 票證批次會依請求類型 （然後依年齡排序） 排序，並FlexMatch嘗試先比對回填票證。
+ 「低」：票證批次會依請求類型 （然後依年齡排序） 排序，並FlexMatch嘗試先比對未回填的票證。
是否為必要？ 否  
**`expansionAgeSelection`**  
計算相符規則擴展的等待時間的方法。如果在經過一定的時間後仍未完成配對，則擴展會用來放寬配對要求。等待時間是根據已在部分填充配對中票證的存留期計算。如果未設定此屬性，則預設行為為「最新」。  
允許的值：  
+ 「最新」：擴展等待時間是根據部分完成配對中具有最新建立時間戳記的票證計算。擴展觸發速度較慢，因為較新的票證可以重新啟動等待時鐘。
+ 「最舊」：擴充等待時間是根據相符項目中建立時間戳記最舊的票證來計算。擴展通常會更快觸發。
是否為必要？ 否

**`teams`**  
配對中團隊的組態。為每個團隊提供團隊名稱和大小範圍。規則集必須至少定義一個團隊。    
**`name`**  
團隊的唯一名稱。團隊名稱可以在規則和擴展中參考。在成功配對時，玩家會依配對資料中的隊伍名稱指派。  
允許的值：字串  
是否為必要？ 是  
**`maxPlayers`**  
可指派給團隊的玩家數量上限。  
允許的值：數字  
是否為必要？ 是  
**`minPlayers`**  
在配對可行之前，必須指派給隊伍的玩家人數下限。  
允許的值：數字  
是否為必要？ 是  
**`quantity`**  
要在配對中建立的此類型團隊數量。數量大於 1 的團隊會以附加數字 ("Red\_1"、"Red\_2" 等） 指定。如果未設定此屬性，預設值為 "1"。  
允許的值：數字  
是否為必要？ 否

**`rules`**  
定義如何評估玩家配對的規則陳述式集合。  
是否為必要？ 否    
**`name`**  
規則的唯一名稱。規則集中的所有規則都必須具有唯一的名稱。在追蹤規則相關活動的事件日誌和指標中，會參考規則名稱。  
允許的值：字串  
是否為必要？ 是  
**`description`**  
規則的文字描述。此資訊可用於識別規則的目的。它不會用於配對程序。  
允許的值：字串  
是否為必要？ 否  
**`type`**  
規則陳述式的類型。每個規則類型都有必須設定的其他屬性。如需每個規則類型的結構和使用詳細資訊，請參閱 [FlexMatch 規則類型](match-rules-reference-ruletype.md)。  
允許的值：  
+ "absoluteSort" – 根據指定的玩家屬性是否與批次中最舊的票證進行比較，使用明確排序方法來排序批次中的票證。
+ 「集合」 – 評估集合中的值，例如集合的玩家屬性，或多個玩家的一組值。
+ "comparison" – 比較兩個值。
+ "compound" – 使用規則集中其他規則的邏輯組合來定義複合配對規則。僅支援 40 名或更少玩家的配對。
+ "distance" – 測量數值之間的距離。
+ "batchDistance" – 測量屬性值之間的差異，並使用它來分組相符請求。
+ "distanceSort" – 根據指定玩家屬性與批次中最舊的票證的比較，使用明確排序方法來排序批次中的票證。
+ "latency" – 評估針對配對請求報告的區域延遲資料。
是否為必要？ 是

**`expansions`**  
當無法完成配對時，隨時間放寬配對要求的規則。將擴展設定為一系列逐步套用的步驟，以便更容易找到相符項目。根據預設， 會根據新增至配對的最新票證存留期來FlexMatch計算等待時間。您可以使用演算法屬性 來變更計算擴展等待時間的方式`expansionAgeSelection`。  
擴展等待時間是絕對值，因此每個步驟的等待時間應該比上一個步驟長。例如，若要排程漸進一系列的擴展，您可以使用 30 秒、40 秒和 50 秒的等待時間。等待時間不能超過配對請求允許的最長時間，該請求是在配對組態中設定。  
是否為必要？ 否    
**`target`**  
要放寬的規則集元素。您可以放寬團隊大小屬性或任何規則陳述式屬性。語法為「<component name>【<rule/team name>】.<property name>」。例如，若要變更團隊大小下限：`teams[Red, Yellow].minPlayers`。若要在名為 "minSkill" 的比較規則陳述式中變更最低技能需求：`rules[minSkill].referenceValue`。  
是否為必要？ 是  
**`steps`**    
**`waitTimeSeconds`**  
套用目標規則集元素的新值之前等待的時間長度，以秒為單位。  
是否為必要？ 是  
**`value`**  
目標規則集元素的新值。