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

# Introdução ao Game Chat 2

> Adicione chat de voz e de texto ao seu título do XBOX GDK com o Game Chat 2, respeitando a privacidade dos jogadores, a acessibilidade e os requisitos de comunicação do console XBOX.

Use o Game Chat 2 para adicionar comunicações por chat de voz e de texto ao seu aplicativo, respeitando as configurações de privacidade dos usuários e cumprindo os requisitos de títulos do GDK para console XBOX relacionados ao chat de voz e de texto. O Game Chat 2 depende do seu título do GDK para fornecer o transporte de rede. Se você estiver procurando uma solução completa que inclua tanto o áudio do chat quanto o transporte, considere o [Microsoft Azure PlayFab Party](https://docs.xbox.com/pt-BR/build/console-features/networking/game-mesh/playfab-party-intro-networking.md).
Para obter mais informações sobre referências específicas da API, consulte [Conteúdo da API (Game Chat 2)](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/gamechat2_members.md).

> [!NOTE]
>
> As APIs do Game Chat 2 e do PlayFab Party usam a mesma funcionalidade interna da plataforma e não podem ser usadas em paralelo em um título.

O Game Chat 2 oferece os recursos mostrados na tabela a seguir para gerenciar as comunicações do seu jogo.

| Recurso | Descrição |
| - | - |
| Relacionamentos de comunicação | Oferece controle refinado sobre como os usuários se comunicam entre si. Em vez de especificar equipes ou canais, o Game Chat 2 exige que sejam definidos relacionamentos explícitos entre cada par de usuários. Os relacionamentos de comunicação do Game Chat 2 oferecem suporte à comunicação unidirecional e bidirecional entre qualquer par de usuários. Os relacionamentos de comunicação por voz e por texto podem ser definidos de forma independente. |
| Acessibilidade | Respeita a preferência "Transcrição do chat do jogo" dos usuários e faz traduções para criar mensagens de chat de texto que representam o áudio de fala recebido e reproduzir áudio de fala sintetizada para as mensagens de chat de texto enviadas, respectivamente. |
| Integração com os serviços do XBOX | Usa os serviços do XBOX para garantir que as preferências e os privilégios de cada usuário sejam respeitados. |
| Detecção de atividade de voz | Faz a detecção de atividade de voz para determinar quando os dados de áudio incluem atividade de voz. |
| Controle automático de ganho | Faz o controle automático de ganho para minimizar a variação na saída do microfone de um usuário. |
| Codecs | Codifica os dados de áudio entregues às instâncias remotas do aplicativo. No XBOX One, essa codificação (e a decodificação no lado receptor) é acelerada por hardware. |
| `chat_manager::start`/`finish_processing_state_changes` | O par de métodos chamados pelo aplicativo a cada quadro da interface para executar operações assíncronas e recuperar resultados tratados na forma de estruturas [game\_chat\_state\_change](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/structs/game_chat_state_change.md). Os recursos associados são liberados ao final. |
| `chat_manager::start`/`finish_processing_data_frames` | O par de métodos usados para adicionar o Game Chat 2 à camada de transporte do aplicativo. Esses métodos são chamados pelo aplicativo a cada quadro de rede para recuperar e distribuir objetos [game\_chat\_data\_frame](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/structs/game_chat_data_frame.md) para as instâncias do aplicativo em dispositivos remotos e, em seguida, liberar os recursos associados ao final. |
| `chat_manager::process_incoming_data` | O método usado para fornecer ao Game Chat 2 os dados entregues pela camada de transporte do aplicativo a partir de uma instância remota do Game Chat 2. |
| Manipulação de áudio em tempo real | Insere o aplicativo no pipeline de áudio do chat para inspecionar ou manipular os dados de áudio do chat. Para obter mais informações, consulte [Manipulação de áudio em tempo real](https://docs.xbox.com/pt-BR/services/xbox-services/multiplayer/chat/game-chat2/real-time-audio-manipulation.md). |

O aplicativo informa à biblioteca quais usuários do dispositivo local e quais usuários dos dispositivos remotos devem conversar entre si. Em seguida, o aplicativo configura os relacionamentos entre cada usuário.

O Game Chat 2 captura o áudio dos microfones dos usuários locais, faz o controle automático de ganho e a detecção de atividade de voz, codifica os dados e, em seguida, expõe os dados de áudio a serem entregues às instâncias remotas do Game Chat 2 por meio de `chat_manager::start`/`finish_processing_data_frames`.

O aplicativo entrega os dados contidos no objeto [game\_chat\_state\_change](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/structs/game_chat_state_change.md) às instâncias remotas do Game Chat 2 especificadas no mesmo objeto.

Ao receber os dados, as instâncias remotas do aplicativo os enviam à própria instância do Game Chat 2 por meio de `chat_manager::process_incoming_data`. O Game Chat 2 decodifica os dados recebidos e os renderiza no dispositivo de áudio do usuário local.

## Privilégios de comunicação e privacidade

O Game Chat 2 aplica os privilégios e os requisitos de privacidade dos serviços do XBOX. Os dados de áudio não são gerados por usuários que não têm privilégios de comunicação. Os dados de áudio não são renderizados para usuários bloqueados pelas configurações de privacidade.

## Inicialização da rede

Você não precisa aguardar a inicialização da rede antes de inicializar a biblioteca do Game Chat 2. No entanto, precisará aguardar a inicialização da rede antes de criar quaisquer sockets para enviar/receber pacotes do Game Chat 2. O Game Chat 2 não gerará nenhum pacote para envio até que a rede seja inicializada. Para obter mais informações sobre a inicialização da rede, consulte [Inicialização e conectividade da rede](https://docs.xbox.com/pt-BR/build/console-features/networking/initialization-connectivity-networking.md#ID4ETA).

## Suspensão/retomada

Você deve se registrar para os eventos de suspensão e retomada por meio de `RegisterAppStateChangeNotification`. Na suspensão, você deve limpar o Game Chat 2 chamando `chat_manager::cleanup()`. Essa chamada pode levar algumas centenas de milissegundos para ser concluída; por isso, você deve fazê-la em paralelo ou de forma assíncrona em relação à sua outra lógica de suspensão, para evitar que o manipulador de suspensão atinja o tempo limite. A chamada `cleanup` não precisa ser concluída antes que o manipulador de suspensão retorne.

Na retomada, depois que a chamada `cleanup` for concluída, você deve chamar `chat_manager::singleton_instance().initialize(...)` para reinicializar o Game Chat 2. Deixar de chamar `cleanup` e `initialize` em uma alteração de estado de suspensão/retomada resultará em travamentos do título se você continuar tentando usar o Game Chat 2.

## Alterações na API da Plataforma Universal do Windows (UWP) e do XBOX One ERA para o GDK

As alterações a seguir foram feitas na API para oferecer suporte ao Game Chat 2.

* `game_chat_audio_encoding_type_and_bitrate` foi atualizado para [game\_chat\_audio\_encoding\_bitrate](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/enums/game_chat_audio_encoding_bitrate.md).
* `set_audio_encoding_type_and_bitrate` foi atualizado para `set_audio_encoding_bitrate`.
* `audio_encoding_type_and_bitrate` foi atualizado para `audio_encoding_bitrate`.
* `game_chat_communication_relationship_adjuster::privilege` foi atualizado para indicar problemas de privilégio que podem ser resolvidos pelo título.
* `game_chat_communication_relationship_adjuster::privilege_check_failed` foi adicionado.
* A API [chat\_manager::set\_legacy\_era\_uwp\_compat\_mode\_enabled()](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/classes/chat_manager/methods/chat_manager_set_legacy_era_uwp_compat_mode_enabled.md) foi adicionada para permitir que a versão do GDK do Game Chat 2 interopere com as versões UWP e ERA do Game Chat 2.

> [!NOTE]
>
> * O Game Chat 2 só estará disponível se o recurso `XGameRuntimeFeature::XNetworking` estiver disponível, conforme indicado por [XGameRuntimeIsFeatureAvailable](https://docs.xbox.com/pt-BR/reference/system/xgameruntimefeature/functions/xgameruntimeisfeatureavailable.md).
> * Os usuários são adicionados ao Microsoft Game Development Kit com [XUserAddAsync](https://docs.xbox.com/pt-BR/reference/system/xuser/functions/xuseraddasync.md) antes de serem adicionados à instância do Game Chat 2.
> * O suporte à detecção de foco de áudio estará disponível em uma versão prévia futura do GDK.

## Alterações funcionais da UWP e do ERA para o GDK

* Aguarde a [inicialização da rede](https://docs.xbox.com/pt-BR/build/console-features/networking/initialization-connectivity-networking.md) ao iniciar o título, e depois de retomá-lo, antes de enviar pacotes em nome do Game Chat 2. O Game Chat 2 é inicializado antes da rede.
* Registre-se para os eventos de suspensão e retomada por meio de `RegisterAppStateChangeNotification`. Após a suspensão, limpe o Game Chat 2 com [chat\_manager::cleanup()](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/classes/chat_manager/methods/chat_manager_cleanup.md). Após a retomada, reinicialize o Game Chat 2. Ele pode travar se você o usar ao longo de um ciclo de suspensão/retomada.

## Documentação de referência da API

* [Gamechat2 (conteúdo da API)](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/gamechat2_members.md)
  * Estruturas
    * [game\_chat\_state\_change](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/structs/game_chat_state_change.md)
    * [game\_chat\_data\_frame](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/structs/game_chat_data_frame.md)
* [xgameruntimefeature (conteúdo da API)](https://docs.xbox.com/pt-BR/reference/system/xgameruntimefeature/xgameruntimefeature_members.md)
  * Funções
    * [XGameRuntimeIsFeatureAvailable](https://docs.xbox.com/pt-BR/reference/system/xgameruntimefeature/functions/xgameruntimeisfeatureavailable.md)
* [xuser (conteúdo da API)](https://docs.xbox.com/pt-BR/reference/system/xuser/xuser_members.md)
  * Funções
    * [XUserAddAsync](https://docs.xbox.com/pt-BR/reference/system/xuser/functions/xuseraddasync.md)

## Confira também

[Conteúdo da API (GameChat2)](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/gamechat2_members.md)

[Usando a API C++ do Game Chat 2](https://docs.xbox.com/pt-BR/services/xbox-services/multiplayer/chat/game-chat2/using-game-chat-2.md)

[Manipulação de áudio em tempo real](https://docs.xbox.com/pt-BR/services/xbox-services/multiplayer/chat/game-chat2/real-time-audio-manipulation.md)

[Microsoft Game Development Kit](https://docs.xbox.com/pt-BR/services/playfab/sdks/platforms/gdk.md)


## Related topics

- [chat_user](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/classes/chat_user/chat_user.md)
- [game_chat_user_chat_indicator](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/enums/game_chat_user_chat_indicator.md)
- [game_chat_data_frame](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/structs/game_chat_data_frame.md)
- [game_chat_state_change](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/structs/game_chat_state_change.md)
- [game_chat_sample_type](https://docs.xbox.com/pt-BR/reference/chat/gamechat2/enums/game_chat_sample_type.md)
