Diarkis マッチメイキングのご紹介

 
リアルタイム通信アプリケーションのうち、特にゲームを作る際には他のユーザー(クライアント)との対戦や協力プレーのためにマッチメイキングを必要とすることがあります。
Diarkis Cloudには、REST APIを介して利用できるマッチメイキング機能が提供されています。
Diarkis マッチメイキングは、リアルタイムに数十万を超えるマッチングの処理をすることが可能です。これまでのようにバックグラウンドのプロセスがマッチんメイキングを完了させることを待つ必要もありませんし、自動スケールするので、大規模なマッチメイキングを実現することができます。

ランクによるマッチング

ランクによるマッチングは、3つ(rank1, rank10, rank100)のマッチング定義があります。
Diarkisのランクマッチングはそれぞれに定義された数値範囲でマッチング対象を検索します。

rank1

rank1は1の範囲で検索します。
例えばゲームランク4(これは作るアプリ側で定義するものです)のアイテムを探したい場合、rank1の定義を使うことで、ゲームランクが4のアイテムのみを検索します。

rank10

rank10は10の範囲で検索します。
例えばゲームランク4として検索する場合、rank10の定義を使うことで、ゲームランクが「1」から「10」までの範囲でアイテムを検索します。
ゲームランク203で検索すると「201」から「210」までの範囲でアイテムを検索します。

rank100

rank100は100の範囲で検索します。
例えばゲームランク4として検索する場合、rank100の定義を使うことで、ゲームランクが「1」から「100」までの範囲でアイテムを検索します。
ゲームランク203で検索すると「201」から「300」までの範囲でアイテムを検索します。

スコアによるマッチング

スコアによるマッチングにも、ランクによるマッチングと同じ3つ(score1, score10, score100)のマッチング定義ががあります。

マッチメイキングで検索可能なアイテムを追加する方法

マッチメイキングで検索可能なアイテムを作成するには、アイテムを追加する必要があります。
検索可能なアイテムの有効期限(TTL)は最大60秒です。60秒以上のTTLを持たせたい場合は、そのアイテムが必要なくなるまで繰り返し追加する操作を行う必要があります。
以下の例では、スコアによるマッチングの範囲を「10」に設定して追加するものです。
リクエストボディ
ID追加されるアイテムを一意に識別するための識別子
propertiesJSON形式の検索可能なプロパティ 例: { “value”: <integer> }
TTL追加されるアイテムのTTLを秒単位で指定。最大TTLは60秒。

アイテムを検索対象から削除する方法

マッチメイキングに登録したアイテムは、REST APIを通じて明示的に削除することが可能です。
アイテムの削除処理はサーバと通信するため、処理コストの観点からも明示的に削除する必要がない限りはTTLに頼るとよいでしょう。
リクエストボディ
ID削除したいアイテムを一意に識別するための識別子

アイテムを検索する方法

以下の例では、追加されたアイテムを検索しています。
“conditions “は “properties ” に照合されます。
:
{ “value”: 10 } という条件で検索した場合、結果は “properties” の間の値を持つアイテムになります。具体的には { “value”: 0 } から { “value”: 10 } の間のアイテムが結果となります。
以下の例では、スコアによるマッチングの範囲を「10」に設定して検索するものです。
リクエストボディ
conditionsJSON形式の検索条件 例: { “value”: <integer> }
howMany検索結果の最大数。省略した場合は10に設定されます。

複数のマッチング定義でアイテムを検索する方法

複数のマッチング定義を指定することで、より複雑な検索を行うことができます。
以下の例ではscore10 → score100 で検索しています。
この指定では、まず厳密な条件(score10)で検索し、十分なアイテムが見つからない場合は、それほど厳密でない条件(score100)で検索することを示しています。
以下の例では、スコアによるマッチングの範囲を「10」と「100」に設定して検索するものです。
Request Body Example
conditionsJSON形式の検索条件 例:{ “value”: 32 }
howMany検索結果の最大数。省略した場合は10に設定されます。

おわりに

Diarkis Cloudはサーバ管理をする必要がなく、クライアント側の実装のみでマッチメイキングを利用することが可能です。
もし、マッチメイキングに標準提供以外のロジックが必要な場合はEnterprise版をご検討ください。