Casestudy - Ruimtelijk geluid gebruiken in RoboRaid

In dit artikel worden de uitdagingen beschreven waarmee het Microsoft HoloLens Experience Team te maken kreeg bij het maken van audio voor de RoboRaid mixed reality first-person shooter.

De techneut

Ruimtelijk geluid is een van de meest opwindende functies van Microsoft HoloLens, waardoor gebruikers kunnen zien wat er om hen heen gebeurt wanneer objecten niet in de gezichtslijn staan.

In RoboRaid is het meest voor de hand liggende en effectieve gebruik van ruimtelijk geluid het waarschuwen van de speler voor iets dat buiten zijn perifeer zicht gebeurt. De Breacher kan bijvoorbeeld binnenkomen vanaf een van de gescande wanden in de ruimte. Als u niet naar de locatie kijkt waar de app binnenkomt, mist u deze mogelijk. Om u te waarschuwen voor deze invasie, hoort u een duidelijk geluid dat afkomstig is van waar de Breacher binnenkomt, zodat u weet dat u snel moet handelen om het te stoppen.

Achter de schermen

Het maken van ruimtelijk geluid voor HoloLens-apps is zo nieuw en uniek dat problemen moeilijk op te lossen kunnen zijn omdat er geen projecten uit het verleden zijn waarnaar kan worden verwezen. Hopelijk helpen deze voorbeelden van de audio-uitdagingen die we ondervonden tijdens het maken van RoboRaid u bij het maken van audio voor uw eigen apps.

Houd rekening met het belasten van de CPU

Ruimtelijk geluid kan veeleisend zijn voor de CPU. Voor een drukke ervaring als RoboRaid was het cruciaal om het aantal ruimtelijke geluidsexemplaren op een bepaald moment onder de acht te houden. Meestal was het net zo eenvoudig als het instellen van de limiet van exemplaren voor verschillende audiogebeurtenissen. Alle exemplaren die optreden nadat de limiet is bereikt, worden beëindigd. Wanneer drones bijvoorbeeld spawnen, is hun geschreeuw beperkt tot drie exemplaren op elk gewenst moment. Aangezien slechts ongeveer vier drones tegelijk kunnen spawnen, zijn drie geschreeuwen genoeg, omdat je hersenen die veel soortgelijke audiogebeurtenissen niet kunnen bijhouden. Dit maakt middelen vrij voor andere ruimtelijke geluidsgebeurtenissen, zoals vijandelijke explosies of vijanden die zich voorbereiden om te schieten.

Een succesvol ontwijken belonen

De ontwijkende monteur is een van de belangrijkste gameplay-mechanica in RoboRaid, en ook iets waarvan we vonden dat het echt uniek was voor de HoloLens-ervaring. Daarom wilden we succesvolle dodges zeer lonend maken voor de speler. We hebben de Doppler "whizz-by" vrij vroeg in de ontwikkeling overtuigend laten klinken. In eerste instantie was mijn plan om een lus te gebruiken en deze in realtime te bewerken met behulp van volume, toonhoogte en filter. De implementatie hiervoor zou zeer uitgebreid zijn. Voordat we resources doorvoeren om dit te bouwen, hebben we een goedkoop prototype gemaakt met behulp van een asset met het Doppler-effect ingebakken om erachter te komen hoe het voelde. Onze getalenteerde dev heeft het zo gemaakt dat deze whizz-by asset precies 0,7 seconde terug zou spelen voordat het projectiel door het oor van de speler is gepasseerd en de resultaten voelden geweldig! Onnodig te zeggen dat we de complexere oplossing hebben gedoogd en het prototype hebben geïmplementeerd.

(Zie 100 Whooshes in 2 minuten voor meer informatie over het maken van een audioasset met het ingebouwde Doppler-effect.)
Het ontwijken van het projectiel van een vijand beloont de speler met een bevredigend whizz-by-geluid.

Ineffectieve geluiden weggoogen

Oorspronkelijk wilden we een explosiegeluid achter de speler afspelen zodra ze het vijandelijke projectiel hadden ontwijkd, maar we besloten dit om verschillende redenen te laten vallen. Ten eerste voelde het niet zo effectief aan als de whizz-by SFX die we voor de dodge gebruikten. Tegen de tijd dat het projectiel een muur achter je raakt, zou er iets anders in het spel zijn gebeurd dat dat geluid zou maskeren. Ten tweede hadden we geen botsing op de vloer, dus we konden de explosie niet laten spelen toen het projectiel de vloer raakte in plaats van de muren. En ten slotte waren er de CPU-kosten van ruimtelijk geluid. De Elite Scorpion vijand (een die in de muur kan kruipen) heeft een speciale aanval die ongeveer acht projectielen schiet. Niet alleen maakte dat een enorme puinhoop in de mix, het introduceerde ook vreselijk kraken omdat het de CPU te hard raakte.

Een treffer doorgeven

Een interessant probleem dat we tegenkwamen op de HoloLens was hoe moeilijk het was om effectief te communiceren dat een speler was geraakt. Wat een mixed reality-ervaring succesvol maakt, is het gevoel dat het verhaal met je gebeurt. Dat betekent dat je moet geloven dat JE een buitenaardse robotinvasie vecht in je eigen woonkamer.

Spelers voelen natuurlijk niets als ze geraakt worden, dus we moesten een manier vinden om de speler te overtuigen dat er iets ergs met hen is gebeurd. In conventionele games ziet u mogelijk een animatie die u laat weten dat uw personage een hit heeft gemaakt, of het scherm knippert rood en uw personage kan een beetje grommen. Omdat dit soort aanwijzingen niet werken in een mixed reality-ervaring, hebben we besloten om de visuele cue te combineren met een overdreven geluid dat aangeeft dat u schade hebt opgelopen. Ik creëerde een groot geluid, en maakte het zo prominent in de mix dat het alles naar beneden deed. Vervolgens, om het nog meer op te laten vallen, voegden we een kort waarschuwingsgeluid toe alsof een kernsub aan het zinken was.
Wanneer een speler wordt geraakt in RoboRaid, zien ze een visuele aanwijzing, maar krijgen ze ook een overdreven audio-cue die aangeeft dat ze schade hebben opgelopen.

Groot geluid uit kleine luidsprekers halen

HoloLens-luidsprekers zijn klein en licht om aan de behoeften van het apparaat te voldoen, dus u kunt niet verwachten dat u te veel low-end hoort. Net als bij het ontwikkelen voor smartphones of handheld gaming-apparaten, moeten geluidsontwerpers en componisten rekening houden met de frequentieinhoud van hun audio. Ik ontwerp altijd geluiden of schrijf muziek met volledig frequentiebereik omdat het dragen van een hoofdtelefoon een optie is voor de gebruikers. Om compatibiliteit met HoloLens-luidsprekers te garanderen, voer ik echter af en toe een test uit door een EQ in de master te plaatsen van een DAW waarin ik toevallig werk. De EQ-instelling bestaat uit een hoogdoorlaatfilter rond 600 Hz tot 700 Hz (niet te steil) en een laagdoorlaatfilter bij ongeveer 10K (steil). Dat geeft u een idee van hoe uw geluiden worden afgespeeld op het apparaat.

Als u op bas vertrouwt om het gevoel te geven dat de akkoorden veranderen in uw muziek, zult u merken dat uw muziek het gevoel van wortel volledig verliest wanneer u deze EQ-instelling toepast. Om dit te verhelpen, heb ik nog een laag toegevoegd aan de bas die één octaaf hoger is (met wat rijke harmonischen) en het gemengd om het gevoel van wortel terug te krijgen. Soms geeft het gebruik van vervorming om de harmonischen te versterker voldoende frequentieinhoud in het bovenste bereik om onze hersenen te laten denken dat er iets onder zit. Dit geldt voor SFX zoals stoten, explosies of geluiden voor speciale momenten, zoals de superaanvallen van een baas. Je kunt er echt niet op vertrouwen dat de low-end de speler een gevoel van impact of gewicht geeft. Net als bij muziek hielp het gebruik van vervorming om wat crunch te geven zeker.

Uw audiohints laten opvallen

Natuurlijk wilde iedereen in het team bombastische muziek, luide wapens en gekke explosies; maar ze wilden ook voice-over of andere gamekritieke audiosignalen kunnen horen.

Op een consolespel met een volledig frequentiebereik heb je meer opties om frequenties op te delen, afhankelijk van het belang van het geluid. Voor RoboRaid was ik beperkt in het aantal frequentiebereiken dat ik uit geluiden kon buigen. Als u een laagdoorlaatfilter gebruikt en te veel uitbuigt vanaf het hogere deel van het spectrum, hebt u niets meer over op het geluid omdat er niet veel laag is.

Om RoboRaid zo groot mogelijk te laten klinken op het apparaat, moesten we het dynamische bereik van de hele ervaring verlagen en maakten we uitgebreid gebruik van ducking door een duidelijke hiërarchie van belang te maken voor verschillende soorten geluiden. Ik stel de ducking in van -2 dB naar -6 dB afhankelijk van de urgentie. Persoonlijk hou ik niet van duidelijk ducking in games, dus ik heb veel tijd besteed aan het afstemmen van de timing van in- en uitfade en de hoeveelheid volumedemping. We hebben aparte bussen ingesteld voor ruimtelijk geluid, niet-ruimtelijk geluid, VO en droge bus zonder naverb voor muziek. Vervolgens hebben we kritieke en niet-kritieke busses met hoge prioriteit gemaakt, zodat de assets zijn ingesteld om naar de juiste busses te gaan.

Ik hoop dat audioprofessionals er net zoveel plezier en spanning zullen hebben bij het werken aan hun eigen apps als ik aan RoboRaid heb gewerkt. Ik kan niet wachten om te zien (en te horen!) wat de getalenteerde mensen buiten Microsoft zullen bedenken voor HoloLens.

Doe het zelf

Een truc die ik ontdekte om bepaalde gebeurtenissen (zoals explosies) 'groter' te laten klinken, alsof ze de ruimte vullen, was om een monoasset te creëren voor het ruimtelijke geluid en dit te combineren met een 2D-stereoasset, dat in 3D kan worden afgespeeld. Het kost enige afstemming, omdat het hebben van te veel informatie in de stereo-inhoud de directionaliteit van de mono-assets vermindert. Het juiste evenwicht zal echter resulteren in enorme geluiden die ervoor zorgen dat spelers hun hoofd in de juiste richting draaien.

U kunt grote geluiden zelf uitproberen met behulp van de onderstaande audio-assets:

Scenario 1

  1. Download roboraid_enemy_explo_mono.wav en stel in om af te spelen via ruimtelijk geluid en dit toe te wijzen aan een gebeurtenis.
  2. Download roboraid_enemy_explo_stereo.wav en stel in om af te spelen in 2D-stereo en wijs deze toe aan dezelfde gebeurtenis als hierboven. Omdat deze assets worden genormaliseerd naar Unity, verzwak je het volume van beide assets zodat deze niet worden afgeknipt.
  3. Speel beide geluiden samen af. Beweeg je hoofd om te voelen hoe ruimtelijk het klinkt.

Scenario 2

  1. Download roboraid_enemy_explo_summed.wav en stel in om af te spelen via ruimtelijk geluid en toe te wijzen aan een gebeurtenis.
  2. Speel deze asset zelf af en vergelijk deze vervolgens met de gebeurtenis uit scenario 1.
  3. Probeer een andere balans tussen mono- en stereobestanden.

Zie ook