

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

# 例: チームレベル要件とレイテンシーの制限を設定する
<a name="match-examples-3"></a>

この例は、プレイヤーチームのセットアップ方法と、各プレイヤーの代わりに各チームに一連のルールセットを適用する方法を示しています。3 つの均等にマッチングされたチームを作成するための 1 つの定義を使用します。また、すべてのプレイヤーの最大レイテンシーを設定します。レイテンシーの最大値は、マッチングを達成するために徐々に緩和できます。この例では、以下の手順を開始します。
+ プレイヤーのチームを 3 つ作成します。
  + 各チームに 3〜5 名のプレイヤーを含めます。
  + 各チームの最終的なプレイヤー数は同数またはほぼ同数 (差は 1 以内) にする必要があります。
+ 以下のプレイヤー属性を含めます。
  + プレイヤーのスキルレベル (指定しない場合、デフォルトの 10 が使用されます)。
  + プレイヤーのキャラクターロール (指定しない場合、デフォルトの「農民」が使用されます)。
+ マッチングのスキルレベルが類似するプレイヤーを選択します。
  + 各チームのプレイヤーの平均スキル差は 10 ポイント以内とします。
+ チームの「医者」キャラクターを以下の数に制限します。
  + マッチング全体の医者の最大数は 5 とします。
+ 50 ミリ秒以下のレイテンシーを報告したプレイヤーのみにマッチングします。
+ すぐにマッチングが達成されない場合は、以下のようにプレイヤーのレイテンシー要件を緩和します。
  + 10 秒後に、プレイヤーのレイテンシー値として最大 100 ミリ秒まで許可します。
  + 20 秒後に、プレイヤーのレイテンシー値として最大 150 ミリ秒まで許可します。

このルールセットの使用に関する注意事項 
+ このルールセットでは、プレイヤーのスキルに基づいてチームを均等にマッチングします。`FairTeamSkill` ルールを評価するため、FlexMatch が暫定的にプレイヤー候補をチームに追加し、チームのプレイヤーの平均スキルを計算します。次に、これを両方のチームのプレイヤー平均スキルと比較します。ルールが失敗すると、プレイヤー候補はマッチングに追加されません。
+ チームレベルおよびマッチングレベルの要件 (医者の総数) は、収集ルールを通じて達成されます。このルールタイプでは、すべてのプレイヤーのキャラクター属性のリストを、最大数に照らしてチェックします。すべてのチームのすべてのプレイヤーのリストを作成するには、`flatten` を使用します。
+ レイテンシーに基づいて評価する場合は、以下の点に注意してください。
  + レイテンシーデータは、Player オブジェクトの一部としてマッチメーキングリクエストで提供されます。これは属性ではないため、属性としてリストする必要はありません。正確なレイテンシー測定値を取得するには、Amazon GameLift Servers の UDP ping ビーコンを使用します。これらのエンドポイントを使用すると、プレイヤーデバイスと潜在的な各ホスティングロケーション間の実際の UDP ネットワークレイテンシーを測定できるため、ICMP ping を使用するよりも正確な配置決定を行うことができます。UDP ping ビーコンを使用してレイテンシーを測定する方法の詳細については、[「UDP ping ビーコン](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/reference-udp-ping-beacons.html)」を参照してください。
  + マッチメーカーは、リージョン別にレイテンシーを評価します。レイテンシーが最大数を超えるすべてのリージョンは無視されます。プレイヤーがマッチングで承諾されるためには、レイテンシーが最大値未満のリージョンが少なくとも 1 つ必要です。
  + マッチメーキングリクエストが 1 人または複数のプレイヤーのレイテンシデータを省略した場合、そのリクエストはすべてのマッチで拒否されます。

```
{
    "name": "three_team_game",
    "ruleLanguageVersion": "1.0",
    "playerAttributes": [{
        "name": "skill",
        "type": "number",
        "default": 10
    },{
        "name": "character",
        "type": "string_list",
        "default": [ "peasant" ]
    }],
    "teams": [{
        "name": "trio",
        "minPlayers": 3,
        "maxPlayers": 5,
        "quantity": 3
    }],
    "rules": [{
        "name": "FairTeamSkill",
        "description": "The average skill of players in each team is within 10 points from the average skill of players in the match",
        "type": "distance",
        // get players for each team, and average separately to produce list of 3
        "measurements": [ "avg(teams[*].players.attributes[skill])" ],
        // get players for each team, flatten into a single list, and average to produce overall average
        "referenceValue": "avg(flatten(teams[*].players.attributes[skill]))",
        "maxDistance": 10 // minDistance would achieve the opposite result
    }, {
        "name": "CloseTeamSizes",
        "description": "Only launch a game when the team sizes are within 1 of each other.  e.g. 3 v 3 v 4 is okay, but not 3 v 5 v 5",
        "type": "distance",
        "measurements": [ "max(count(teams[*].players))"],
        "referenceValue": "min(count(teams[*].players))",
        "maxDistance": 1
    }, {
        "name": "OverallMedicLimit",
        "description": "Don't allow more than 5 medics in the game",
        "type": "collection",
        // This is similar to above, but the flatten flattens everything into a single
        // list of characters in the game.
        "measurements": [ "flatten(teams[*].players.attributes[character])"],
        "operation": "contains",
        "referenceValue": "medic",
        "maxCount": 5
    }, {
        "name": "FastConnection",
        "description": "Prefer matches with fast player connections first",
        "type": "latency",
        "maxLatency": 50
    }],
    "expansions": [{
        "target": "rules[FastConnection].maxLatency",
        "steps": [{
            "waitTimeSeconds": 10,
            "value": 100
        }, {
            "waitTimeSeconds": 20,
            "value": 150
        }]
    }]
}
```