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)