パーティマッチメイキング

Matchmaker では、一群のプレイヤーをまとめて 1 つのゲームにマッチングするようにリクエストできる、パーティマッチメイキングがサポートされています。

マッチメイキングチケットには複数のプレイヤーを加えることができます。ゲーム開発者は、マッチメイキング設定でサポートされている人数のプレイヤーをチケットに追加できます。

以下のコードサンプルは、パーティマッチメイキングの作成方法を示しています。

{
  "queueName": "4vs4",
  "attributes": {},
  "players": [
    {
      "id": "6cc5ac8d-dfab-4b50-9ede-c1d026d8dc81",
      "customData": {
        "Hero": "tank"
      },
      "qosResults": [
        {
          "regionId": "75721794-e9fd-4d8a-9879-aa853ed18885",
          "packetLoss": 0.8,
          "latency": 50
        },
        {
          "regionId": "1e29bd54-8acc-433a-ae7d-28ae5fc192a1",
          "packetLoss": 0.5,
          "latency": 20
        }
      ]
    },
    {
      "id": "ac35c771-291c-4e7e-9a0e-6351faf261c6",
      "customData": {
        "Hero": "support"
      },
      "qosResults": [
        {
          "regionId": "75721794-e9fd-4d8a-9879-aa853ed18885",
          "packetLoss": 0.2
          "latency": 75
        },
        {
          "regionId": "1e29bd54-8acc-433a-ae7d-28ae5fc192a1",
          "packetLoss": 0.5,
          "latency": 10
        }
      ]
    },
  ]
}

2 人のプレイヤーとそれぞれのカスタムデータを含むチケット

Unity SDK

var player1 = new Player(
    "6cc5ac8d-dfab-4b50-9ede-c1d026d8dc81", 
    new Dictionary<string, object> { {"hero", "tank"} },
    new List<QoSResult>
    {
        new QoSResult("75721794-e9fd-4d8a-9879-aa853ed18885",0.8, 50),
        new QoSResult("1e29bd54-8acc-433a-ae7d-28ae5fc192a1",0.5, 20)
    });

var player2 = new Player(
    "ac35c771-291c-4e7e-9a0e-6351faf261c6", 
    new Dictionary<string, object> { {"hero", "support"} },
    new List<QoSResult>
    {
        new QoSResult("75721794-e9fd-4d8a-9879-aa853ed18885",0.2, 75),
        new QoSResult("1e29bd54-8acc-433a-ae7d-28ae5fc192a1",0.5, 10)
    });
var players = new List<Player>
{
    player1,
    player2
};


// Set options for matchmaking
var options = new CreateTicketOptions(
  "Default" // The name of the queue defined in the previous step, 
  new Dictionary<string, object>());

// Create ticket
var ticketResponse = await MatchmakerService.Instance.CreateTicketAsync(players, options);

// Print the created ticket id
Debug.Log(ticketResponse.Id);

Unity SDK を使ったパーティチケット作成

マッチメイキング設定で複数のチームが定義されている場合、同じチケットに含まれているプレイヤーが別々のチームに分割されることはありません。

Unity Lobby の使用

QoS (Quality of Service) 結果などのプレイヤーデータをパーティリーダーと共有することは難しい場合があります。データ共有を簡単にするために、Unity Lobby サービス を使用できます。

プレイヤーがデータを保存し、パーティリーダーがそのデータをチケットに追加します。パーティリーダーは、パーティを代表してマッチメイキングチケットを作成する責任があります。

チケットがマッチングされると、パーティリーダーはサーバー割り当てに関する情報を Lobby データに保存できます。プレイヤーはそれを使用してマッチに接続できます。