

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

# 範例：使用複合規則來建立與具有類似屬性或類似選擇之玩家的配對
<a name="match-examples-10"></a>

此範例說明如何使用 為兩個隊伍的配對設定規則集`compound`。在範例中：
+ 此`SimilarLeagueDistance`規則可確保配對中的所有玩家在其他玩家的 2 `league` 個內都有 。
+ 此`SimilarSkillDistance`規則可確保配對中的所有玩家在 10 個其他玩家`skill`中有 。如果玩家正在等待 10 秒，則距離會擴展到 20 秒。如果玩家正在等待 20 秒，則距離會擴展到 40 秒。
+ 此`SameMapComparison`規則可確保配對中的所有玩家都請求相同的 `map`。
+ 此`SameModeComparison`規則可確保配對中的所有玩家都請求相同的 `mode`。
+ 如果至少符合下列其中一個條件，則`CompoundRuleMatchmaker`規則可確保相符：
  + 配對中的玩家已請求相同的 `map`和相同的 `mode`。
  + 配對中的玩家具有相當的 `skill`和 `league` 屬性。

```
{
    "ruleLanguageVersion": "1.0",
    "teams": [{
        "name": "red",
        "minPlayers": 10,
        "maxPlayers": 20
    }, {
        "name": "blue",
        "minPlayers": 10,
        "maxPlayers": 20
    }],
    "algorithm": {
        "strategy":"balanced",
        "balancedAttribute": "skill",
        "batchingPreference":"fastestRegion"
    },
    "playerAttributes": [{
        "name": "league",
        "type": "number"
    },{
        "name": "skill",
        "type": "number"
    },{
        "name": "map",
        "type": "string"
    },{
        "name": "mode",
        "type": "string"
    }],
    "rules": [{
        "name": "SimilarLeagueDistance",
        "type": "distance",
        "measurements": ["max(flatten(teams[*].players.attributes[league]))"],
        "referenceValue": "min(flatten(teams[*].players.attributes[league]))",
        "maxDistance": 2
    }, {
        "name": "SimilarSkillDistance",
        "type": "distance",
        "measurements": ["max(flatten(teams[*].players.attributes[skill]))"],
        "referenceValue": "min(flatten(teams[*].players.attributes[skill]))",
        "maxDistance": 10
    }, {
        "name": "SameMapComparison",
        "type": "comparison",
        "operation": "=",
        "measurements": ["flatten(teams[*].players.attributes[map])"]
    }, {
        "name": "SameModeComparison",
        "type": "comparison",
        "operation": "=",
        "measurements": ["flatten(teams[*].players.attributes[mode])"]
    }, {
        "name": "CompoundRuleMatchmaker",
        "type": "compound",
        "statement": "or(and(SameMapComparison, SameModeComparison), and(SimilarSkillDistance, SimilarLeagueDistance))"
    }],
    "expansions": [{
        "target": "rules[SimilarSkillDistance].maxDistance",
        "steps": [{
            "waitTimeSeconds": 10,
            "value": 20
        }, {
            "waitTimeSeconds": 20,
            "value": 40
        }]
    }]
}
```