Serialisointi ja tallentaminen Protobuf-net-formaatilla C#-pohjaisessa pelissä
Piisalo, Oula (2016)
Piisalo, Oula
Tampereen ammattikorkeakoulu
2016
Creative Commons Attribution-NonCommercial-ShareAlike 1.0 Suomi
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2016092914698
https://urn.fi/URN:NBN:fi:amk-2016092914698
Tiivistelmä
Opinnäytetyön tarkoituksena oli toteuttaa datan serialisointi- ja tallennusratkaisu toimeksiantajan peliin. Työn toimeksiantajana toimi tamperelainen pelialan yritys Dreamloop Games Oy. Alun perin yritys tarvitsi peliinsä datan serialisointi- ja tallennusratkaisun, joka toimisi mahdollisimman hyvin verkkopeliympäristössä. Serialisointiformaatiksi valittiin Protobuf-net sen nopeuden ja tehokkuuden vuoksi.
Opinnäytetyön teoriaosuudessa käsitellään keskeisiä tekniikoita ja työkaluja, jotka vaikuttivat serialisointiratkaisun kehittämiseen. Unity3D on pelinkehitysalusta, jolla Challengers of Khalea on kehitetty. Kehityksessä on myös käytetty StrangeIoC-viitekehystä, joka sisältää MVCS-kontekstiarkkitehtuurin. Datan serialisointi ja tallentaminen toteutettiin erillisenä moduulina – niin kutsuttuna palveluna.
Protobuf-net-palvelusta muodostui helposti käytettävä ja selkeä moduuli. StrangeIoC-viitekehyksen ansiosta palvelun rakentaminen ja testaaminen onnistuivat erillään muusta ohjelmasta. Palvelun käyttäjän tarvitsee vain tietää serialisoitavan tai deserialisoitavan luokan tyyppi. Projektin edetessä uusia tyyppejä tulee varmasti, jolloin palvelua on laajennettava. Laajentaminen on tehty mahdollisimman yksinkertaiseksi dokumentoinnin ja esimerkkien avulla.
Opinnäytetyö vertailee myös eri serialisointiformaattien tehokkuutta ja nopeutta. Protobuf-net-formaatin lisäksi vertailuissa ovat Unity3D-pelinkehitysalustan binääri-formaatti, Newtonsoft JSON ja XML. Serialisointiformaattien suorituskykytestit kirjoitettiin C#-ohjelmointikielellä ja testien ajamiseen käytettiin Unity3D:tä. Nopeutta mitattiin formaattien serialisoinnissa ja deserialisoinnissa. Tehokkuus mitattiin sillä, kuinka suuri tiedostokoko oli serialisoidulla datalla levylle tallennettaessa.
Suorituskykytestien tulokset puolsivat Protobuf-net-formaattia. Se oli nopein sekä serialisoinnissa että deserialisoinnissa, ja lopullinen tiedostokoko tallennetulle tiedostolle oli pienempi kuin muilla serialisointiformaateilla.
Opinnäytetyön teoriaosuudessa käsitellään keskeisiä tekniikoita ja työkaluja, jotka vaikuttivat serialisointiratkaisun kehittämiseen. Unity3D on pelinkehitysalusta, jolla Challengers of Khalea on kehitetty. Kehityksessä on myös käytetty StrangeIoC-viitekehystä, joka sisältää MVCS-kontekstiarkkitehtuurin. Datan serialisointi ja tallentaminen toteutettiin erillisenä moduulina – niin kutsuttuna palveluna.
Protobuf-net-palvelusta muodostui helposti käytettävä ja selkeä moduuli. StrangeIoC-viitekehyksen ansiosta palvelun rakentaminen ja testaaminen onnistuivat erillään muusta ohjelmasta. Palvelun käyttäjän tarvitsee vain tietää serialisoitavan tai deserialisoitavan luokan tyyppi. Projektin edetessä uusia tyyppejä tulee varmasti, jolloin palvelua on laajennettava. Laajentaminen on tehty mahdollisimman yksinkertaiseksi dokumentoinnin ja esimerkkien avulla.
Opinnäytetyö vertailee myös eri serialisointiformaattien tehokkuutta ja nopeutta. Protobuf-net-formaatin lisäksi vertailuissa ovat Unity3D-pelinkehitysalustan binääri-formaatti, Newtonsoft JSON ja XML. Serialisointiformaattien suorituskykytestit kirjoitettiin C#-ohjelmointikielellä ja testien ajamiseen käytettiin Unity3D:tä. Nopeutta mitattiin formaattien serialisoinnissa ja deserialisoinnissa. Tehokkuus mitattiin sillä, kuinka suuri tiedostokoko oli serialisoidulla datalla levylle tallennettaessa.
Suorituskykytestien tulokset puolsivat Protobuf-net-formaattia. Se oli nopein sekä serialisoinnissa että deserialisoinnissa, ja lopullinen tiedostokoko tallennetulle tiedostolle oli pienempi kuin muilla serialisointiformaateilla.