Pelimoottorin rakentaminen C#-ohjelmointikielellä
Lakkala, Nomi (2020)
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2020112724787
https://urn.fi/URN:NBN:fi:amk-2020112724787
Tiivistelmä
Insinööritön päätavoitteena oli suunnitella ja toteuttaa täysin C#-ohjelmointikielellä ohjelmoitu toimiva ja suorituskykyinen 3D-pelimoottori sekä tutkia, sopiiko C#-ohjelmointikieli tällaisten pelimoottorien ohjelmoimiseen.
Insinöörityön pelimoottorin arkkitehtuuri mallinnettiin Unityn ECS-arkkitehtuurin mukaan, johon Unity on vähitellen muuntamassa omaa pelimoottoriaan. Pelimoottorin ECS-arkkitehtuuri yritettiin kehittää mahdollisimman suorituskykyiseksi ja helppokäyttöiseksi. Pelimoottoriin kehitettiin myös monisäikeistetty tehtäväjärjestelmä, joka auttoi saamaan kaiken tehon käyttöön suorittimen ytimistä. Pelimoottorin fysiikkakirjastona käytettiin BEPUPhysics-kirjastoa, ja grafiikkarajapintana käytettiin Vulkania. Pelimoottorin ohella toteutettiin myös resurssipakkaustyökalu ja tekstuuripakkauskirjasto.
Insinöörityön osana myös tutkittiin C#:n hyötyjä ja rajoituksia pelimoottoreiden ohjelmoinnissa sekä perehdyttiin tapoihin, joilla voidaan välttää joitain C#:n heikkouksia. Tämän lisäksi insinöörityössä esiteltiin yleisiä optimointitekniikoita C#-kielelle.
Insinöörityön pelimoottorilla ja Unity-pelimoottorilla toteutettiin samankaltaiset testipelit, joiden avulla vertailtiin pelimoottorien suorituskykyä. Testipeleissä lennetään avaruusaluksella avaruudessa ja yritetään tuhota asteroideja. Testipelin tarkoituksena oli verrata, miten täysin C#:lla ohjelmoitu pelimoottori suoriutuu C++:lla ohjelmoitua Unity-pelimoottoria vastaan.
Insinöörityön tuloksena todettiin, että C# sopii hyvin pelimoottoreiden toteuttamiseen ja että oikeanlaisilla ohjelmointitekniikoilla saadaan täysin C#-kielellä kirjoitetusta pelimoottorista tietynlaisissa peleissä suorituskykyisempi kuin C++-kielellä ohjelmoidusta Unity-pelimoottorista.
Insinöörityön pelimoottorin arkkitehtuuri mallinnettiin Unityn ECS-arkkitehtuurin mukaan, johon Unity on vähitellen muuntamassa omaa pelimoottoriaan. Pelimoottorin ECS-arkkitehtuuri yritettiin kehittää mahdollisimman suorituskykyiseksi ja helppokäyttöiseksi. Pelimoottoriin kehitettiin myös monisäikeistetty tehtäväjärjestelmä, joka auttoi saamaan kaiken tehon käyttöön suorittimen ytimistä. Pelimoottorin fysiikkakirjastona käytettiin BEPUPhysics-kirjastoa, ja grafiikkarajapintana käytettiin Vulkania. Pelimoottorin ohella toteutettiin myös resurssipakkaustyökalu ja tekstuuripakkauskirjasto.
Insinöörityön osana myös tutkittiin C#:n hyötyjä ja rajoituksia pelimoottoreiden ohjelmoinnissa sekä perehdyttiin tapoihin, joilla voidaan välttää joitain C#:n heikkouksia. Tämän lisäksi insinöörityössä esiteltiin yleisiä optimointitekniikoita C#-kielelle.
Insinöörityön pelimoottorilla ja Unity-pelimoottorilla toteutettiin samankaltaiset testipelit, joiden avulla vertailtiin pelimoottorien suorituskykyä. Testipeleissä lennetään avaruusaluksella avaruudessa ja yritetään tuhota asteroideja. Testipelin tarkoituksena oli verrata, miten täysin C#:lla ohjelmoitu pelimoottori suoriutuu C++:lla ohjelmoitua Unity-pelimoottoria vastaan.
Insinöörityön tuloksena todettiin, että C# sopii hyvin pelimoottoreiden toteuttamiseen ja että oikeanlaisilla ohjelmointitekniikoilla saadaan täysin C#-kielellä kirjoitetusta pelimoottorista tietynlaisissa peleissä suorituskykyisempi kuin C++-kielellä ohjelmoidusta Unity-pelimoottorista.