

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 例: 複合ルールを使用して、類似の属性または類似のセレクションを持つプレイヤーとのマッチを作成する
<a name="match-examples-10"></a>

この例では、`compound` を使用して 2 つのチームとの試合にルールセットを設定する方法を示します。これらの例では: 
+ `SimilarLeagueDistance` ルールにより、試合内のすべてのプレイヤーが、他の 2 人のプレイヤーとの間で `league` に参加します。
+ `SimilarSkillDistance` ルールにより、試合内のすべてのプレイヤーが、他の 10 人のプレイヤーとの間で `skill` に参加します。プレイヤーが 10 秒待っている場合、距離は20に拡大されます。プレイヤーが 20 秒待っている場合、距離は40に拡大されます。
+ `SameMapComparison` ルールにより、試合内のすべてのプレイヤーが同じ `map` をリクエストしていることが保証されます。
+ `SameModeComparison`ルールにより、試合内のすべてのプレイヤーが同じことをリクエストしていることが保証されます`mode`。
+ `CompoundRuleMatchmaker` ルールにより、以下の条件の内 1 つが true である場合に、マッチを保証します。
  + マッチ内のプレイヤーは同じ `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
        }]
    }]
}
```