상호작용 요소가 많은 인기 게임의 사운드는 잘 만들어진 게임 자체의 '개별적인 캐릭터'를 뒷받침해줄 뿐만 아니라 더 풍부한 플레이 경험을 제공하고 게임 시스템을 강화하는 데 큰 도움을 줍니다. 지난 몇 년간 굉장히 성공적이었던 게임을 살펴보면 그 중 많은 게임이 곧 사회적 플랫폼이 되었다는 흥미로운 사실을 알 수 있습니다. 청소년들이 오버워치 (Overwatch), 포트나이트 (Fortnite), 마인크래프트 (Minecraft)같이 서로 채팅할 수 있는 멀티플레이어 게임을 선호한다는 것은 그 또래 자녀를 둔 부모라면 누구나 잘 알고 있는 사실이죠. 물론, 이 게임들은 훌륭한 그래픽과 잘 짜여진 게임플레이 덕분에 게임 자체만으로도 푹 빠져들게 만드는 걸작들입니다. 하지만 서로간의 대화를 통해 플레이어를 연결할 수 있다는 점은 많은 유저들의 꾸준한 사랑을 받는 중심 요소라고 할 수 있죠. 친구들을 서로 연결해주는 데 서로 자유롭게 말로 대화하는 것보다 더 좋은 방법이 있을까요?
다양한 게임 플랫폼에서, 특히 배틀필드 (Battlefield), 디비전 (The Division), 리그 오브 레전드 (League of Legends)와 같이 멀티플레이어 온라인 모드를 주요 모드로 하는 게임에서 게임 내 음성의 인기가 나날이 높아지고 있습니다. eSport나 FPS를 플레이하는 분이라면 정신 없는 총소리 사이로 들리는 음성이 문자보다 더 효율적인 통신 방법이라는 것을 경험하셨을 겁니다. 뿐만 아니라 게임 플레이 도중 나누는 소소한 대화는 또 다른 엔터테인먼트 요소가 되기도 하죠.
게임에서 음성 채팅의 사용이 더딘 이유 - 오래된 숙제
하지만 특히 모바일 기기의 경우 이러한 음성의 중요성과 장점에도 불구하고 대부분의 AAA 게임이 음성 기능을 선호하지 않았습니다. 그동안 모바일 기기의 OS 단 서비스가 부족한 것이 음성 사용이 늦어진 이유라고 할 수 있습니다.
모바일 OS에서 음성 채팅에 사용되는 '통화 볼륨'과 게임 오디오가 사용하는 '미디어 볼륨'을 믹스할 경우 이상한 결함이 생깁니다. 때문에 이 작업은 꽤 어려울 뿐만 아니라 때로는 불가능하기도 하죠. 예를 들어 '미디어 볼륨'을 게임 오디오로 사용하고 '호출 볼륨'을 채팅에 사용하는 구성의 경우 플레이어가 말할 때마다 오디오 출력이 시스템에 의해 스테레오에서 모노로 다운믹스됩니다. 이 경우 몰입감도 떨어질 뿐더러 적군의 움직임을 파악하기가 어려워지는 것이 당연하겠죠!
또 다른 전형적인 문제는 바로 음성 채팅이 일어날 때마다 전체 게임 오디오가 자동으로 덕킹되어 게임 오디오와 채팅 오디오 간에 볼륨이 불일치해진다는 것입니다. 이러한 한계점은 플레이어에게 불쾌함을 줄 뿐만 아니라 최악의 경우 전체 게임 경험을 망가뜨릴 수가 있죠!
그림 1 - 모바일 OS 서비스를 사용하여보이스 채팅을 관리할 경우 일어나는 한계점
어떤 게임은 미디어 볼륨을 사용하여 음성 채팅을 재생하도록 구현해서 채널 다운믹스와 볼륨이 왔다 갔다하는 결함을 해결했습니다. 이 방법은 일단 당분간은 대안이 될 수 있었지만 새로운 문제들을 가져왔습니다. 노이즈 감소와 반향 캔슬링이 충분하지 않아서 플레이어 간에 음성이 서로 겹치고 반향이 생겨났죠.
Wwise에서의 게임 멀티미디어 엔진 (Game Multimedia Engine, GME) 통합
Wwise에서의 GME 통합은 앞서 언급한 문제에 대한 해결책과 음성 채팅의 캡처부터 처리, 인코딩, 디코딩, 전송까지 종합 서비스를 제공합니다. GME는 게임 개발자들로 하여금 아이폰, 콘솔, PC 등 심지어 다른 기기를 사용하는 플레이어끼리 서로 대화할 수 있도록 해주는 크로스 플랫폼입니다. 또한 이 솔루션은 통신 레이턴시가 낮을 뿐만 아니라 동시성이 높습니다. 얼마 전까지만 해도 GME 는 매일 평균 PCU (Peak Concurrent Users, 최고 동시 사용자)가 이백만이 넘었던 펜타스톰 (Arena of Valor)과 PUBG 모바일게임에서 수백, 수만 명의 사용자 간 음성 채팅을 안정적으로 제공했던 것처럼, 이미 입증된 경험을 제공합니다.
Wwise GME 통합은 처음부터 끝까지 음성 채팅의 모든 요소를 게임 경험에 완전히 통합할 수 있게 해줍니다. 각 음성에서 마치 미리 녹음된 음원이었던 것처럼 효과 처리, 공간 음향 렌더링, 다이내믹 믹싱 등을 개별적으로 처리할 수 있죠.
다음 그림은 Wwise에서의 GME 통합을 보여줍니다. 프로젝트를 구성하는 방법과 런타임에서 실행되는 모습을 모두 보여주고 있습니다.
그림 2 - Wwise에서의 GME 통합과 런타임 실행 과정
1. GME는 OS에서 마이크 입력을 캡처하고 노이즈 감소와 반향 캔슬링을 적용합니다. 반향 캔슬링이 실행되려면 GME 오디오 장치 플러그인 (#10)이 제공하는 최종 렌더링 오디오가 필요합니다.
2. 로컬 플레이어 음성 채팅 음원이 GME 서버를 통해 팀 구성원에게 전송됩니다. 여기서 오디오 효과를 적용할 수 있습니다.
3. 음악, 환경음, SFX 등과 같은 다른 게임 음원도 GME 서버로 전송될 수 있습니다.
4. 음성 활동 감지와 인코딩이 네트워크 대역폭을 최적화합니다.
5. GME 미디어 서버가 음성 채팅을 수신하여 각 스트림을 알맞은 수신자에게 재전송합니다.
6. GME 서버에서 오는 음성을 수신하고 관리하며 PCM 오디오로 압축 해제합니다.
7. 들어오는 음성이 추가 DSP, 거리 감쇠, 위치 지정 등을 허용하는 각 사운드 인스턴스로 지정됩니다.
8. 원할 경우 음성 채팅을 단일 오디오 입력 스트림으로 믹스할 수 있습니다.
9. GME 서버에서 전송되는 오디오를 제외한 모든 사운드는 게임에서 로컬로 트리거됩니다.
10. 최종 오디오 믹스가 GME 오디오 플러그인에 의해 렌더링됩니다. 이 부분은 반향 캔슬링 처리 (#1)에 반드시 필요한 과정입니다.
창의적 사용법
업계는 새로운 변화 없이 표준 음성 채팅을 오랫동안 사용해 왔습니다. Wwise의 GME 통합에 대해 흥미로운 점은, 게임 기기를 십분 활용하여 플레이에 재미를 더하면서도 전반적인 몰입도를 높이는 게 아주 쉬워졌다는 것이죠.
그림 2의 (#2)에서 보이는 것처럼 캡처된 음성에 원하는 효과를 적용할 수 있습니다. 이 방식의 경우 플레이어의 음성이 일반 음원이 되기 때문에 GME 서버로 전송하기 전에 컴프레서/리미터, EQ와 같은 효과로 신호를 처리할 수 있습니다. 플레이어의 음성을 로봇이나 몬스터와 같이 만들어주는 극적인 효과를 사용할 수도 있습니다. 하지만 창의적 효과를 남용할 경우 코덱의 성능에 알맞지 않아서 서버에 전송되는 신호를 올바르게 압축하지 못할 수 있기 때문에 미리 시험해봐야 합니다. 이러한 압축 문제가 일어날 경우 그림 2의 (#7)에서 보이는 것처럼 수신하는 쪽에서 이 효과를 적용할 수 있습니다.
혹은 플레이어가 모든 음성을 다운믹스로 수신하거나 (#8), 각 음성을 별도의 스트림으로 수신할 수도 있습니다 (#7). 각 음성을 분리하여 유지할 경우 흥미로운 방법으로 게임 플레이의 특정 요소를 강화할 수 있습니다. 예를 들어 플레이어 음성에 거리 감쇠나 위치 지정을 적용하여 주변에 있는 팀 구성원의 위치를 더 쉽게 파악하도록 할 수 있습니다. 또한 각 음성에 별도의 환경 잔향을 적용하여 (예를 들면 Wwise Reflect를 사용할 경우 다이내믹 초기 반사도 사용할 수 있죠!) 공간의 물리적 감각과 존재감을 더욱 정교하게 만들 수 있습니다.
작은 그룹의 배틀 로얄 게임에서 마치 무전기를 사용하듯 같은 팀끼리 은밀히 대화할 수 있지만, 만약 상대방 팀이 실제로 가까이 있다면 현실처럼 직접 대화 소리를 엿듣게 되는 상황을 상상해보세요. "딱 걸렸어!" 정말 긴장감 넘치지 않나요?
프로젝트에서 GME 설정하기
Wwise 2018.1나 2019.1을 사용할 경우 다음 단계를 실행하여 GME를 쉽게 구성할 수 있습니다.
1. 먼저 Wwise 런처 애플리케이션의 Plug-ins 탭으로 가서 GME 플러그인을 사용 장치에 설치하세요. 이미 GME가 설치되지 않았을 경우 뷰의 아랫쪽에서 Add Plug-ins… 버튼을 클릭하세요.
2. 올바른 Wwise 버전으로 프로젝트를 열고 Project 메뉴에서 'Import Factory Assets…'를 선택하세요. 그런 다음 GME를 선택하고 OK를 클릭하세요.
3. GME 기본 에셋을 가져오면 Actor-Mixer Hierarchy, Events, Soundcaster Sessions에 Factory Tencent GME라는 세 개의 작업 단위가 프로젝트에 추가됩니다.
Master Audio Bus의 General Settings 탭에서 선택 버튼 [>>]을 사용하여 Audio Device (보통 'System'으로 되어 있음)를 Tencent_GME로 교체하세요.
4. Tencent GME라는 Soundcaster 세션을 열어서 Play_GME_Send와 Play_GME_Receive 이벤트의 재생 버튼을 눌러 자신의 음성이 들리는지 확인하세요 (마이크가 PC나 Mac에 연결되어 있다는 가정 하).
5. Wwise 프로젝트를 통해 팀 구성원과 통신하려면 App ID, Auth Key, Room ID는 모두 동일한 것을 사용하되 서로 다른 User ID를 사용하고 있는지 확인하세요.
여기 나온 건 매우 기본적인 사용법으로, 여러분의 기기에서 '지금 바로' 간단히 GME를 경험해보실 수 있게 도움을 드리는 목적에 불과합니다. 게임에 통합할 경우에는, 특히 게임에 음성 채팅 통합을 제작할 경우라면 Wwise 프로젝트와 게임 코드에서 몇 가지 단계를 추가로 실행해야 합니다.
GME의 통합 데모 버전을 살펴보면서 여러분의 게임 엔진에서 구성하는 법과 그 외의 다른 기능들을 알아보세요. UE4나 Unity로 개발할 경우 통합이 제공되어 서비스를 더욱 빠르게 평가하고 적용하실 수 있습니다.
Wwise Tour Seattle 2019 - GME 발표
향후 계획
Wwise에서 GME 통합의 가장 첫 번째 목적은 음성 채팅입니다. 그러나 GME는 다른 API를 통하여 SDK에서 '음성 메시지' (음성 메시지를 전송하는 '눌러서 말하기' 기능)와 '음성-텍스트 변환' (음성 메시지를 텍스트로 반환)도 지원하고 있습니다. Wwise용 GME 플러그인의 다음 버전에서는 이 기능도 포함될 예정입니다.
끝맺는 말
GME 음성 채팅은 안정적이고 확장성이 뛰어나며 전반적인 관리가 쉬운 서비스를 제공합니다. Wwise GME 통합은 기술적인 복잡성을 간단하게 만들어 게임에 음성 채팅을 손쉽게 통합하도록 해줍니다. 이 통합의 유연함은 창의적인 오디오와 게임플레이 아이디어에 대한 무한한 가능성을 열어줄 것입니다.
게임은 점차 사회적 플랫폼으로 변화하고 있습니다. 이에 따라 개발자가 게임 내 음성 채팅을 표준 서비스로 제공하는 것은 선택이 아닌 필수가 되고 있습니다. 경쟁이 치열한 시장에서 다른 게임과의 차별성이 곧 성공을 좌우하는 요소가 되기 때문입니다.
Wwise 내 GME 통합 솔루션에 관심이 있으시다면 WwiseGME@audiokinetic.com로 문의해주세요. 좀 더 자세한 정보를 얻으실 수 있습니다.
댓글