머더러스 퍼수츠(Murderous Pursuits)의 대사와 대화 설계 - 제 2부

게임 오디오 / 사운드 디자인

안녕하세요, 머더러스 퍼수츠의 대화와 대사 시스템의 제 2부로 다시 돌아온 제이미입니다.

제 1부를 아직 보지 않으셨다면  여기를 클릭하여 읽어주세요! 

제 1부에서는 게임에서의 심즈 언어(Simlish) 사용에 대한 저희의 생각과 이 시스템을 위한 편집과 처리 과정을 함께 살펴보았습니다. 이제는 저희가 사용한 미들웨어 솔루션인 Wwise에서 이 시스템이 작동하는 방식을 살펴봅시다. 먼저 다음은 전반적으로 어떤 것들이 담겨있는지 간단히 확인할 수 있는 대화 컨테이너의 계층 구조입니다.

05_Convo_Container

그리고 가장 위에는 VOX_CharConvo라는 Switch Container가 있습니다. 이 컨테이너는 어떤 캐릭터가 말하도록 설정하는 데에 사용됩니다. 그리고 지명된 Switch Container는 어떤 타입의 심즈 언어나 대화 오디오를 재생해야 하는지를 선택합니다. 이 예시에서는 깡패(Brute)의 오디오가 담긴 VOX_BruteConvo가 펼쳐져 있습니다. 각 대화 타입은 Random Container 안에 담겨 있어서, 오디오 이벤트가 트리거되면 사운드 그룹에서 오디오 파일을 랜덤으로 선택할 수 있게 해줍니다.

하지만 위에 있는 참조 이미지에서 예상할 수 있듯이, Neutral, Positive, Negative 컨테이너는 약간 다르게 구성되어 있습니다. 이 세 가지 컨테이너는 파일을 랜덤으로 선택할 뿐만 아니라 대화의 흐름을 잘 유지하면서 다양한 길이와 단어의 심즈 언어 구문을 선택할 수 있어야 합니다. 구문 타입이나 단어를 랜덤으로 선택하는 것은 Random Container를 사용하여 꽤나 쉽게 작업할 수 있었습니다. 실제 대화의 흐름의 경우 조금 더 세분화된 작업이 필요했습니다. 다음은 깡패(Brute)의 Neutral Convo 컨테이너의 Property Editor 입니다:

 06_Neutral_Container

여기에서는 몇 가지 작업이 진행되고 있습니다. 먼저 Initial Delay 설정을 살펴봅시다.

 07_Init_Delay

이 설정은 반복 재생 애니메이션의 기본 시작 상쇄값으로 사용되며, 랜더마이저는 값을 선택하는 데에 사용됩니다. 꽤 간단하죠.

다음으로 Play Type을 살펴볼까요.

 08_Play_Type

이 설정은 Neutral 컨테이너에서 6개의 가능한 옵션 중 하나를 랜덤으로 선택하는 데에 사용됩니다. 일반적으로는 이전에 재생된 오디오 클립을 반복하지 않도록 하여 "기관총"같은 반복 효과를 방지하려고 할겁니다. 하지만 여기서는 이미 사용되었더라도 모든 하위 컨테이너가 선택될 수 있도록 해야 합니다. 이렇게 하면 각 타입 간의 전환 효과가 가려져서 대화를 더욱 동적이고 다양하게 만들 수 있게 해줍니다.

Play Mode는 Loop Continuously(무제한 반복)으로 설정되어 있습니다.

 09_Play_mode

이렇게 설정하면 다른 사람이 말하기 시작하거나 주변에서 살해된 사람에 대해 반응하는 등 대화를 중단하라는 이벤트가 트리거되기 전까지 캐릭터가 계속해서 말하게 됩니다. 아무리 사령관(Admiral)이 장황한 독백을 할 수 있는 캐릭터라 한들 한 사람의 독백만 들리도록 하고싶지 않으니까요. Transition Delay는 0~0.4초 사이로 설정되어 랜덤 상쇄값이 적용되면 캐릭터 간에 구문 사이의 자연스러운 간격 외에 좀 더 공간을 줄 수 있습니다.

먼저 각 클립 간을 크로스페이드하는 방법을 시도해봤지만, 실제로 자연스럽게 대화하는 것이 아니라 오디오가 스트리밍되는 것처럼 느껴지더라구요. 또한 심즈 언어의 각 Question(질문) 구간 끝에는 배우의 억양이 섞인 약간의 무음이 있어서 약간의 공간을 통해 대화의 흐름을 더욱 자연스럽게 만들어줍니다.

마지막으로 가중치를 살펴봅시다.

10_Weightings

캐릭터들은 심즈 언어를 약간 더 말하도록 가중치가 설정되어 있습니다. 실제 단어를 완전히 제거하지는 않으면서 각 단어가 좀 더 확연하게 들리며 여러 단어가 나열될 가능성을 최소화하기 위해서죠.

재생 설정 외에 각 Random Container에는 Wwise의 Wwise Silence를 사용하는 두 개의 무음 오디오 클립이 있습니다. 이 클립 또한 이 클립이 담겨 있는 컨테이너에 따라 길이가 달라지며 말 사이에 추가적인 간격을 제공하여 피로함을 줄여주고 대화의 흐름을 더 자연스럽게 만들어줍니다. 여러 무음 클립이 연달아 트리거될 수도 있는데, 괜찮습니다. 모든 사람이 길게 말할만한 체력이 있는 것이 아니니까요.

다음 동영상에서 한 캐릭터의 전체 구조가 Wwise에서 어떻게 들리는지를 들어보세요.

 
 

오디오만 따로 들어봐도 꽤 괜찮게 들리죠. 하지만 게임에서는 어떻게 들릴까요?

 
 

아, 더 괜찮게 들리네요. 걸어가면서 무리지어 있는 사람들로부터 들리는 작은 대화들이 게임 세계를 더 활기차고 사람들이 숨쉬는 세상인 것처럼 만들어주죠. 저희는 또한 Wwise의 Shareset 기능을 사용해서 거리에 따라 소리가 변하는 방식을 제어했습니다. Shareset는 거리에 따른 소리의 감소나 감쇠값을 각 사운드에 따로 설정하는 대신 그룹으로 묶여진 사운드에 연결하는 방법입니다. 다음은 Conversation Shareset의 모습입니다.

Shareset

 

곡선은 볼륨 감소를 제어하며 거리가 멀어질수록 고/저대역 필터링을 적용합니다. 초록색 곡선은 Spread이며, 사운드가 차지하는  음장(soundfield)을 결정합니다. 이 값이 최소일 경우 점원이 되어 사운드가 들려오는 위치를 쉽게 결정할 수 있습니다. 이 값이 최대일 경우 리스너로부터 소리의 위치에 상관 없이 음장을 채웁니다. 저는 이 Spread 값을 75%로 설정해서 누군가의 옆에 있을 경우 스피커에 방향성을 어느 정도 제공하는 동시에 음장을 채움으로써 그 사람과 플레이어 간의 근접성을 강조하여 여러분이 대화에 속해있는 듯한 느낌을 받을 수 있도록 해주었습니다.

또한 소리가 향하는 방향에 따라 볼륨을 감쇠하고 필터를 적용할 수 있는 원추(cone) 감쇠 기능도 사용했습니다. 사운드가 사람의 몸의 앞쪽에 있는 입에서 나오기 때문에 그 사람 뒤에 있다면 소리가 약간 작게 들려야 하겠죠. 아래 동영상에서 간단한 데모를 확인해보세요 (오른쪽 모서리에서 변경 사항을 확인하세요):

 

 

게임에서의 재생도 상대적으로 간단합니다. 적어도 제 쪽에서는요. 프로그래머분들이 제가 Wwise 이벤트를 애니메이션에 연결할 수 있으며 반복 재생 애니메이션이 별도의 시작 애니메이션을 가질 수 있게 하여 계속해서 오디오를 다시 트리거하지 않도록 하는 맞춤 Anim Event를 Unity에서 제작해주셨습니다. Wwise 이벤트에는 대화의 타입을 선택할 수 있는 Switch 동작과 VOX_CharConvo 컨테이너를 재생할 수 있는 Play 동작이 담겨 있습니다. 캐릭터 선택은 코드를 통해 실행됩니다. 또한 모든 대사 타입에 아주 약간의 페이드 아웃이 있는 일반적인 Stop 이벤트를 사용해서 캐릭터가 이동하거나 다른 애니메이션으로 전환 (예: 공격)할 때에 트리거합니다. 근사하게 보이지는 않지만 잘 작동된답니다.

Anim Event는 문자열 인자를 통해 실행됩니다. 이 경우 Wwise 이벤트 이름을 AKSoundEngine.PostEvent 호출 안에서 사용합니다. 저희는 이동을 제외한 모든 애니메이션에 이 기능을 사용했으며, 필요한 모든 동작을 애니메이션 타임라인에 여러 Anim Event로 흐트려놓는 대신 하나의 Wwise 이벤트 안으로 넣었습니다. 여러 Anim Event를 사용했을 때 속도 저하나 오작동이 발생하고 전반적으로 신뢰도가 떨어져서 Audiokinetic분들이 한 개의 이벤트를 사용하는 방식으로 전환해보라고 해주셨는데 정말 좋은 해결책이었습니다 (맥스님 고맙습니다!). 간단한 예시로 Bludgeon Attack의 이벤트를 살펴봅시다. 이 이벤트에는 14개의 Action이 있습니다.

13_Attack_event

이쯤에서 마무리할까요. 게임에서 음향은 때때로 블랙 박스와 같이 느껴질 수 있죠. 이렇게 '비하인드 씬'을 함께 살펴보면서 저희 작업 과정을 이해하고 여러분의 귀에 소리가 들리기까지 어떤 작업이 필요한지 알아보는 시간이 되었으면 합니다! Wwise 자체에 관심이 있으신가요? Wwise는 무료로 다운로드할 수 있을 뿐만 아니라 수많은 튜토리얼과 리소스가 제공된답니다. 여기에서 다운로드해보세요.

Unity와 함께 작업해보려면 베락 닐 보야(Berrak Nil Boya)의 동영상을 찾아보세요. Unity 자체 튜토리얼부터 시작하여 아주 흥미로운 것도 다뤄줍니다. 저희가 작업했던 것과 레이아웃이 조금 바뀌었을 수 있지만, 여전히 모든 것들이 동일한 방식으로 작동됩니다!

그리고 저희 배우분들에게 정말 큰 감사의 말씀을 전하고 싶습니다. 저희 배우들을 꼭 검색해보세요:

Ally Murphy
Amelia Tyler
David McCallion
Jay Britton
Kenny Blyth
Kim Allan
Toni Frutin

Steam(스팀)에서 머더러스 퍼수츠를 플레이해보는 것도 잊지 마세요!

Thanks for reading,
제이미 크로스(JAIME CROSS) 

This was originally posted in two parts on the Blazing Griffin Website.

제이미 크로스(JAIME CROSS)

제이미 크로스(JAIME CROSS)

안녕하세요 여러분. 저는 Blazing Griffin(블레이징 그리핀)의 게임 팀의 오디오 디자이너인 제이미 크로스(Jaime Cross)입니다.

 @speedyjx

댓글

댓글 달기

이메일 주소는 공개되지 않습니다.

다른 글

하이브리드 상호작용 음악의 시대가 올 것인가? 제 2부 - 기술적 설명

이 블로그의 제 1부에서는 하이브리드 상호작용 음악에 대해 다루고, 게임에서 음악을 더 넓은 범위로 사용할 수 있는 방법을 개발하는 것이 왜 중요한지를 알아보았습니다. 이제 제...

31.10.2019 - 작성자: 올리비에 더리비에르 (OLIVIER DERIVIÈRE)

라우드니스를 처리하는 최상의 방법, 제 1강: 라우드니스 측정 (1부)

방송과 같은 푸시 서비스, 멀티 플랫폼 상호작용 엔터테인먼트, 인터넷 스트리밍과 같은 다양한 미디어 형식에서 라우드니스는 단지 신호 전달 표준이 아니라 소비자 선호에 직접적인...

12.11.2019 - 작성자: 지에 양 (Jie Yang, 디지몽크)

보이스 제어 방법- CPU에 최적화하기(제 1부)

프로젝트 개발 과정 동안 성능 문제가 일어나는 것은 꽤나 흔한 일입니다. 문제의 원인은 다양하지만 대부분의 경우 동시 재생되는 사운드의 수와 직접 관련된 경우가 많죠. 볼륨만...

12.5.2020 - 작성자: 마튜 쟝 (Mathieu Jean)

소규모 게임 프로젝트가 Wwise로부터 혜택을 받을 수 있는 5가지 이유

여러분이 게임 오디오 분야에 종사하고 있으며 이전에 소규모 게임 프로젝트를 수행한 적이 있는 경우. 다음과 같은 대화를 나눈 적이 있을 수 있습니다. "근데, 와이즈와 같은...

7.7.2020 - 작성자: 알렉스 메이 (ALEX MAY)

UI 설계 관점에서 UI 오디오 접근하기 - 제 2부

이 글에서는 UI 디자이너*의 관점에서 UI 오디오에 접근하는 방식을 보여드리려고 합니다. 이를 통해 심미적으로나 기능적으로 화합적인 UI를 제작하는 데에 도움이 되었으면 합니다....

20.10.2020 - 작성자: 조셉 마척(JOSEPH MARCHUK)

사운드 디자이너가 PureData + Heavy를 사용하여 DSP 플러그인을 개발하는 법 - 제 2부

제 1부에서는 Patch 파일을 사용하여 '블루프린트'를 제작하는 법을 설명해 드렸습니다. 이제 Heavy 컴파일러를 사용하여 '자동 워크숍'을 제작한 후, 이 자동 워크숍을...

24.11.2020 - 작성자: 천종 호(Chenzhong Hou)

다른 글

하이브리드 상호작용 음악의 시대가 올 것인가? 제 2부 - 기술적 설명

이 블로그의 제 1부에서는 하이브리드 상호작용 음악에 대해 다루고, 게임에서 음악을 더 넓은 범위로 사용할 수 있는 방법을 개발하는 것이 왜 중요한지를 알아보았습니다. 이제 제...

라우드니스를 처리하는 최상의 방법, 제 1강: 라우드니스 측정 (1부)

방송과 같은 푸시 서비스, 멀티 플랫폼 상호작용 엔터테인먼트, 인터넷 스트리밍과 같은 다양한 미디어 형식에서 라우드니스는 단지 신호 전달 표준이 아니라 소비자 선호에 직접적인...

보이스 제어 방법- CPU에 최적화하기(제 1부)

프로젝트 개발 과정 동안 성능 문제가 일어나는 것은 꽤나 흔한 일입니다. 문제의 원인은 다양하지만 대부분의 경우 동시 재생되는 사운드의 수와 직접 관련된 경우가 많죠. 볼륨만...