Fallstudie – Använda rumsligt ljud i RoboRaid
Den här artikeln beskriver utmaningar som Microsoft HoloLens Experience Team stod inför när de skapade ljud för RoboRaid Mixed Reality-skytten i förstapersonsperspektiv.
Tekniken
Rumsligt ljud är en av de mest spännande funktionerna i Microsoft HoloLens, så att användarna kan uppfatta vad som händer runt dem när objekt inte är i synhåll.
I RoboRaid är den mest uppenbara och effektiva användningen av rumsligt ljud att varna spelaren för något som händer utanför deras perifera syn. Till exempel kan Breacher komma in från någon av de skannade väggarna i rummet. Om du inte har den plats där den kommer in kan du missa den. För att varna dig om den här invasionen hör du en distinkt bit ljud som kommer från där Breacher kommer in, vilket gör att du vet att du måste agera snabbt för att stoppa det.
I bakgrunden
Att skapa rumsligt ljud för HoloLens-appar är så nytt och unikt att problem kan vara svåra att lösa eftersom det inte finns några tidigare projekt att referera till. Förhoppningsvis kommer dessa exempel på de ljudutmaningar vi stod inför när vi gjorde RoboRaid att hjälpa dig när du skapar ljud för dina egna appar.
Tänk på att beskatta processorn
Rumsligt ljud kan vara krävande på processorn. För en hektisk upplevelse som RoboRaid var det viktigt att hålla antalet rumsliga ljudinstanser under åtta vid en given tidpunkt. Vanligtvis var det lika enkelt som att ange gränsen för instanser för olika ljudhändelser. Alla instanser som inträffar när gränsen har nåtts avslutas. När drönare till exempel leker är deras skrik begränsade till tre instanser vid en viss tidpunkt. Med tanke på att endast cirka fyra drönare kan leka på en gång, är tre skrik många eftersom det inte finns något sätt din hjärna kan hålla reda på så många liknande ljudhändelser. Detta frigjorde resurser för andra rumsliga ljudhändelser, till exempel fiendeexplosioner eller fiender som förbereder sig för att skjuta.
Belöna en lyckad dodge
Den skumma mekanikern är en av de viktigaste spelmekanikerna i RoboRaid, och även något som vi kände var helt unikt för HoloLens-upplevelsen. Som sådan ville vi göra framgångsrika dodges mycket givande för spelaren. Vi fick Doppler "whizz-by" att låta övertygande ganska tidigt i utvecklingen. Ursprungligen var min plan att använda en loop och manipulera den i realtid med hjälp av volym, tonhöjd och filter. Genomförandet av detta skulle bli mycket detaljerat. Innan vi åtog oss resurser för att bygga detta skapade vi en billig prototyp med hjälp av en tillgång med Doppler-effekten bakad i bara för att ta reda på hur det kändes. Vår talangfulla dev gjorde det så att denna whizz-by tillgång skulle spela tillbaka exakt 0,7 sekunder innan projektilen kommer att ha passerat av spelarens öra och resultaten kändes fantastiskt! Naturligtvis skippade vi den mer komplexa lösningen och implementerade prototypen.
(Mer information om hur du skapar en ljudtillgång med dopplereffekten inbyggd finns i 100 Whooshes in 2 Minutes.)
Dike ineffektiva ljud
Ursprungligen hade vi velat spela ett explosionsljud bakom spelaren när de framgångsrikt har undvikit fiendens projektil, men vi bestämde oss för att dumpa detta av flera skäl. Först kändes det inte lika effektivt som whizz-by SFX vi använde för dodge. När projektilen träffar en vägg bakom dig skulle något annat ha hänt i spelet som skulle maskera det ljudet. För det andra hade vi ingen kollision på golvet, så vi kunde inte få explosionen att spela när projektilen träffade golvet istället för väggarna. Och slutligen var cpu-kostnaden för rumsligt ljud. Elite Skorpion fiende (en som kan krypa innanför väggen) har en speciell attack som skjuter cirka åtta projektiler. Inte bara gjorde det en enorm röra i mixen, det introducerade också hemskt sprakande eftersom det slog CPU för hårt.
Kommunicera en träff
En intressant fråga som vi stötte på på HoloLens var hur svårt det var att effektivt kommunicera att en spelare hade träffats. Det som gör en upplevelse av mixad verklighet framgångsrik är känslan av att historien händer dig. Det betyder att du måste tro att du kämpar mot en utomjordisk robotinvasion i ditt eget vardagsrum.
Spelare kommer uppenbarligen inte att känna något när de blir träffade, så vi var tvungna att hitta ett sätt att övertyga spelaren om att något dåligt hände dem. I konventionella spel kan du se en animering som låter dig veta att din karaktär har tagit en träff, eller skärmen kan blinka rött och din karaktär kan grymta lite. Eftersom dessa typer av tips inte fungerar i en mixad verklighetsupplevelse bestämde vi oss för att kombinera den visuella signalen med ett överdrivet ljud som indikerar att du har tagit skada. Jag skapade ett stort ljud och gjorde det så framträdande i mixen att det duckade ner allt. Sedan, för att få det att sticka ut ännu mer, lade vi till ett kort varningsljud som om en atomubåt sjönk.
Få stort ljud från små högtalare
HoloLens-högtalare är små och lätta för att passa enhetens behov, så du kan inte förvänta dig att höra för mycket low-end. I likhet med utveckling för smarta telefoner eller handhållna spelenheter måste ljuddesigners och kompositörer vara medvetna om frekvensen av innehållet i sitt ljud. Jag designar alltid ljud eller skriver musik med full frekvensomfång eftersom bära hörlurar är ett alternativ för användarna. Men för att säkerställa kompatibilitet med HoloLens-högtalare kör jag ett test ibland genom att sätta en EQ i mastern för alla DAW jag råkar arbeta i. EQ-inställningen består av ett högpassfilter runt 600 Hz till 700 Hz (inte för brant) och lågpassfilter vid cirka 10 000 (brant). Det bör ge dig en ungefärlig uppfattning om hur dina ljud kommer att spelas upp på enheten.
Om du förlitar dig på bas för att ge känslan av ackordbyte i din musik, kan du upptäcka att din musik helt förlorar känslan av rot när du tillämpar denna EQ-inställning. För att åtgärda detta lade jag till ytterligare ett lager till basen som är en oktav högre (med några rika harmonier) och blandade den för att få känslan av rot tillbaka. Ibland ger förvrängning för att förstärka övertonerna tillräckligt med frekvensinnehåll i det övre intervallet för att få vår hjärna att tro att det finns något under det. Detta gäller för SFX som påverkan, explosioner eller ljud för speciella stunder, till exempel en chefs superattacker. Du kan verkligen inte förlita dig på low-end för att ge spelaren en känsla av inverkan eller vikt. Som med musik hjälpte det definitivt att använda förvrängning för att ge lite crunch.
Få dina ljudsignaler att sticka ut
Naturligtvis ville alla i laget bombastisk musik, höga vapen och galna explosioner; men de ville också kunna höra voiceover eller andra spelkritiska ljudsignaler.
På ett konsolspel med full frekvens har du fler alternativ för att dela upp frekvenser beroende på ljudets betydelse. För RoboRaid var jag begränsad i antalet frekvensintervall som jag kunde böja ut från ljud. Om du använder lågpassfilter och böjer ut för mycket från den högre änden av spektrumet har du inget kvar på ljudet eftersom det inte finns mycket low-end.
För att RoboRaid skulle låta så stort som möjligt på enheten var vi tvungna att sänka det dynamiska omfånget för hela upplevelsen och använde sig av duckning i stor utsträckning genom att skapa en tydlig hierarki av betydelse för olika typer av ljud. Jag ställer in ducking från -2 dB till -6 dB beroende på vikten. Personligen gillar jag inte uppenbar ducking i spel, så jag tillbringade mycket tid med att justera tona in / ut timing och mängden volymdämpning. Vi ställer in separata bussar för rumsligt ljud, icke-spatialt ljud, VO och torr buss utan reverb för musik. Sedan skapade vi högprioriterad, kritisk och icke-kritisk buss så att tillgångarna konfigurerades för att gå till deras lämpliga bussar.
Jag hoppas att ljudproffs där ute kommer att ha lika mycket roligt och spänning arbetar på sina egna appar som jag gjorde arbetar på RoboRaid. Jag kan inte vänta med att se (och höra!) vad de begåvade människorna utanför Microsoft kommer att komma med för HoloLens.
Gör det själv
Ett trick som jag upptäckte för att få vissa händelser (till exempel explosioner) att låta "större" – som om de fyller rummet – var att skapa en monotillgång för det rumsliga ljudet och blanda det med en 2D-stereotillgång, som ska spelas upp i 3D. Det krävs lite justering, eftersom för mycket information i stereoinnehållet minskar monotillgångarnas riktning. Men att få balansen rätt kommer att resultera i enorma ljud som får spelarna att vända huvudet i rätt riktning.
Du kan prova stora ljud själv med hjälp av ljudtillgångarna nedan:
Scenario 1
- Ladda ned roboraid_enemy_explo_mono.wav och ställ in på att spela upp genom rumsligt ljud och tilldela det till en händelse.
- Ladda ned roboraid_enemy_explo_stereo.wav och ställ in på att spela upp i 2D-stereo och tilldela till samma händelse som ovan. Eftersom dessa tillgångar normaliseras till Unity kan du minska volymen för båda tillgångarna så att den inte klipps ut.
- Spela båda ljuden tillsammans. Flytta huvudet runt för att känna hur rumsligt det låter.
Scenario 2
- Ladda ned roboraid_enemy_explo_summed.wav och ställ in på att spela upp genom rumsligt ljud och tilldela till en händelse.
- Spela upp den här tillgången på egen hand och jämför den sedan med händelsen från Scenario 1.
- Prova en annan balans mellan mono- och stereofiler.