メインコンテンツまでスキップ

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-valuelabels のペアリストを作成されたセッションをフィルタリングするために使用できます。

GetSessionInfoAsync


概要

GetSessionInfoAsync を使用すると、パラメータとして提供された labels に一致するセッションを見つけることができます

public async Task<IEnumerable<SessionInfo>> GetSessionInfoAsync(
string token,
IDictionary<string, string> labelFilters)

パラメータ

string token

GuestLoginAsyncから取得できるトークン

IDictionary<string, string> labels

key-valuelabels のペアリスト。このラベルが作成したセッションとマッチする場合、その結果がリストで返されます。

GetMatchIPAsync


概要

SessionInfo があれば、セッションにおける IP:Port のペアを取得することができます

public async Task<IPEndPoint> GetMatchIPAsync(string token, SessionInfo sessionInfo)

Parameters

string token

GuestLoginAsyncから取得できるトークン

SessionInfo sessionInfo

CreateSessionAsync もしくは GetSessionInfoAsync の両方から取得できる SessionInfo オブジェクト。

サンプルコード

Matchmaking APIを利用するためには、次の方法が必要です。

  1. 認証されたトークンを取得する
  2. 新しいセッションを開始する / 既存をセッションを見つける
  3. セッションに参加する

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 にあるサンプルシーンを参照してください。