게임 채팅 2 소개
게임 채팅 2를 사용하여 플레이어의 개인정보 보호 설정을 존중하고 음성 및 텍스트 채팅과 관련된 Xbox 콘솔 GDK 타이틀 요구사항을 충족하면서 앱에 음성 및 텍스트 채팅 통신 기능을 쉽게 추가합니다. 게임 채팅 2는 네트워크 전송을 위해 GDK 타이틀을 사용합니다. 채팅 오디오와 전송을 모두 포함하는 올인원 솔루션을 찾고 있다면 Microsoft Azure PlayFab 파티를 사용하는 것이 좋습니다. API 관련 참조에 대한 자세한 내용은 API 콘텐츠(게임 채팅 2)를 참조하세요.
참고 항목
게임 채팅 2와 PlayFab Party API는 동일한 내부 플랫폼 기능을 사용하므로 타이틀 내에서 병렬로 사용할 수 없습니다.
게임 채팅 2는 게임의 통신을 관리하기 위해 다음 표에 표시된 기능을 제공합니다.
기능 | 설명 |
---|---|
통신 관계 | 사용자가 서로 통신하는 방법에 대한 미묘한 제어를 제공합니다. 게임 채팅 2에서는 팀이나 채널을 지정하는 대신 각 쌍의 사용자 간에 명시적 관계를 정의해야 합니다. 게임 채팅 2 통신 관계에서는 모든 쌍의 사용자 간에 단방향 및 양방향 통신을 지원합니다. 음성 및 텍스트 통신 관계는 상호 독립적으로 설정할 수 있습니다. |
접근성 | 사용자의 "게임 채팅 기록" 기본 설정을 지정하고 번역을 수행하여 수신되는 음성 오디오를 나타내는 채팅 텍스트 메시지와 발신되는 채팅 텍스트 메시지를 나타내는 플레이 합성 음성 오디오를 생성합니다. |
Xbox 서비스 통합 | Xbox 서비스를 사용하여 각 사용자의 기본 설정 및 권한이 적용되게 합니다. |
음성 활동 감지 | 음성 활동 감지를 수행하여 오디오 데이터에 음성 활동이 포함되는 경우를 확인합니다. |
자동 게인 컨트롤 | 사용자의 마이크 출력에 대한 변동을 최소화하기 위해 자동 게인 제어를 수행합니다. |
코덱 | 앱의 원격 인스턴스에 전달된 오디오 데이터를 인코딩합니다. Xbox One에서 이 인코딩(및 수신 끝의 디코딩)은 하드웨어로 가속됩니다. |
chat_manager::start /finish_processing_state_changes |
game_chat_state_change 구조의 형태로 처리되는 결과를 검색하기 위한 비동기 작업을 수행하기 위해 모든 UI 프레임이 앱에 의해 호출되는 메서드의 쌍입니다. 완료되면 연결된 리소스가 해제됩니다. |
chat_manager::start /finish_processing_data_frames |
게임 채팅 2를 앱의 전송 계층에 추가하는 데 사용되는 방법입니다. 이러한 메서드는 앱이 모든 네트워크 프레임에서 호출하여 game_chat_data_frame 개체를 검색하고, 원격 장치에서 앱의 인스턴스에 배포한 다음, 완료되면 관련 리소스를 해제합니다. |
chat_manager::process_incoming_data |
게임 채팅 2의 원격 인스턴스에서 앱의 전송 계층을 통해 제공된 게임 채팅 2에 데이터를 제공하는 데 사용하는 메서드입니다. |
실시간 오디오 조작 | 채팅 오디오 파이프라인에 앱을 삽입하여 채팅 오디오 데이터를 검사하거나 조작합니다. 자세한 내용은 실시간 오디오 조작을 참조하세요. |
앱은 로컬 장치에 있는 사용자들의 라이브러리 및 함께 채팅할 것으로 예상되는 원격 장치의 사용자들에게 알립니다. 그런 다음 앱은 각 사용자 간의 관계를 구성합니다.
게임 채팅 2는 로컬 사용자의 마이크에서 오디오를 폴링하고, 자동 게인 컨트롤 및 음성 활동 감지를 수행하고, 데이터를 인코딩한 다음 chat_manager::start
/finish_processing_data_frames
을(를) 통해 게임 채팅 2의 원격 인스턴스로 전달할 오디오 데이터를 노출합니다.
앱은 game_chat_state_change 개체에 포함된 데이터를 같은 개체에 지정된 게임 채팅 2의 원격 인스턴스에 전달해야 합니다.
앱의 원격 인스턴스는 데이터를 수신하자마자 이 데이터를 chat_manager::process_incoming_data
을(를) 통해 게임 채팅 2의 자체 인스턴스에 제출해야 합니다. 게임 채팅 2는 수신 데이터를 디코딩한 후 이 데이터를 로컬 사용자의 오디오 장치에 렌더링합니다.
통신 권한 및 개인 정보 보호
게임 채팅 2에서는 Xbox 권한 및 개인정보 보호 요건을 시행합니다. 통신 권한이 없는 사용자는 오디오 데이터를 생성하지 않습니다. 개인 정보 설정을 통해 차단되는 사용자에게 오디오 데이터가 렌더링되지 않습니다.
네트워크 초기화
게임 채팅 2 라이브러리를 초기화하기 전에 네트워크 초기화를 기다릴 필요가 없습니다. 그러나 게임 채팅 2 패킷을 보내거나 받기 위한 소켓을 만들기 전에 네트워크 초기화를 기다려야 합니다. 게임 채팅 2는 네트워크가 초기화될 때까지 보낼 패킷을 생성하지 않습니다. 네트워크 초기화에 대한 자세한 내용은 네트워크 초기화 및 연결을 참조하세요.
일시 중단/재개
RegisterAppStateChangeNotification
을(를) 통해 일시 중단 및 재개 이벤트를 등록해야 합니다. 일시 중단 시 chat_manager::cleanup()
을(를) 호출하여 게임 채팅 2를 정리해야 합니다. 이 호출을 완료하는 데는 몇 백 밀리초가 걸릴 수 있으므로 일시 중단 처리기 시간이 초과되지 않도록 다른 일시 중단 논리에 병렬 또는 비동기적으로 만들어야 합니다. 일시 중단 처리기가 반환되기 전에 cleanup
호출을 완료하지 않아도 됩니다.
재개 시 cleanup
호출이 완료되면 chat_manager::singleton_instance().initialize(...)
을(를) 호출하여 게임 채팅 2를 다시 초기화해야 합니다. 일시 중단/재개 상태 변경 시 cleanup
및 initialize
을(를) 호출하지 않으면 게임 채팅 2를 계속 사용하려고 할 경우 타이틀이 충돌합니다.
UWP(유니버설 Windows 플랫폼) 및 Xbox One ERA에서 GDK로 API 변경
다음과 같은 변경이 게임 채팅 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의 UWP 및 ERA 버전과 상호 운용할 수 있도록 Game Chat 2의 허용된 GDK 버전에 추가되었습니다.
참고 항목
- 게임 채팅 2는
XGameRuntimeFeature::XNetworking
기능이 XGameRuntimeIsFeatureAvailable에서 표시되는 것과 같이 제공된 경우에만 사용할 수 있습니다. - 사용자는 Game Chat 2 인스턴스에 추가되기 전에 XUserAddAsync를 사용하여 Microsoft 게임 개발 키트에 추가됩니다.
- 오디오 포커스 감지 지원은 GDK의 향후 미리 보기에서 사용할 수 있습니다.
UWP 및 ERA에서 GDK로 기능 변경
- 게임 채팅 2를 대신하여 패킷을 보내기 전에 타이틀을 다시 시작한 이후 타이틀 실행과 동시에 네트워크 초기화를 기다립니다. 네트워크가 초기화되기 전에 게임 채팅 2가 초기화됩니다.
-
RegisterAppStateChangeNotification
을(를) 통해 일시 중단 및 다시 시작 이벤트를 등록합니다. 중단 후 chat_manager::cleanup()으로 게임 채팅 2를 정리합니다. 다시 시작되면 게임 채팅 2를 다시 초기화합니다. 이는 일시 중지/다시 시작 주기에서 사용하는 경우 충돌할 수 있습니다.