20
1 WYDZIAŁ INFORMATYKI, ELEKTRONIKI I TELEKOMUNIKACJI KATEDRA ELEKTRONIKI PRACA DYPLOMOWA INŻYNIERSKA Demo gry pokazujące możliwości silnika RAYAV w środowisku Unity3D Autor: Marcin Misiek Kierunek studiów: Elektronika i Telekomunikacja Opiekun pracy: dr inż. Bartosz Ziółko Kraków, 2016

Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

1

WYDZIAŁ INFORMATYKI, ELEKTRONIKI I TELEKOMUNIKACJI

KATEDRA ELEKTRONIKI

PRACA DYPLOMOWA INŻYNIERSKA

Demo gry pokazujące możliwości silnika RAYAV w środowisku

Unity3D

Autor: Marcin Misiek

Kierunek studiów: Elektronika i Telekomunikacja

Opiekun pracy: dr inż. Bartosz Ziółko

Kraków, 2016

Page 2: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

2

Uprzedzony o odpowiedzialności karnej na podstawie art. 115 ust. 1 i 2 ustawy z dnia

4 lutego 1994 r. o prawie autorskim i prawach pokrewnych (t.j. Dz.U. z 2006 r. Nr 90, poz.

631 z późn. zm.): „ Kto przywłaszcza sobie autorstwo albo wprowadza w błąd co do

autorstwa całości lub części cudzego utworu albo artystycznego wykonania, podlega

grzywnie, karze ograniczenia wolności albo pozbawienia wolności do lat 3. Tej samej

karze podlega, kto rozpowszechnia bez podania nazwiska lub pseudonimu twórcy cudzy

utwór

w wersji oryginalnej albo w postaci opracowania, artystyczne wykonanie albo publicznie

zniekształca taki utwór, artystyczne wykonanie, fonogram, wideogram lub nadanie.”, a

także uprzedzony o odpowiedzialności dyscyplinarnej na podstawie art. 211 ust. 1 ustawy

z dnia

27 lipca 2005 r. Prawo o szkolnictwie wyższym (t.j. Dz. U. z 2012 r. poz. 572, z późn. zm.)

„Za naruszenie przepisów obowiązujących w uczelni oraz za czyny uchybiające godności

studenta student ponosi odpowiedzialność dyscyplinarną przed komisją dyscyplinarną albo

przed sądem koleżeńskim samorządu studenckiego, zwanym dalej „sądem koleżeńskim”,

oświadczam, że niniejszą pracę dyplomową wykonałem(-am) osobiście, samodzielnie i że

nie korzystałem(-am) ze źródeł innych niż wymienione w pracy.

<podpis dyplomanta>

Page 3: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

3

Serdeczne podziękowania dla dr. Bartosza Ziółki,

Tomasza Pędzimąża oraz dla Szymona Pałki

za wsparcie, cenne uwagi

oraz za udzieloną pomoc

przy rozwoju i testowaniu projektu.

Page 4: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

4

Spis treści

Demo gry pokazujące możliwości silnika RAYAV w środowisku Unity3D ........................................... 1

Spis treści ............................................................................................................................................ 4

1. Wprowadzenie............................................................................................................................ 5

1.1 Cele pracy ........................................................................................................................... 6

1.2 RAYAV ................................................................................................................................. 6

1.3 Unity3D ............................................................................................................................... 8

1.4 Aureal 3D ............................................................................................................................ 9

2. Świat gry ....................................................................................................................................... 10

2.1 Model graficzny ...................................................................................................................... 10

2.2 Model akustyczny ................................................................................................................... 11

2.3 Współpraca biblioteki RAYAV z Unity ..................................................................................... 12

2.4 Gracz ....................................................................................................................................... 14

2.5 Dźwięki .................................................................................................................................... 15

2.6 Elementy rozgrywki ................................................................................................................ 16

2.6.1 Ukryta jaskinia ................................................................................................................. 16

2.6.2 Wieżyczki ......................................................................................................................... 16

2.6.3 Samochód ........................................................................................................................ 17

2.6.4 Portal ............................................................................................................................... 18

3. Podsumowanie ............................................................................................................................. 19

4.Bibliografia ..................................................................................................................................... 20

Page 5: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

5

1. Wprowadzenie

W dzisiejszych czasach gry komputerowe to nie tylko grafika, efekty wizualne czy

fabuła, ale również efekty dźwiękowe oraz podkład muzyczny, które sprawiają, że

rozgrywka staje się ciekawsza i żywsza tworząc niejako klimat całej produkcji.

Zastosowanie odpowiednich efektów dźwiękowych i muzyki jest rzeczą kluczową przy

budowaniu atmosfery gry i kształtowaniu emocji gracza, dlatego dźwięki powinny być

bardzo ściśle związane z odbywającą się sceną odpowiednio współgrając z otoczeniem.

Należy również zaznaczyć, że odpowiednio dobrana oprawa dźwiękowa gry jest w stanie

przyciągać nowych graczy w taki sam sposób jak najlepszej, jakości grafika, dlatego

muzyka jest niezwykle ważnym atutem każdej produkcji. Niestety znacząca większość

dzisiejszych producentów gier nie zwraca dużej uwagi na wysokiej, jakości realizm

dźwięku, co powoduje, że rynek związany z dobrej, jakości silnikami dźwiękowymi

praktycznie nie istnieje. Wszystko to może się zmienić, gdy zostanie spopularyzowana

wirtualna rzeczywistość, gdzie realizm odgrywa kluczową rolę.

Zastosowanie odpowiednio zaawansowanego silnika dźwiękowego pozwoli

przyspieszyć proces popularyzacji technologii wirtualnej rzeczywistości po przez

tworzenie produkcji o bardzo wysokim poziomie realizmu. Silnik dźwiękowy

wykorzystujący większość efektów falowych może umożliwić stworzenie produkcji, o

jakości dźwięku dorównującej tej znanej nam z filmów. Użycie takiego silnika wraz z

możliwością poruszania się w środowisku wirtualnej rzeczywistości po przez fizyczny

ruch, pozwoli na tworzenie interaktywnych szkoleń dla wojska służących do testowania

umiejętności żołnierza na polu walki i reakcji na zagrożenie. Oprócz zastosowań

wojskowych można by też stworzyć wirtualne samouczki, które byłby realistycznymi

symulatorami dla służb mundurowych szkolącymi ich do działania w sytuacjach

niekonwencjonalnych.

Dźwięk w grach odgrywa bardzo dużą rolę szczególnie w tych, które są nastawione na

fabułę oraz emocje gracza tak jak to ma miejsce w horrorach i grach przygodowych czy też

grach typu stealth, czyli „skradankach”. Obecnie gry komputerowe wykorzystują

ograniczone silniki dźwiękowe opierające się na stosowaniu filtrów odpowiednio

dobranych do scenerii oraz na stosowaniu tłumienia amplitudy sygnału akustycznego wraz

z oddalaniem się od źródła sygnału. Niestety silniki dźwiękowe używane przez twórców

całkowicie pomijają bardzo ważne efekty akustyczne takie jak dyfrakcja, transmisja,

odbicia oraz zmianę docierania fal dźwiękowych w zależności od położenia głowy postaci

Page 6: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

6

w przestrzeni wirtualnej. Wszystkie te pominięcia znacząco zmniejszają realistykę

dźwięku, natomiast nie wywierają dużego wpływu na atrakcyjność rozgrywki czy też

grywalność. Zastosowanie odpowiednio zaawansowanego silnika dźwiękowego

niepomijającego tych efektów może mieć bardzo duże znaczenie przy produkcjach

kładących duży nacisk na realistykę rozgrywki oraz w tych, które będą wykorzystywać

wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej

realny.

1.1 Cele pracy

Moim głównym celem było stworzenie dema gry w programie Unity3D, w którym

gracz będzie mógł się swobodnie poruszać po małej wyspie, w której zostanie

zaimplementowana biblioteka RAYAV. Na tej wyspie chciałem zamieścić różne rodzaje

źródeł dźwiękowych takich jak odgłosy zwierząt, natury oraz mowę ludzką, które pokażą

większość ciekawych efektów związanych z silnikiem dźwiękowym RAYAV stworzonego

przez zespół DSP z Katedry Elektroniki na AGH. Kolejnym niezwykle istotnym

elementem było stworzenie dema gry, które będzie się cechowało wysoką płynnością

rozgrywki, dużą liczbą klatek na sekundę oraz szatą graficzną na poziomie

nieprzeszkadzającym w odbiorze gry. To wszystko powinno zapewnić skupienie się

odbiorcy na możliwościach silnika dźwiękowego RAYAV. Dodatkowo chciałem stworzyć

mechanikę prostej sztucznej inteligencji, która miałaby możliwość na reagowanie na

poczynania gracza, poprzez wydawanie dźwięku i przemieszczania się w sposób

swobodny po mapie gry. Demo te chciałbym umieścić w łatwo dostępnym miejscu tak, aby

każdy mógł ściągnąć grę i przetestować możliwości silnika dźwiękowego na swoim

komputerze.

1.2 RAYAV

RAYAV jest to silnik dźwiękowy wykorzystujący technikę śledzenia promieni do

tworzenia realistycznych efektów dźwiękowych w grach komputerowych. Biblioteka

RAYAV przy syntezie dźwięku symuluje zjawiska falowe takie jak załamania na

krawędziach, przenoszenie się dźwięku przez ściany oraz odbicia od powierzchni

akustycznej. Silnik ten obsługuje również HRTF (Head related Transmision function),

czyli funkcje związana z położeniem głowy postaci w przestrzenie wirtualnej, pozwalająca

na szybką lokalizację źródła dźwięku przy wykorzystaniu zmysłu słuchowego. Wszystkie

te obsługiwane efekty falowe oraz technika HRTF tworzą odczucie ciągłości dźwięku, co

Page 7: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

7

sprawia wrażenia bycia w „środku” gry komputerowej.

Wykorzystywana przez silnik technika śledzenia promieni wymaga stworzenia

mapy akustycznej, na podstawie, której przeprowadzane są obliczenia potrzebne do

syntezy realistycznych dźwięków zależnych od położenia źródła oraz odbiornika w

przestrzeni akustycznej. Mapa ta musi być stworzona z jak najmniejszej liczby trójkątów i

punktów. Jest to konsekwencją tego, że cała mapa jest wykorzystywana do obliczania

promieni dźwiękowych, dlatego wraz ze wzrostem komplikacji topografii akustycznej

mapy wzrasta czas potrzebny na syntezę dźwięku.

Przy wykonywaniu obliczeń biblioteka RAYAV bierze pod uwagę właściwości

akustyczne materiałów, które są określone przez odpowiednie parametry akustyczne

umieszczone w bazie danych, filtrując odpowiednio promienie dźwiękowe, które odbijają

się od powierzchni danego materiału. Wszystkie te opcje powinny w znaczącym stopniu

przyspieszyć oraz uprościć proces tworzenia dobrze współgrającego audio z rozgrywaną

się aktualnie sceną, przy niskim zużyciu zasobów jednostki CPU.

Rys 1.1 Schematyczny proces syntezy ścieżki dźwiękowej przez bibliotekę RAYAV, wykorzystując technikę

śledzenia promieni.

Page 8: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

8

1.3Unity3D

Rys 1.3 Środowisko programistyczne Unity3D

Źródło: opracowane na podstawie [6]

Jest to środowisko programistyczne do tworzenia prostych i zaawansowanych gier

komputerowych, posiadana ono bardzo rozbudowaną społeczność oraz sklep z dużą ilością

assetów, które w prosty sposób pozwalają na tworzenie prototypowych gier oraz

testowanie wszelkiego rodzaju pomysłów. Rozbudowana społeczność pozwala na

błyskawiczne rozwiązywanie problemów związanych ze środowiskiem, co znacząco

przyspiesza przebieg pracy. Zaimplementowana fizyka w łatwy sposób umożliwia

tworzenie mechaniki poruszania się postaci w świecie gry jak i dowolnego manipulowania

siłami obiektów znajdujących się w grze. Dzięki temu można tworzyć większość zjawisk

fizycznych związanych z oddziaływaniem sił np. przyciąganie, odpychanie czy też

przyspieszanie obiektów. Tworzenie zjawisk fizycznych, zachowania sztucznej inteligencji,

interfejsu użytkownika oraz innej mechaniki gry polega na pisaniu skryptów w języku C#,

korzystając z wbudowanych klas środowiska Unity.

Ogromnym atutem Unity3D jest możliwość przenoszenia projektów między

wieloma platformami przy minimalnych zmianach skryptów wykorzystywanych do

interakcji gracza ze światem gry oraz optymalizacji gry pod kątem danej platformy.

Kolejną zaletą tego środowiska jego kompatybilność z większością programów

graficznych na rynku, co pozwala na szybkie importowanie stworzonych modeli z

wybranego programu do modelowania w 3D.

Page 9: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

9

1.4 Aureal 3D

Pod koniec lat 90 XX wieku firma Aureal Semiconductor wprowadziła na rynek gier

komputerowych rewolucyjny silnik dźwiękowy oparty o technologię HRTF oraz obsługę

odbić dźwięku od przeszkód, co pozwalało na łatwe określenie pozycji źródła

dźwiękowego używając tylko zmysłu słuchowego. Niestety konkurencyjna firma Creative,

która również tworzyła silnik dźwiękowy o nazwie EAX pozwała firmę Aureal za

naruszenie ich prawa patentowego. Sprawa ta została przegrana przez Creative, niestety

koszty poniesione na tą rozprawę były tak duże dla firmy Aureal, że firma była zmuszona

ogłosić bankrupcję i sprzedać swoją technologię jedynemu konkurentowi. Technologia ta

nie była już później w znaczący sposób rozwijana przez Creative’a.

Rys 1.4 Film pokazujący możliwości silnika dźwiękowego firmy Aureal

Źródło: https://www.youtube.com/watch?v=-oSlbyLAksM

Page 10: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

10

2. Świat gry

Jest to dwu poziomowy świat składający się ze słonecznej wyspy, na której

znajduję się parę domków, mały las, górzysty teren i piaszczysta plaża, drugi teren to kilka

pokoi, a w każdym z nich znajduje się źródło dźwiękowe pokazujące różne efekty

związane z biblioteką RAYAV. Do połączenia tych dwóch poziomów wykorzystałem

teleporty, które w swobodny sposób przenoszą gracza pomiędzy tymi światami w ułamku

sekundy. Stworzone zostały również teleporty, które umożliwiają szybkie przemieszczanie

się postaci wewnątrz każdego z poziomów. Każde źródło dźwiękowe w grze wykorzystuje

silnik dźwiękowy RAYAV ukazując jego możliwości w grach komputerowych.

Zaimplementowane skrypty w grze pozwalają na swobodne poruszanie się postacią,

chwytanie różnych obiektów oraz na interakcję z źródłami dźwiękowymi po przez

wyświetlające się znaczniki nad danym modelem. Mapa wyspy oferuję różne odgłosy

zwierząt, dzięki czemu gracz może poczuć się jak w prawdziwym lesie, słuchając śpiewu

ptaków i innych efektów dźwiękowych.

2.1 Model graficzny

Rys 2.1 Model graficzny poziomu z wyspą.

Mapa wyspy została stworzona w Unity3D przy pomocy narzędzia do tworzenia

terenów. Jest to narzędzie, które pozwala na szybkie stworzenie topografii terenu przy

zadanej konfiguracji pozwalając na swobodną zmianę rozdzielczości, rozmiaru oraz

dokładności szczegółów terenu. Użycie tego narzędzia pozwoliło mi na stworzenie w

łatwy i szybki sposób poziomu o zróżnicowanym krajobrazie składającego się z gór, plaży

Page 11: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

11

oraz niziny. Następnie na uzyskaną topografię zostały nałożone wysokiej, jakości tekstury,

które stworzyły klimat realności wyspy po przez dobre odwzorowanie elementów natury,

takich jak piasek na plaży, trawę oraz kamieniste wzgórza. Kolejnym kluczowym

elementem do stworzenia terenu było dodanie drzew, trawy oraz różnych elementów

poprawiających wizualny odbiór sceny takich jak kilka małych budynków, zbiornika z

wodą i paliwem, betonowego łuku oraz płaszczyznę imitującą wodę. W znaczącej

większości umieszczone w scenie modele graficzne zostały pobrane za darmo ze sklepu

assets store, pozostałe elementy oraz cała mapa drugiego poziomu złożonego z paru

pokojów zostały stworzone przeze mnie w programie Blender. Drugi pokój jest to poziom

został zaprojektowany w sposób jak najbardziej minimalistyczny tak, aby w żaden sposób

elementy wizualne nie wprowadzały zmniejszenia wydajności gry, dlatego są to pokoje o

kwadratowych ścianach z nienałożonymi teksturami.

2.2 Model akustyczny

Rys 2.2 Model akustyczny wyspy po minimalizacja.

W celu stworzenia modelu akustycznego poziomu musiałem wyeksportować

stworzony teren w Unity3D do programu Blender, gdzie następnie poddałem go wysokiej

optymalizacji. Polegała ona na jak największej minimalizacji punktów w modelu, a

następnie podzieleniu otrzymanych płaszczyzn na trójkąty. Jest to wymagane, ponieważ

biblioteka dźwiękowa RAYAV w swoich obliczeniach do syntezy dźwięku wykorzystuję

topografię składającą się tylko i wyłącznie z trójkątów. Po wyeksportowaniu terenu wyspy,

ilość trójkątów była większa niż 33 tysiące. Natomiast po zastosowaniu optymalizacji

Page 12: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

12

zmalała ona znacząco i wynosi teraz 431 trójkątów, a całkowita liczba trójkątów wynosi

1644 trójkątów, co jest bardzo dobrym wynikiem biorąc pod uwagę poziom

skomplikowania oraz wielkość obu terenów. Do każdego z trójkątów modelu akustycznego

zostały dodane materiały, które odpowiadają teksturom nałożonym na topografię terenu

graficznego dzięki temu, dźwięki powinny brzmieć jeszcze bardziej naturalnie.

Powyższą optymalizację można przeprowadzić na dwa różne sposoby w programie

Blender, pierwszy jest metodą automatyczną, która w bardzo szybki sposób redukuje ilość

trójkątów, polega ona na użyciu modyfikatora o nazwie Decimate, w którym ustawia się

współczynnik zredukowania liczby wszystkich płaszczyzn modelu. Druga metoda polega

na ręcznym scalaniu punktów przy pomocy funkcji merge oraz tworzeniu nowych

płaszczyzn wypełniając je trójkątami. Jest to opcja zdecydowanie bardziej dokładna,

ponieważ grafik ma bezpośredni wpływ na rozmieszczenie płaszczyzn oraz punktów,

dzięki czemu wszystko znajduję się w przewidzianym miejscu. W najgorszym przypadku

użycie metody automatycznej mogłoby spowodować, że źródła dźwiękowe mogłyby

zostać przeniesione na drugą stronę modelu akustycznego tym samym wyłączając

całkowicie dźwięk emitowany przez to źródło przy założeniu braku transmisji. Jest to efekt

wysoce niepożądany, dlatego do poprawnego stworzenia modelu akustycznego należy

wykorzystać metodę ręczną lub połączyć dwie metody poprzez zastosowanie na samym

początku modyfikatora Decimate, ustawiając tak modyfikator redukcji, aby model 3D nie

uległ żadnej zauważalnej redukcji topografii, a następnie wszystko zoptymalizować

ręcznie.

Wszystkie elementy aktywne w scenie zostały pominięte przy tworzeniu mapy

akustycznej, ponieważ na chwilę obecną biblioteka RAYAV obsługuje tylko statyczną

mapę akustyczną. Obiekty małe tzn. poniżej 30 cm zostały również pominięte ze względu

na brak ich istotnego wpływu na odbiór dźwięku, aby było korzystne tworzenie kolejnych

trójkątów wprowadzając tym samym większą liczbę obliczeń przy syntezie dźwięku.

Bardzo ważnym wymaganiem w stosunku do mapy akustycznej jest konieczność

posiadania bardzo cienkich ścian, ponieważ zauważyłem, że powoduję to obecnie

problemy z dyfrakcją promieni dźwiękowych.

2.3 Współpraca biblioteki RAYAV z Unity

W celu sprawdzania poprawności działania silnika dźwiękowego w Unity należało

zainicjalizować bibliotekę w Unity3D oraz w programie diagnostycznym Raya Viewer

uruchomianego z konsoli Windows z parametrem –q3 pozwalającego na odczytanie źródeł

Page 13: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

13

dźwiękowych bezpośrednio z Unity. Raya Viewer jest to program diagnostyczny

stworzony specjalnie pod silnik RAYAV, pokazuje on wszystkie ścieżki rozchodzące się z

danego źródła i dochodzące do odbiornika, dzięki temu można zaobserwować ścieżki,

które uległy dyfrakcji, odbiciu lub dotarły do odbiornika bezpośrednio. Pozwala on

również na zmianę poziomu pogłosu, zwiększenie lub zmniejszenie ilości liczonych

ścieżek przy syntezie dźwięku oraz na edycję parametrów materiałów akustycznych.

Zastosowanie tego połączenia pozwoliło na określenie translacji wektorowej,

wprowadzającej lekką korektę początku układu współrzędnych tak, aby źródła oraz

odbiornik miały te same położenie w środowisku Unity jak i w bibliotece RAYAV.

Translacja ta została znaleziona po przez przyłożenie źródła dźwiękowego do rogu modelu

akustycznego w środowisku Unity3D, a następnie oglądanie jego położenia względem

ścian w programie diagnostycznym. Poprawka ta została wprowadzona w klasie

RayaUtility.

Rys 2.3 Ścieżki dźwiękowe analizowane przy syntezie w programie Raya Viewer. Czerwony prostokąt to

odbiornik, niebieski to źródło dźwięku.

W zależności od akustyki scenerii bardzo ważne jest dobranie odpowiednich

parametrów w zakładce Synthesis settings, konsekwencją złego ich dobrania może być

niepoprawne działanie silnika dźwiękowego. W przypadku mojego projektu pogłos musiał

zostać jak najbardziej stłumiony, ponieważ wprowadzał on duże zakłócenia w odbiorze

dźwięku.

Page 14: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

14

2.4 Gracz

Dzięki wykorzystaniu darmowego assetu dostarczanego przez Unity postać

swobodnie się porusza wykorzystując wbudowaną fizykę środowiska Unity. Do skryptu

odpowiedzialnego za poruszanie się postacią dodałem funkcjonalność, która udaje

zmęczenie gracza. Po dłuższym biegu postać wydaje dźwięk bicia serca oraz wyraźnie

zwalnia, dodatkowo dodałem odgłos kroków postaci, co umożliwia obserwację zmiany

tego dźwięku w zależności od materiału oraz topografii terenu, po, którym się ona

przemieszcza. Gracz został również zaopatrzony w możliwość interakcji z otoczeniem

poprzez naciśnięcie przycisku „E” na klawiaturze, możliwość ta objawia się po przez

powiększenie znacznika na środku ekranu lub przez wyświetlenie się napisów na ekranie

sugerujących możliwość działania. W celu szybszego poruszania się po mapie

wyposażyłem gracza w możliwość strzelania teleportami, które przenoszą postać z jednego

portalu do drugiego pozwalając na natychmiastową podróż pomiędzy dwoma dowolnymi

punktami na mapie. Dzięki tej funkcjonalności gracz jest w stanie szybko porównywać

odbiór dźwięków w zależności od położenia głowy postaci w przestrzeni wirtualnej. Do

manipulacji teleportami gracz wykorzystuje przyciski „1” oraz „2” na klawiaturze, które

umieszczają teleport w miejscu znajdującym się w danej chwili na środku ekranu.

Rys.2.4 Teleporty umożliwiające szybkie poruszanie.

Page 15: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

15

2.5 Dźwięki

Użyte dźwięki w grze zostały pobrane z Internetu, głównie ze strony

soundbible.com lub otrzymałem je od zespołu DSP na Katedrze Elektroniki. Wszystkie

wykorzystane przeze mnie ścieżki dźwiękowe zostały przekonwertowane do

nieskompresowanego formatu .wav, w jakości CD, było to wymagane ze względu na

kompatybilność tego formatu z silnikiem dźwiękowym RAYAV. Wszystkie ścieżki

dźwiękowe użyte w grze są ładowane zaraz po inicjalizacji biblioteki RAYAV, w klasie

RayavSampleContainer, do której odwołuje się każde źródło w celu odtworzenia danego

dźwięku. Każde źródło dźwiękowe używa klasy RayavAudioSource, gdzie

zaimplementowałem większość potrzebnych opcji odtwarzania dźwięku, takich jak poziom

głośności, poziom tłumienia wraz z odległością, zapętlania ścieżki oraz możliwości

sprawdzenia czy dane źródło wciąż nadaje dźwięk. Klasa ta również zapewnia wymaganą

przez bibliotekę RAYAV funkcjonalność odświeżania, co kilka klatek pozycji źródła

dźwiękowego.

Większość źródeł dźwiękowych w scenie wykorzystuje skrypt System Audio, który

pozwala na interakcję źródła dźwiękowego z graczem oferując mu możliwość puszczania

oraz zatrzymywania ścieżki dźwiękowej. W zależności od odległości informuje on o

położeniu źródła poprzez mały znacznik unoszący się bezpośrednio nad źródłem oraz

możliwości włączenia lub wyłączenia odtwarzanego dźwięku.

Rys 2.5 Źródło dźwiękowe wykorzystujące skrypt AudioSystem.

Pozostałe źródła dźwiękowe wykorzystują detektory reagujące na ruch gracza. Po wejściu

Page 16: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

16

w strefę czujnika uruchamiany jest skrypt puszczający dźwięk, odpowiednio dobrany do

danego modelu, taki jak strzał, śpiew ptaków, lub inny odgłos. Wszystkie źródła

dźwiękowe umieszczone w scenie wykorzystują tłumienie β.

𝛽 = 𝑅 ∗ 𝑙𝑜𝑔𝑅 (1)

R – odległość odbiornika od źródła.

2.6 Elementy rozgrywki

W tym rozdziale opiszę interesujące elementy mojego dema gry, które ukazują

efekty dźwiękowych stworzone przy pomocy biblioteki RAYAV oraz obiekty, które mają

zaimplementowaną prostą sztuczną inteligencje.

2.6.1 Ukryta jaskinia

Na wyspie umieściłem źródło dźwiękowe, wydające odgłos ryku niedźwiedzia,

zostało ono umieszczone w jaskini, która nie jest widoczna w scenie gry. Jest to zabieg

celowy, pokazujący możliwości ukrywania różnych interesujących elementów gier przy

pomocy akustyki. W celu wyświetlenia tej jaskini gracz musi nacisnąć przycisk „V” na

klawiaturze, co aktywuje model akustyczny całej mapy.

Rys 2.6 Źródło dźwiękowe umieszczone w ukrytej jaskini.

2.6.2 Wieżyczki

W grze występują dwa rodzaje wieżyczek, które śledzą położenie gracza i strzelają

do niego, jeżeli znajdzie się on wystarczająco blisko. Te dwie wieżyczko różnią się od

siebie nie tylko wyglądem, ale również rodzajem wydawanego dźwięku przy wystrzale.

Strzały te nie wpływają w żaden sposób na gracza, ale zostały one wprowadzone w celu

ukazania zalet wprowadzenia silnika na rynek gier komputerowych wykorzystujących

Page 17: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

17

wszelkiego rodzaju bronie palne. Każda z wieżyczek posiada wbudowany system

przeładowania amunicji oraz system zamrażania wieżyczek, który jest aktywowany

poprzez naciśnięcie przycisku „O” na klawiaturze, co powoduje, że wieżyczka przestaje

podążać oraz strzelać do gracza na określony czas.

Rys 2.7 Wieżyczki strażnicze.

2.6.3 Samochód

Jest to mały robot wykorzystujący RAIN, czyli bezpłatne rozszerzenie do

środowiska Unity, które pozwala na tworzenie drzew behawioralnych oraz prostej

sztucznej inteligencję obiektów w grach komputerowych. Wbudowane klasy pozwalają na

tworzenie ścieżek, po której porusza się obiekt wykrywający i omijający wszystkie

statyczne przeszkody na swojej drodze. Samochód wykorzystuje skrypt AudioSystem

wydając dźwięk kosiarki i patrolując mapę z pokojami według wytyczonej trasy,

wykrywając gracza i zatrzymując się przy nim, gdy znajdzie się on wystarczająco blisko.

Rys 2.8. Samochód z zaimplementowaną prostą inteligencją.

Page 18: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

18

2.6.4 Portal

W celu zakończenia rozgrywki wprowadziłem portal, który po złożeniu pozwala na

przejście do napisów końcowych. Portal składa się z kostek, które początkowo są

porozrzucane po scenie. W celu złożenia teleportu należy znaleźć cztery mniejsze kostki i

umieścić je odpowiednio na kolorowych płytkach tak, aby zgadzały się ich kolory.

Umieszczenie kostek w odpowiednich miejscach powoduje uruchomienie skryptu, który

składa większe kostki na uprzednio zdefiniowane miejsca tworząc konstrukcję portalu

wydając pulsujący dźwięk.

Rys 2.9 Portal kończący rozgrywkę.

Page 19: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

19

3. Podsumowanie

Stworzone przeze mnie demo gry w bardzo dobry sposób ukazuje możliwości

biblioteki RAYAV oraz realizuje większość założonych przeze mnie celi. Cała gra posiada

dopracowaną oprawę graficzną oraz realistyczne modele 3D. Mapę akustyczna została

stworzona od podstaw w oparciu o model graficzny i zoptymalizowana pod kątem ilości

trójkątów tak, aby synteza dźwięku była jak najszybsza. Dzięki temu silnik dźwiękowy

działa płynnie bez jakichkolwiek zakłóceń.

Projekt pozwala na szybkie zapoznanie się z biblioteką RAYAV. Posiada on

wszystkie potrzebne klasy do używania większości opcji biblioteki oraz skrypty

pozwalające na łatwą interakcję gracza ze źródłami dźwiękowym. Po dopracowaniu silnika

dźwiękowego do wersji komercyjnej może zostać on umieszczony w sklepie assets store

programu Unity3D wraz z tym projektem, jako przykład użycia biblioteki RAYAV.

Stworzona przeze mnie scena oferuje możliwość przeprowadzenia testów

wydajnościowych silnika na własnym komputerze, wykorzystując skrypt AudioSystem

oraz narzędzie statystyczne wbudowane w program Unity.

W grze został umieszczony plik do konfiguracji silnika RAYAV, w którym

modyfikuje się wszystkie ustawienia silnika oraz między innymi ścieżkę do mapy

akustycznej wykorzystywanej przez silnik Unity. Zmiana tej ścieżki pozwala na

zaobserwowanie różnicy w odbiorze dźwięku, gdy silnik dźwiękowy używa geometrii

współgrającej z mapą graficzną, a modelem, który nie posiada żadnych budynków lub też

jest całkowicie pusty. Wszystko to zostało opisane w pliku README.txt dostarczanego

wraz z grą.

Silnik RAYAV pomimo swoich ogromnych zalet, posiada również niewielkie wady.

Można do nich zaliczyć brak możliwości modyfikowania wielkości fizycznej źródła

dźwięku, co można usłyszeć będąc blisko źródła. Transmisja dźwięku przez przeszkody

oraz efekty dyfrakcyjne na grubych ścianach wymagają dopracowania. Usunięcie

wymienionych wad sprawi, że silnik RAYAV będzie doskonałym produktem, który

idealnie wpasuje się w obecny trend wirtualnej rzeczywistości. Zastosowanie tego silnika

może umożliwić sprawdzanie akustyki budynków przed ich wybudowaniem, co mogłoby

znacząco wpłynąć na projekty architektoniczne teatrów i sali kinowych.

Page 20: Demo gry pokazujące możliwości silnika RAYAV w ...dydaktyka:marcin_misiek...wirtualną rzeczywistość, gdzie człowiek przenosi się do innego świata w sposób bardziej realny

20

4.Bibliografia

[1] B. Ziółko, T. Pędzimąż, Sz. Pałka, I. Gawlik, B. Miga, P. Bugiel ”Real-time 3D

Audio Simulation in Video Games with RAYAV”, Making Games, vol.1, 2015.

[2] B. Miga, B. Ziółko ”Real-time acoustic phenomena modelling for computer games

audio engine”, Archives of Acoustics (IF), 2015, vol.2.

[3] Sz. Pałka, B. Głut, B Ziółko ”Visibility determination in beam tracing with

application to real-time sound simulation”, Computer Science, AGH, vol 15, no 2,

2014.

[4] Ian Griffiths “Programowanie C# 5.0”, Wydawnictwa HELION, 2013. ISBN: 978-

83-246-6987-5.

[5] Dokumentacja języka C#. www.msdn.microsoft.com/en-us/library/kx37x362.aspx

[6] Clifford Peters “Unity 4.x Game AI Programming”, Wydawnictwa PACKT, 2013.

ISBN: 978-1-84969-340-0.

[7] Strona domowa Unity3D. www.unity3d.com

[8] Dokumentacja środowiska Unity3D. www.docs.unity3d.com/Manual/index.html

[9] Strona domowa biblioteki RAYAV. www.soundtool.com

[10] Dokumentacja programu Blender. www.blender.org/manual

[11] Strona domowa RAIN. www.rivaltheory.com

[12] Aureal 3D. www.en.wikipedia.org/wiki/A3D

[13] Demo gry RAYAV. www.dropbox.com/s/u3yxa3tiu93q906/Raya_Demo.rar?dl=0