> ## 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.

# Game Chat 2 の概要

> Game Chat 2 を使用して XBOX GDK タイトルに音声およびテキスト チャットを追加し、プレイヤーのプライバシー、アクセシビリティ、XBOX コンソールのコミュニケーション要件を尊重します。

Game Chat 2 を使用して、ユーザーのプライバシー設定を尊重しつつ、音声およびテキストによるチャットコミュニケーションをアプリに追加できます。また、XBOX コンソール GDK タイトルの音声およびテキスト チャットに関する要件も満たすことができます。Game Chat 2 は、ネットワークトランスポートの提供を GDK タイトルに依存します。チャット音声とトランスポートの両方を含むオールインワンソリューションをお探しの場合は、[Microsoft Azure PlayFab Party](https://devdocs.xbox.com/ja-jp/build/console-features/networking/game-mesh/playfab-party-intro-networking.md) をご検討ください。
API 固有のリファレンスの詳細については、[API 内容 (Game Chat 2)](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/gamechat2_members.md) を参照してください。

> [!NOTE]
>
> Game Chat 2 と PlayFab Party API は同じ内部プラットフォーム機能を使用しており、タイトル内で並行して使用することはできません。

Game Chat 2 は、ゲームのコミュニケーションを管理するために次の表に示す機能を提供します。

| 機能 | 説明 |
| - | - |
| コミュニケーションの関係 | ユーザー同士がどのようにコミュニケーションを取るかをきめ細かく制御できます。チームやチャンネルを指定するのではなく、Game Chat 2 では各ユーザーペア間の明示的な関係を定義する必要があります。Game Chat 2 のコミュニケーション関係は、任意のユーザーペア間で単方向および双方向コミュニケーションをサポートします。音声とテキストのコミュニケーション関係は互いに独立して設定できます。 |
| アクセシビリティ | ユーザーの "Game Chat Transcription" 設定を尊重し、受信音声を表すチャットテキストメッセージを作成するための翻訳を実行し、送信されるチャットテキストメッセージのために合成音声を再生します。 |
| XBOX services 統合 | XBOX services を使用して、各ユーザーの設定と特権が尊重されるようにします。 |
| ボイスアクティビティ検出 | 音声データに音声アクティビティが含まれているタイミングを判断するためにボイスアクティビティ検出を実行します。 |
| 自動ゲイン制御 | 自動ゲイン制御を実行し、ユーザーのマイク出力のばらつきを最小化します。 |
| コーデック | アプリのリモートインスタンスに配信される音声データをエンコードします。XBOX One では、このエンコード (および受信側でのデコード) がハードウェアアクセラレートされます。 |
| `chat_manager::start`/`finish_processing_state_changes` | アプリが各 UI フレームで呼び出す一対のメソッド。[game\_chat\_state\_change](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/structs/game_chat_state_change.md) 構造体の形式で処理される結果を取得するために非同期操作を実行します。完了時に関連するリソースは解放されます。 |
| `chat_manager::start`/`finish_processing_data_frames` | アプリのトランスポート層に Game Chat 2 を追加するために使用される一対のメソッド。これらのメソッドはアプリが各ネットワークフレームで呼び出し、[game\_chat\_data\_frame](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/structs/game_chat_data_frame.md) オブジェクトを取得してリモートデバイス上のアプリのインスタンスに配信し、完了時に関連するリソースを解放します。 |
| `chat_manager::process_incoming_data` | Game Chat 2 のリモートインスタンスからアプリのトランスポート層を介して配信されたデータを Game Chat 2 に渡すために使用されるメソッド。 |
| リアルタイム音声操作 | チャット音声データを検査または操作するために、アプリをチャット音声パイプラインに挿入します。詳細については、[リアルタイム音声操作](https://devdocs.xbox.com/ja-jp/services/xbox-services/multiplayer/chat/game-chat2/real-time-audio-manipulation.md) を参照してください。 |

アプリは、共にチャットすることが想定されるローカルデバイスのユーザーとリモートデバイスのユーザーをライブラリに通知します。次に、アプリは各ユーザー間の関係を構成します。

Game Chat 2 は、ローカルユーザーのマイクから音声をポーリングし、自動ゲイン制御とボイスアクティビティ検出を実行し、データをエンコードし、`chat_manager::start`/`finish_processing_data_frames` を介して Game Chat 2 のリモートインスタンスに配信される音声データを公開します。

アプリは、[game\_chat\_state\_change](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/structs/game_chat_state_change.md) オブジェクトに含まれるデータを、同じオブジェクトで指定された 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 は、ネットワークが初期化されるまで送信するパケットを生成しません。ネットワーク初期化の詳細については、[ネットワーク初期化と接続性](https://devdocs.xbox.com/ja-jp/build/console-features/networking/initialization-connectivity-networking.md#ID4ETA) を参照してください。

## サスペンド/レジューム

`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](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/enums/game_chat_audio_encoding_bitrate.md) に更新されました。
* `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()](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/classes/chat_manager/methods/chat_manager_set_legacy_era_uwp_compat_mode_enabled.md) API が Game Chat 2 の許可された GDK バージョンに追加され、UWP および ERA バージョンの Game Chat 2 と相互運用できるようになりました。

> [!NOTE]
>
> * Game Chat 2 は、[XGameRuntimeIsFeatureAvailable](https://devdocs.xbox.com/ja-jp/reference/system/xgameruntimefeature/functions/xgameruntimeisfeatureavailable.md) で示されるとおり、`XGameRuntimeFeature::XNetworking` 機能が利用可能な場合にのみ利用できます。
> * ユーザーは Game Chat 2 インスタンスに追加される前に、[XUserAddAsync](https://devdocs.xbox.com/ja-jp/reference/system/xuser/functions/xuseraddasync.md) で Microsoft Game Development Kit に追加されます。
> * オーディオフォーカス検出のサポートは今後の GDK プレビューで提供される予定です。

## UWP および ERA から GDK への機能変更

* タイトル起動時とレジューム後、Game Chat 2 のためにパケットを送信する前に、[ネットワーク初期化](https://devdocs.xbox.com/ja-jp/build/console-features/networking/initialization-connectivity-networking.md) を待ちます。Game Chat 2 はネットワークが初期化される前に初期化されます。
* `RegisterAppStateChangeNotification` を介してサスペンドおよびレジュームイベントを登録します。サスペンド後には、[chat\_manager::cleanup()](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/classes/chat_manager/methods/chat_manager_cleanup.md) で Game Chat 2 をクリーンアップします。レジューム後には、Game Chat 2 を再初期化します。サスペンド/レジュームサイクルをまたいで使用するとクラッシュする可能性があります。

## リファレンス API ドキュメント

* [Gamechat2 (API 内容)](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/gamechat2_members.md)
  * 構造体
    * [game\_chat\_state\_change](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/structs/game_chat_state_change.md)
    * [game\_chat\_data\_frame](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/structs/game_chat_data_frame.md)
* [xgameruntimefeature (API 内容)](https://devdocs.xbox.com/ja-jp/reference/system/xgameruntimefeature/xgameruntimefeature_members.md)
  * 関数
    * [XGameRuntimeIsFeatureAvailable](https://devdocs.xbox.com/ja-jp/reference/system/xgameruntimefeature/functions/xgameruntimeisfeatureavailable.md)
* [xuser (API 内容)](https://devdocs.xbox.com/ja-jp/reference/system/xuser/xuser_members.md)
  * 関数
    * [XUserAddAsync](https://devdocs.xbox.com/ja-jp/reference/system/xuser/functions/xuseraddasync.md)

## 関連項目

[API 内容 (GameChat2)](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/gamechat2_members.md)

[Game Chat 2 C++ API の使用](https://devdocs.xbox.com/ja-jp/services/xbox-services/multiplayer/chat/game-chat2/using-game-chat-2.md)

[リアルタイム音声操作](https://devdocs.xbox.com/ja-jp/services/xbox-services/multiplayer/chat/game-chat2/real-time-audio-manipulation.md)

[Microsoft Game Development Kit](https://devdocs.xbox.com/ja-jp/services/playfab/sdks/platforms/gdk.md)


## Related topics

- [Game Chat 2 の概要](https://devdocs.xbox.com/ja-jp/services/xbox-services/multiplayer/chat/game-chat2/game-chat-2-overview.md)
- [game_chat_user_chat_indicator](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/enums/game_chat_user_chat_indicator.md)
- [game_chat_data_frame](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/structs/game_chat_data_frame.md)
- [game_chat_state_change](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/structs/game_chat_state_change.md)
- [game_chat_sample_type](https://devdocs.xbox.com/ja-jp/reference/chat/gamechat2/enums/game_chat_sample_type.md)
