PlayFab マルチプレイヤー サーバーとの統合

マッチメイキングには自動的に結果のマッチのためのゲーム サーバーを作成することができるオプションを含みます。 割り当てられたサーバーは、キューの設定で設定されているビルドを実行します。起動時に、サーバーには最初のプレイヤーのリストとしてマッチのメンバーが渡されます。

マッチメイキング キューは、1 つのマルチプレイヤー サーバー ビルドまたはビルド エイリアスに関連付けられています。

マッチメイキングとサーバーを直接統合するための要件

マッチメイキングからマルチプレイヤー サーバーを割り当てるには、まずビルドを構成してデプロイする必要があります。 必要に応じて、ビルド エイリアスを作成し、これを使用することもできます。 ビルド エイリアスは、タイトルの使用をより柔軟に行えるようにするため、推奨されます。 マルチプレイヤー サーバー ビルドマルチプレイヤー サーバー ビルド エイリアスの詳細については、ここに提供されているリンクに従ってください

マッチメイキングでは、マッチをビルドに最適な地域に割り当てることができるように、地域選択ルールもキューに追加する必要があります。 地域選択ルールに渡されるレイテンシ測定値は、ビルドがアクティブになっている地域と一致する必要があります。 地域選択ルールに属性を渡す方法の詳細については、「地域選択ルール」をご覧ください。

キューの割り当てのサーバーをアクティブ化

キューのサーバー割り当てを有効にするには、「キューの構成」ページで [サーバーの割り当てを有効にする] チェックボックスをオンにする必要があります。 これを有効にしたら、[ビルド エイリアス] または [ビルド ID] を選択します。キューで使用する正しい値をドロップダウンから選択します。 この機能を有効にすると、マッチメイキングはキュー内に作成されたすべてのマッチにサーバーを割り当てようとします。

次の例は、マルチプレイヤー サーバー統合のあるキューの設定がビルド ID の使用のように見えることを示しています。

"MatchmakingQueue": {
    "Name": "ServerEnabledQueue",
    "MinMatchSize": 2,
    "MaxMatchSize": 2,
    "ServerAllocationEnabled": true,
    "BuildId": "88b3e315-829c-4b6d-9872-74f427ad5331",
	"RegionSelectionRule": {
		"MaxLatency": 1000,
		"Path": "Latencies",
		"Weight": 1.0,
		"Name": "RegionSelectionRule"
	}
}

ビルド エイリアスが使用されているのと同じ例を次に示します。

"MatchmakingQueue": {
    "Name": "ServerEnabledQueue",
    "MinMatchSize": 2,
    "MaxMatchSize": 2,
    "ServerAllocationEnabled": true,
    "BuildAliasParams": {
        "AliasId": "d14e2ac7-ea51-47aa-a7ba-cc427ab74f9s"
    },
	"RegionSelectionRule": {
		"MaxLatency": 1000,
		"Path": "Latencies",
		"Weight": 1.0,
		"Name": "RegionSelectionRule"
	}
}

マッチメイキングへの呼び出しのフローは有効になっているサーバーの割り当てと同じです。 マッチメイキングがマッチにサーバーを割り当てると、結果として得られるサーバーの詳細は、GetMatch を呼び出すことによって、マッチ オブジェクト自体から読み取ることができます。

サーバー割り当てが有効になっているキューの GetMatch 呼び出しについては、次のような応答が提供されます。

{
    "MatchId": "7c36330d-46b5-443f-8d8f-10390bce09d5",
    "Members": [{
        "TeamId": "",
        "Entity": {
            "Id": "67282A13A1A58910",
            "Type": "title_player_account",
            "TypeString": "title_player_account"
        },
        "Attributes": {
            "DataObject": null,
            "EscapedDataObject": "{\"StringEqualityRulePath\":\"0bc42969-76b1-4dcb-871d-d6e19cee741b\"}"
        }
    },
    {
        "TeamId": "",
        "Entity": {
            "Id": "6DB2B17FD21CC230",
            "Type": "title_player_account",
            "TypeString": "title_player_account"
        },
        "Attributes": {
            "DataObject": null,
            "EscapedDataObject": "{\"StringEqualityRulePath\":\"0bc42969-76b1-4dcb-871d-d6e19cee741b\"}"
        }
    }],
    "RegionPreferences": ["WestUs", " EastUs"],
    "ServerDetails": {
        "IPV4Address": "40.76.31.170",
        "Ports": [{
            "Name": "game_port",
            "Num": 30003
        }]
    }
}

クライアントは、応答のサーバー詳細セクションの IP とポートを使用してサーバーに接続できます。 マルチプレイヤー サーバーにクライアントを接続する方法の詳細については、「クライアントをサーバーに接続する」をご覧ください。

注意

ビルドの地域の容量が不足すると、マッチメイキングはその地域のキューにマッチを割り当てることができなくなります。 マッチメイキングは、チケットが期限切れになるまで割り当てを再試行し続けます。 マルチプレイヤーの容量を増やすには、「増加したコア制限と付加的な Azure リージョンへのアクセス」をご覧ください。

ゲーム サーバーに渡された情報

これはマッチメイキングがサーバーに渡す情報のリストです。

  • SessionId -サーバーの SessionId は、マッチの MatchId と等しくなります。
  • InitialPlayers - この値は、マッチのメンバーのリストに設定されます。 プレイヤーのリストは、GSDK を使ってゲーム内で読むことができます。
  • PreferredRegions - このフィールドは、マッチから RegionPreferences のフィールドに設定されます。 ゲーム サーバー サービスについては、このリストからサーバーに適した地域を選択します。

マッチメイキングは、任意のチケット属性をゲーム サーバーに提供することはありません。 ゲームがサーバー上のチケット属性にアクセスする必要がある場合は、GetMatch を呼び出しReturnMemberAttributesヘッダーを true にして実行できます。

注意

最近、サーバーの割り当て中にキュー名の渡しを有効にしました。 この機能はプレビュー段階であり、詳細については、こちらを参照してください。