Voice Interface

보이스 인터페이스를 사용하여 제품의 사용자들이 대화하는 보이스 채팅방을 만들고 관리할 수 있습니다.

Preview
16 분 소요

에픽 온라인 서비스(Epic Online Services, EOS) 보이스(Voice) 를 통해 개발자는 사용자끼리 대화하는 보이스 채팅방을 만들어 관리할 수 있습니다. EOS 보이스 채팅방은 에픽 서버에서 EOS 로비를 사용하여 호스팅하거나 백엔드 서버에서 호스팅할 수 있습니다. 또한 사용자는 매치 중에 또는 제품의 로비에서 멀티 플랫폼 전체의 사용자들과 일대일 또는 그룹으로 소통할 수 있습니다.

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

보이스 인터페이스에는 EOS SDK 릴리즈 1.13 이상이 필요합니다.

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

EOS 보이스에서는 현재 Linux가 지원되지 않습니다.

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

  1. 게임 내에서 사용할 통합 방법을 검토하고 결정합니다.
  2. CC# 보이스 샘플을 살펴보고 보이스 인터페이스를 제품에 사용하는 방법을 익힙니다.
  3. 보이스 인터페이스를 애플리케이션에 통합합니다.
    1. 클라이언트 정책을 구성합니다.
    2. 선택한 통합 방법에 맞춰 보이스 인터페이스를 통합합니다.
  4. 보이스 인터페이스에 대한 모범 사례, 보이스 메트릭스, 사용 제한을 검토합니다.

보이스 통합 방법

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

  • 로비에 보이스 사용하기: EOS SDK를 게임 클라이언트 에 통합하고 EOS 로비 에서 방을 관리하고 승인하도록 합니다. 로비 인터페이스를 사용하려면 클라이언트만 통합하면 되고, 로비 인터페이스는 방 소유권과 검색, 초대 기능을 제공합니다.

  • 신뢰할 수 있는 서버 애플리케이션 사용: EOS SDK를 게임 클라이언트 에 통합하고 SDK나 Web API를 신뢰할 수 있는 서버 애플리케이션에 통합합니다. 방 관리와 승인 방식을 커스터마이징할 수 있어 개발자가 가장 유연하게 사용할 수 있는 방법이지만, 통합 과정이 더 복잡합니다.

로비에 사용하는 보이스

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

방의 보안을 위해 로비를 비공개 및 초대를 통한 참여로 설정할 수 있습니다.

정책 환경설정

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

  • 로비connect , readLobby 등 클라이언트에 대한 적절한 조치 허용
  • 보이스lobbyConference 조치 허용

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

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

  1. 게임 클라이언트SDK를 초기화하고 EOS_HLobby 인터페이스와 EOS_RTCEOS_RTCAudio 인터페이스를 획득합니다.
  2. 게임 클라이언트연결 인터페이스를 사용하여 로컬 사용자를 인증합니다.
  3. 게임 클라이언트bEnableRTCRoom 플래그를 활성화한 상태로 EOS_Lobby_CreateLobby 를 사용하여 새로운 로비를 생성합니다.
  4. 로비는 방 토큰을 요청하고 미디어 서버 URL과 함께 반환합니다. 그러면 EOS SDK가 해당 토큰을 사용하여 보이스 채팅방에 참여합니다.
  5. 로비에 참여하는 다른 사용자는 일치하는 방 토큰을 자동으로 받아 음성 회의에 참여할 수 있습니다.
  6. 로비 오너는 다른 플레이어에게 초대를 보낼 수 있으며, 공개 로비는 초대 없이도 검색하고 참여할 수 있습니다.
  7. 로비 오너는 다른 플레이어를 음소거 또는 추방할 수 있습니다.
  8. 모든 클라이언트는 EOS_RTCEOS_RTCAudio 인터페이스를 사용하여 오디오 입출력을 관리하거나 로컬 음소거와 스피커 상태를 변경하거나 방을 나갈 수 있습니다.

EOS SDK 로비 샘플은 이 구성을 시연합니다.

대신 신뢰할 수 있는 서버 애플리케이션 통합 을 사용하면 보이스를 사용한 방 관리와 인증을 더욱 상세히 제어할 수 있습니다.

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

정책 환경설정

서버에 대한 클라이언트 정책을 다음과 함께 환경설정합니다.

  • 서버가 연결 인터페이스를 통한 인증에 clientIdclient secret 을 사용할 수 있도록 userRequired 비활성화
  • 서버가 모든 roomId 에 플레이어의 방 토큰을 생성하고 플레이어를 제거하고 토큰을 취소하고 플레이어를 음소거할 수 있도록 각각 보이스의 createRoomToken , kick , mute 설정

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

  1. 게임 클라이언트SDK 초기화를 수행하고 전용 서버나 웹 애플리케이션 등 신뢰할 수 있는 애플리케이션에 보이스 룸 입장을 요청합니다.
  2. 신뢰할 수 있는 서버는 ClientId클라이언트 비밀 키연결 인터페이스와 함께 사용하여 인증합니다.
  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_HRTC 핸들에서 EOS_RTC_GetAudioInterface와 함께 얻습니다.

Windows에서 보이스 인터페이스 구현하기

Windows에서는 플랫폼을 생성하기 전에 플랫폼 인터페이스의 RTCOptions 에서 EOS_Windows_RTCOptions 를 전달해야 합니다.

C SDK 예시는 Windows에 다음을 수행합니다. 코드 스니펫이 아래에 복사되어 있지만, 자세한 내용은 보이스 인터페이스 - C SDK 페이지를 참고하세요.

  • WindowsRtcOptions 라는 이름의 EOS_Windows_RTCOptions 클래스 인스턴스를 생성합니다.
  • 어트리뷰트를 구성합니다.
  • WindowsRtcOptions 의 주소에 RtcOptions.PlatformSpecificOptions 의 값을 지정합니다.

Windows에 대한 C SDK 예시 코드 스니펫은 다음과 같습니다.

모범 사례

양방향 음소거

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

자녀 보호 기능

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

사용 제한

보이스에는 인터페이스별 사용률 제한이 있습니다. 스로틀 조절, 사용 할당량, 모범 사례에 대한 일반적인 정보는 서비스 사용 제한을 참고하세요.

기능서비스 제한
최대 방 크기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): 오류와 오류율에 대한 세부사항입니다.