Unity-pelimoottori, sekä vertailu Unreal Engineen

Samankaltaiset tiedostot
Selainpelien pelimoottorit

arvostelija OSDA ja UDDI palveluhakemistoina.

Aika/Datum Month and year Kesäkuu 2012

Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages

Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA. Karoliina Ljungberg

Koht dialogia? Organisaation toimintaympäristön teemojen hallinta dynaamisessa julkisuudessa tarkastelussa toiminta sosiaalisessa mediassa

PUHEOPETUSPELIN KEHITYS UNITY-PELIMOOTTORIN JA LISÄOSAN AVULLA

Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan

Joona Leskinen SUMMER SPORTS -MOBIILIPELI

PLA Mobiiliohjelmointi. Mika Saari

Luonnontieteiden popularisointi ja sen ideologia

Sami Anglé PELINKEHITYS. Demosta julkaisuun

C-ohjelmointikielen perusteet, osa 1

Katsaus korruption vaikutuksesta Venäjän alueelliseen talouskasvuun ja suoriin ulkomaisiin investointeihin

Älypuhelimet. Sisällysluettelo

Arkkitehtuurinen reflektio

! #! %! & #!!!!! ()) +

PLA Mobiiliohjelmointi. Mika Saari

Ohjelmointi 1. Kumppanit

Purot.net Wiki. Tutkielma. Paavo Räisänen. Centria Ammattikorkeakoulu

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

2D-pelin suunnittelu ja teko Unityllä

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

IOS%PELIN!LUOMINEN!UNITY% PELIMOOTTORILLA!

Jani Niemistö. 3D-pelin toteuttaminen Unity-kehitysympäristössä

Luku 6: Grafiikka. 2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat

ELM GROUP 04. Teemu Laakso Henrik Talarmo

SISÄLLYS 1 YLEISTÄ VERSIOT Tukiaika Variaatiot OHJELMISTO Paketinhallinta Komentorivisyntaksi

Se on sinussa. Virtuaalinen ja laajennettu todellisuus. Jari Kotola Sovelto Aamiaisseminaari Tampere

Strategiset suunnittelupelit: SimCity ja Civilization

SQL Server 2008 asennus

Pelimatematiikka ja ohjelmointi ATMOS, Mikkeli

WINE API ja Virtualisointiohjelmistot

Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

CT50A2601 Käyttöjärjestelmät Androidin ja Symbianin vertailu Seminaarityö

Tabletit opetuskäytössä - työpaja

Hallintomallit Suomen valtionhallinnon tietohallintostrategioissa

UNITY 5 EDITORIN LAAJENTAMINEN

Historiaa. Unix kirjoitettiin kokonaan uudestaan C-kielellä Unix jakautui myöhemmin System V ja BSDnimisiin. Kuutti, Rantala: Linux

Oppimateriaalin kokoaminen ja paketointi

Pelisuunnittelua tulevaisuudessa. Karoliina Korppoo / Colossal Order

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Asuntojen neliöhinnan vaihtelu Helsingissä ( )

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Mobiilipelin toteuttaminen Unity-kehitysympäristössä

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Kontrollilaitteet. Arsenaali

Office ohjelmiston asennusohje

Tietotunti klo 12 ja 17. Aiheena sosiaalisen median sovellukset: Instagram, Twitter, WhatsApp ja Facebook

Uudet ominaisuudet. Realise Your Vision

Tiedekunta/Osasto Fakultet/Sektion Faculty Valtiotieteellinen tiedekunta

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

Raspberry Pi. Yhden piirilevyn tietokone. Tässä dokumentissa kerrotaan yleistä tietoa Rasberry Pi- tietokoneesta ja. sen toiminnoista.

13/20: Kierrätys kannattaa koodaamisessakin

PELIPROJEKTIN TOTEUTUS UNITYLLÄ

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikka / ohjelmistotekniikka. Sami Husso 2D-PELIOHJELMOINTI UNITYÄ KÄYTTÄEN

Mobiilipelin toteuttaminen Unity 2D:llä

Pasi Tiihonen. Pelinkehitys Unity3D-pelimoottorilla aloittelijoille. Opinnäytetyö Kevät 2013 Tekniikan yksikkö Tietotekniikan koulutusohjelma

SOVELLUSKEHYKSEN KEHITTÄMINEN UNITY-PELIMOOTTORILLE

Laskennallinen yhteiskuntatiede

Lappeenrannan teknillinen yliopisto Tuotantotalouden tiedekunta Tietotekniikan koulutusohjelma. Kandidaatintyö. Joona Hasu PELIOHJELMOINNIN ALKEET

Mobiilipelin tekninen suunnittelu ja toteutus Unity-pelimoottorilla. Case: Royal Crow Squadron

Valteri-koulu Tervaväylässä käytettäviä mobiilisovelluksia

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

Ohjelmointi 1 / syksy /20: IDE

DreamHouse Jon Koivula. Opinnäytetyö. Tietojenkäsittely koulutusohjelma

WINDOWS 10 -kurssi.

PELAAMISEN JA SOSIAALISEN MEDIAN TULEVAISUUS

Ohjelmointileirin järjestäminen

Millaiset mahdollisuudet avautuvat KODUpeliohjelmoinnilla. Lehtori Jarkko Sievi Virtuaaliopetuksen päivät

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Pilvipalvelujen tietoturvasta

S11-04 Kompaktikamerat stereokamerajärjestelmässä. Projektisuunnitelma

UI-OHJELMOINTI JÄÄKIEKON VALMENNUSSOVELLUKSESSA

!"#$%&'$("#)*+,!!,"*--.$*#,&--#"*/".,,%0

S09 04 Kohteiden tunnistaminen 3D datasta

CTRL+F Android-sovellus

Jouko Nielsen. Ubuntu Linux

Jani Korkiakoski VIRTUAALILASIEN KÄYTTÖ UNITY-PELIMOOTTORILLA RA- KENNETUSSA 3D-VISUALISOINTISOVELLUKSESSA

DIPLOMITYÖ ARI KORHONEN

Pistepilvestä virtuaalimalliksi työpolku

Micro:bit. Käyttöohje. Innokas verkosto Petja Pyykkönen, Saimaan mediakeskus Käyttöohje / 2016 Innokas

Uhkavaara-pelin toteuttaminen

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

PELIOHJELMOINTIKURSSIN SUUNNITTELU KYSELYTUTKIMUKSEN AVULLA

GIGABYTE tietokoneen käyttö ensimmäistä kertaa

Nettikalenterin tilausohjeet

Qt kaikkialla?

Kajak Games uuden sukupolven yrittäjät. Pressure Cooker Kimmo Nikkanen, Kajak Games Osk

OHJ-2710 Peliohjelmointi. Syksy 2012 Timo Kellomäki

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikka / Ohjelmistotekniikka. Mika Uurainen UNITY MOBIILIPELIEN KEHITYKSESSÄ

Pikaopas. The New Black. Kesäkuu Datscha Pikaopas The New Black ( ) 1 (14)

OpenUP ohjelmistokehitysprosessi

Nettikalenterin tilausohjeet

Mobiilipelin kehitys Unity-ympäristössä

GOStats. Counter Strike: Global Offensive-pelin tulosapuri. Windows Phone sovelluskehitys-kurssin harjoitustyö dokumentaatio

arvostelija Turvallisuuskriittisissä, sulautetuissa järjestelmissä esiintyvien ohjelmistovaatimusten virheanalyysi Jarkko-Juhana Sievi

Malliperustainen ohjelmistokehitys (Model-Driven Engineering, MDE)

Transkriptio:

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).