Diarkis MatchMaker を使ったマッチング・プロファイルの定義方法

Diarkis MatchMaker は自由に複雑なマッチングのロジックを定義することが可能です。

マッチング・プロファイルを定義する場所

Diarkis MatchMaker を使ったマッチング・プロファイルは Diarkis HTTP サーバ上に定義します。

実際に定義されたマッチング・プロファイルは TCP、UDP、WS、HTTP サーバのどこからでも呼び出すことが可能です。

マッチング・プロファイル

Diarkis MatchMaker を使ったマッチング・プロファイルは文字列をキーにした int 型のバリューを持つマップを使って定義します。

マッチメイキングはレンジ検索で、マッチするには対象の全てのキーのレンジに該当する必要があります。

例:

levelMatchProfile := make(map[string]int)

// level のレンジが 10 であることを示します
levelMatchProfile["level"] = 10

// league のレンジが 1 であることを示します
// この場合 league のマッチ条件は全く同じ値である必要があります
levelMatchProfile["league"] = 1

上記のマッチング・プロファイルは、例として以下のプレーヤーとマッチします:

  • level 5 で league 2 のプレーヤーは level が 0 から 10 の間で league が 2 のプレーヤーとマッチします。 
  • level 25 で league 1 のプレーヤーは level が 21 から 30 の間で league が 1 のプレーヤーとマッチします。

Range of 10

Range from 0 to 10 Range from 11 to 20 Range from 21 to 30  
0, 1, 2, 3, 4, 5, 6, ,7 ,8, 9, 10 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 ...

Range of 1

レンジが 1 の場合は対象の値は全く同じ値である必要があります。例えば 5 であれば 5 としかマッチすることができません。

マッチメイキング・プロファイルの定義方法

以下はマッチメイキング・プロファイルの定義方法の例です:

// 必要なパッケージ
// import github.com/Diarkis/diarkis/matching

rankMatchProfile := make(map[string]int)

rankMatchProfile["rank"] = 100

// マッチング・プロファイルを定義するためのユニークな ID
rankMatchMakingProfileID := "rankMatchMakingProfile"

// matching.Define を使ってマッチング・プロファイルを定義します
matching.Define(rankMatchMakingProfileID, rankMatchProfile)