マッチメイキング入門
注釈:本資料はAI技術を用いて翻訳されています。
AGSマッチメイキングサービスがアップグレードされました。変更内容については、2つのバージョンを比較する表を参照してください。
概要
AccelByte Gaming Services(AGS)マッチメイキングは、開発者がプレイヤーをグループに調整するために使用できる一連の機能を提供します。グループは、ゲームモードや言語などの選択された設定と、マッチメイキングレーティング(MMR)などのプレイヤーに保存された属性に基づいて、バランスの取れたゲームプレイ体験を提供します。マッチメイキングは、これらの設定に基づいてマッチチケットを生成し、そのチケットをマッチプールにキューイングして評価します。
セッションホスティングモデルを選択する
Matchmaking はマッチを見つけるとゲームセッションを作成します。プレイヤーがそのセッションに参加した後にゲームクライアントがどのように接続するかは、選択したセッションテンプレートとホスティングモデルによって決まります。
| ホスティングモデル | 使用する場面 | Matchmaking が扱うこと | ゲーム側で扱うこと |
|---|---|---|---|
| AMS 専用サーバー | AccelByte Multiplayer Servers (AMS) でホストされるサーバー権威型マッチが必要な場合。 | チケット作成、マッチ評価、ゲームセッション作成、セッション招待の配信。 | DS の準備完了待ち、接続文字列の解決、専用サーバーへのクライアント接続。 |
| P2P | マッチングされたプレイヤーの 1 人が listen server またはピアホストとしてゲームセッションをホストできる場合。 | チケット作成、マッチ評価、ゲームセッション作成、セッション招待の配信。 | P2P トランスポートの有効化、ローカルプレイヤーが P2P ホストかどうかの判定、ホストへのクライアント接続。 |
共通のゲームコードフローには、エンジン別のマッチメイキングガイドを使用します。ゲームホストに接続する手順に到達したら、ホスティングモデルに一致するタブを選択してください。
最初の実装パス
最初の end-to-end マッチメイキング実装では、次のパスを使用します。
- セッションホスティングモデルを選択します: AMS 専用サーバー または P2P。
- そのホスティングモデル用のセッションテンプレートを設定します。
- P2P の場合、セッションテンプレートタイプを P2P に設定します。P2P を設定するを参照してください。
- AMS の場合、AMS から専用サーバーをリクエストするようにセッションテンプレートを設定します。
- ゲームモード用のマッチルールセットを設定します。
- セッションテンプレートとルールセットを使用するマッチプールを設定します。
- ゲームクライアントにマッチメイキングを統合します。
- ゲームコードガイドの ゲームホストに接続する セクションで、ホスティングモデルに一致するタブを選択します。
主要な概念
AGSマッチメイキングの設計で使用される主要な概念を理解することが重要です。
マッチメイキングタイプ
AGSマッチメイキングは、デフォルトで3つの主要なマッチメイキングタイプをサポートしていますが、2つ以上のタイプが組み合わされた複雑なシナリオを処理するように設定することもできます。主要なタイプは次のとおりです:
- チームベースマッチメイキング: プレイヤーをチームにマッチングして互いに競わせます。チームサイズと最小プレイヤー要件は、ルールセットの一部として定義できます。
- スキルベースマッチメイキング: 定義された属性を比較してスキルレベルに基づいてプレイヤーをマッチングし、良いマッチを決定します。属性とそれらを比較する基準は、ルールセットの一部として定義できます。
- ロールベースマッチメイキング: ゲームセッション中にプレイすることを選択したゲーム内ロール(例:タンク、ヒーラー、ダメージ)に基づいてプレイヤーをマッチングします。多くの場合、チームの一部として行われます。ゲームセッションとチームのロール要件は、ルールセットの一部として定義できます。
さらに、マッチメイキングはgRPCプラグインを使用して拡張でき、開発者はニーズに応じて実装をカスタマイズできます。
ゲームモード
ゲームモードは、チームデスマッチ、フリーフォーオール、協力プレイなど、プレイヤーに独特のゲームプレイ体験を提供します。 AGSマッチメイキングは、各モードに個別のマッチメイキングロジックを含む複数のゲームモード定義をサポートします。これにより、プレイヤーをグループ化するために、スキルランキングやチーム構成などの独自の基準を定義できます。ゲームモードの定義の詳細については、Sessionを参照してください。
ゲームセッション
ゲームセッションは、マッチングされたプレイヤーが互いに対話するために接続されるゲームモードのインスタンスです。ゲームセッションは、専用サーバーにデプロイするか、ピアツーピアプレイのためにゲームクライアントコンピューターでローカルにホストできます。
チーム構成
チームベースのゲームモードの場合、チーム構成とは、チームの一部として参加できるプレイヤーの数と、ゲームセッションのバランスを取るために必要なロール固有の要件を指します。さらに、参加に必要なチーム数(チームごとの最小プレイヤー数を含む)は、マッチルールセットの一部として設定可能です。
マッチチケット
マッチチケットは、マッチメイキング中のプレイヤーまたはパーティを表します。マッチルールセットが最適なマッチを決定するために必要な属性とパラメータが含まれています。
マッチプール
キューとも呼ばれるマッチプールは、ゲームモード、リージョン、言語などの選択された設定に基づいて、チケットとして表されるプレイヤーとパーティのセグメントを定義します。プールに入ると、チケットは評価されてペアリングされ、ゲームモードに定義されたマッチルールセットに基づいてゲームセッションに接続されます。
マッチルールセット
マッチルールセットは、マッチメイキング中にチケットを比較して、ゲームモードごとに望まれる体験に基づいて最適にグループ化されるようにするために使用されるロジックを定義します。AGSマッチメイキングは、対応するプールにキューイングされたチケットを確認して、最適なマッチを決定します。
マッチ関数
マッチ関数は、AGSマッチメイキングがキューで待機しているチケットを評価するために使用する動作を定義します。デフォルトでは、マッチルールセットで定義されたロジックを使用しますが、gRPCプラグインを使用することで、サービスの動作を拡張する新しい関数を実装できます。
バックフィル
ゲームプレイ中に、ゲームセッションが新しいプレイヤーの追加をリクエストする必要がある場合があります。バックフィルは、ゲームセッションがAGSマッチメイキングにチケットを送信して新しいプレイヤーの提案を受け取り、それを受け入れるか拒否できるプロセスです。ゲームセッションは、セッションテンプレートを通じて自動バックフィルするように設定するか、ゲームサーバーに直接管理させることができます。
マッチメイキングフロー
このセクションでは、ソロプレイヤーまたはパーティの一部としてゲームセッションにマッチングするプレイヤーが経験するフローを確認します。関連する高レベルのステップは次のとおりです:
- ゲームがパーティをサポートしている場合、プレイヤーはパーティを作成して友達を参加に招待できます。パーティリーダーは希望するゲームモードを選択し、利用可能な設定を設定します。招待されたパーティメンバーは、マッチメイキングを開始する前に参加する必要があります。
- ソロプレイヤーまたはパーティリーダーがマッチメイキングを開始し、マッチチケットを作成してマッチプールにキューイングします。パーティリーダーがマッチメイキングを開始する場合、パーティ内のすべてのプレイヤーが添付された1つのマッチチケットが送信されます。
- サービスは、最適なマッチを見つけるために、関連するマッチルールセットで定義されたロジックに基づいてチケットを評価します。
- マッチが見つかると、サービスはAGS Sessionからゲームセッションをリクエストし、チケット情報、マッチ結果情報、提案されたチームをセッションに添付します。
- サービスは、マッチルールセットで自動バックフィルが有効になっている場合(
auto_backfillをtrueに設定することにより)、そのルールセットの最大プレイヤー設定が満たされるまで追加のマッチを見つけ続けることができるように、ゲームセッションのバックフィルチケットを作成します。 - プレイヤーは、マッチとして選択され、接続できるようになると、ゲームセッションへの参加招待を受け取ります。
この簡略化されたフロー図は、マッチメイキングプロセス中のクライアントと関連サービス間の相互作用を示しています:
フローに関するいくつかの注意事項:
- パーティ内の複数のプレイヤーが一緒にマッチングしている場合、パーティリーダーがパーティを代表して単一のチケットを作成し、すべてのパーティメンバーが関連する通知を受け取り、セッションへの参加やホストへの接続などのアクションを実行します。
- OnMatchFoundとOnSessionInvitedの順序は保証されていません
- ホストが初期化された後にプレイヤーが参加した場合、OnDSStatusChangedを受信しない可能性があります。その結果、セッションに参加した後に
DSInformation.ipフィールドを確認して、既存のホストがあるかどうかを確認する必要があります。 - このフローは専用サーバーのパスを示しています。セッションテンプレートで P2P を使用する場合、マッチチケット、マッチ結果、セッション招待の手順は同じですが、ゲームホストへの接続手順が変わります。