MatchMaker のフロー
概要
Diarkis MatchMaker はマッチメイキングで実現したいことに合わせて、2つの方式を用意しております。
Host/Search 型: ホストがマッチングを開始し、ゲストがサーチして条件の合うホストを検索、参加する方式。クライアントから条件を指定してマッチングすることを想定しており、ルームマッチングのようなクライアントが好きな条件で検索、入室したいような機能に適しています。また、ホストはパスワードによるロックも可能です。
Ticket 型: サーチとホストの両方を行う Ticket を発行して自動でマッチングを行う方式。サーバー側でTicket Type ごとにフィルタリング条件を設定することで、クライアントは任意の Ticket Type を指定するだけでマッチングを開始できます。 また、クライアントの更新なしにサーバー更新だけで変更することも可能です。 ランクマッチなどユーザーのプロパティによって自動マッチングするような機能に適しています。
どちらの方式も、マッチメイキングのルール定義である profile に対して、検索条件に指定する property を定義します。
サーバーをカスタマイズする場合は Enterprise プランの契約が必要になります。
処理フロー
Host/Search 型
この方式はクライアントから送信した profileID、 property を元にルームを作成、検索するシンプルな方式です。サーバー側はマッチメイキングの profile に利用する property を定義するだけで、マッチメイキングをすぐに開始することができます。
ホストは任意の条件を指定して募集し、ゲストは条件に合うホストのリストを取得して任意のルームに入室できるため、リストから参加したいルームを検索したい場合に適しています。
基本的な流れは以下の通りです。
ホストが profile、 property を指定してルームを作成しマッチングを開始
ゲストが profile、 property を指定してルームを検索
ゲストが検索結果から任意のルームを指定してルーム参加
ルーム入室中は各種操作を実施可能
メッセージ同期
ルーム退出
(ホストのみ)強制退出
(ホストのみ)ルーム削除(解散)
Ticket 型
マッチングを自動的に行うために Ticket と呼ばれるものを発行する方式です。
Ticket にはフェーズがあり、発行時は検索を繰り返し、一定の回数を検索して一致するものがなければ、 Add フェーズに入り、他人から検索される状態になります。メンバーが最大に達すると完了フェーズに入りマッチング完了状態になります。
また、Ticket Type ごとに発行可能なため、様々な条件のマッチメイキングに対応できます。
さらに、各種コールバックを利用することで、 Ticket Type を指定するだけで、 Diarkis サーバー側で property を API サーバーと連携して取得したり、位置情報と組み合わせて近い人同士をマッチングさせる、最大人数に達成しなくてもマッチングを完了させるなど、複雑なマッチング条件を構築することも可能です。
ランクマッチなど複雑でセキュアなマッチングを実現したい場合に有効な方式となります。
Ticket 型の代表的なコマンドは以下の通りです。
チケット発行: チケットを発行してマッチングを開始する
メッセージ同期: マッチングしたメンバーとメッセージのやりとりをする
チケットキャンセル (オーナーのみ): チケットを削除してマッチングをキャンセルする。ルームに入室したメンバー全員が退出となります
ルーム退出: マッチングして入室したルームから退出する
処理フローはサーバー側は少々複雑となりますが、クライアントが利用するコマンドなどはシンプルになるので、サーバー更新だけでマッチメイキングの処理を変更することが可能となります。
Diarkis サーバーテンプレート Ticket 型の実装 example があります。こちらも参考にしてください。
https://github.com/Diarkis/diarkis-server-template/tree/develop/examples/matching
参考
Diarkis MatchMaking のサーバー API の詳細については、以下を参照してください。
最終更新
役に立ちましたか?

