사례 연구-RoboRaid에서 공간 소리 사용Case study - Using spatial sound in RoboRaid

이 문서에서는 RoboRaid first person 슈팅에 대 한 오디오를 만드는 동안 Microsoft HoloLens Experience 팀이 직면 한 문제를 설명 합니다.This article describes challenges the Microsoft HoloLens Experience Team faced while creating audio for the RoboRaid mixed-reality first-person shooter.

기술The tech

공간 사운드 는 Microsoft HoloLens의 가장 흥미로운 기능 중 하나로, 개체가 시야에 있지 않은 경우 사용자가이를 파악 하 게 됩니다.Spatial sound is one of the most exciting features of Microsoft HoloLens, letting users perceive what's going on around them when objects aren't in the line of sight.

RoboRaid에서는 공간 소리를 가장 명확 하 고 효과적으로 사용 하는 것은 휴대폰의 외부에서 발생 하는 상황에 대 한 경고입니다.In RoboRaid, the most obvious and effective use of spatial sound is alerting the player to something happening outside of their peripheral vision. 예를 들어 Breacher는 방에서 스캔 한 벽 중 하나를 입력할 수 있습니다.For example, the Breacher can enter from any of the scanned walls in the room. 입력 하는 위치에 연결 되지 않은 경우 누락 될 수 있습니다.If you're not facing the location where it's entering, you might miss it. 이 invasion에 대 한 경고를 제공 하기 위해 Breacher를 입력 하는 위치에서 제공 되는 고유한 오디오를 통해 신속 하 게 중지 하는 것을 알 수 있습니다.To alert you to this invasion, you'll hear a distinct bit of audio coming from where the Breacher is entering, which lets you know you need to act quickly to stop it.

배후 상황Behind the scenes

HoloLens 앱에 대 한 공간 소리를 만드는 것은 새로운 것이 고, 참조 하는 과거 프로젝트가 없기 때문에 문제를 해결 하기 어려울 수 있습니다.Creating spatial sound for HoloLens apps is so new and unique that problems can be difficult to solve because there aren't any past projects to reference. RoboRaid 하는 동안 직면 하는 이러한 오디오 문제에 대 한 이러한 예는 자신의 앱에 대 한 오디오를 만들 때 도움이 됩니다.Hopefully, these examples of the audio challenges we faced while making RoboRaid will help you as you create audio for your own apps.

CPU 처리 시간이 소모에 유의 해야 합니다.Be mindful of taxing the CPU

공간 사운드는 CPU에서 요구 될 수 있습니다.Spatial sound can be demanding on the CPU. RoboRaid와 같은 바쁜 환경에서는 지정 된 시간에 공간 음향 인스턴스 수를 8 미만으로 유지 하는 것이 중요 했습니다.For a busy experience like RoboRaid, it was crucial to keep the number of spatial sound instances to under eight at any given time. 일반적으로 서로 다른 오디오 이벤트에 대 한 인스턴스 제한을 설정 하는 것 만큼 쉽습니다.Usually, it was as easy as setting the limit of instances for different audio events. 제한에 도달한 후에 발생 하는 모든 인스턴스는 종료 됩니다.Any instances that happen after the limit is reached are killed. 예를 들어 드 론가 생성 되는 경우 해당 screams는 지정 된 시간에 세 개의 인스턴스로 제한 됩니다.For example, when drones spawn, their screams are limited to three instances at any given time. 약 4 개의 드 론를 한 번에 생성할 수 있는 것으로 간주 하 여 세 가지 screams은 매우 다양 한 것으로 간주 됩니다. 이러한 오디오 이벤트를 한 번에 파악할 수 있는 방법이 없기 때문입니다.Considering only about four drones can spawn at once, three screams are plenty since there’s no way your brain can keep track of that many similar-sounding audio events. 이렇게 하면 다른 공간 음향 이벤트 (예: 적군 explosions 또는 적군을 준비 하기 위해 준비)를 위한 리소스가 확보 됩니다.This freed up resources for other spatial sound events, like enemy explosions or enemies preparing to shoot.

성공적인 닷지 더욱 생산적인Rewarding a successful dodge

Dodging 정비공는 RoboRaid에서 가장 중요 한 게임 방식 중 하나 이며, HoloLens 환경에 정확히 고유한 것으로 생각 하 고 있습니다.The dodging mechanic is one of the most important gameplay mechanics in RoboRaid, and also something that we felt was truly unique to the HoloLens experience. 따라서 플레이어에 게 성공적인 dodges 매우 더욱 생산적인 하려고 했습니다.As such, we wanted to make successful dodges very rewarding to the player. Doppler "whizz by"는 개발에서 매우 일찍 뛰어난 소리를 제공 합니다.We got the Doppler "whizz-by" to sound compelling fairly early on in the development. 처음에는 내 계획에서 루프를 사용 하 고 볼륨, 피치 및 필터를 사용 하 여 실시간으로 조작 했습니다.Initially, my plan was to use a loop and manipulate it in real-time using volume, pitch, and filter. 이에 대 한 구현은 매우 복잡 합니다.The implementation for this was going to be very elaborate. 이를 빌드하기 위해 리소스를 커밋하기 전에 Doppler 효과 구운 자산을 사용 하 여 비용을 파악 하는 방법을 확인 하는 것이 좋습니다.Before committing resources to build this we created a cheap prototype using an asset with the Doppler effect baked in just to find out how it felt. 교묘한 dev는이를 위해 한 번에 한 번은 플레이어의 귀에 의해 전달 되 고 결과는 놀라운 결과를 받은 후에는이를 기반으로 하 여 한 번만 0.7 초 동안 재생 되도록 했습니다.Our talented dev made it so that this whizz-by asset would play back exactly 0.7 second before the projectile will have passed by the player’s ear and the results felt amazing! 물론 더 복잡 한 솔루션을 ditched 프로토타입을 구현 했습니다.Needless to say, we ditched the more complex solution and implemented the prototype.

기본 제공 Doppler 효과를 사용 하 여 오디오 자산을 만드는 방법에 대 한 자세한 내용은 100 Whooshes in 2 Minutes를 참조 하세요. (For more information about creating an audio asset with the Doppler effect built in, see 100 Whooshes in 2 Minutes.)
Dodging 성공적으로 완료 된 적이 있으면 플레이어가 만족 하는 축 하 합니다.Successfully dodging an enemy's projectile rewards the player with a satisfying whizz-by sound.

Ditching 비효율적인 소리Ditching ineffective sounds

원래는 적군을 dodged 성공적으로 완료 한 경우 플레이어의 폭발 소리를 재생 하려고 했습니다. 그러나 몇 가지 이유로이를 버릴 하기로 결정 했습니다.Originally, we had wanted to play an explosion sound behind the player once they’ve successfully dodged the enemy projectile, but we decided to ditch this for several reasons. 첫째, 닷지에 사용한 whizz SFX 만큼 효과적이 지 않습니다.First, it didn’t feel as effective as the whizz-by SFX we used for the dodge. 플레이어는 멀리 있는 벽에 도달할 때까지 해당 소리를 마스킹하는 게임에서 발생 했을 것입니다.By the time the projectile hits a wall behind you, something else would have happened in the game that would mask that sound. 둘째, 바닥에서 충돌을 발생 시 쳤으 므로 벽이 아닌 바닥에 도달 하면 폭발을 받을 수 없습니다.Second, we didn’t have collision on the floor, so we couldn’t get the explosion to play when the projectile hit the floor instead of the walls. 마지막으로, 공간 사운드의 CPU 비용이 있었습니다.And finally, there was the CPU cost of spatial sound. 정예 shoots (벽 내부에서 탐색할 수 있는 것)에는 약 8 projectiles의 특별 한 공격이 있습니다.The Elite Scorpion enemy (one that can crawl inside the wall) has a special attack that shoots about eight projectiles. 이는 혼합에서 매우 복잡 하 게 만들 뿐만 아니라 CPU에 너무 crackling 때문에 과도 한 도입 되었습니다.Not only did that make a huge mess in the mix, it also introduced awful crackling because it was hitting the CPU too hard.

적중 통신Communicating a hit

HoloLens에서 발생 하는 흥미로운 문제는 플레이어에 게 도달 했을 때 효과적으로 통신 하는 데 어려움을 겪고 있습니다.An interesting issue we ran into on the HoloLens was how difficult it was to effectively communicate that a player had been hit. 혼합 현실 환경을 성공적으로 만드는 것은 스토리가 발생 하 게 되는 느낌입니다.What makes a mixed reality experience successful is the feeling that the story is happening to you. 즉, 자신의 실내에서 외계인 로봇 invasion을 싸우는 것으로 판단 해야 합니다.That means you have to believe YOU are fighting an alien robot invasion in your own living room.

플레이어는 적중 될 때 어떤 것도 느끼지 못할 것입니다. 따라서 플레이어에 게 나쁜 문제가 발생 한 것을 설득 하는 방법을 찾아야 했습니다.Players obviously won't feel anything when they get hit, so we had to find a way to convince the player that something bad happened to them. 기존 게임에서는 문자가 적중 된 것을 알 수 있는 애니메이션이 표시 될 수 있습니다. 그렇지 않으면 화면이 빨간색으로 깜박이 며 문자는 약간 grunt 수 있습니다.In conventional games, you might see an animation that lets you know your character has taken a hit, or the screen might flash red and your character might grunt a little. 이러한 유형의 큐는 혼합 현실 환경에서 작동 하지 않기 때문에 손상이 발생 했음을 나타내는 exaggerated 소리와 시각적 신호를 결합 하기로 결정 했습니다.Since these types of cues don't work in a mixed reality experience, we decided to combine the visual cue with an exaggerated sound that indicates you've taken damage. 큰 소리를 만들어 모든 항목을 ducked 하 게 혼합 하 여 두드러지게 했습니다.I created a big sound, and made it so prominent in the mix that it ducked everything down. 그런 다음 더 많은 작업을 수행 하기 위해 핵 sub가 싱크 되었던 것 처럼 짧은 경고 소리를 추가 했습니다.Then, to make it stand out even more, we added a short warning sound as if a nuclear sub was sinking.
플레이어는 RoboRaid에서 적중 되 면 시각적 표시를 표시 하 고, 손상이 발생 했음을 알리는 exaggerated 오디오 큐를 가져옵니다.When a player gets hit in RoboRaid, they see a visual cue, but also get an exaggerated audio cue that tells them they've taken damage.

작은 스피커에서 큰 소리 가져오기Getting big sound from small speakers

HoloLens 스피커는 장치 요구 사항에 맞게 작고 밝은 조명 이므로 너무 많은 부분을 듣지 못할 수 있습니다.HoloLens speakers are small and light to suit the needs of the device, so you can’t expect to hear too much low-end. 스마트폰 및 휴대용 게임 장치를 개발 하는 것과 마찬가지로 사운드 디자이너와 작곡가는 오디오의 빈도 콘텐츠를 염두에 둘 필요가 있습니다.Similar to developing for smart phones or handheld gaming devices, sound designers and composers have to be mindful of the frequency content of their audio. 헤드폰을 작성 하는 것이 사용자에 게 적합 하기 때문에 항상 소리를 디자인 하거나 전체 주파수 범위로 음악을 작성 합니다.I always design sounds or write music with full frequency range because wearing headphones is an option for the users. 그러나 HoloLens 스피커와의 호환성을 보장 하기 위해 작업 중인 모든 DAW 마스터에 EQ를 배치 하 여 때때로 테스트를 실행 합니다.However, to ensure compatibility with HoloLens speakers, I run a test occasionally by putting an EQ in the master of any DAW I happen to be working in. EQ 설정은 600 Hz에서 700 Hz (너무 깊은 것이 아님)에 대 한 높은 통과 필터와 약 10K (깊은)의 낮은 통과 필터로 구성 됩니다.The EQ setting consists of a high-pass filter around 600 Hz to 700 Hz (not too steep) and low-pass filter at around 10K (steep). 그러면 장치에서 사운드가 재생 되는 방식을 대략적으로 파악할 수 있습니다.That should give you an approximate idea of how your sounds will play back on the device.

저음을 활용 하 여 음악에서 동시 변경의 의미를 제공 하는 경우이 EQ 설정을 적용 하면 음악이 루트의 의미가 완전히 손실 될 수 있습니다.If you're relying on bass to give the sense of chord changing in your music, you may find that your music completely loses the sense of root when you apply this EQ setting. 이를 해결 하기 위해 다른 계층을 되며 (몇 가지 풍부한 고조파 사용) 하 고이를 혼합 하 여 루트의 의미를 얻을 수 있습니다.To remedy this, I added another layer to the bass that is one octave higher (with some rich harmonics) and mixed it to get the sense of root back. 경우에 따라 왜곡을 사용 하 여 고조파를 설정 하면 가장 높은 범위에 충분 한 frequency 콘텐츠가 제공 되므로, 그 아래에는이에 대 한 것으로 생각 하 게 됩니다.Sometimes using distortion to amp up the harmonics will give enough frequency content in the upper range to make our brain think that there’s something underneath it. 이는 상사의 슈퍼 공격과 같이 특별 한 순간에 미치는 영향, explosions 또는 사운드와 같은 SFX에 적용 됩니다.This is true for SFX like impacts, explosions, or sounds for special moments, such as a boss' super attacks. 플레이어에 게 영향 또는 가중치를 제공 하기 위해 낮은 종료를 사용할 수는 없습니다.You really can’t rely on the low-end to give the player a sense of impact or weight. 음악과 마찬가지로 약간의 고속 처리을 제공 하기 위해 비틀기를 사용 합니다.As with music, using distortion to give some crunch definitely helped.

오디오 신호를 한 눈에 띄게 만들기Making your audio cues stand out

팀의 모든 사람들은 bombastic 음악, 큰 explosions 및 고가를 원했습니다. 하지만 voiceover 또는 기타 게임에 중요 한 오디오 신호를 듣게 될 수도 있습니다.Naturally, everyone on the team wanted bombastic music, loud guns, and crazy explosions; but they also wanted to be able to hear voiceover or any other game-critical audio cues.

모든 빈도로 구성 된 콘솔 게임에서는 소리의 중요도에 따라 주파수를 나눌 수 있는 더 많은 옵션이 있습니다.On a console game with full range of frequency, you have more options to divide frequencies up depending on the importance of the sound. RoboRaid의 경우 소리에서 곡선이 될 수 있는 빈도 범위 수가 제한 되었습니다.For RoboRaid, I was limited in the number of ranges of frequencies I could curve out from sounds. 더 높은 스펙트럼에서 낮은 패스의 필터 및 곡선을 너무 많이 사용 하는 경우에는 작은 쪽 끝이 없기 때문에 소리에 아무것도 남아 있지 않습니다.If you use low-pass filter and curve out too much from the higher end of the spectrum, you won’t have anything left on the sound because there’s not much low-end.

장치에서 가능 하 게 RoboRaid 소리를 만들려면 전체 환경의 동적 범위를 낮추고 다양 한 형식의 사운드에 대해 명확한 계층 구조를 만들어 ducking을 광범위 하 게 사용 해야 했습니다.To make RoboRaid sound as big as it can on the device, we had to lower the dynamic range of the whole experience and made extensive use of ducking by creating a clear hierarchy of importance for different types of sounds. 중요도에 따라 ducking db를-6 dB로 설정 합니다.I set the ducking from -2 dB to -6 dB depending on the importance. 개인적으로 게임에서 분명 한 ducking 마음에 들지 않으므로 페이드 인/출력 타이밍 및 볼륨 감쇠 크기를 조정 하는 데 많은 시간을 할애 했습니다.I personally don’t like obvious ducking in games, so I spent a lot of time tuning the fade in/out timing and the amount of volume attenuation. 음악에 대 한 반향 없이 공간 음향, 비 공간 사운드, .VO.MSECND.NET, 건조 버스에 대 한 별도의 버스을 설정 합니다.We set up separate busses for spatial sound, non-spatial sound, VO, and dry bus without reverb for music. 그런 다음, 높은 우선 순위, 중요 및 중요 하지 않은 버스을 만들어 자산이 적절 한 버스으로 이동 하도록 설정 했습니다.Then, we created high priority, critical, and non-critical busses so the assets were set up to go to their appropriate busses.

저는 RoboRaid에서 작업 하는 것 처럼 사용자의 앱에서 매우 재미 있고 흥미로운 작업을 수행할 수 있습니다.I hope audio professionals out there will have as much fun and excitement working on their own apps as I did working on RoboRaid. Microsoft에서 외부 교묘한 사람들에 게 HoloLens를 제공 하는 것을 볼 수 있을 때까지 기다릴 수 없습니다.I can’t wait to see (and hear!) what the talented folks outside Microsoft will come up with for HoloLens.

직접 수행Do it yourself

Explosions 등의 특정 이벤트 (예:) 소리를 "더 큼"으로 만들기 위해 검색 한 트릭은 공간을 차지 하는 모노 자산을 만들고 2D 스테레오 자산과 혼합 하 여 3D에서 재생 하는 것입니다.One trick I discovered to make certain events (such as explosions) sound "bigger"—like they're filling up the room—was to create a mono asset for the spatial sound and mix it with a 2D stereo asset, to be played back in 3D. 스테레오 콘텐츠에서 너무 많은 정보를 사용 하는 경우 mono 자산의 방향성이 완화 되기 때문에 약간의 조정이 필요 합니다.It does take some tuning, since having too much information in the stereo content will lessen the directionality of the mono assets. 그러나 잔액을 확보 하면 플레이어가 올바른 방향으로 헤드를 켤 수 있는 큰 소리가 발생 합니다.However, getting the balance right will result in huge sounds that will get players to turn their heads in the right direction.

아래의 오디오 자산을 사용 하 여 큰 소리를 직접 사용해 볼 수 있습니다.You can try out big sounds yourself using the audio assets below:

시나리오 1Scenario 1

  1. Roboraid_enemy_explo_mono .wav를 다운로드 하 고 공간 소리를 통해 재생 하 여 이벤트에 할당 하도록 설정 합니다.Download roboraid_enemy_explo_mono.wav and set to play back through spatial sound and assign it to an event.
  2. Roboraid_enemy_explo_stereo .wav 를 다운로드 하 고를 2d 스테레오로 재생 하도록 설정 하 고 위와 동일한 이벤트에 할당 합니다.Download roboraid_enemy_explo_stereo.wav and set to play back in 2D stereo and assign to the same event as above. 이러한 자산은 Unity로 표준화 되기 때문에 두 자산의 볼륨이 경우 볼륨은 잘립니다.Because these assets are normalized to Unity, attenuate volume of both assets so that it doesn’t clip.
  3. 두 소리를 함께 재생 합니다.Play both sounds together. 헤드를 이동 하 여 공간을 만드는 방법에 대해 살펴봅니다.Move your head around to feel how spatial it sounds.

시나리오 2Scenario 2

  1. Roboraid_enemy_explo_summed .wav를 다운로드 하 고 공간 소리를 통해 재생 하 고 이벤트에 할당 하도록 설정 합니다.Download roboraid_enemy_explo_summed.wav and set to play back through spatial sound and assign to an event.
  2. 이 자산을 스스로 재생 한 다음 시나리오 1의 이벤트와 비교 합니다.Play this asset by itself then compare it to the event from Scenario 1.
  3. Mono 및 스테레오 파일의 다른 균형을 사용해 봅니다.Try different balance of mono and stereo files.

추가 정보See also