> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PlayFab Party networks and network discovery flows

> PlayFab Party のネットワーク検出に関する概念ガイド: マルチプレイヤー ゲームで Party チャットとデータ ネットワークをプレイヤーがどのように見つけ、招待し、接続するか。

# PlayFab Party への検出の統合

検出は、ユーザーが一緒にプレイするために互いを見つけるプロセスです。PlayFab Party は検出メカニズムを提供しませんが、ユーザー間の通信を提供する既存のメカニズムと組み合わせて使用できます。

## 基本的な作成と参加のフロー

PlayFab Party ネットワークは、単一のクライアント上でユーザーによって [作成](#creating-a-network) され、[アドバタイズ](#advertising-a-network) され、その後、異なるクライアント上の他のユーザーによって [参加](#joining-a-network) されます。

### ネットワークの作成

ゲーム セッションで PlayFab Party ネットワークを使用する際の最初の考慮事項は、どのクライアントとユーザーがネットワークを作成するかを選ぶことです (`PartyManager::CreateNewNetwork()`)。PlayFab Party の観点からは、どのユーザーが実行するかは問題ではありません。どのユーザーでもネットワークを作成できます。作成者にはネットワーク内で特別な権限は与えられません。ただし、ネットワークを作成するクライアントは、以下について責任があります。

* 不変のネットワーク構成 (`PartyNetworkConfiguration`) の設定
* 初期招待 (`PartyInvitationConfiguration`) の決定
* 他のユーザーへのネットワークのアドバタイズ

初期招待には、識別子とネットワークに参加が許可されているユーザーのリストが含まれます。ユーザーは `title_player_account` [エンティティ ID](/services/playfab/live-service-management/game-configuration/entities) のリストとして指定されます。あるいは、リストを空にして、ネットワーク記述子と招待識別子を持つ任意のユーザーが参加できるようにすることもできます。

### ネットワークのアドバタイズ

既存の PlayFab Party ネットワークに参加するには、クライアントは 2 つの情報を必要とします。

* ネットワーク記述子
* 招待識別子

PlayFab Party ネットワークはネットワーク記述子 (`PartyNetworkDescriptor`) によって識別されます。これは、ネットワークへの接続を確立するために必要な情報をエンコードする、ほとんど不透明な構造体です。ネットワーク記述子は、ネットワークの作成が完了した後、作成側のクライアントに提供されます (`PartyCreateNewNetworkCompletedStateChange`、`PartyNetwork::GetNetworkDescriptor()`)。開発を容易にするため、PlayFab Party は、ネットワーク記述子を Web に適した文字列との間でシリアル化およびデシリアル化するためのメソッドを提供します (`PartyManager::SerializeNetworkDescriptor()`、`PartyManager::DeserializeNetworkDescriptor()`)。

招待識別子は、招待を一意に識別する文字列です。招待を明示的に作成するとき、またはネットワーク作成時に初期招待を作成するときに、クライアントによって提供されます。クライアントが招待識別子を提供しない場合、一意に生成されます。

新しいネットワークを他のユーザーにアドバタイズするには、これら 2 つの情報を任意の適切な通信メディアを介して送信します。

### ネットワークへの参加

ネットワークへの参加は 2 段階のプロセスです。ネットワークに参加したいクライアントは、まずデシリアル化されたネットワーク記述子を `PartyManager::ConnectToNetwork()` に提供してネットワークに接続し、次に招待識別子を `PartyNetwork::AuthenticateLocalUser()` に提供してユーザーを認証する必要があります。

## シナリオの例

### ソーシャルの招待

最もシンプルなシナリオは、1 人のユーザーがゲーム セッションを作成し、共有ソーシャル プラットフォームを介して他の既知のユーザーを招待したい場合です。フローは以下のようになります。

* 招待者がオープンな招待、または招待者が一緒にプレイしたいすべてのユーザーを含む招待でネットワークを作成する。
* ネットワークが作成されたら、招待者はソーシャル プラットフォームの招待メカニズムを介してネットワーク記述子と招待識別子を他のユーザーに送信する。
* 各招待されたユーザーは、ネットワーク記述子と招待識別子を使用してネットワークに接続する。

<Note>
  招待でユーザーを指定するとき、ユーザーの `title_player_account` [エンティティ ID](/services/playfab/live-service-management/game-configuration/entities) が使用されます。これらのエンティティ ID は、PlayFab Party の外部で取得する必要があります。
</Note>

### ロビー

ゲームがクライアント間でデータを送信できるロビーを提供する場合、それをネットワーク接続情報を交換する通信メディアとして使用できます。フローは以下のようになります。

* 一緒にゲームをプレイするユーザーのセットが選択される。
* それらのユーザーの 1 人が作成者として選ばれる。
* セットの各ユーザーは自身の `title_player_account` [エンティティ ID](/services/playfab/live-service-management/game-configuration/entities) を作成者に送信する。
* 作成者は、初期招待構成でユーザーのエンティティ ID を指定してネットワークを作成する。
* ネットワークの作成が完了すると、作成者は参加すべきユーザーのセットにネットワーク記述子と初期招待識別子を送信する。
* 各ユーザーは、ネットワーク記述子と招待識別子を使用してネットワークに接続する。

### マッチメイキング

[PlayFab マッチメイキング](/services/playfab/live-service-management/game-configuration/entities) などのマッチメイキング サービスを使用して、一緒にプレイするユーザーのリストを見つけることができます。フローは以下のようになります。

* ユーザーがサービスにマッチ要求を開始する。マッチ結果に各ユーザーのエンティティ ID が含まれる必要があるため、要求には `title_player_account` [エンティティ ID](/services/playfab/live-service-management/game-configuration/entities) が含まれている必要がある。
* ユーザーはネットワークに含まれるべきユーザーのセットを含むマッチ結果を受け取る。
* 事前に決められたアルゴリズムを使用して、どのユーザーが作成者になるかを選択する。
* 作成者は、初期招待構成で他のマッチしたユーザーのエンティティ ID を指定してネットワークを作成する。
* ネットワークの作成が完了すると、作成者は帯域外通信メディアを使用してネットワーク記述子と初期招待識別子を他のマッチしたユーザーに送信する。
* 各マッチしたユーザーは、ネットワーク記述子と招待識別子を使用してネットワークに接続する。

<Note>
  作成者から他のマッチしたユーザーに接続情報を送信するには、帯域外通信メディアが必要です。
</Note>


## Related topics

- [Using multiple PlayFab Party networks](/ja-jp/services/playfab/multiplayer/networking/concepts-multiple-networks.md)
- [PartyNetwork](/ja-jp/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/partynetwork.md)
- [PartyNetwork::LeaveNetwork](/ja-jp/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_leavenetwork.md)
- [PartyNetworkConfiguration](/ja-jp/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration.md)
- [PartyNetwork::GetNetworkDescriptor](/ja-jp/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_getnetworkdescriptor.md)
