Verkkomoninpelin suorituskyvyn optimointi
Leiden, Ringo (2016)
Leiden, Ringo
Metropolia Ammattikorkeakoulu
2016
All rights reserved
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-201604275267
https://urn.fi/URN:NBN:fi:amk-201604275267
Tiivistelmä
Insinöörityön tavoitteena oli parantaa projektipelin suorituskykyä käyttämällä siihen tarkoitettuja työkaluja. Projektipeli on ensimmäisen persoonan ammuskelupeli, joka on kehitetty neurotieteelliseen tutkimuskäyttöön. Työssä tutkittiin työkaluja, kuten Profiler, jolla suorituskyvyn pullonkaulat pystyttiin tunnistamaan. Optimointitekniikoista tutkittiin muun muassa 3D-mallien optimointia, tekstuurien ja äänitiedostojen pakkausta ja ohjelmointitapojen merkitystä suorituskykyyn. Peligrafiikan historiaa tutkittiin, jotta saatiin kuva optimoinnin tarpeesta ja grafiikan tärkeydestä pelin menestymisen kannalta.
Optimoinnin merkitys peleissä on suuri, koska monimutkaiset 3D-maailmat vaativat paljon laskentatehoa. Jotta pelille saadaan mahdollisimman laaja potentiaalinen käyttäjäkunta, tulee pelien toimia myös vanhemmalla laitteistolla. Tämän mahdollistavat optimointitekniikat, joilla saadaan laskettua pelin teknisiä vaatimuksia. Mobiililaitteille pelejä kehitettäessä vaaditaan usein optimointia, jotta peli toimii edes uusimmilla laitteilla.
Projektipeliin tehtiin muun muassa valokartat ja laskettiin occlusion culling, jolla piilotettiin ylimääräiset peliobjektit. Lisäksi kameran, valojen, laatutasojen ja pelimoottorin yleiset asetukset käytiin läpi, jotta suorituskykyä saatiin parannettua entisestään. Koodin optimoinnissa karsittiin turhia komentoja ja parannettiin muistinhallintaa. Jotkin optimointitekniikat, kuten object pooling, jäivät projektipeliin toteuttamatta.
Insinöörityön lopputuloksena projektipelin suorituskykyä saatiin parannettua huomattavasti ja yhden kuvan renderöinnin vaatimaa laskenta-aikaa saatiin laskettua prosessorilla noin 35 prosenttia ja näytönohjaimella jopa 75 prosenttia. Näin kuvataajuus saatiin nostettua yli tavoitekuvataajuuden 30 kuvaa sekunnissa. Kuvataajuuden alhaisuudesta johtunut pelikokemuksen katkonaisuus saatiin näin poistettua, mikä paransi pelikokemusta.
Optimoinnin merkitys peleissä on suuri, koska monimutkaiset 3D-maailmat vaativat paljon laskentatehoa. Jotta pelille saadaan mahdollisimman laaja potentiaalinen käyttäjäkunta, tulee pelien toimia myös vanhemmalla laitteistolla. Tämän mahdollistavat optimointitekniikat, joilla saadaan laskettua pelin teknisiä vaatimuksia. Mobiililaitteille pelejä kehitettäessä vaaditaan usein optimointia, jotta peli toimii edes uusimmilla laitteilla.
Projektipeliin tehtiin muun muassa valokartat ja laskettiin occlusion culling, jolla piilotettiin ylimääräiset peliobjektit. Lisäksi kameran, valojen, laatutasojen ja pelimoottorin yleiset asetukset käytiin läpi, jotta suorituskykyä saatiin parannettua entisestään. Koodin optimoinnissa karsittiin turhia komentoja ja parannettiin muistinhallintaa. Jotkin optimointitekniikat, kuten object pooling, jäivät projektipeliin toteuttamatta.
Insinöörityön lopputuloksena projektipelin suorituskykyä saatiin parannettua huomattavasti ja yhden kuvan renderöinnin vaatimaa laskenta-aikaa saatiin laskettua prosessorilla noin 35 prosenttia ja näytönohjaimella jopa 75 prosenttia. Näin kuvataajuus saatiin nostettua yli tavoitekuvataajuuden 30 kuvaa sekunnissa. Kuvataajuuden alhaisuudesta johtunut pelikokemuksen katkonaisuus saatiin näin poistettua, mikä paransi pelikokemusta.