ドキュメント

サポート

Matchmaker

Matchmaker

使用の準備

Install and set up Matchmaker and create your first matching ticket.
読み終わるまでの所要時間 3 分最終更新 4日前

このガイドでは、Matchmaker SDK のインストール、Matchmaker の有効化、最初のマッチメイキングチケットの作成、Multiplay Hosting の割り当ての作成を行うために必要なさまざまな手順について説明します。

前提条件

Matchmaker の使用を開始する前に、以下を済ませておく必要があります。

ホスティングの設定

Matchmaker を有効にする前に、Multiplay Hosting か、Unity が提供するクライアントホスト型ソリューションのいずれかを初期化します。Multiplay Hosting の使用を開始するRelay の使用を開始するDistributed Authority のクイックスタート を参照してください。

Matchmaker SDK のインストール

Unity の最新の Matchmaker パッケージのインストールは、以下の手順で行います。
  1. Unity エディターで、Window (ウィンドウ) > Package Manager (パッケージマネージャー) に移動します。
  2. Package Manager で、以下のパッケージを検索します。
    • Unity 6 以上:
      com.unity.services.multiplayer
    • Unity 2022 LTS 以前:
      com.unity.services.matchmaker
  3. パッケージを選択して Install (インストール) を選択します。
詳細については、Package Manager のドキュメントを参照してください。

Matchmaker の設定

Matchmaker は、Unity Dashboard から設定および管理できます。
  1. cloud.unity.com に移動します。
  2. サイドバーから Products (製品) タブを選択します。
  3. Gaming Services (ゲームサービス) > Multiplayer (マルチプレイヤー) で、Matchmaker に移動し、Launch (起動) を選択します。
Matchmaker を初めて起動すると、サイドバーの Shortcuts (ショートカット) セクションに Matchmaker が加わり、Overview (概要) ページが開きます。

キューとプールの作成

  1. Create a Queue (キューの作成) を選択します。最初のキューの名前を選択し、マッチメイキングチケットの最大プレイヤー数を設定します。Create (作成) をクリックします。
  2. Create a Pool (プールの作成) を選択します。プールの名前を選択します。前の手順で作成したキューを選択します。チケットのタイムアウトの値を設定します。Next (次へ) をクリックします。
  3. 以下に従ってホスティングタイプを選択します。
  • Multiplay Hosting を使用している場合には、ドロップダウンメニューで Multiplay Hosting を選択し、Multiplay Hosting を設定したときに作成した フリートビルド設定 を選択します。
  • Unity が提供するクライアントホスト型ソリューションを使用している場合には、ドロップダウンメニューで Client Hosting (クライアントホスト) を選択します。
  1. Next (次へ) をクリックします。
そのキューとプールにチケットを送信したときに作成されるマッチを定義するために使用されるルールを定義します。JSON を選択し、以下のコードブロックをコピーして貼り付けます。
{ "Name": "Test", "MatchDefinition": { "Teams": [ { "Name": "Main team", "TeamCount": { "Min": 1, "Max": 1 }, "PlayerCount": { "Min": 1, "Max": 5 } } ], "MatchRules": [] }, "BackfillEnabled": false}
これにより、最小 1 人、最大 5 人のプレイヤーを含む 1 つのチームのマッチが作成されます。
  1. Logic Builder (ロジックビルダー) をクリックし、ドロップダウンで地域を 1 つ選択して Default QoS Region (デフォルトの QoS リージョン) を設定します。
  2. ページの下部にある Create (作成) をクリックします。
これで Matchmaker が設定されました。Matchmaker セクションの下のメニューで Queues (キュー) をクリックすると、作成されたキューとプールを確認できます。

マッチメイキングチケットの作成

Matchmaker が設定されたら、チケットを作成して送信し、Multiplay Hosting による割り当てをリクエストすることができます。

Unity SDK

var players = new List<Unity.Services.Matchmaker.Models.Player>{ new ("Player1", new Dictionary<string, object>())};// Set options for matchmakingvar options = new CreateTicketOptions( "Default", // The name of the queue defined in the previous step, new Dictionary<string, object>());// Create ticketvar ticketResponse = await MatchmakerService.Instance.CreateTicketAsync(players, options);// Print the created ticket idDebug.Log(ticketResponse.Id);

CURL

# Fetch anonymous token##fetch-anonymous-tokencurl -X POST -H "ProjectId: <projectId>" https://player-auth.services.api.unity.com/v1/authentication/anonymous# Call the create ticket endpoint##call-the-create-ticket-endpointcurl -X POST -H "Authorization: Bearer <TOKEN>" \-H 'Content-Type: application/json' \--data-raw '{ "queueName": "Default", "attributes": {}, "players": [{ "id": "Player 1", "customData": {} }]}' \'https://matchmaker.services.api.unity.com/v2/tickets'

REST API

https://services.docs.unity.com/matchmaker/v2/index.html#tag/Tickets/operation/createTicket

チケットステータスのポーリング

チケットが作成されると、クライアントはチケットの作成時に返されたチケット ID を使用して、チケットのステータスを取得するためのポーリングを行います。 チケットがマッチに割り当てられ、サーバーが割り当てられると、Matchmaker はチケットステータスのレスポンスにサーバー情報を追加します。

Unity SDK

MultiplayAssignment assignment = null;bool gotAssignment = false;do{ //Rate limit delay await Task.Delay(TimeSpan.FromSeconds(1f)); // Poll ticket var ticketStatus = await MatchmakerService.Instance.GetTicketAsync("<ticket id here>"); if (ticketStatus == null) { continue; } //Convert to platform assignment data (IOneOf conversion) if (ticketStatus.Type == typeof(MultiplayAssignment)) { assignment = ticketStatus.Value as MultiplayAssignment; } switch (assignment?.Status) { case MultiplayAssignment.StatusOptions.Found: gotAssignment = true; break; case MultiplayAssignment.StatusOptions.InProgress: //... break; case MultiplayAssignment.StatusOptions.Failed: gotAssignment = true; Debug.LogError("Failed to get ticket status. Error: " + assignment.Message); break; case MultiplayAssignment.StatusOptions.Timeout: gotAssignment = true; Debug.LogError("Failed to get ticket status. Ticket timed out."); break; default: throw new InvalidOperationException(); }} while (!gotAssignment);

CURL

# Call the poll ticket status endpoint with same anonymous token as for the creation##call-the-poll-ticket-status-endpoint-with-same-anonymous-token-as-for-the-creationcurl -X GET -H "Authorization: Bearer <TOKEN>" \--header 'Content-Type: application/json' \'https://matchmaker.services.api.unity.com/v2/tickets/status?id=<TICKETID>'

REST API

https://services.docs.unity.com/matchmaker/v2/index.html#tag/Tickets/operation/getTicketStatus

マッチメイキングの結果

サーバー側では、サーバーが割り当てられると、作成されたマッチに関するマッチメイキングの結果ペイロード割り当て を使用して取得できるようになります。 マッチメイキングの結果は、マッチに参加することになったさまざまなプレイヤー、それらのデータ、および、さまざまなチームでのそれらの分布に関する情報をサーバーに提供します。

Unity SDK

var payloadAllocation = await MultiplayService.Instance.GetPayloadAllocationFromJsonAs<MatchmakingResults>();

CURL

curl -X GET http://localhost:8086/payload/<allocation_uuid>