このクイックスタート ガイドでは、C++ Party SDK の使用について説明します。* Unity ユーザーの場合は、Unity のクイックスタート を参照してください。* Unreal Engine 用の PlayFab Online Subsystem を使用したい Unreal Engine ユーザーの場合は、Unreal のクイックスタート を参照してください。
前提条件
PlayFab アカウントが必要で、Party の使用を開始するには Party 機能を有効にする必要があります。- PlayFab アカウント を作成またはサインインします。手順については、クイックスタート: Game Manager を参照してください。
- PlayFab アカウントから Game Manager 経由で Party 機能を有効にする を実行します。
プラットフォームの前提条件
このクイックスタートを開始する前に、次のトピックで指定されているプラットフォーム固有のセットアップを実行してください: プラットフォーム固有の手順を完了したら、このトピックの残りの手順に進んで PlayFab Party をセットアップします。Party SDK のダウンロードとセットアップ
Party SDK は、さまざまなプラットフォームとゲーム エンジン用に用意されています。必要なものを選択してダウンロードしてください。ダウンロード リンクについては、Party SDK を参照してください。 SDK をインストールした後、コードの記述を開始する前に、Party がどのように動作するかを確認するためにサンプルを実行することができます。サンプルをダウンロードするには、Party サンプル にアクセスしてください。 XBOX および PC タイトルで Party を使用している場合は、一貫した機能と動作を保証するために Party XBOX Live Helper ライブラリ の使用を推奨します。このライブラリは、タイトルが XBOX Live 要件を満たすのに役立ちます。詳細については、XBOX 要件 を参照してください。PlayFab タイトルにログインしてエンティティ トークンとエンティティ ID を取得する
Party を初期化して使用するには、PlayFab にログインする必要があります。PlayFabClientAPI::LoginWithCustomID またはプラットフォーム固有のログイン方法を使用できます。 ログインを実行すると、PlayFab は LoginResult の一部としてエンティティ ID とエンティティ トークンを返します。これら 2 つの重要な情報は、PlayFab Party のローカル ユーザー インスタンスを初期化するために使用されます。PlayFabManager.cpp で実装されているカスタム ID でのログインの例を、このコード スニペットに示します:
XBOX Live を使用している場合は、Party XBOX Live Helper ライブラリ を使用してログインすることもできます。
PlayFab Party の初期化
大まかに言うと、Party の初期化には次の手順が含まれます:PartyManagerへのシングルトン参照を取得し、初期化します。 これは、Party ライブラリと対話するための主要な管理クラスです。
- ローカル ユーザー オブジェクトを作成します。 このローカル ユーザー オブジェクトは、ネットワーキングとチャット操作を実行するときに、デバイス (PC、コンソール、電話など) 上のローカル ユーザーを表すために使用されます。ローカル ユーザー オブジェクトは、PlayFab Entity ID で初期化されます。
- チャット コントロールを作成し、Party がデータを受信または転送するオーディオ入力および出力チャネルを設定します。 チャット コントロール オブジェクトは、特定のデバイス上のユーザーのチャット操作を管理します。
- 文字起こしと翻訳のオプションを設定します。 文字起こしと翻訳は、ゲームのアクセシビリティを大幅に向上させることができるオプションのチャット機能です。これらの機能の詳細については、チャットの概要 を参照してください。
NetworkManager::Initialize() コードを参照してください。
次のステップは、Party ネットワークを作成してそれに接続することです。
Party ネットワークの作成
Party ネットワークは、チャットまたはデータ通信を交換するためにゲームが作成する、1 つ以上のデバイスとそれらの認可されたユーザーのセキュアなコレクションです。Party ネットワークは通常、ゲームのマルチプレイヤー セッションまたはチャットの「ロビー」の概念と一致します。メッセージは自分のネットワーク内のプレイヤーにのみ送信できます。 次のコード スニペットは、Party ネットワークを作成する方法を示しています。CreateNewNetwork() への関数呼び出しが成功すると、ネットワーク記述子 PartyNetworkDescriptor オブジェクトが返される/設定されます。この記述子には、他のプレイヤーがネットワークに接続するために必要なデータが含まれています。
その他の関数パラメーターの情報については、API リファレンス ドキュメント を参照してください。
Party ネットワークが作成されると、招待を使用してどのユーザーがネットワークに参加できるかを制御します。PlayFab Matchmaking、PlayFab Lobby、プラットフォームの招待、またはカスタム ゲーム サービスを使用して、他のプレイヤーと接続の詳細を共有できます。
最も単純な招待の種類は、ネットワーク記述子で構成されるオープン招待です。すべての招待の種類とセキュリティ モデルの詳細については、招待とセキュリティ モデル を参照してください。
Party ネットワーク記述子の共有
この時点で、Party ネットワーク記述子があり、他のプレイヤーと共有する準備ができています。この情報を共有するために使用できる同期メカニズムは多数ありますが、簡単なテスト目的では、ホストの Party セッションからゲストの Party セッションに Party ネットワーク記述子を手動でコピー & ペーストできます。マルチプレイヤー ゲームでネットワーク記述子を共有するには PlayFab Lobby の使用を推奨しますが、ゲームのニーズに基づいて独自のロビー サービス、招待、またはその他の共有メカニズムを使用することもできます。Party ネットワーク記述子を手動で共有する
- ホスト セッションから、PartyManager::SerializeNetworkDescriptor() を使用してネットワーク記述子を文字列にシリアル化し、コンソールに出力します。
- ネットワーク記述子文字列をローカルまたはリモートの別のゲームにコピー & ペーストします。
- ゲスト セッションで、PartyManager::DeserializeNetworkDescriptor() を使用して、ネットワーク記述子文字列からネットワーク記述子を逆シリアル化します。
- Party ネットワークに接続します。
PlayFab Lobby を使用して Party ネットワーク記述子を共有する
PlayFab Lobby を使用すると、プレイヤーがマッチの出入りをするときにプレイヤーを一時的にグループ化でき、ネットワーク記述子を同期して同じネットワークに参加できるようにすることができます。 PlayFab Lobby は、すべてのサポート対象プラットフォームとプラットフォーム間で幅広いゲームプレイのニーズをサポートするために高度にカスタマイズ可能です。リアルタイム メッセージで PlayFab Lobby を使用する詳細については、Multiplayer SDK のクイックスタート を参照してください。 PlayFab Lobby を PlayFab Party と一緒に使用する詳細については、PlayFab Multiplayer SDK でロビーを作成する を参照してください。スケーラブル ネットワークの有効化
PlayFab Party ネットワークは、2 から 128 のデバイスの範囲でサポートするようにスケーリングできます。サービスはシナリオに最適化されたリレー構成を選択するため、PartyNetworkConfiguration の maxDeviceCount をネットワーク内で予想されるデバイスの最大数に一致するように構成することが重要です。
スケーラブル ネットワークの説明については、スケーラブル ネットワーク を参照してください。
Party ネットワークへの接続
Party ネットワーク記述子を取得した後、以下の手順に従って Party ネットワークに参加します:- PartyManager::DeserializeNetworkDescriptor() を使用して、ネットワーク記述子文字列からネットワーク記述子を逆シリアル化します。
- Party ネットワークに接続します。
- ネットワークのローカル ユーザーを認証します。
- VOIP を使用できるように、ローカル チャット コントロールをネットワークに接続します。
- ゲーム メッセージ トラフィック用の Party ネットワーク エンドポイント を確立します。
別のネットワーク デバイスまたはエンドポイントへのメッセージの送信
Party ネットワークに接続したら、ローカル エンドポイント オブジェクトを使用してメッセージを送信できます。メッセージを受信してローカル デバイスでレンダリングする
最後のステップは、リモート Party メンバーから送信されたメッセージを受信し、デバイスでそれらをレンダリング (再生) することです。前のステップの 1 つでチャット コントロールを作成する際、Party がオーディオ データの送受信およびレンダリングに使用するオーディオ入力および出力デバイスを既にセットアップしています。オーディオ メッセージを受信するには、オーディオを流したい場合、各チャット コントロール間で適切なチャット アクセス許可も設定する必要があります。既定では、チャット アクセス許可は NONE に設定されています。詳細については、チャットのアクセス許可 の記事を参照してください。
タイトル中断の処理
一部のプラットフォームでは、タイトルの実行を一時的に中断することがサポートされています: iOS、Switch、および GDK。 タイトルが中断されると、ネットワーク スタックが無効になり、PlayFab Party は PlayFab Party ネットワークへの接続を維持できなくなります。 PlayFab Party を使用しているときにタイトルの実行を中断および再開する処理には、特別な考慮が必要です。iOS
iOS では、PlayFab Party ネットワークから退出して再接続する必要があります。 Party ネットワークから退出するには、LeaveNetwork() を呼び出します。ネットワークが再アクティブ化されたら、以前の Party ネットワーク記述子で ConnectToNetwork() を呼び出します。Switch および GDK
Nintendo Switch および Microsoft GDK では、PlayFab Party をクリーンアップし、タイトルの実行が再開されるのを待ってから PlayFab Party を再初期化してネットワークに再接続する必要があります。 Party をシャットダウンするには、Cleanup() を呼び出します。Cleanup() を呼び出すと、すべてのライブラリ リソースが再利用され、すべてのライブラリ オブジェクトが破棄されます。Party を再初期化した後、ローカル ユーザーの再認証、チャット コントロールの再接続、およびエンドポイントの再作成により、ローカル ユーザーやチャット コントロールなどのライブラリ オブジェクトを再作成し、以前のネットワーク状態を再確立する必要があります。
- 以前の Party ネットワーク記述子で Party ネットワークに接続します。
- ローカル ユーザー オブジェクトを再作成し、それらのローカル ユーザーをネットワークに再認証します。
- ローカル チャット コントロールを再作成し、それらのチャット コントロールをネットワークに再接続して VOIP を有効にします。
- ゲーム メッセージ トラフィック用の Party ネットワーク エンドポイント を再作成します。
再接続が正常に完了した場合、Party は他のピアと通信できるようになりますが、以前のネットワークがもう存在しない場合、再接続は失敗します。この場合、適切な接続エラーを処理する必要があります。
