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
にして実行できます。
注意
最近、サーバーの割り当て中にキュー名の渡しを有効にしました。 この機能はプレビュー段階であり、詳細については、こちらを参照してください。