使用の準備
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 パッケージのインストールは、以下の手順で行います。- Unity エディターで、Window (ウィンドウ) > Package Manager (パッケージマネージャー) に移動します。
- Package Manager で、以下のパッケージを検索します。
- Unity 6 以上:
com.unity.services.multiplayer - Unity 2022 LTS 以前:
com.unity.services.matchmaker
- Unity 6 以上:
- パッケージを選択して Install (インストール) を選択します。
Matchmaker の設定
Matchmaker は、Unity Dashboard から設定および管理できます。- cloud.unity.com に移動します。
- サイドバーから Products (製品) タブを選択します。
- Gaming Services (ゲームサービス) > Multiplayer (マルチプレイヤー) で、Matchmaker に移動し、Launch (起動) を選択します。
キューとプールの作成
- Create a Queue (キューの作成) を選択します。最初のキューの名前を選択し、マッチメイキングチケットの最大プレイヤー数を設定します。Create (作成) をクリックします。
- Create a Pool (プールの作成) を選択します。プールの名前を選択します。前の手順で作成したキューを選択します。チケットのタイムアウトの値を設定します。Next (次へ) をクリックします。
- 以下に従ってホスティングタイプを選択します。
- Multiplay Hosting を使用している場合には、ドロップダウンメニューで Multiplay Hosting を選択し、Multiplay Hosting を設定したときに作成した フリート と ビルド設定 を選択します。
- Unity が提供するクライアントホスト型ソリューションを使用している場合には、ドロップダウンメニューで Client Hosting (クライアントホスト) を選択します。
- Next (次へ) をクリックします。
これにより、最小 1 人、最大 5 人のプレイヤーを含む 1 つのチームのマッチが作成されます。{ "Name": "Test", "MatchDefinition": { "Teams": [ { "Name": "Main team", "TeamCount": { "Min": 1, "Max": 1 }, "PlayerCount": { "Min": 1, "Max": 5 } } ], "MatchRules": [] }, "BackfillEnabled": false}
- Logic Builder (ロジックビルダー) をクリックし、ドロップダウンで地域を 1 つ選択して Default QoS Region (デフォルトの QoS リージョン) を設定します。
- ページの下部にある Create (作成) をクリックします。
マッチメイキングチケットの作成
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>