検出と PlayFab Party の統合
検出とは、ユーザー同士が一緒にプレイできるようにお互いを見つけることです。 PlayFab Party は検出メカニズムを提供していませんが、ユーザー間の通信を提供する既存のメカニズムと併用することができます。
基本的な作成と参加フロー
PlayFab Party ネットワークには、1 人のクライアント上のユーザーが作成して広告を出し、その後、異なるクライアント上の他のユーザーが参加します。
ネットワークの作成
PlayFab Party ネットワークをゲーム セッションで使用する場合の最初の検討事項は、どのクライアントとユーザーがネットワークを作成するかを選択することです (PartyManager::CreateNewNetwork()
)。 PlayFab Party の観点では、どのユーザーがこれを行っても問題なく、どのユーザーもネットワークを作成することができます。 作成者には、ネットワーク内での特別な特権は付与されません。 ただし、以下のネットワークを作成するクライアントが責任を負います。
- 不変的なネットワーク構成の設定 (
PartyNetworkConfiguration
) - 初期招待の決定 (
PartyInvitationConfiguration
) - 他のユーザーにネットワークの広告を出す
最初の招待には、識別子と、ネットワークへの参加が許可されるユーザーのリストが含まれます。 ユーザーは、title_player_account
Entity ID のリストとして指定されます。 また、リストを空にして、ネットワーク記述子と招待識別子を持つすべてのユーザーの参加を許可することもできます。
ネットワークの広告
既存の PlayFab Party ネットワークに参加するためには、クライアントは以下の 2 つの情報が必要です。
- ネットワーク記述子
- 招待識別子
PlayFab Party ネットワークは、ネットワーク記述子 (PartyNetworkDescriptor
) で識別されます。 これは、ネットワークへの接続を確立するために必要な情報をエンコードする、ほぼあいまいな構造です。 ネットワーク記述子は、ネットワークの作成が完了した後、作成クライアントに提供されます (PartyCreateNewNetworkCompletedStateChange
、PartyNetwork::GetNetworkDescriptor()
)。 開発を容易にするために、PlayFab Party はネットワーク記述子を Web フレンドリーな文字列にシリアル化およびシリアル化解除するためのメソッドを提供します (PartyManager::SerializeNetworkDescriptor(), PartyManager::DeserializeNetworkDescriptor()
)。
招待識別子は、招待を一意に識別するための文字列です。 これは、招待を明示的に作成する場合や、ネットワーク作成時に最初の招待を作成する場合に、クライアントから指定されます。 クライアントから招待識別子が指定されない場合は、招待識別子が一意に生成されます。
他のユーザーに新しいネットワークの広告を出すために、この 2 つの情報を適切な通信媒体経由で送信します。
ネットワークへの参加
ネットワークに参加するには、2 つの手順があります。 ネットワークへの参加を希望するクライアントは、まず PartyManager::ConnectToNetwork()
にシリアル化解除されたネットワーク記述子を指定してネットワークに接続し、次に PartyNetwork::AuthenticateLocalUser()
に招待識別子を指定してユーザーを認証する必要があります。
シナリオ例
ソーシャルな招待
最もシンプルなシナリオは、1 人のユーザーがゲーム セッションを作成し、共有のソーシャル プラットフォームを介して他の既知のユーザーを招待する場合です。 そのフローは次のようになります。
- 招待者は、オープン インビテーション、つまり招待者が一緒にプレイしたいと考えるすべてのユーザーを含む招待でネットワークを作成します。
- ネットワークが作成されると、招待者は、ソーシャル プラットフォームの招待メカニズムを介して、ネットワーク記述子と招待識別子を他のユーザーに送信します。
- 招待された各ユーザーは、ネットワーク記述子と招待識別子を使用してネットワークに接続します。
注意
招待でユーザーを指定する場合、ユーザーの title_player_account
Entity ID が使用されます。 これらの Entity ID は、PlayFab Party 外部で取得する必要があります。
ロビー
ゲームにクライアント間でデータをやり取りできるロビーが用意されている場合は、ネットワーク接続情報を交換するための通信媒体として利用することができます。 そのフローは次のようになります。
- 一緒にゲームをプレイしたい一連のユーザーを選択します。
- その中の 1 人のユーザーが作成者として選ばれます。
- 一連の各ユーザーは、自分の
title_player_account
Entity ID を作成者に送信します。 - 作成者は、最初の招待の構成でユーザーの Entity ID を指定し、ネットワークを作成します。
- ネットワークの作成が完了すると、作成者は、ネットワーク記述子と最初の招待識別子を、参加してほしい一連のユーザーに送信します。
- 各ユーザーは、ネットワーク記述子と招待識別子を使用してネットワークに接続します。
マッチメイキング
PlayFab Matchmaking どのマッチメイキング サービスを利用して、一緒にプレイするユーザーのリストを探すことができます。 そのフローは次のようになります。
- ユーザーは、サービスに一致要求を行います。 一致結果には各ユーザーの Entity ID が含まれている必要があるため、
title_player_account
Entity ID が要求に含まれる必要があります。 - ユーザーは、ネットワークのメンバーになる一連のユーザーを含む一致結果を受け取ります。
- あらかじめ決められたアルゴリズムで、どのユーザーが作成者になるかを選択します。
- 作成者は、最初の招待の構成で一致した他のユーザーの Entity ID を指定し、ネットワークを作成します。
- ネットワークの作成が完了すると、作成者は帯域外の通信媒体を使用して、ネットワーク記述子と最初の招待識別子を、一致した他のユーザーに送信します。
- 一致した各ユーザーは、ネットワーク記述子と招待識別子を使用してネットワークに接続します。
注意
作成者が一致した他のユーザーに接続情報を送るためには、帯域外の通信媒体が必要です。