クロスプラットフォームのマッチメイキングを設定する
注釈:本資料はAI技術を用いて翻訳されています。
概要
クロスプラットフォームプレイ(クロスプレイ)により、ゲームがサポートする任意のプラットフォームのプレイヤーが一緒にプレイできます。これは一般的にプレイヤーにとって好ましい体験ですが、一部のプラットフォームでは、プレイヤーがオプトアウトできる機能をゲームがサポートすることを要求しています。
AccelByte Gaming Services(AGS)マッチメイキングはデフォルトでクロスプレイがオンになっていますが、マッチをリクエストする際にゲームクライアントからサービスに渡されるカスタムパラメータを使用してプレイヤー制御をサポートするように設定できます。これにより、プレイヤーはクロスプレイに完全にオプトインまたはオプトアウトしたり、マッチングしたいプラットフォームのサブセットを選択したりできます。プレイヤーセッション属性を使用してプレイヤーの設定を構成することもできます。
この記事では、クロスプレイ検証をサポートするマッチルールセットを設定し、マッチメイキングプロセスの一部としてプレイヤーの設定をカスタムパラメータとして渡す方法を説明します。
このガイドは、AGSマッチメイキングで利用可能なデフォルトのマッチ関数を使用していることを前提としています。AGS Extendを使用して独自の関数を作成する予定の場合、必要なロジックが異なる場合があります。
目標
この記事は、プレイヤーのクロスプレイのオプトインまたはオプトアウトの選択を尊重するマッチルールセットを設定する方法の概要を提供し、その選択に関連するカスタムパラメータを使用してマッチチケットを送信する方法を示すことを目的としています。
前提条件
この記事のすべての手順を完了するには、以下が必要です:
- AGS Lobby、Session、Matchmakingに関する知識
- 作成および設定されたセッションテンプレート、マッチルールセット、マッチプール
- UnrealまたはUnityプロジェクトにAGSマッチメイキングを統合済み
- ゲームクライアントにプレイヤークロスプレイ設定を実装済み
カスタムパラメータをサポートするマッチルールセットを設定する
プレイヤー制御をサポートするには、クロスプレイ固有のカスタムパラメータ基準を使用してマッチルールセットを設定する必要があります。これを行うには、以下の例に示すように、マッチオプションを含めるようにルールセットJSON設定を更新する必要があります。
以下の例では、ゲームが4人協力プレイゲームであり、Steam、Xbox Live(XBL)、PlayStation Network(PSN)でリリースされていると仮定しています。ルールセットJSONでは、cross_platformという名前のマッチオプションがタイプallで追加されていることがわかります。オプションの名前は、ゲームクライアントからパラメータとして渡される値のキーとして機能します。Typeを使用すると、渡された値を評価するために使用される基準を定義でき、次のオプションのいずれかに設定できます:
- All - プレイヤーは、同じパラメータと値を持つ他のプレイヤーとマッチングされる必要があります。
- Any - プレイヤーは、同じオプションパラメータ名を持ち、少なくとも1つの一致する値を持つ他のプレイヤーとマッチングされる必要があります。
- Unique - プレイヤーは、同じオプションパラメータ名を持つが、異なる値を持つ他のプレイヤーとマッチングされる必要があります。
この例ではallが設定されているため、設定として正確に一致する値を持つプレイヤーのみが一緒にマッチングできます。たとえば、あるプレイヤーがSteamを設定し、別のプレイヤーがXBLとSteamを設定した場合、マッチングできません。
{
"auto_backfill": true,
"alliance": {
"min_number": 1,
"max_number": 1,
"player_min_number": 4,
"player_max_number": 4
},
"match_options": {
"options": [
{
"name": "cross_platform",
"type": "all"
}
]
}
}
ゲームクライアントのマッチメイキングリクエストにプレイヤークロスプレイ選択を追加する
マッチルールセットが設定されたら、ゲームクライアントのマッチメイキング呼び出しを更新して、マッチリクエストの一部としてプレイヤーの設定をカスタムパラメータとして渡すことをサポートできます。
以下は、渡された値がどのように解釈されるかの例と、マッチメイキングリクエストの一部としてゲームクライアントからカスタムパラメータを渡す方法を示すコード例です。
- プレイヤーが任意のプラットフォームユーザーとクロスプレイしたい場合:
- "cross_platform": ["steam", "xbl", "ps5", "ps4"]
- プレイヤーが他のXBLプラットフォームユーザーとのみプレイしたい場合:
- "cross_platform": ["xbl"]
- プレイヤーがコンソールユーザーとのみクロスプレイしたい場合(PCユーザーなし):
- "cross_platform": ["xbl", "ps5", "ps4"]
バックエンドは、悪意のあるプレイヤーがcross_platform値を改ざんするのを防ぐために検証を行います。バックエンドは、プレイヤーが送信したcross_platform値にプレイヤーのアクティブなプラットフォームが含まれているかどうかを確認します。たとえば、Steamプレイヤーが["ps5", "ps4"]のcross_platform値を送信すると、バックエンドは値にsteamを追加します。例:["steam", "ps5", "ps4"]。
推奨:クロスプレイ設定用のプレイヤーセッション属性を設定する
マッチメイキングチケットリクエストでcross_platformを設定すると、ゲームクライアントはクロスプレイのプラットフォームを柔軟に制御できます。ただし、将来追加のプラットフォームを追加する際にゲームクライアントの変更が必要になります。プレイヤークロスプレイ設定を構成する2番目の方法は、プレイヤーセッション属性を使用することです。プレイヤーセッション属性crossplayEnabledをtrueまたはfalseに設定することで、マッチチケットにcross_platform属性がない場合でも、バックエンドはcross_platform値を入力します。
- crossplayEnabled:true: マッチチケットに
cross_platform属性が含まれていない場合、マッチメイキングは、ゲームネームスペースで設定されているすべてのアクティブなログイン方法でcross_platformを入力します。 - crossplayEnabled:false: マッチチケットに
cross_platform属性が含まれていない場合、マッチメイキングは、プレイヤーがログインしている現在のプラットフォームでcross_platformを入力します。
例
このシナリオでは、ゲームはSteam、PS5、Xboxで配信されています。
| プレイヤープラットフォーム | クロスプレイ有効 | クロスプラットフォーム値 |
|---|---|---|
| Steam | true | ["steam", "ps5", "xbox"] |
| PS5 | false | ["ps5"] |
| PS5 | true | ["steam", "ps5", "xbox"] |
| Xbox | false | ["xbox"] |
セッション属性を設定する際、currentPlatformとplatforms情報に対してバックエンドで検証が行われます。currentPlatform値は、プレイヤーがログインしているプラットフォームのみにすることができます。platforms値は、現在のゲームネームスペースのアクティブなログイン方法のみにすることができます。したがって、プレイヤーは誤った情報で値を改ざんすることはできません。
マッチプール経由でクロスプレイを管理する
ルールセットのマッチオプションにcross_platformが含まれている場合、管理者はマッチプール設定からマッチプールの動作を設定できます。マッチプールのクロスプレイ設定は、プレイヤーのクロスプレイ設定よりも優先されます。
...
"match_options": {
"options": [
{
"name": "cross_platform",
"type": "all"
}
]
}
...
マッチプール設定で設定できるクロスプレイオプションは3つあります:

- Cross-Play: デフォルトでは、AGSはクロスプレイが有効になっています。
- Platform Group: マッチプール(キュー)内のすべてのマッチチケットは、プレイヤーのクロスプレイ設定(プレイヤーセッション属性またはマッチチケットの
cross_platform値)に関係なく、プラットフォームグループでプレイします。 - Platform Exclusive: マッチプール(キュー)内のすべてのマッチチケットは、プレイヤーのクロスプレイ設定(プレイヤーセッション属性またはマッチチケットの
cross_platform値)に関係なく、自分のプラットフォームでプレイします。
| 管理者の意図 | プレイヤーの意図 | 結果 |
|---|---|---|
| ゲーム管理者がマッチプールでクロスプラットフォームプレイを無効化 | プレイヤーがクロスプラットフォームプレイを希望 | プレイヤーは同じプラットフォームまたはプラットフォームグループとのみプレイします。(同一プラットフォームプレイ) |
| ゲーム管理者がマッチプールでクロスプラットフォームプレイを無効化 | プレイヤーがクロスプラットフォームプレイを希望しない | プレイヤーは同じプラットフォームまたはプラットフォームグループとのみプレイします。(同一プラットフォームプレイ) |
| ゲーム管理者がマッチプールでクロスプラットフォームプレイを有効化 | プレイヤーがクロスプラットフォームプレイを希望 | プレイヤーは他のプラットフォームとプレイできます。(クロスプラットフォームプレイ) |
| ゲーム管理者がマッチプールでクロスプラットフォームプレイを有効化 | プレイヤーがクロスプラットフォームプレイを希望しない | プレイヤーは同じプラットフォームとのみプレイします。(同一プラットフォームプレイ) |
パーティセッションのクロスプレイ
パーティでのマッチメイキングでは、パーティは複数のプラットフォームのプレイヤーで構成される場合があります。ゲームがマッチチケット属性cross_platformを使用してクロスプレイ設定を送信する場合、パーティ構成に関係なく、cross_platform値がマッチングする潜在的なプラットフォームを検索するために使用されます。ただし、ゲームがプレイヤーセッション属性を使用する場合、パーティリーダーの設定がマッチメイキングに使用されます。パーティセッション属性のみを使用するゲームの動作は、次の表で確認できます:
| パーティリーダープラットフォーム | クロスプレイ有効 | パーティ構成 | マッチプール設定 | 動作 |
|---|---|---|---|---|
| Steam | true | 同一プラットフォーム | クロスプレイ有効 | すべてのプラットフォームとマッチングします |
| Steam | true | 同一プラットフォーム | クロスプレイ無効 | 同じプラットフォーム(Steam)とマッチングします |
| Steam | true | 混合プラットフォーム | クロスプレイ有効 | すべてのプラットフォームとマッチングします |
| Steam | true | 混合プラットフォーム | クロスプレイ無効 | マッチチケットの作成に失敗します |
| Steam | false | 同一プラットフォーム | クロスプレイ有効 | 同じプラットフォーム(Steam)とマッチングします |
| Steam | false | 同一プラットフォーム | クロスプレイ無効 | 同じプラットフォーム(Steam)とマッチングします |
| Steam | false | 混合プラットフォーム | クロスプレイ有効 | 同じプラットフォーム(Steam)とマッチングします |
| Steam | false | 混合プラットフォーム | クロスプレイ無効 | マッチチケットの作成に失敗します |
「any」ルールを使用したクロスプレイ
クロスプラットフォームマッチメイキングを構築する際、クロスプレイを有効にしているプレイヤーが、同じプラットフォームにログインしている限り、クロスプレイを無効にしているプレイヤーとマッチングできるようにしたい場合があります。 マッチオプション内でanyルールを使用することで、この動作を実現できます。以下にいくつかの使用例を示します。
...
"match_options": {
"options": [
{
"name": "cross_platform",
"type": "any"
}
]
}
...
ケース1
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Xboxがクロスプレイを無効化:["xbox"]
- マッチメイキング結果:プレイヤーAとBはマッチングしません。これは、プレイヤーAが設定にXboxを含めていても、プレイヤーBがクロスプレイを無効にしており、別のXboxプレイヤーとのみマッチングしたいためです。
ケース2
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Steamがクロスプレイを無効化:["steam"]
- マッチメイキング結果:プレイヤーAとBはマッチングできます。
ケース1
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Xboxがクロスプレイを無効化:["xbox"]
- マッチメイキング結果:プレイヤーAとBはマッチングしません。これは、プレイヤーAが設定にXboxを含めていても、プレイヤーBがクロスプレイを無効にしており、別のXboxプレイヤーとのみマッチングしたいためです。
ケース2
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Steamがクロスプレイを無効化:["steam"]
- マッチメイキング結果:プレイヤーAとBはマッチングできます。
ケース1
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Xboxがクロスプレイを無効化:["xbox"]
- マッチメイキング結果:プレイヤーAとBはマッチングしません。これは、プレイヤーAが設定にXboxを含めていても、プレイヤーBがクロスプレイを無効にしており、別のXboxプレイヤーとのみマッチングしたいためです。
ケース2
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Steamがクロスプレイを無効化:["steam"]
- マッチメイキング結果:プレイヤーAとBはマッチングできます。
ケース1
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Xboxがクロスプレイを無効化:["xbox"]
- マッチメイキング結果:プレイヤーAとBはマッチングしません。これは、プレイヤーAが設定にXboxを含めていても、プレイヤーBがクロスプレイを無効にしており、別のXboxプレイヤーとのみマッチングしたいためです。
ケース2
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Steamがクロスプレイを無効化:["steam"]
- マッチメイキング結果:プレイヤーAとBはマッチングできます。
ケース1
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Xboxがクロスプレイを無効化:["xbox"]
- マッチメイキング結果:プレイヤーAとBはマッチングしません。これは、プレイヤーAが設定にXboxを含めていても、プレイヤーBがクロスプレイを無効にしており、別のXboxプレイヤーとのみマッチングしたいためです。
ケース2
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Steamがクロスプレイを無効化:["steam"]
- マッチメイキング結果:プレイヤーAとBはマッチングできます。
ケース1
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Xboxがクロスプレイを無効化:["xbox"]
- マッチメイキング結果:プレイヤーAとBはマッチングしません。これは、プレイヤーAが設定にXboxを含めていても、プレイヤーBがクロスプレイを無効にしており、別のXboxプレイヤーとのみマッチングしたいためです。
ケース2
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Steamがクロスプレイを無効化:["steam"]
- マッチメイキング結果:プレイヤーAとBはマッチングできます。
ケース1
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Xboxがクロスプレイを無効化:["xbox"]
- マッチメイキング結果:プレイヤーAとBはマッチングしません。これは、プレイヤーAが設定にXboxを含めていても、プレイヤーBがクロスプレイを無効にしており、別のXboxプレイヤーとのみマッチングしたいためです。
ケース2
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Steamがクロスプレイを無効化:["steam"]
- マッチメイキング結果:プレイヤーAとBはマッチングできます。
ケース1
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Xboxがクロスプレイを無効化:["xbox"]
- マッチメイキング結果:プレイヤーAとBはマッチングしません。これは、プレイヤーAが設定にXboxを含めていても、プレイヤーBがクロスプレイを無効にしており、別のXboxプレイヤーとのみマッチングしたいためです。
ケース2
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Steamがクロスプレイを無効化:["steam"]
- マッチメイキング結果:プレイヤーAとBはマッチングできます。
ケース1
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Xboxがクロスプレイを無効化:["xbox"]
- マッチメイキング結果:プレイヤーAとBはマッチングしません。これは、プレイヤーAが設定にXboxを含めていても、プレイヤーBがクロスプレイを無効にしており、別のXboxプレイヤーとのみマッチングしたいためです。
ケース2
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Steamがクロスプレイを無効化:["steam"]
- マッチメイキング結果:プレイヤーAとBはマッチングできます。
ケース1
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Xboxがクロスプレイを無効化:["xbox"]
- マッチメイキング結果:プレイヤーAとBはマッチングしません。これは、プレイヤーAが設定にXboxを含めていても、プレイヤーBがクロスプレイを無効にしており、別のXboxプレイヤーとのみマッチングしたいためです。
ケース2
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Steamがクロスプレイを無効化:["steam"]
- マッチメイキング結果:プレイヤーAとBはマッチングできます。
ケース1
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Xboxがクロスプレイを無効化:["xbox"]
- マッチメイキング結果:プレイヤーAとBはマッチングしません。これは、プレイヤーAが設定にXboxを含めていても、プレイヤーBがクロスプレイを無効にしており、別のXboxプレイヤーとのみマッチングしたいためです。
ケース2
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Steamがクロスプレイを無効化:["steam"]
- マッチメイキング結果:プレイヤーAとBはマッチングできます。
ケース1
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Xboxがクロスプレイを無効化:["xbox"]
- マッチメイキング結果:プレイヤーAとBはマッチングしません。これは、プレイヤーAが設定にXboxを含めていても、プレイヤーBがクロスプレイを無効にしており、別のXboxプレイヤーとのみマッチングしたいためです。
ケース2
- プレイヤーA Steamがクロスプレイを有効化:["steam", "ps5", "xbox"]
- プレイヤーB Steamがクロスプレイを無効化:["steam"]
- マッチメイキング結果:プレイヤーAとBはマッチングできます。
プラットフォームグループ
管理者は、マッチプールでプラットフォームグループクロスプレイを有効にするために、プラットフォームグループを設定する必要があります。クロスプレイ設定が無効になっている場合でも、同じプラットフォームグループ内であれば、プレイヤーは他のプラットフォームとプレイできます。

サンプルケース
以下は、プラットフォームグループを使用する使用例です:
「ゲーム開発者として、デスクトッププレイヤーが互いにのみマッチングしてプレイし、コンソールプレイヤーが互いにのみマッチングしてプレイできるようにしたいが、デスクトッププレイヤーとコンソールプレイヤーが互いにマッチングしないようにしたい。」
この場合、どのようにプラットフォームグループを設定すればよいですか?」
このケースでは、次のようにプラットフォームグループを設定できます:
- desktop: steam, epicgames
- console: ps5, xbox