최근 몬트리올 국제 게임 서밋(Montréal International Game Summit, MIGS)에서 '사운드 디자이너의 역량 강화하기'라는 제목으로 발표를 한 적이 있습니다. 이 발표는 두 가지 목적을 가지고 있었죠. 먼저, 곧 출시 예정인 Anamorphine(애나몰핀)이라는 게임을 제작하면서 우리가 개발한 오디오 도구 세트를 선보이고 싶었습니다. 그리고 전체 작업 과정에서 오디오가 차지했던 독특한 역할에 대해 얘기하고 싶었습니다.
제가 Artifact 5에 입사했을 때 저희 팀은 Anamorphine을 출시하기까지 3년의 시간이 있었습니다. 사실 이 회사는 보조금 신청에 도움이 필요했는데, 보조금 신청이 성공하면서 회사에 충분한 자금을 모을 수 있게 되었죠. 프로젝트 개발 중 이렇게 초기 단계에서 합류하게 된 것은 사운드 디자이너인 저에게 아주 독특한 경험이었습니다. 대부분의 경우처럼 거의 개발 마지막 단계에 합류하는 것이 아니라 주요 개발 파이프라인에 사운드 작업 과정을 제작해 넣을 수 있었죠.
덕분에 맞춤 Unity-Wwise 통합 도구 세트를 프로그래머가 저와 함께 차근 차근 제작할 수 있었고, 이 도구는 통합이 강화되면서 아주 유용하게 사용되었습니다. 이 도구는 'Audio Box(오디오 박스)'라고 불리는 '우산' 컴포넌트 (포괄적 컴포넌트) 아래에서 작동합니다. 이러한 도구 덕분에 저는 사운드 디자인이나 상호작용 아이디어가 떠오른 후 원본 에셋 작업을 반복하기 전에 게임 안에서 아이디어를 만들고 통합하고 시험할 수 있는 제대로 된 작업 과정을 누릴 수 있었습니다. 즉, 이 과정을 설계 단계의 일부로서 처음부터 끝까지 진행할 수 있었죠. 저는 Unity에서 독립적으로 작업할 수 있었기 때문에 프로그래머가 오디오 작업을 완료할 때까지 기다릴 필요가 없었습니다. 프로그래머에게 있어 오디오 작업은 주요 게임 플레이에 대한 코딩 작업보다 우선 순위가 낮기 때문에 오디오 작업을 완료하는 데 꽤 많은 시간이 걸릴 수 있죠. 마찬가지로 프로그래머 입장에서도 수많은 오디오 관련 요구 사항에 대해 걱정할 필요가 없었습니다. 그리고 결과적으로 복잡하고 정교한 오디오 시스템을 게임 플레이에 매끄럽게 통합할 수 있었죠.
물론 Wwise 에는 이미 기존 통합 도구가 다양하게 있지만 이러한 도구는 기본적인 통합 업무만 다루며 여러 가지 도구와 컴포넌트에 흩어져 있습니다. Audio Box는 전체 게임 플레이 섹션을 제어하는 중앙 Audio Box 허브에서 이런 기존 기능 뿐만 아니라 수많은 추가 기능을 모두 제어할 수 있게 해줍니다. 예를 들어 Anamorphine은 중앙 메커니즘의 일부로 매끄러운 씬 전환 효과가 많은 게임입니다. 그래픽 씬이 전환할 때마다 저도 사운드를 매끄럽게 전환해야 했죠. 중앙 Audio Box 컨트롤러 안에서 복잡한 전환효과라 할 지라도 손쉽게 오디오를 움직이고 변경하고 제어할 수 있었습니다.
실제 도구 세트를 함께 둘러볼까요.
AUDIO BOX (오디오 박스)
Audio Box는 중앙 허브로서, 트리거 콜라이더(trigger collider)가 있을 수도 있고 없을 수도 있습니다. 게임 음향 기능의 섹션들을 제어하죠. 위의 그림에서 보라색 구와 선으로 표시된 부분이 Audio Box가 참조하는 게임 오브젝트입니다.
- Audio Box는 다양한 컴포넌트를 가지고 있으며 각 컴포넌트는 Delay(지연)과 Trigger Only Once(한 번만 트리거) 옵션을 가지고 있습니다.
- Delay는 트리거된 Event의 시간 지연 효과를 설정하도록 해주며 Trigger Only Once는 버그 방지에 아주 유용합니다.
- 각 Audio Box에 수많은 기능 요소를 넣을 수 있으며, 한 게임 오브젝트에 Audio Box를 여러 개 배치하여 기능 설정별로 Audio Box를 대대적으로 분류할 수도 있습니다.
EVENT 게시하기
여기서 가장 중요한 점은 바로 Audio Box를 통해 Wwise Event를 트리거할 수 있다는 점입니다. 이 작업은 Trigger Collider (On Enter, On Exit), On Start, On Event를 사용하여 이루어지는데 이들은 Event Tag System(이벤트 태그 시스템)이라고 불리는 Audio Box가 사용하는 두 번째 도구 세트에 연결됩니다 (아래 참고).
여기서 제가 특별히 더한 부분은, AkAmbient나 AkEvent컴포넌트와 함께 간단히 기존 게임 오브젝트만 참조하면 Audio Box가 해당 Event를 가져와 프로그램된 시기에 트리거하도록 만든 부분입니다. 하나의 Event 게시 컴포넌트로 여러 개의 게임 오브젝트를 참조하는 것은 굉장한 효과가 있습니다. 각 게임 오브젝트가 각자의 Event를 따로따로 트리거할 수 있죠. 이를 잘 이용하면 예를 들어 플레이어가 들어오는 때에 맞춰 환경적인 공간을 트리거할 수도 있고, 플레이어가 게임 Event를 하나만 트리거해도 여러 개의 소리 Event를 한꺼번에 트리거할 수도 있습니다. 또한 'Event' 상자를 선택 해제하고 드롭 다운 메뉴에서 Audio Box 안에 있는 Event를 선택하면 기존의 게임 오브젝트를 참조하지 않고도 Event를 트리거할 수 있습니다.
RTPC 설정하기
또한 Audio Box를 사용하면 RTPC를 구성하고 변경할 수 있습니다. Audio Box에서는 Toggle(토글)과 Add(추가) 기능을 각각 사용하여 매개 변수 변경에 대한 Absolute(절대적)과 Relative(상대적) 토글을 제공합니다. 이러한 토글은, 컴포넌트 내 게임 오브젝트를 지정하면 그 범위 안에서 매개 변수를 제어할 수도 있고, 따로 지정하지 않으면 전반적인 매개 변수를 제어합니다.
또한 저는 State와 Switch도 트리거할 수 있습니다.
무엇보다, 플레이어 위치에 따라 매개 변수 값을 변경할 수 있는 추가 도구들이 매우 흥미로웠습니다.
Curve Over Distance(거리에 대한 곡선)는 매개 변수의 경사도를 설정합니다. 콜라이더의 중심은 비율의 최대치를, 가장 자리는 비율의 최소치를 표시하죠. 이 트리거 영역 안에서 플레이어가 움직이면 매개 변수 값이 여기에 맞게 변경됩니다.
Distance Slider(거리 슬라이더)는 제가 직접 설정한 두 지점에서의 매개 변수 최소/최대값을 설정하며, 어느 시점에서든 콜라이더 밖으로 나가면 매개 변수의 최종 값을 현재 값으로 설정합니다.
ATTACH (연결) / MOVE-TOWARD (앞으로 이동)
Attach와 Move 옵션은 완전히 다른 차원의 기능을 더했습니다. 오디오 게임 오브젝트를 전환 효과와 씬 사이로 이동할 수 있는 기능은 Anamorphine 게임에서 제 작업에 아주 중요한 역할을 했죠.
- Attach(연결)는 제가 원하는 게임 오브젝트를 같은 씬 내의 또다른 오브젝트에 연결할 수 있게 해줍니다.
- Attach to Player(플레이어에 연결)는 캐릭터 컨트롤러가 어느 씬에 있든 상관 없이 어떤 게임 오브젝트이든지 플레이어에 연결할 수 있게 해줍니다.
- Move to(~로 이동)와 Move Toward Player(플레이어를 향해 이동)는 제가 원하는 속도로 한 오브젝트를 다른 게임 오브젝트나 플레이어를 향해 이동할 수 있게 해줍니다.
이러한 도구들을 종합적으로 이용해 플레이어와 플레이어 동작에 따라 3D 위치 지정 음향을 자유롭게 이동할 수 있었습니다.
아래 스크린샷을 보시면, 매끄럽게 연결된 씬 전환을 확인하실 수 있을 겁니다. 위에 설명한 Audio Box 도구들을 함께 사용해, 이전 씬에서 나는 소리를 다음 씬으로 넘어가면서 부드럽게 사라지도록 만들었습니다. 저는 Trigger Exit(트리거 퇴장)이 아니라, 코드 씬이 직접 트리거 하는 Event Tag(이벤트 태그)로 Attach 기능을 트리거하여, 플레이어가 텔레포트하기 전부터 이러한 사운드가 플레이어에 연결될 수 있게 하였습니다. MIGS 비디오에서 이 부분을 들어보실 수 있을 거예요.
EVENT TAG SYSTEM (이벤트 태그 시스템)
위에서 설명한 'On Event(Event에서)' 트리거 기능은 Event Tag System이라는 2차 도구 세트와 연결됩니다. 이를 통해 저는 애니메이션 이벤트와 스토리 결정 지점 등, 게임 내 다양한 트리거에 따라 음향을 트리거할 수 있죠.
Event Tag System은 이벤트를 동작에 연결해주는 간단한 이벤트 시스템입니다. Unity 안에 있는 요소는 반드시 내부적으로 이벤트나 동작을 지원해야지만 다음과 같은 형태의 경로 태그를 이용해 등록할 수 있습니다.
Events / Apartment / Teleportation / Before
동작과 이벤트는 '다수에서 다수'로 연결할 수 있습니다. 다시 말해 한 이벤트나 동작을 여러 개 태그로 등록할 수 있으며, 반대로 하나의 태그가 다양한 동작이나 이벤트와 연결될 수 있습니다.
Unity에서는 서로 다른 씬 간의 교차 참조를 허용하지 않는데, Event Tag System은 이를 무시하고 다른 분야의 씬 세트에서 트리거 되는 이벤트와 상호작용할 수 있게 해줍니다. 이러한 강점 덕분에 각 분야의 사람들이 각각 자신의 씬 세트에서 따로 작업할 수 있어, Git 충돌 문제를 최소화하고 다양한 작업 과정을 동시에 진행할 수 있습니다.
결론
Audio Box는 프로젝트와 함께 유기적으로 발전해, 사운드 디자이너인 사운드 디자이너인 저의 음향 작업 과정을 더 명확히 해줬을 뿐만 아니라 아주 든든한 힘이 되었습니다. 제게 필요한 부분이 새롭게 생길 때마다 프로그래머는 이에 따라 Audio Box를 변경하거나 내용을 더했죠. 새로운 변경 작업은 융통성이 뛰어났으며, 원래 설계의 특정 목적뿐만 아니라 전반적인 작업 과정을 향상시켰습니다.
이렇게 프로젝트 초반에 조금만 공을 들이면 팀 전체가 훨씬 수월하게 작업할 수 있었으며, 프로젝트 전체의 성장에 따라 음향 작업 과정도 아주 효율적으로 진행할 수 있었습니다.
뿐만 아니라 사운드를 게임 디자인의 초기 제작 단계에 도입하여 필수 게임 플레이, 스토리텔링, 게임 분위기 결정 작업에 풍부하고 강력한 사운드를 구현할 수 있었습니다. 개발 초기에 특정 게임 아이디어를 염두에 두고 구성된 Audio Box는, 몰입감을 높이고 풍부한 감정을 불어넣어 궁극적으로 높은 수준의 게임을 만들어냈습니다.
댓글