Game Chat 2 と PlayFab Party API は同じ内部プラットフォーム機能を使用しており、タイトル内で並行して使用することはできません。
アプリは、共にチャットすることが想定されるローカルデバイスのユーザーとリモートデバイスのユーザーをライブラリに通知します。次に、アプリは各ユーザー間の関係を構成します。
Game Chat 2 は、ローカルユーザーのマイクから音声をポーリングし、自動ゲイン制御とボイスアクティビティ検出を実行し、データをエンコードし、
chat_manager::start/finish_processing_data_frames を介して Game Chat 2 のリモートインスタンスに配信される音声データを公開します。
アプリは、game_chat_state_change オブジェクトに含まれるデータを、同じオブジェクトで指定された Game Chat 2 のリモートインスタンスに配信します。
データを受信すると、リモートインスタンスのアプリは chat_manager::process_incoming_data を介して自身の Game Chat 2 のインスタンスにデータを送信します。Game Chat 2 は受信データをデコードし、ローカルユーザーのオーディオデバイスにレンダリングします。
コミュニケーション特権とプライバシー
Game Chat 2 は XBOX services の特権およびプライバシー要件を強制します。コミュニケーション特権のないユーザーからは音声データは生成されません。プライバシー設定でブロックされたユーザーからの音声データはレンダリングされません。ネットワーク初期化
Game Chat 2 ライブラリを初期化する前にネットワーク初期化を待つ必要はありません。ただし、Game Chat 2 パケットを送受信するためのソケットを作成する前には、ネットワーク初期化を待つ必要があります。Game Chat 2 は、ネットワークが初期化されるまで送信するパケットを生成しません。ネットワーク初期化の詳細については、ネットワーク初期化と接続性 を参照してください。サスペンド/レジューム
RegisterAppStateChangeNotification を介してサスペンドおよびレジュームイベントを登録する必要があります。サスペンド時には、chat_manager::cleanup() を呼び出して Game Chat 2 をクリーンアップする必要があります。この呼び出しは完了までに数百ミリ秒かかる場合があるため、サスペンドハンドラーのタイムアウトを避けるために、他のサスペンドロジックと並行または非同期で実行する必要があります。cleanup 呼び出しはサスペンドハンドラーが戻る前に完了する必要はありません。
レジューム時、cleanup 呼び出しが完了したら、chat_manager::singleton_instance().initialize(...) を呼び出して Game Chat 2 を再初期化する必要があります。サスペンド/レジュームの状態変化で cleanup および initialize の呼び出しに失敗すると、Game Chat 2 の使用を続行するとタイトルがクラッシュします。
ユニバーサル Windows プラットフォーム (UWP) および XBOX One ERA から GDK への API 変更
Game Chat 2 をサポートするために、API に次の変更が加えられました。game_chat_audio_encoding_type_and_bitrateは game_chat_audio_encoding_bitrate に更新されました。set_audio_encoding_type_and_bitrateはset_audio_encoding_bitrateに更新されました。audio_encoding_type_and_bitrateはaudio_encoding_bitrateに更新されました。game_chat_communication_relationship_adjuster::privilegeはタイトルで解決可能な特権の問題を示すように更新されました。game_chat_communication_relationship_adjuster::privilege_check_failedが追加されました。- chat_manager::set_legacy_era_uwp_compat_mode_enabled() API が Game Chat 2 の許可された GDK バージョンに追加され、UWP および ERA バージョンの Game Chat 2 と相互運用できるようになりました。
- Game Chat 2 は、XGameRuntimeIsFeatureAvailable で示されるとおり、
XGameRuntimeFeature::XNetworking機能が利用可能な場合にのみ利用できます。 - ユーザーは Game Chat 2 インスタンスに追加される前に、XUserAddAsync で Microsoft Game Development Kit に追加されます。
- オーディオフォーカス検出のサポートは今後の GDK プレビューで提供される予定です。
UWP および ERA から GDK への機能変更
- タイトル起動時とレジューム後、Game Chat 2 のためにパケットを送信する前に、ネットワーク初期化 を待ちます。Game Chat 2 はネットワークが初期化される前に初期化されます。
RegisterAppStateChangeNotificationを介してサスペンドおよびレジュームイベントを登録します。サスペンド後には、chat_manager::cleanup() で Game Chat 2 をクリーンアップします。レジューム後には、Game Chat 2 を再初期化します。サスペンド/レジュームサイクルをまたいで使用するとクラッシュする可能性があります。
