Rinnakkaislaskennan työkalut pelimoottorissa
Nampajärvi, Eelis (2022)
Nampajärvi, Eelis
2022
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2022052712596
https://urn.fi/URN:NBN:fi:amk-2022052712596
Tiivistelmä
Insinöörityön tarkoituksena oli selvittää Unity-pelimoottorin rinnakkaislaskentaa varten tarkoitettujen työkalujen soveltuvuus pelien monisäikeistämiseen ja muiden prosessoriominaisuuksien, kuten vektoriyksiköiden, hyödyntämiseen pelikehityksessä. Työn oli tarkoitus toimia käytännön esimerkkinä työkalujen käytöstä Unityllä kehitettävissä sovelluksissa ja niiden tarjoamista suorituskykyeduista.
Insinöörityössä kehitettiin testisovellus, joka optimoitiin käyttämällä Unityn tarjoamia rinnakkaislaskennan työkaluja. Testisovellus monisäikeistettiin käyttämällä Unityn Job Systemiä, jolloin sovellus pystyi hyödyntämään kaikkia käytössä olevia prosessoriytimiä. Lisäksi hyödynnettiin Unityn Burst-kääntäjää, joka onnistui vektorisoimaan osan testisovelluksesta ja tarjosi myös muita optimointeja.
Työssä selvisi, että työkalujen käyttö oli testisovelluksen tapauksessa helppoa ja tehokasta, ilman että aikaisempaa kokemusta pelien rinnakkaistamisesta juurikaan oli. Testisovelluksella tehtiin suorituskykymittauksia, joista selvisivät työkalujen tarjoamat, usein hyvinkin suuret suorituskykyedut. Lisäksi huomattiin Unityn kahden vakiona tarjoaman käännöstavan, Monon ja IL2CPP:n, joissain tapauksissa suuretkin suorituskykyerot.
Työn tulokset osoittivat, että käytetyt työkalut tarjoavat pelikehittäjille tehokkaan tavan optimoida ainakin joitakin osia peleistä. Työn tulosten yleiskelpoisuutta rajoitti kehitetyn testisovelluksen suppeus, ja työkalujen laajempi testaus käytännön peleissä todettiin tarpeelliseksi.
Insinöörityössä kehitettiin testisovellus, joka optimoitiin käyttämällä Unityn tarjoamia rinnakkaislaskennan työkaluja. Testisovellus monisäikeistettiin käyttämällä Unityn Job Systemiä, jolloin sovellus pystyi hyödyntämään kaikkia käytössä olevia prosessoriytimiä. Lisäksi hyödynnettiin Unityn Burst-kääntäjää, joka onnistui vektorisoimaan osan testisovelluksesta ja tarjosi myös muita optimointeja.
Työssä selvisi, että työkalujen käyttö oli testisovelluksen tapauksessa helppoa ja tehokasta, ilman että aikaisempaa kokemusta pelien rinnakkaistamisesta juurikaan oli. Testisovelluksella tehtiin suorituskykymittauksia, joista selvisivät työkalujen tarjoamat, usein hyvinkin suuret suorituskykyedut. Lisäksi huomattiin Unityn kahden vakiona tarjoaman käännöstavan, Monon ja IL2CPP:n, joissain tapauksissa suuretkin suorituskykyerot.
Työn tulokset osoittivat, että käytetyt työkalut tarjoavat pelikehittäjille tehokkaan tavan optimoida ainakin joitakin osia peleistä. Työn tulosten yleiskelpoisuutta rajoitti kehitetyn testisovelluksen suppeus, ja työkalujen laajempi testaus käytännön peleissä todettiin tarpeelliseksi.