Configuring Match Rulesets
概要
マッチルールセットは、マッチメイキングサービスがマッチチケット間の適合性を判断するためのロジックを定義します。これにより、最適なゲームプレイ体験を実現します。
このガイドでは、チームベースとスキルベース両方のマッチロジックを有効にするために、マッチルールセットを設定する方法を説明します。これには、チケットがキューに長く留まらないように、ルールを緩和する方法も含まれます。
このガイドを進める前に知っておくべき重要な用語は次のとおりです。
- 属性:属性は、MMR などの数値であり、チケットを比較してマッチの適合性を判断するために使用できます。これらの値は、Accelbyte の 統計データ サービスに保存したり、外部で管理したりもできますが、いずれの場合も、ゲームプレイ中におけるこれらの値の更新はゲームロジック次第です。
- ルールフレキシング:ルールフレキシングとは、定義されたルールセットを時間の経過とともに緩和し、チケットがキュー内で長時間待機することがないようにするプロセスです。しかしこれによって、希望するゲームプレイ体験にとってマッチの適合性が最適でなくなる可能性があります。
目標
このガイドの目標は以下を説明することです。
- マッチルールセットの概要と、管理者ポータルでの設定方法
- ルールセットの一部として有効にできるさまざまな種類の動作
- プレイヤーの待機時間が長くならないように、定義された動作のフレキシングを有効にする方法
前提条件
- 当社のロビー、マッチメイキング、セッション サービスに精通している。
- 管理者ポータルにアクセスでき、ログインできる。
- このルールセットに セッションテンプレート を設定している。
チームベースのマッチメイキング
多くのゲームはチームベースのゲームプレイをサポートしており、ゲームモード の目標が満たされるまで、プレイヤーはチームの一員として対戦に参加します。これらの目標は、マッチルールセットの一部として設定できます。ルールセットでは、任意の数のチームがゲームセッションに参加できます。各チームは、ゲームプレイを開始する前に、プレイヤーの最大人数と最小人数を指定されることがあります。
チームベースのルールセットを設定するには、以下の例で示すように、適切な JSON を定義する必要があります。この設定は、ゲームプレイを開始するには 2 チームに、それぞれ 5 人以上のプレイヤーが必要であることを指定しています。
JSON ブロックのalliance
は、評価中に順守される主なルールを表します。
{
"auto_backfill": true,
"alliance": {
"min_number": 2,
"max_number": 2,
"player_min_number": 5,
"player_max_number": 5
}
}
- Auto_backfill:スポットがいっぱいになるまでセッションが自動的にオープンスポットをバックフィルすることを指定します。
- Min_Number:ゲームプレイを開始するために必要なチームの最小数を指定します。
- Max_Number:ゲームプレイ中に参加できるチームの最大数を指定します。
- Player_min_number:ゲームプレイを開始するために各チームに必要な、プレイヤーの最小人数を指定します。
- Player_max_number:ゲームプレイ中にチームに参加できるプレイヤーの最大人数を指定します。
チームのルールフレキシング
チームとプレイヤーの最小数について定義されたルールを緩和するには、以下の例に示すように JSON を更新することで、ルールセットにロジックを追加します。この設定では、120 秒後に、ゲームプレイを開始するために必要なチームの最小数が 2 から 1 に減り、プレイヤーの最小人数は 5 から 1 に減るよう指定されています。
JSON ブロックのalliance_flexing_rule
は、指定された時間後にルールがどのように緩和されるかを表しています。チームのフレキシングルールを追加するには、alliance_flexing_rule ブロックを追加します。
{
"auto_backfill": true,
"alliance": {
"min_number": 2,
"max_number": 2,
"player_min_number": 5,
"player_max_number": 5
},
"alliance_flexing_rule": [
{
"duration": 120,
"min_number": 1,
"max_number": 2,
"player_min_number": 1,
"player_max_number": 5
}
]
}
- Duration:チケットの経過時間に基づいて、サービスがチームルールのフレキシングを開始するまでの時間(秒単位)を指定します。
- Min_Number:ゲームプレイを開始するために必要な最小チーム数の最新の値を指定します。
- Max_Number:ゲームプレイ中に参加できる最大チーム数の最新の値を指定します。
- Player_min_number:ゲームプレイを開始するために各チームに必要な最小プレイヤー数の最新の値を指定します。
- Player_max_number:ゲームプレイ中にチームに参加できる最大プレイヤー数の最新の値を指定します。
スキルベースのマッチメイキング
スキルに基づくマッチはゲームプレイ中によく使用されます。これは、MMR などの属性として定義および追跡されて、同等のスキルレベルのプレイヤーが同じゲームセッションに参加するようにするためです。これは、熟練したプレイヤーが未熟なプレイヤーとマッチすることがないようにし、プレイヤー全員のゲーム体験の整合性を維持するためです。
スキルベースのルールセットを設定するには、以下の例に示すように、適切な JSON を定義する必要があります。この設定は、MMR 属性についてマッチチケットが互いに 200 単位以内である必要があること指定しています。
スキルベースのルールセットを設定するには、チームの定義も必要です。
JSON ブロックのmatchingRules
は、評価中に順守される主なルールを表しています。その他の属性に関するルールを追加するには、matchingRules
ブロックを追加します。
{
"auto_backfill": true,
"alliance": {
"min_number": 2,
"max_number": 2,
"player_min_number": 5,
"player_max_number": 5
},
"matchingRules": [
{
"attribute": "mmr",
"criteria": "distance",
"reference": 200
}
]
}
- Attribute:ルールセットがプレイヤーを比較し、マッチさせるかどうかを判断するために使用する属性を指定します。
- Criteria:プレイヤー間で属性を比較してマッチさせるかどうかを判断する基準を指定します。
- Distance - 現在、距離のみが最初からサポートされています。これは、プレイヤー間の地理的距離に基づいて属性を比較します。
- Reference:定義された属性の許容差異を指定し、+/-200 の距離内にいるプレイヤーがマッチします。
属性のルールフレキシング
属性について定義されたルールを緩和するには、以下の例に示すように JSON を更新することで、ルールセットにロジックを追加します。この設定は、15 秒後に、MMR 属性についてマッチチケットが互いに 300 単位以内である必要があることを指定しています。
JSON ブロックのflexingRules
は指定された時間後にルールがどのように緩和されるかを表しています。属性のフレキシングルールを追加するには、flexingRules
ブロックを追加します。
{
"auto_backfill": true,
"alliance": {
"min_number": 2,
"max_number": 2,
"player_min_number": 5,
"player_max_number": 5
},
"matchingRules": [
{
"attribute": "mmr",
"criteria": "distance",
"reference": 200
}
],
"flexingRules": [
{
"duration": 15,
"attribute": "mmr",
"criteria": "distance",
"reference": 300
}
]
}
- Duration:チケットの経過時間に基づいて、サービスが属性ルールのフレキシングを開始するまでの時間(秒単位)を指定します。
- Attribute:ルールセットがプレイヤーを比較してマッチさせるかどうかを判断するために使用する属性を指定します。これはルールフレキシングに影響しません。
- Criteria:プレイヤー間で属性を比較してマッチさせるかどうかを判断する基準を指定します。これはルールフレキシングに影響しません。
- Distance - 現在、距離のみが最初からサポートされています。これは、プレイヤー間の地理的距離に基づいて属性を比較します。
- Reference:定義された属性の許容差異を指定します。マッチの可能性を高めるために元のリファレンスポイントよりも高い値である必要があります。この例では、フレキシング中に差異が 200 から 300 に増えます。
管理者ポータルでのルールセットの設定
まず、マッチのためにプレイヤーを比較する際にルールセットによって使用されるロジックを決定します。JSON の定義が完了したら、続けてルールセットを作成します。
管理者ポータルで、目的の名前空間を選択します。左側のメニューで、[Game Management (ゲーム管理)]に移動し、[New Matchmaking (新しいマッチメイキング)]をクリックし、[Match Configuration (マッチの設定)]を選択します。
右上隅にある[+ Create Rulesets (+ルールセットを作成)]を選択します。
[Create Match Ruleset (マッチルールセットを作成)]ページが表示されます。
[Ruleset Name (ルールセット名)]フィールドに、このルールセットの名前を入力します。
[Configuration (JSON) (設定(JSON))]フィールドで、本文を目的の JSON に置き換えます。
検証エラーがなければ、[Create (作成)]ボタンをクリックします。
例1:チームベースの 8 対 8
ここで例示する JSON 設定は、それぞれプレイヤーが 8 人いる 2 チームにプレイヤーをマッチさせるためのルールセットを定義しています。ただし、各チームに 4 人のプレイヤーが参加すれば、ゲームセッションをリクエストできます。
自動バックフィルを有効にすると、満員になるまで新しいプレイヤーがゲームセッションにマッチングされ、ゲームプレイが開始されます。
{
"auto_backfill": true,
"alliance": {
"min_number": 2,
"max_number": 2,
"player_min_number": 4,
"player_max_number": 8
}
}
例 2:スキルベースのフリーフォーオール
ここで例示する JSON 設定は、フリーフォーオールのゲームセッションに 25 人のプレイヤーをマッチさせるルールセットを定義しています。マッチング中、サービスは MMR 属性を比較し、+/-200 の距離内にある他のチケットとマッチを作成しようとします。時間が経過すると、プレイヤーの待機時間が長くなるのを防ぐために、ルールは 15 秒ずつ、最大 45 秒まで緩和されます。
自動バックフィルが無効にされている場合、新しいプレイヤーがゲームセッションに追加されません。
{
"auto_backfill": false,
"alliance": {
"min_number": 1,
"max_number": 1,
"player_min_number": 25,
"player_max_number": 25
},
"matchingRules": [
{
"attribute": "mmr",
"criteria": "distance",
"reference": 200
}
],
"flexingRules": [
{
"duration": 15,
"attribute": "mmr",
"criteria": "distance",
"reference": 300
}
],
"flexingRules": [
{
"duration": 30,
"attribute": "mmr",
"criteria": "distance",
"reference": 400
}
],
"flexingRules": [
{
"duration": 45,
"attribute": "mmr",
"criteria": "distance",
"reference": 500
}
]
}