hyväksymispäivä arvosana arvostelija Unity-pelimoottori, sekä vertailu Unreal Engineen Tuukka Paukkunen Helsinki 11.12.2017 Seminaaritutkielma HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta Fakultet Faculty Laitos Institution Department Matemaattis-luonnontieteellinen tiedekunta Tekijä Författare Author Tuukka Paukkunen Työn nimi Arbetets titel Title Tietojenkäsittelytieteen laitos Unity-pelimoottori, sekä vertailu Unreal Engineen Oppiaine Läroämne Subject Tietojenkäsittelytiede Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages Seminaaritutkielma 11.12.2017 7 sivua ja 4 liitesivua Tiivistelmä Referat Abstract ACM Computing Classification System (CCS): Software and its engineering Interactive games Applied computing Computer games Avainsanat Nyckelord Keywords Pelit, Tietokonepelit, Peliohjelmointi, Framework, 3D Säilytyspaikka Förvaringsställe Where deposited Muita tietoja övriga uppgifter Additional information
Sisältö ii 1 Johdanto 1 2 Unityn esittely 1 2.1 Käsitteet.................................. 1 2.2 Monialustaisuus.............................. 2 2.3 Editorin osat............................... 2 2.4 Ohjelmointi Unityssä........................... 3 3 Unity verrattuna Unreal Engineen 3 3.1 Oppimiskäyrä............................... 4 3.2 Yleisyys.................................. 4 3.3 Ohjelmointikielet............................. 4 3.4 Alustariippumaton kehitys........................ 5 3.5 Vakaus................................... 5 3.6 Avustava yhteisö ja dokumentointi.................... 5 3.7 Hinta.................................... 6 3.8 Vertailun yhteenveto........................... 6 4 Yhteenveto 6 Viitteet 7 Liitteet 1 Skriptipohjia Unitylle 2 Unity 2017.1:n uudet ominaisuudet 3 Unityn editorin käyttöliittymä
1 Johdanto 1 Unity on Unity Technologiesin kehittämä moinalustainen pelimoottori ja pelinkehitysalusta videopeleille (Unity Technologies, 2017c). Unity on saatavilla ilmaiseksi tai maksullisina Plus- ja Pro-versioina. Versioiden käyttöoikeus riippuu siitä, minkälaisia tuloja Unityä käyttävä yhtiö tai taho tuottaa. Mikäli vuositulot eivät ylitä 100 000 dollaria, voi käyttää ilmaista versiota. Mikäli vuositulot eivät ylitä 200 000 dollaria, voi käyttää Plus-versiota. Pro-versiossa ei ole vuositulorajoja. Ilmaisenkin Unityn käyttö vaatii kuitenkin rekisteröinnin. Unityllä voi luoda videopelejä joko kaksi- tai kolmiulotteisena. Videopelejä voi myös kääntää useammalle alustalle. Kehitysalustaan on saatavilla Unity Asset Storesta ilmaisia ja maksullisia lisäosia, kuten 3D-malleja, animaatioita, audiota, tekstuureja, partikkelijärjestelmiä ja niin edespäin (Unity Technologies, 2017f). Unity on laajalle levinnyt ympäristö. Esimerkiksi vuonna 2012 Unityä käytti 1,3 miljoonaa kehittäjää (Takahashi, 2017). Unityllä on kehitetty lukuisia videopelejä, joista tunnetuimpia ovat esimerkiksi Cities: Skylines, Wasteland 2 ja Fallout Shelter (Wikipedia, 2017; Unity Technologies, 2017d). Tässä tutkielmassa tutustutaan Unityyn päällisin puolin ja vertaillaan Unityä toiseen suosittuun pelimoottoriin, Unreal Engineen. Yleiskatsaus Unityyn sekä sen käsitteisiin luodaan luvussa 2. Unityn käytöstä kerrotaan vain pääpiirteittäin, sillä tarkoituksena ei ole tehdä Unityn käyttöohjeen toisintoa. Luvussa 3 vertaillaan Unityn käyttöä käytännön pelinkehitystyössä Unreal Engineen. Yhteenveto esitetään luvussa 4. 2 Unityn esittely Tässä luvussa esitellään Unity, siihen liittyvät käsitteet sekä sen editori (Unity Technologies, 2017f). 2.1 Käsitteet Unityn englanninkieliset käsitteet on tässä seminaarityössä suomennettu, mikäli suomennus on katsottu tarpeelliseksi. Myöhemmissä kappaleissa käytetään tässä esiteltyjä suomennoksia. Projekti: Projekti on yhden videopelin kehityskokonaisuus Unityssä. Projektiin liittyy kaikki kyseisessä projektissa käytettävät resurssit, kuten lähdekoodit, grafiikat, äänet, 3D-mallit, animaatiot ja niin edespäin. Scene: Scenet, eli kohtaukset sisältävät videopelin ympäristöt ja valikot. Kukin Scene taltioidaan omaan tiedostoonsa. Scenen voisi ajatella olevan pelin yksi ns. taso. Asset: Asset, eli resurssi on mikä tahansa videopelissä käytettävä lähdetieto, kuten kuva, 3D-malli, mesh, eli rautalankamalli, animaatio tai audio.
GameObject: GameObject, eli peliobjekti on mikä tahansa objekti videopelissä, kuten esimerkiksi hahmo tai jokin ympäristön esine tai asia (esimerkiksi puu). GameObject voi olla myös käyttäjälle suoranaisesti näkymätön objekti, kuten valaistus tai kamera, joka käsittää pelaajan kuvakulman pelissä. Component: component, eli komponentti liittyyy peliobjekteihin, ja tuo niihin toiminnallisuutta. Peliobjektiin voi liittyä useampia komponentteja. Esimerkiksi: oletetaan, että videopelissä on peliobjektina kuutio, jolla on fysiikan lakeja noudattavia ominaisuuksia. Tällöin kuutioon liittyy komponenttina esimerkiksi kuution rautalankamalli sekä Rigidbody-niminen komponentti, joka tuo kuutiolle fysiikan lakeja noudattavat ominaisuudet, kuten massan. Mikäli kuutio pyörii videopelissä, myös kuutiota pyörittävä skripti on komponentti. 2 2.2 Monialustaisuus Unityllä voi kehittää videopelejä usealle eri alustalle (Unity Technologies, 2017c): Mobiililaitteet: ios, Android, Windows Phone, Tizen (Linux-pohjainen, mm. Samsungin käyttämä mobiilikäyttöjärjestelmä) sekä Fire OS 5 (Android-pohjainen, mm. Amazonin käyttämä mobiilikäyttöjärjestelmä). VR ja AR: Oculus Rift, Google Cardboard, Steam VR, PlayStation VR, Gear VR, Microsoft Hololens sekä Daydream (Googlen VR-hanke, pohjautuu Cardboardin tavoin älypuhelimeen). PC: Windows, OSX, Linux sekä Facebook Gameroom. Pelikonsolit: Sony Playstation 4, Sony Playstation Vita, Xbox One, Nintendo WiiU, Nintendo 3DS sekä Nintendo Switch. Web: WebGL. Äly-tv:t: AndroidTV, Samsung SMART TV sekä Apple tvos. 2.3 Editorin osat Unityn mukana tulee kattava ja visuaalinen editori, jolla tehdään pääosa pelinkehityksestä (Unity Technologies, 2017f). Kuva editorista ja sen osista löytyy liitteestä 3. Editorin tärkeimpiä osia ovat projekti-ikkuna, scene-ikkuna, hierarchy-ikkuna, inspector-ikkuna sekä toolbar. Projekti-ikkunassa näkyy kaikki kyseiseen projektiin liittyvät resurssit käyttöjärjestelmästä tuttuna tiedostorakenteena. Scene-ikkunassa, eli kohtausikkunassa voi navigoida kyseisessä pelin kohtauksessa visuaalisesti. Hierarchy-ikkunassa, eli hierarkiaikkunassa on listattu kaikki kohtauksen peliobjektit sekä esitetty niiden väliset hierarkiat. Esimerkiksi, mikäli jokin peliobjekti on osa jotain kokonaisuutta, tällöin tämä objekti esitetään isäntäobjektin lapsiobjek-
tina. Hierarchy-ikkunassa tämä esitetään siten, että lapsiobjekti on isäntäobjektin alla sisennettynä. Inspector-ikkunassa, eli tarkasteluikkunassa näkyy kohtausikkunassa aktiiviseksi valitun peliobjektin tietoja, kuten esimerkiksi objektin sijainti pelin kaksi- tai kolmiluotteisessa avaruudessa. Ikkunassa on lueteltuna kaikki kyseiseen peliobjektiin liittyvät komponentit. Toolbar, eli työkalupalkki sisältää mm. peliobjektien eri editoimistiloja sekä valintoja muuttamaan scene-ikkunan näkymää. 3 2.4 Ohjelmointi Unityssä Ohjelmointi Unityssä tapahtuu joko C# :lla tai Unityn omalla UnityScriptillä (Unity Technologies, 2017f). Ohjelmointi noudattaa olioparadigmaa. Esimerkiksi peliobjekteihin voi lisätä rigidbody-objektin (tai olion), joka tuo peliobjektille fysiikan lakeja noudattavan olomuodon. Ohjelmointiosioita nimitetään Unityssä skripteiksi (engl. script). Ohjelmointiin Unityssä on tarjolla oma kehitysympäristö: MonoDevelop IDE. Skriptien avulla luodaan varsinainen videopelin toiminnallisuus. Skriptien avulla esimerkiksi videopeli vastaa käyttäjän syötteeseen tai peliobjektit reagoivat toisiinsa pelikonseptissa tarkoitetulla tavalla. Skriptit voivat myös luoda graafisia efektejä. Esimerkiksi Unityn opetuspelissä Roll-A-Ball on pyöriviä kuutioita. Kuutioiden pyöriminen on toteutettu skripteillä. Skripteillä voidaan myös kontrolloida peliobjektien fyysistä käytöstä ja skripteillä voidaan jopa luoda pelihahmolle tekoäly. Koodipohjia ja esimerkkejä C# :lla tai UnityScriptillä tehtäville skriptille on nähtävillä liitteessä 1. 3 Unity verrattuna Unreal Engineen Paul E. Dickson, Jeremy E. Block, Gina N. Echevarria ja Kristina C. Keenan Ithaca Collegesta Yhdysvalloista tekivät vertailevaa tutkimusta Unityn ja Unreal Enginen välillä (Dickson, Block, Echevarria, & Keenan, 2017). He olivat käyttäneet sekä Unityä että Unreal Engineä opetuskäytössä. Alun perin he käyttivät Unityä opetuksessa, mutta joutuivat lisensointisyistä siirtymään Unreal Engineen, joka vuorostaan oli muuttunut akateemisessa käytössä maksuttomaksi. Siirtymistä edesauttoi myös heidän opiskelijoidensa kiinnostus Unreal Engineä kohtaan. Pelinkehitysympäristöjen vertailussa Dickson ym. käyttivät Alf Inge Wang in ja Bian Wu n kehittämää seitsemän kohtaa käsittävää viitekehystä, jotka ovat: 1. Matala oppimiskäyrä, 2. pelinkehitysympäristön yleisyys, 3. käytettävissä olevat ohjelmointikielet, 4. alustariippumaton kehitys, 5. vakaus, 6. avustava yhteisö ja dokumentointi ja 7. hinta (Wang & Wu, 2009; Dickson et al., 2017). Jotta nähdään, minkälaiseen kontekstiin Unity ja Unreal Engine sijoittuvat, tau-
lukossa 1 nähdään muutamien pelinkehitysympäristöjen ominaisuuksia (Dickson et al., 2017). Kehitysympäristö Kielet OS Yhteisö Hinta Blender Python OSX, Windows, Linux Suuri Ilmainen CryEngine C++, Flash, ActionScript, Lua Windows Keskisuuri Kuukausimaksu Frostbite C++ Windows Keskisuuri Maksullinen Lumberyard C++, Lua Windows Pieni Ilmainen Source 2 C++ Windows Keskisuuri Ilmainen Torque3D C++, TorqueScript OSX, Windows, Linux Suuri Ilmainen Unity C#, UnityScript OSX, Windows Suuri Ilmainen Unreal C++, Blueprint OSX, Windows Suuri Ilmainen Taulukko 1: Pelinkehitysympäristöjen vertailutaulukko. 4 3.1 Oppimiskäyrä Dickson ym. havaitsivat, että Unityn kanssa pääsee alkuun nopeasti korkealaatuisen oppimismateriaalin vuoksi. Vaikka Unrealin havaittiin muutoin olevan vaativampi pelinkehitysympäristö, myös sen käyttöönottoon oli tarjolla hyvää oppimismateriaalia. Toisaalta Unrealin käyttöliittymän havaittiin olevan selkeämpi. Esimerkiksi Unrealissa peliobjektit ovat valmiiksi linkitettyinä fysiikkamoottoriin kun taas Unityssä tämä linkitys täytyy tehdä erikseen. Toinen piirre, mikä helpotti Unrealin käyttöönottoa oli se tosiasia, että Unityn ja Unrealin käyttöliittymät muistuttavat toisiaan. Dickson ym. havaitsivat Unityn olevan helppokäyttöisempi. Unreal aiheutti opiskelijoissa enemmän turhautumista. Toisaalta Unrealin kanssa oppilaat saavuttivat suurempia saavutuksen tuntemuksia pitkälti sen vuoksi, että Unrealin oletuspeliobjektit oletusvalaistuksessa näyttävät paremmilta kuin Unityssä. Unrealin haastavuus korostui etenkin niiden oppilaiden kohdalla, jotka eivät olleet oppineet ensin Unityä, vaan tutustuivat kumpaankin pelinkehitysympäristöön samaan aikaan. Skriptaus kummassakin pelinkehitysympäristössä havaittiin olevan yhtä haastavaa. 3.2 Yleisyys Sekä Unity että Unreal ovat laajalti käytettyjä pelinkehitysympäristössä ns. AAAvideopelit mukaan lukien. Dickson ym. havaitsivat Unrealin olevan oppilaille houkuttelevampi vaihtoehto, sillä he yhdistivät sen useammin niihin videopeleihin, joita he ovat itse pelanneet. 3.3 Ohjelmointikielet Unityssä ja Unrealissa on kattavat, mutta erilaiset vaihtoehdot skriptaukseen. Unityssä on tarjolla C# ja UnityScript (jota toisinaan tässä yhteydessä nimitetään
JavaScriptiksi). Unrealissa vaihtoehtoina ovat C++ sekä visuaalinen skriptauskieli Blueprint. Unrealin Blueprintin havaittiin olevan melko helppo opittava. Blueprintissä asiat muodostavat visuaalisessa ympäristöjä loogisia kokonaisuuksia, joita opiskelijoiden oli helppo omaksua. Sen sijaan Dicksonin ym. kokeilut C++:n kanssa eivät olleet onnistuneita. Toisin kuin Unityssä, jossa on tarjolla oma MonoDevelop IDE ohjelmointiin, Unrealissa ei ollut tarjolla omaa kehitysympäristöä C++ -ohjelmoinnille. Dickson ym. havaitsivat olemassaolevien kehitysympäristöjen, kuten OSX:n Xcode, käytön Unrealin yhteydessä olevan hankalaa. Myös C++ -sovellusten kääntäminen oli hyvin aikaaviepää. Esimerkiksi yksinkertaisen Hello world -testisovelluksen kääntäminen Unrealin yhteyteen kesti 5 minuuttia. Näiden havaintojen perusteella ohjelmointi Unrealilla oli rajoitettava Blueprintiin kun taas Unityllä pystyi käyttämään joko C# :aa tai UnityScriptiä. 5 3.4 Alustariippumaton kehitys Kumpikin pelinkehitysympäristö on saatavilla sekä Windowsille että OSX:lle, jotka ovat yleisimpiä käyttöjärjestelmiä. Sekä Unityn että Unrealin suhteen on pyrkimyksiä saada ympäristö käytettäväksi myös Linuxille. Unrealin pyrkimykset näyttävät olevan pidemmällä kuin Unityn, mutta kumpikaan ei Dicksonin ym. mukaan ollut artikkelin kirjoittamishetkellä relevantti vaihtoehto. 3.5 Vakaus Sekä Unity että Unreal tarjoavat päivityksiä sovelluksiinsa usein. Mikään päivitys ei ole Dicksonin ym. mukaan rikkonut mitään aiemmin toimivia ominaisuuksia. Yleisessä vakaudessa Unity oli paremmalla tolalla kuin Unreal, mutta myöskään Unity ei ollut ongelmaton: esimerkiksi jotkut oppilaat joutuivat käynnistämään kehitysympäristön toisinaan uudelleen päästäkseen eroon virheistä debuggauksessa, jotka eivät johtuneet oppilaiden sovelluskoodeista. Unrealin vakausongelmat sen sijaan liittyivät pelinkehitysympäristöön itseensä. Esimerkiksi tiedostonimien pituudessa havaittiin olevan yläraja, jonka jälkeen skriptit eivät enää toimineet. Dickson ym. havaitsivat Unityn vaativan vähemmän resursseja tietokoneelta ja siten soveltuvan paremmin myös vanhempiin tietokoneisiin. Unrealin pitkät renderöintiajat havaittiin olevan hankalia, sillä ne keskeyttävät työnkulun. 3.6 Avustava yhteisö ja dokumentointi Sekä Unityllä että Unrealilla on aktiiviset kehittäjäyhteisöt, joissa kehittäjät voivat jakaa kokemuksiaan ja vastata toistensa kysymyksiin. Unityn kehittäjäyhteisön keskustelufoorumissa Dickson ym. havaitsivat olevan enemmän tietoa johtuen pitkälti siitä, että Unity on ollut Unrealia pidempään ilmainen yksityiseen käyttöön. Jot-
kut Dicksonin ym. oppilaista havaitsivat olevan toisinaan työlästä saada vastauksia kysymyksiinsä Unrealin keskustelufoorumista, vaikka Unrealin työntekijät olivatkin varsin aktiivisia heidän foorumillaan. 6 3.7 Hinta Unityssä henkilökohtainen käyttö on ilmaista. Ammattimainen käyttö vaatii 35-125 dollarin kuukausimaksun (Unity Technologies, 2017c). Dicksonin ym. mukaan Unity on artikkelin kirjoittamisen aikaan saatavilla ilmaiseksi myös akateemiseen käyttöön. Unreal on saatavilla ilmaiseksi kaikkine ominaisuuksineen. Kustannuksia syntyy ainoastaan silloin, mikäli aikoo julkaista Unrealilla tehdyn pelin ja tehdä sillä voittoa. Unrealin tekijä Epic Games kerää 5 % rojaltin 3000 dollaria ylittävistä pelin tuotoista vuosineljännestä kohden. 3.8 Vertailun yhteenveto Dicksonin ym. havaintojen mukaan Unityn kanssa pääsee nopeammin ja sujuvammin alkuun ja saa tuloksia aikaan nopeammin. Toisaalta Unrealilla saa todennäköisemmin aikaan näyttävämpää jälkeä, mutta suuremmalla työllä. Henkilökohtaiseen ja akateemiseen käyttöön kumpikin soveltuu maksuttomuuttensa vuoksi hyvin. 4 Yhteenveto Pelinkehitykseen on nykyisin tarjolla Unityn ja Unreal Enginen kaltaisia ilmaisia ja kehitystyön pitkälti mahdollistavia työkaluja. Siitä huolimatta ne eivät kuitenkaan poista sitä tosiasiaa, että pelinkehitys on erittäin aikaavievää työtä. Carlos Mauriccio Torres-Ferreyros ja Matthew Alexander Festini-Wendorff Liman yliopistosta Perusta kehittivät videopelin osana tutkimusprojektia, jonka tarkoituksena oli kokeilla pelinkehitystä Unreal Enginellä (Torres-Ferreyros, Festini-Wendorff, & Shiguihara-Juárez, 2016). Koko projektiin kului kaiken kaikkiaan 1000 työtuntia, joista 500 tuntia oli varsinaisen toteutusvaiheen työtä. Kun otetaan huomioon Dicksonin ym. havainnot Unityn ja Unrealin eroista, työskentely Unityllä saattaa olla hieman nopeampaa, mutta työmäärän mittaluokka pysynee kuitenkin samana. Siksi ei ole yllätys, että Unityn opetusmateriaalissa varoitetaan, että aloittelevan videopeliohjelmoijan kannattaa aloittaa ohjelmointihankkeet mahdollisimman vaatimattomasti. Vaikka osaisikin koodata, pelin kehitys vaatii paljon muutakin, kuten esimerkiksi grafiikaa, 3D-malleja, animaatioita, ääntä ja niin edespäin. Vaikka näitäkin osaisi tehdä, työmäärä voi osoittautua valtavaksi. Hyvänä puolena Unityn tai Unrealin kaltaisilla, käytännössä maksuttomilla pelinkehitysympäristöillä on kuitenkin se, että ne tuovat kaikille ainakin mahdollisuuden kehittää videopelejä.
Viitteet 7 Dickson, P. E., Block, J. E., Echevarria, G. N., & Keenan, K. C. (2017). An experience-based comparison of unity and unreal for a stand-alone 3d game development course. Teoksessa Proceedings of the 2017 acm conference on innovation and technology in computer science education (s. 70 75). New York, NY, USA: ACM. Lainattu saatavilla http://doi.acm.org/10.1145/ 3059009.3059013 doi: 10.1145/3059009.3059013 Murray, J. W. (2014). C# game programming cookbook for Unity 3D. Hoboken, NJ: CRC Press. Takahashi, D. (2017). Game developers, start your Unity 3D engines (interview). https://venturebeat.com/2012/11/02/game-developers-start -your-unity-3d-engines-interview/. (Haettu 3.12.2017) Torres-Ferreyros, C. M., Festini-Wendorff, M. A., & Shiguihara-Juárez, P. N. (2016, Oct). Developing a videogame using unreal engine based on a four stages methodology. Teoksessa 2016 ieee andescon (s. 1-4). doi: 10.1109/ANDESCON.2016.7836249 Unity Technologies. (2017a). Feature Highlight: Unity Teams. https://blogs.unity3d.com/2017/06/28/feature-highlight-unity-teams/. (Haettu 3.12.2017) Unity Technologies. (2017b). Introducing Unity 2017. https://blogs.unity3d.com/2017/07/11/introducing-unity-2017/. (Haettu 3.12.2017) Unity Technologies. (2017c). Unity 2017: The world-leading creation engine for gaming. https://unity3d.com/unity. (Haettu 3.12.2017) Unity Technologies. (2017d). Unity Connect, Games (Kokoelma Unityllä tehtyjä pelejä). https://connect.unity.com/p?orderby=views&projecttype=game. (Haettu 3.12.2017) Unity Technologies. (2017e). Unity download archive. https://unity3d.com/ get-unity/download/archive. (Haettu 3.12.2017) Unity Technologies. (2017f). Unity User Manual (2017.2). https://docs.unity3d.com/manual/index.html. (Haettu 3.12.2017) Wang, A. I., & Wu, B. (2009, tammikuuta). An application of a game development framework in higher education. Int. J. Comput. Games Technol., 2009, 6:1 6:12. Lainattu saatavilla http://dx.doi.org/10.1155/2009/693267 doi: 10.1155/2009/693267 Wikipedia. (2017). List of Unity games. https://en.wikipedia.org/wiki/list _of_unity_games. (Haettu 3.12.2017)
Liite 1. Skriptipohjia Unitylle Unityn skriptit C# :lla tehdään esimerkiksi tällaiselle pohjalle: Using UnityEngine ; using System. C o l l e c t i o n s ; p u b l i c c l a s s MainPlayer : MonoBehaviour { void S t a r t ( ) { } } void Update ( ) { } Alla nähdään vastaava pohja UnityScriptille. #pragma s t r i c t f u n c t i o n S t a r t ( ) { } f u n c t i o n Update ( ) { } Unityssä C# :lla tehdyt skriptit periytyvät Unityn olemassaolevasta MonoBehaviourluokasta, joka kytkee skriptit osaksi Unityn pelimoottoria (Unity Technologies, 2017f). Start-funktiossa komponentti alustetaan käynnistettäessä. Update-funktio tekee kyseiselle peliobjektille kaikki ne tarvittavat toimenpiteet, mitä täytyy tehdä kerran laskettavaa ruutua kohden, kuten esimerkiksi liikkumisen, tietyn tapahtuman aiheuttamant toiminnat, käyttäjän syötteeseen reagoinnin tai mitä tahansa, mitä pelin aikana tapahtuu. Olion käynnistäminen ei tapahdu konstruktorin avulla, kuten tavallisesti C# -ohjelmoinnissa. Tämä johtuu siitä, että editori hallinnoi olioiden luontia. Olioita ei siis luoda pelin alkaessa. Otetaan esimerkki: oletetaan, että tavoitteena on luoda skripti, jolla peliobjektin painoa voidaan muuttaa. Tällöin painoa muuttava komponentti, eli skripti, tarvitsee pääsyn saman peliobjektin toiseen komponenttiin, eli aiemmin mainittuun Rigidbody-komponenttiin. Tämä tapahtuu seuraavasti: Void S t a r t ( ) { Rigidbody rb = GetComponent<Rigidbody >(); rb. mass = 10 f ; }
Liite 2. Unity 2017.1:n uudet ominaisuudet Unity Technologies kehittää aktiivisesti pelinkehitysalustaansa. Esimerkiksi vuonna 2017 Unityyn julkaistiin ilmestyi 14 erilaista päivitystä. Tuoreimmassa 2107- versiossa on julkaistu muutamia uusia ominaisuuksia, joita käydään läpi tässä liitteessä (Unity Technologies, 2017b). Tarinankerronta peleissä Timelinen ja Cinemachinen avulla Timeline ja Cinemachine mahdollistavat elokuvallisten kohtausten rakentamisen ilman, että niitä täytyisi tehdä ohjelmoiden. Kuva 1: Unity 2017:n Timeline-työkalu (Lähde: Unity Technologies). Timeline (kuvassa 2) on raitapohjainen sekvensointityökalu, jolla elokuvallisia kohtauksia voi koostaa raahaamalla ja pudottamalla ( drag and drop ) sopivia elementtejä, kuten animaatioita, videota ja audiota aikajanalle. Cinemachine on kokoelma älykkäitä kameroita, jotka dynaamisesti hakeutuvat ottamaan kiinnostavimmat kuvakulmat perustuen kohtauksen sisältöön ja kohtauksen sisältämään peliobjektien vuorovaikutukseen. Tämän tarkoituksena on automatisoida sitä työtä, mikä kuluisi kameroiden liikkeiden ohjelmoimisessa käsin. Timeline ja Cinemachine yhdessä tuovat Unityyn videoeditoinnista ja -tuotannosta tuttuja elementtejä välianimaatioiden tuottamiseen. Paranneltu jälkiprosessointi (beta) Jälkiprosessointi on kokoelma koko ruudun näkymää muokkaavia suotimia ja tehosteita. Ne muokkaavat kameran kuvavälimuistia ennen kuin kuva näytetään pelaajan ruudulla. Suotimet muistuttavat toiminnaltaan fyysisten kameroiden ja filmin ominaisuuksia. Tarjolla on ominaisuuksia, kuten antialiasointi (engl. Screen-space anti-aliasing), automaattivalotus (engl. Auto Exposure), liike-epäterävyys (engl. Motion Blur), syväterävyysalueen muokkaus(engl. Bokeh Depth of Field), huippuvalokohtien leviämi-
nen (engl. Bloom), värien säätö (engl. Color Grading), väriaberraatio (engl. Chromatic Aberration), filmin rakeisuus (engl. Film Grain) sekä vignetti (engl. Vignette). Pelien kehitys yhteistyössä Unity Teamsin avulla Unity Teams on maksullinen lisäosa, joka tarjoaa työkaluja peliprojektien tekemiseen yhteistyössä useamman kehittäjän voimin pilvipohjaisen palvelun avulla. Se mahdollistaa versionhallintajärjestelmistä tutun tavan mm. julkaista muutoksia tai nähdä tehtyjä muutoksia sovellukseen. Sen avulla näkee myös, mitkä osta projektista ovat työn alla ja keiden kehittäjien toimesta. Pelien käytön analytiikka Unityn analytiikka tarjoaa näkymän siihen, miten pelaajat pelaavat pelejä ja minkä asioiden parissa pelaajat viettävät aikaa. Sen avulla voi myös tehdä reaaliaikaisia muutoksia pelin kulkuun ilman, että uuutta versiota sovelluksesta tarvitsee julkaista.
Liite 3. Unityn editorin käyttöliittymä Kuva 2: Unityn editorin osat (Lähde: Unity Technologies).