보이스 인터페이스

보이스 인터페이스를 사용하여 사용자가 제품을 사용하는 동안에 서로 대화할 수 있는 보이스 채팅룸을 만들고 관리합니다.

Preview Only

에픽 온라인 서비스(EOS) 보이스(Voice) 를 통해 개발자는 사용자끼리 대화할 수 있도록 보이스 채팅룸을 만들어 관리할 수 있습니다. 사용자는 다양한 플랫폼에 걸쳐 매치 도중에 또는 제품의 로비에서 1대1 또는 그룹으로 소통할 수 있습니다.

EOS 보이스는 인증된 사용자들만 연결하며, 사용자의 개인 정보(PI)를 노출하는 일 없이 보이스 서버를 통해 연결합니다. EOS가 보이스 서버의 확장, 서비스 품질, 유지 관리, 다지역 현재상태 및 기타 머시너리를 모두 처리합니다.

보이스 인터페이스에는 EOS SDK 버전 1.13 이상이 필요합니다.

보이스는 언리얼 엔진 4.27 버전의 VoiceChat 플러그인과 온라인 서브시스템(Online Subsystem, OSS)으로 완벽하게 지원됩니다.

보이스 인터페이스를 사용하려면 다음을 수행해야 합니다.

  1. 게임에 사용할 통합 방법을 검토하고 결정합니다.

  2. 보이스 샘플(CC#)을 조사하고 제품에 보이스 인터페이스를 사용하는 방법을 익힙니다.

  3. 보이스 인터페이스를 애플리케이션에 통합합니다.

    1. 클라이언트 정책을 구성합니다.

    2. 선택한 통합 방법에 따라 보이스 인터페이스를 통합합니다.

  4. 보이스 인터페이스의 모범 사례, 보이스 메트릭, 사용 제한을 검토합니다.

보이스 통합 방법

다음 두 가지 방법으로 보이스를 애플리케이션에 통합할 수 있습니다.

로비에 사용하는 보이스

VoiceLobbies.png

로비의 보이스를 사용할 때, EOS SDK를 게임 클라이언트에 통합하고 로비가 신뢰할 수 있는 서버 애플리케이션 역할을 맡게 합니다. 로비는 roomIds`를 생성하고 멤버의 tokens`를 생성하며, 다른 플레이어의 join, kick, mute 요청을 승인합니다.

룸을 확보하기 위해 로비를 비공개 및 초대 필요로 설정할 수 있습니다.

정책 구성

userRequired 를 사용하여 게임 클라이언트의 클라이언트 정책을 구성하고 다음을 허용합니다.

  • 로비 에 해당 클라이언트에 적절한 액션(connect, readLobby 등) 허용

  • 보이스lobbyConference 액션 허용

createRoomToken, mute, kick`은 [서버 전용](#voicewithatrustedserverapplication)이며 비활성화한 상태로 두어야 합니다. 그렇지 않으면, 게임 클라이언트가 모든 roomId`에 액세스할 수 있습니다.

로비에 사용하는 보이스 플로

  1. 게임 클라이언트SDK를 초기화하고 EOS_HLobby 인터페이스와 EOS_RTCEOS_RTCAudio 인터페이스를 획득합니다.

  2. 게임 클라이언트연결 인터페이스를 사용하여 로컬 사용자를 인증합니다.

  3. 게임 클라이언트 는 _allowConference_를 활성화한 상태로 `EOS_Lobby_CreateLobby`를 사용하여 새로운 로비를 생성합니다.

  4. 로비는 룸 토큰을 요청하고 미디어 서버 URL과 함께 반환합니다. 그러면 EOS SDK가 해당 토큰을 사용하여 보이스 채팅룸에 참가합니다.

  5. 로비에 참가하는 다른 사용자는 일치하는 룸 토큰을 자동으로 받아 보이스 컨퍼런스에 참가할 수 있습니다.

  6. 로비 오너는 다른 플레이어에게 초대를 보낼 수 있으며, 초대 없이도 공개 로비를 검색하고 참가할 수 있습니다.

  7. 로비 오너는 다른 플레이어를 음소거하거나 추방할 수 있습니다.

  8. 모든 클라이언트는 EOS_RTCEOS_RTCAudio 인터페이스를 사용하여 오디오 입출력을 관리하거나 로컬 음소거와 스피커 상태를 변경하거나 룸을 나갈 수 있습니다.

EOS SDK 로비 샘플은 이러한 구성을 보여줍니다.

보이스 서버 컴포넌트를 호스팅하고 싶거나 호스팅해야 하는 경우, 신뢰할 수 있는 서버 애플리케이션 통합 을 대신 사용할 수 있습니다.

신뢰할 수 있는 서버 애플리케이션에 사용하는 보이스

VoiceTrustedServer.png

정책 구성

다음과 같이 서버의 클라이언트 정책을 구성합니다:

  • 서버가 연결 인터페이스를 통한 인증에 clientId`와 client secret`을 사용할 수 있도록 userRequired 비활성화

  • 서버가 모든 roomId 에 플레이어의 룸 토큰을 생성하고 플레이어를 제거하고 토큰을 취소하고 플레이어를 음소거할 수 있도록 보이스createRoomToken, kick, and mute 각각 설정

  • GameClient 에 대한 클라이언트 정책은 EOS 보이스 백엔드 자체에 아무런 요청도 하지 않으므로 어떠한 보이스 권한도 가져서는 안 됩니다.

  • createRoomToken, mute, `kick`은 신뢰할 수 있는 서버에서만 사용해야 하며, **userRequired** 가 비활성화된 정책이 필요합니다.

  • 이러한 액션은 모든 'roomId'에서 작동하고, 모든 사용자에게 토큰을 발행하고, 승인된 배포 내에서 룸에 있는 모든 사용자를 추방/음소거하는 등 서버가 사용자를 관리할 수 있게 만듭니다.

  • 클라이언트 정책은 클라이언트가 신뢰할 수 있는 환경에서 실행 중인 경우에만 이러한 보이스 액션을 활성화하도록 구성되어야 합니다.

  • 커뮤니티 서버와 플레이어의 게임 클라이언트 정책은 이러한 액션에 액세스하면 안 됩니다.

신뢰할 수 있는 서버에 사용하는 보이스 플로

  1. 게임 클라이언트SDK 초기화를 수행하고 전용 서버나 웹 애플리케이션 등 신뢰할 수 있는 애플리케이션에 보이스 룸 입장을 요청합니다.

  2. 신뢰할 수 있는 서버는 연결 인터페이스ClientId클라이언트 암호(Client Secret) 를 사용하여 인증합니다.

  3. 서버는 roomId`를 생성하고 플레이어 대신 EOS 보이스 백엔드에서 주어진 roomId`와 플레이어의 `ProductUserIds`에 대한 룸 토큰을 요청합니다.

  4. 신뢰할 수 있는 서버는 기존 통신 방법을 사용하여 룸 토큰과 미디어 서버 URL을 각 플레이어의 게임 클라이언트 애플리케이션에 반환합니다.

    • 클라이언트와 서버 간의 통신 방법은 개발자의 재량에 달렸으며, 네트워크 복제, 메시징, HTTP 또는 기존의 다른 통신 방법을 사용하여 달성할 수 있습니다.

  5. 게임 클라이언트EOS_RTC_JoinRoom을 사용하여 미디어 서버에 연결하고 서버에서 제공한 토큰으로 룸에 참가합니다.

  6. 다른 사용자들은 신뢰할 수 있는 서버에 같은 룸의 ProductUserId 토큰 을 요청하고 이를 사용하여 미디어 서버에 연결함으로써 룸에 참가할 수 있습니다.

    • 서버 로직은 주어진 룸에 참가하고 다른 사용자를 음소거하거나 추방할 수 있는 사용자를 결정하는 데 사용할 인증 방법을 지정합니다. 이러한 통합 방법으로 개발자는 이 부분을 커스터마이징할 수 있습니다.

    • 보이스 서버 샘플은 룸에 참가하기 위한 암호, 그리고 오너와 공유되며 추방이나 음소거와 같은 작업 시 제공해야 하는 잠금을 통해 이 점을 보여줍니다.

  7. 모든 클라이언트는 EOS_RTCEOS_RTCAudio 인터페이스를 사용하여 오디오 입출력을 관리하거나 로컬 음소거와 스피커 상태를 변경하거나 룸을 나갈 수 있습니다.

EOS SDK 보이스 클라이언트 및 보이스 서버 샘플 (CC#)은 이 구성을 보여줍니다.

RTC 인터페이스에 대한 핸들

RTC 기능에 사용할 수 있는 인터페이스 핸들은 3개가 있으며, 플랫폼 인터페이스에서 얻을 수 있습니다.

EOS_HRTCAdmin 핸들

  • 보이스 백엔드는 로비에서 관리하는 보이스 룸과 개발자 서버에서 관리하는 룸을 별개로 유지합니다. 즉, 로비 컨퍼런스에서 참가자를 추방하거나 강제 음소거하는 등의 기능은 EOS_HRTCAdmin 인터페이스로는 수행할 수 없고 로비 인터페이스 자체를 통해서만 수행할 수 있습니다.

  • 룸 토큰 생성, 추방, 음소거 등의 관리자 기능에 사용됩니다.

  • 게임 클라이언트나 공유된 커뮤니티 서버가 아닌 신뢰할 수 있는 서버 애플리케이션에만 사용해야 합니다.

  • EOS_Platform_GetRTCAdminInterface로 이 핸들을 얻습니다.

EOS_HRTC 핸들

  • 오디오/보이스에 특정되지 않은 룸 레벨 기능에 사용됩니다(예: 사용자가 룸을 나가거나 입장할 때의 알림).

  • EOS_Platform_GetRTCInterface로 이 핸들을 얻습니다.

EOS_HRTCAudio 핸들

  • `EOS_HRTC`의 보이스 전용 서브인터페이스입니다.

  • EOS_RTC_GetAudioInterfaceEOS_HRTC 핸들에서 이 핸들을 얻습니다.

EOS_HRTC 핸들과 EOS_HRTCAudio 핸들 모두 유용하며, 로비에 사용하는 보이스를 사용하더라도 여전히 유용합니다. 로비에 사용하는 보이스의 음성을 사용하기가 더 쉽지만, 가끔은 RTC 인터페이스를 직접 사용해야 합니다.

모범 사례

양방향 음소거

차단 목록 등의 다양한 플랫폼 요건을 준수하려면 EOS_RTC_BlockParticipant를 사용하여 필요한 곳에 플레이어의 양방향 음소거를 구현해야 합니다.

자녀 보호

세션에서 보이스를 활성화하기 전에 자녀 보호 설정부터 확인하세요.

사용 제한

보이스에는 인터페이스별 사용률 제한이 있습니다. 흐름 조절, 사용 할당량 및 모범 사례에 대한 일반적인 정보는

[서비스 사용 제한](Overview#serviceusagelimitations)
을 참조하세요.

기능

서비스 제한

최대 룸 크기

16

사용자/분당 최대 요청

50

보이스 메트릭

개발자 포털내 제품(Your Product) > 게임 서비스(Game Services) > 보이스(Voice) 에서 지난 30일의 보이스 운영 메트릭을 확인할 수 있습니다.

시간 간격(5분, 30분, 1시간, 1일, 7일, 14일, 30일)과 플랫폼(Windows, PS4, PS5 등)으로 데이터를 필터링할 수 있습니다.

보이스 서비스를 사용하기 시작하면, 그래프에 데이터가 자동으로 채워지며 추가 설정이 필요 없습니다.

메트릭에는 다음이 포함됩니다.

  • 플랫폼당 연결된 사용자(Connected Users per Platform): 선택한 기간의 플랫폼별로 보이스 서비스에 연결된 플레이어 수입니다.

  • 보이스 사용자 상태(Voice Users Status): 보이스 SDK 상태 분석입니다(연결됨, 오류, 연결 끊김 등).

  • 룸 참가(Join Room): 전체 사용자 참가 오류율입니다.

  • 룸 참가 오류(Join Room Errors): 구체적인 룸 참가 오류와 오류율에 대한 세부사항입니다.

  • 룸 크기(Room Sizes): 모든 플랫폼의 참가자 수에 기반한 룸 크기 분포입니다.

  • 오류(Errors): 오류와 오류율에 대한 세부사항입니다.