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 服务特权和隐私要求。没有通信特权的用户不会生成音频数据。通过隐私设置被屏蔽的用户不会渲染其音频数据。网络初始化
在初始化 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 变更
对 API 进行了以下更改以支持 Game Chat 2。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。 - 允许的 GDK 版本的 Game Chat 2 添加了 chat_manager::set_legacy_era_uwp_compat_mode_enabled() API,以便与 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。如果您在挂起/恢复周期中使用它,可能会崩溃。
