Ohjelmointi pelimoottoreilla

1

Olen työskennellyt HAMK Smart -tutkimusyksikössä noin 2 vuotta, jonka aikana olen ollut osallisena kolmessa projektissa, joista kussakin kehitettiin mobiilisovellus. Ensimmäinen oli Calmfulness, jonka aikana pääsin tutustumaan Java-ohjelmointikieleen ja Android Studioon, ohjelmointiympäristö, joka on suunniteltu Android sovellusten luomiseen. Seuraava projektini oli  DigiTrail. Tässä projektissa hyödynnettiin Xamarin.Android kirjastoa, joka mahdollistaa Android sovellusten ohjelmointi C# (c sharp) -ohjelmointikielen avulla. Kolmas projekteistani oli  Hämeenlinna taskussa, joka puolestaan kehitettiin hyödyntämällä React Native kehystä ja Java Script -ohjelmointikieltä. Olin opiskeluaikoinani opetellut Unity-pelimoottorin käyttöä, mutta en ollut koskaan tutustunut Unreal Engine 4-pelimoottoriin.

Suoritin ensimmäisen työtehtäväni VATTU -hankkeessa käyttäen Unreal Engine 4, joka oli mainio tilaisuus päästä opettelemaan miten Unreal Engine 4 ja sen visuaalinen blueprint-ohjelmointi soveltuvat kehitystyöhön. Unityllä ja aikaisemmin mainitsemani työkalut ovat melkosamanlaisia. Ohjelmointikieli ja kielen syntaksi saattaa erota, mutta kaikkia yhdistää kuitenkin yksi piirre. Kaikissa ohjelmakoodi kirjoitetaan toisin kuin Unreal Engine 4:n blueprint-ohjelmoinnissa. Tässä tekstissä keskitynkin Unityn ja Unreal Engine 4:n eroavaisuuksiin ohjelmoitaessa. Paras tapa huomata nämä eroavaisuudet on ohjelmoida jotain, kuten vaikka Hello World.

Hello World

Yksi yksinkertaisimmista ohjelmista, jonka voi tehdä on Hello World, jossa heti ohjelman käynnistyessä ohjelma tulostaa tekstin ”Hello World!”. Uutta ohjelmointi kieltä opetellessa tämä on yleensä ensimmäinen asia, joka tulee esimerkeissä vastaan.

Hello Unity

Unityssä ohjelmoidaan kirjoittamalla C# ‑skriptejä. Nämä skriptit liitetään pelimaailman objekteihin, joka aktivoi skriptin. Hello World voidaan suorittaa Unityssä seuraavasti: Unity editorissa luodaan pelimaailmaan uusi objekti, jolle asetetaan skripti nimeltä HelloWorld. Kuvassa 1 Hello World skripti on avattuna Visual Studio 2019 ohjelmassa, mutta mikä tahansa tekstinmuokkausohjelma pitäisi käydä. Start nimisen funktion sisälle lisätään rivi print("Hello World!");.

HelloWorld ohjelmointi Unity-pelimoottorilla
Kuva 1 HelloWorld skripti

Start funktiota kutsuttaessa suoritetaan Start -funktio sisältämät komennot. Tämä kutsu tapahtuu heti ohjelman latauduttua. Seuraksena Unity editorin konsoliin tulostuu teksti “Hello World!”.

Hello Unreal Engine 4

Blueprintti koostuu valmiista osista, joita yhdistelemällä saadaan lopputuloksena toimiva logiikka. Hello World voidaan tehdä avaamalla projektin level blueprint. Tämä blueprint tulee kunkin ohjelman tason mukana automaattisesti. Level blueprinttiä ei tarvitse liittää objektiin kuten Unityssä. Mainittakoon, että jotkut blueprintit liitetään suoraan objekteihin. Kuvassa 2 level blueprint on avattuna ja Event BeginPlay tapahtumasta on vedetty suorituslinjaa (valkoinen viiva) Print String funktioon, jonka In String parametrin arvoksi on annettu teksti “Hello World!”.

HelloWorld ohjelmointi Unreal Engine 4 -pelimoottorilla
Kuva 2 Level blueprint

BeginPlay tapahtumaa kutsutaan ohjelman latauduttua. Kutsusta ohjelma lähtee suorittamaan toimintoja järjestyksessä seuraten suorituslinjaa, jolloin ohjelma tulostaa Unreal Engine 4 editorin konsolille viestin “Hello World!”.

Loppusanat

Tässä tekstissä käytiin läpi lyhyesti ja yksinkertaisesti kahden VATTU -hankkeessa käytettävien pelimoottorien eroja kehitystyössä. Unityn C# -skriptit mahdollistavat kehittäjän luoda juuri sellaisia skriptejä kuin kehittäjä tarvitsee. Skriptien luominen vaatii kuitenkin C# -ohjelmointikielen osaamista. Unreal Engine 4:n blueprint puolestaan ei tarvitse minkään ohjelmointikielen opettelua. Lisäksi visuaalisuus voi auttaa logiikan hahmottamisessa. Kehittäjän täytyy rakentaa logiikka käyttäen valmiita palasia, joka saattaa vaikeuttaa kehitystä.

About author image | Toni Lavonen

Toni Lavonen, sovelluskehittäjä, HAMK Smart-tutkimusyksikkö

VATTU – Valmistavan teollisuuden virtuaaliset tuotteet

Hankkeen tavoitteena on tutkimuksen, selvitysten ja kokeiluiden avulla tuottaa ja jalkauttaa uutta tietoa yritysten hyödynnettäväksi koskien yritysten mahdollisuuksia hyödyntää pelimoottoriteknologiaa tuotannossaan ja toiminnassaan. Hankkeen kesto on 1.6.2019 – 31.12.2020. Toiminta-ala on Kanta-Häme, Valkeakoski ja Hyvinkää.