Mマッチメイキング
Matchmaking APIを使用すると、定義可能なキーと値のペアに基づきユーザーが検索できるカスタムゲームセッションを作成することができます。以下のネームスペースとクラスを使用することで実装を開始できます。
namespace PretiaArCloud.Multiplayer.Matchmaking
public class Matchmaker
メソッド
CreateSessionAsync
概要
CreateSessionAsync
を使うことで、いつでも独自のゲームセッションを構築することができます。また、この関数の結果は、後からセッションに参加するために使用することができます。
public async Task<(SessionInfo, IPEndPoint)> CreateSessionAsync(
string token,
string sessionName,
bool priv,
IDictionary<string, string> labels)
パラメータ
string token
GuestLoginAsyncから取得できるトークン
string sessionName
作りたいセッションの名前
bool priv
作成するセッションを private
にするかどうか
IDictionary<string, string> labels
key-value
と labels
のペアリストを作成されたセッションをフィルタリングするために使用できます。
GetSessionInfoAsync
概要
GetSessionInfoAsync
を使用すると、パラメータとして提供された labels
に一致するセッションを見つけることができます
public async Task<IEnumerable<SessionInfo>> GetSessionInfoAsync(
string token,
IDictionary<string, string> labelFilters)
パラメータ
string token
GuestLoginAsyncから取得できるトークン
IDictionary<string, string> labels
key-value
と labels
のペアリスト。このラベルが作成したセッションとマッチする場合、その結果がリストで返されます。
GetMatchIPAsync
概要
SessionInfo
があれば、セッションにおける IP:Port
のペアを取得することができます
public async Task<IPEndPoint> GetMatchIPAsync(string token, SessionInfo sessionInfo)
Parameters
string token
GuestLoginAsyncから取得できるトークン
SessionInfo sessionInfo
CreateSessionAsync もしくは GetSessionInfoAsync の両方から取得できる SessionInfo
オブジェクト。
サンプルコード
Matchmaking APIを利用するためには、次の方法が必要です。
- 認証されたトークンを取得する
- 新しいセッションを開始する / 既存をセッションを見つける
- セッションに参加する
Step 1 : トークンを取得する
if (await _networkManager.ConnectAsync())
{
string guest = "guestName";
var (statusCode, token, displayName) = await _networkManager.GuestLoginAsync(guest);
if (statusCode == NetworkStatusCode.Success)
{
// Do something with the token from step 2A or 2B
}
}
Step 2A : 取得したトークンを使ってゲームセッションを作成する
var sessionName = "session-name";
var labels = new Dictionary<string, string>();
labels.Add("my-key", "my-value"); // Add a key-value string pair for the session label
var (sessionInfo, ipEndPoint) = Matchmaker.Instance.CreateSessionAsync(token, sessionName, priv: false, labels);
Step 2B : 別のクライアントで利用可能なセッションを検索し、その IP Endpointを 取得する。
var labels = new Dictionary<string, string>();
labels.Add("my-key", "my-value"); // Add a key-value string pair to match sessions
var sessions = await matchmaker.GetSessionInfoAsync(token, labels); // Returns all available sessions with exact match of labels
var sessionInfo = sessions.FirstOrDefault() // Get the first item in sessions
var ipEndPoint = await Matchmaker.Instance.GetMatchIPAsync(token, sessionInfo); // Get the IP Endpoint of the session
Step 3 : IP Endpoint を使ってゲームセッションに接続する。
var gameSession = await NetworkManager.Instance.CreateGameSessionAsync(ipEndPoint, token);
await gameSession.ConnectSessionAsync();
参考情報
このドキュメントでは、Matchmaking API の使用方法を参考例を使って説明しています。完全な例は、/PretiaSDK/Samples/MultiplayerSample/Scenes/MultiplayerScene
にあるサンプルシーンを参照してください。