|
|
|
# Johdattelua
|
|
|
|
|
|
|
|
Tein kaksi VR-peliä [Zenva:n](https://academy.zenva.com/product/the-complete-virtual-reality-game-development-course/) materiaalien pohjalta harjoitustyökseni. Aikomukseni oli tehdä vielä useampiakin harjoitukseksi ja varsinaiseksi harjoitustyökseni VR Space Invaders, mutta nuo kaikki siirtyvät ajan puutteen vuoksi keväämmälle.
|
|
|
|
|
|
|
|
Zenva:n kurssi on ollut minulla jo reilun vuoden takataskussa odottelemassa sopivaa motivaatiota aloittaa opettelu ja nyt peliohjelmoinnin kurssin kaveriksi tuntui ks. kurssi käyvän kuin nenä päähän.
|
|
|
|
|
|
|
|
# VR:stä yleisesti
|
|
|
|
|
|
|
|
VR-peliä suunnitellessa ja toteuttaessa hyviä asioita muistaa ovat:
|
|
|
|
|
|
|
|
* Ota huomioon muutkin kuin oma itsesi VR-kokemusta tehdessä. Pahoinvointioireiden saamisherkkyys VR-kokemuksista vaihtelee ihmisillä paljon. Varsinkin rajut pyörimiset pelin tai kokemuksen aikana saavat helposti olon huonoksi.
|
|
|
|
* Suorituskykä on syytä viilata erityisen hyvälle tasolle. Pykivä ruudunpäivitys on muutenkin pahasta, mutta erityisesti niin VR-kokemuksessa, jossa pykivyys saattaa aiheuttaa myös pahoinvointia.
|
|
|
|
* Jos teet VR-kokemustasi kotona käytettäväksi, tee siitä sellainen, ettei ole tarvetta heiluttaa raajojaan kuin tuulimyllyn lapoja. Vaikket viimekädessä olekaan vastuussa asiakkaiden huonekalujen tuhosta tai tallotuista lemmikeistä.
|
|
|
|
* VR ei ole vain viihdekäyttöön, vaan sen avulla voidaan myös rakentaa simulaatioita, esim. kalliiden ja katkeamattomassa tuotantokäytössä olevien laitteiden käyttökoulutusta tai vaikkapa aivokirurgian alkeita.
|
|
|
|
|
|
|
|
# VRCabinExperience
|
|
|
|
|
|
|
|
"Pelissä" ideana on lentää aluksella, leijuvan saaren päällä olevan kaupungin rakennuksien seassa. Tämä on enemmän teknologiademo, kuin peli, joten siksi lainausmerkit.
|
|
|
|
Alusta ohjataan painamalla kojetaulun nappeja, joilla alusta käännetään sivuille, kiihdytetään korkeussuunnassa ja eteen- ja taaksepäin. Kääntyminen sivuille tapahtuu 'napsu' oikeaan tai vasempaan aina nappia painamalla. Näin tehdään pahoinvointioireiden estämiseksi/vähentämiseksi. Taloon törmättyään (varsinkin kovemmalla vauhdilla ja miedossa kulmassa), saattavat pahoinvointioireet sitten kuitenkin yllättää. Alus nimittäin lähtee melko kahjoon kiepuntaan törmäyksen jälkeen (osa kokemusta).
|
|
|
|
|
|
|
|
## Tekninen toteutus
|
|
|
|
|
|
|
|
Vaikkei pelissä olekaan mitään hienompaa grafiikkaa, on siinä kuitenkin verrattain iso tila mitä piirretään ja leijuvassa saaressa on jopa jonkun verran geometriaa (sekä 'mesh collider', joka hunnuttaa koko saaren ja tuo aimo annoksen lisää laskettavaa verrattuna vaikkapa 'box collider':iin).
|
|
|
|
|
|
|
|
Rakennuksiin valittiinkin 'static'-valikosta 'occluder' ja 'occludee', jolloin ne voidaan jättää piirtämättä, jos jäävät toistensa taakse. Saari itsessään muutettiin pelkästään 'occluder':ksi, koska mikään ei voi sitä oikeastaan peittää, paitsi aluksen takaseinä, eikä pelin ideana ei ole pakittaa sokkona. Rakennukset voidaan siis jättää piirtämättä, jos saari peittää ne kokonaan (leijuva saari, joten näin voi käydä). Saari jos olisi tehty useammasta osasta, eikä olisi ollut yksi iso 'mesh'-elementti, olisi sekin voitu muuttaa myös 'occludee':ksi, jolloin esim. saaren kansi olisi jätetty piirtämättä, jos lentäisimme suoraan saaren alla.
|
|
|
|
|
|
|
|
Tämän "pelin" tekemiseen meni kaikkiaan noin 5h.
|
|
|
|
|
|
|
|
# VRUnderwaterExperience
|
|
|
|
|
|
|
|
Tämä onkin jo vähän enemmän peli. Siinä sukeltelet meren pohjassa ja katselet kaloja, sekä välttelet joutumasta hain suuhun. Jos hai syö sinut, alkaa peli alusta. Mitään et voi tappaa tai kerätä, eli kyseessä ei ole ehkä sittenkään juuri peli...
|
|
|
|
|
|
|
|
## Tekninen toteutus
|
|
|
|
|
|
|
|
Meren pohja tehtiin Unity:n 'terrain'-työkalulla ja sitä maalattiin useammalla eri tekstuurilla. Lähtökohtaisesti 'terrain'-työkalulla tehty maasto on VRCabinExperience:n yhtenäiseen 'mesh'-möykkyyn verrattuna selvästi suorituskykyä vähemmän haavoittava. Näin siksi, koska 'terrain'-työkalulla tehdyn maaston yksityiskohtataso skaalautuu automaattisesti, riippuen siitä kuinka kaukaa maastoa tai jotakin sen aluetta katsotaan. Käytännössä meren pohjassamme on niin valtavan paljon enemmän geometriaa, ettei näkökantamaa rajaamatta se pyörisi enää kovinkaan nätisti VR-kokemukseksi. Kameran näkökenttä rajattiinkin 40 Unity-yksikköön, jonka jälkeen lisättiin 'lightning'-asetuksista usva päälle ja vaihdettiin sen väri vastaamaan ympäröivää 'skybox':in korvannutta tasaista väriä, tumman sinistä. Myös 'terrain'-työkalun valikoista tiputettiin eri tarkkuuksia, kuten 'heightmap' ja 'control texture', nämä asetukset kannattaa muuttaa ennen maaston muokkausta tai tekstuurien maalaamista, koska arvoihin kajomaminen nollaa tehdyt muutokset.
|
|
|
|
|
|
|
|
Kaiken edellä mainitun touhuilun jälkeen, pyörii peli omalla koneella vajaat 2000 FPS-ruudunpäivitysnopudella (Unity:n editorissa), kun ennen muutoksia kyseinen nopeus oli joitain satoja.
|
|
|
|
|
|
|
|
Käytetty aikaa noin 6h.
|
|
|
|
|
|
|
|
# Pohdinnat
|
|
|
|
|
|
|
|
Kävin Zenva:n kurssia säntillisesti läpi, aloittaen 15.04.2018. Aikaa on kulunut VR asioiden läpikäymiseen yhteensä noin 30h tähän mennessä ja jatkuu kyllä jahka loputkin kevään kurssit saan päätökseen. Mielenkiintoista on ollut ja voin tätä Zenva:n kurssia suositella (hintaa kannattaa seurata, sillä itse ostin kurssin 49 dollarilla, kun tällä hetkellä se on "alennuksessa" 149 dollaria).
|
|
|
|
|
|
|
|
Peliohjelmointi, paljolti etänä tehtävänä kurssina, tuppasi itsellä jäämään kaikkien muiden kurssien ja muun elämän seassa jumbosijalle, vaikka aihe toisaalta paljon kiinnostaakin. Enkä alunperin kurssin alettua ja jatkuttua kokenut Unity:ä omakseni, ennenkuin vasta Zenva:n kurssin aloittaessani.
|
|
|
|
|
|
|
|
Peliohjelmoinnin aiheina olleet Shaderit ja Partikkeliefektit sekä toki myös skriptaus olivat miellyttävimpiä osia kurssista. Muuten Unity:yn innostuin vasta enemmän Zenva:n matskujen myötä, vahvasti kiitos VR-aiheelle. |
|
|
|
\ No newline at end of file |