Pelin tallennus- ja latausjärjestelmän toteutus Unity-pelimoottorissa
Poutala, Tero (2020)
Poutala, Tero
2020
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-2020060917846
https://urn.fi/URN:NBN:fi:amk-2020060917846
Tiivistelmä
Tämä opinnäytetyö käsittelee tiedon tallentamisen eri muotoja Unity -pelimoottoria käyttäessä, antaa esimerkit binäärijärjestelmämuotoon ja JSON -muotoon tallentamisesta, tarkastelee kahden pelin, CONTINUE ja Quest for Conquestin, tallennus- ja latausjärjestelmiä, niiden eroja ja miten niitä olisi mahdollista parantaa.
Videopelit voivat tallentaa tietoa automaattisesti tai pelaajan antamalla komennolla. Automaattinen tallennus voidaan suorittaa uuteen kenttään siirtyessä ja pelaaja voi tallentaa videopelin tallennuspisteellä tai tallennusnäkymässä. Videopelin tiedot voidaan ladata, kun siirrytään kentästä toiseen. Tieto voidaan ladata huomaamattomasti pitkällä käytävällä tai hissillä. Latauksessa voidaan käyttää myös latausruutua, jossa näytetään latauksen progressio sekä liikkuva elementti. Videopelin tiedot voidaan tallentaa käyttäjälle paikallisesti tai tarvittaessa palvelimelle. Tieto voidaan tallentaa eri muotoon, hyödyntäen muodon ominaisuuksia.
Unity on kehitysalusta, joka tukee useaa eri järjestelmää sekä sisältää laajan valikoiman eri työkaluja. Unity tarjoaa eri tapoja oppia käyttämään kehitysalustaa opetusvideoiden, kurssien ja dokumentaation muodossa. Tietoa voidaan tallentaa binäärijärjestelmän muotoon luomalla tiedoston, tallentamalla tarvittavat tiedot luokkaan ja käyttämällä BinaryFormatter-objektia, muuttamalla ja kirjoittamalla luokan tiedot tiedostoon. Binäärijärjestelmämuotoista tietoa voidaan ladata etsimällä haluttu tiedosto, muuttamalla ja tallentamalla tieto, BinaryFormatter-objektia käyttäen, esimerkiksi luokkaan. Kun tietoa tallennetaan JSON-muotoon, luodaan tiedosto, muutetaan tieto string-muotoon ja kirjoitetaan se luotuun tiedostoon. JSON-muodosta ladattaessa etsitään haluttu tiedosto ja tallennetaan se, muutettuna, esimerkiksi luokkaan.
CONTINUE-pelissä tiedot tallennetaan, kun pelaaja aktivoi tallennuspisteen. Kenttään saapuessa haetaan kaikki tallennettavat objektit. Kun pelaaja siirtyy kentästä toiseen, voidaan joutua lataamaan kentän tiedot. Tiedot muutetaan käytettävään muotoon binäärijärjestelmämuodosta ja asetetaan haettuihin objekteihin. Quest for Conquest-pelissä tallennetaan esimerkiksi pelaajan ja pelaajan karavaanin tiedot JSON-muotoon matkatessa, taistelun jälkeen tai tapahtuman suoritettua. Tietojen tallennuksessa ja latauksessa hyödynnetään videopelin eri managereja.
Minkälainen tallennus- ja latausjärjestelmä sopii videopeliin, riippuu videopelin ominaisuuksista. Yksinpelin järjestelmän voi toteuttaa käyttämällä JSON -muotoa ja tallentaa paikallisesti. CONTINUE- ja Quest for Conquest -videopelien järjestelmien suurimpia eroja ovat eri muotoihin tallentaminen ja CONTINUE:n useampi tallennustiedosto. Molemmat järjestelmät tarvitsisivat optimointia, sekä CONTINUE:n useampi tiedosto voisi muuttaa yhdeksi tiedostoksi. Molempien videopelien järjestelmät voisi myös muuttaa tukemaan useampaa samanaikaista tallennusta.
Opinnäytetyötä varten on tehty kaksi esimerkkijärjestelmää, joista toinen on binäärijärjestelmämuodossa ja toinen JSON-muodossa. Esimerkkien selitystä tukemassa käytettiin Microsoftin ja Unityn omaa dokumentaatiota aiheesta. CONTINUE- ja Quest for Conquestin järjestelmien kertomisen pohjalla on käytetty pelien lähdekoodia.
Videopelit voivat tallentaa tietoa automaattisesti tai pelaajan antamalla komennolla. Automaattinen tallennus voidaan suorittaa uuteen kenttään siirtyessä ja pelaaja voi tallentaa videopelin tallennuspisteellä tai tallennusnäkymässä. Videopelin tiedot voidaan ladata, kun siirrytään kentästä toiseen. Tieto voidaan ladata huomaamattomasti pitkällä käytävällä tai hissillä. Latauksessa voidaan käyttää myös latausruutua, jossa näytetään latauksen progressio sekä liikkuva elementti. Videopelin tiedot voidaan tallentaa käyttäjälle paikallisesti tai tarvittaessa palvelimelle. Tieto voidaan tallentaa eri muotoon, hyödyntäen muodon ominaisuuksia.
Unity on kehitysalusta, joka tukee useaa eri järjestelmää sekä sisältää laajan valikoiman eri työkaluja. Unity tarjoaa eri tapoja oppia käyttämään kehitysalustaa opetusvideoiden, kurssien ja dokumentaation muodossa. Tietoa voidaan tallentaa binäärijärjestelmän muotoon luomalla tiedoston, tallentamalla tarvittavat tiedot luokkaan ja käyttämällä BinaryFormatter-objektia, muuttamalla ja kirjoittamalla luokan tiedot tiedostoon. Binäärijärjestelmämuotoista tietoa voidaan ladata etsimällä haluttu tiedosto, muuttamalla ja tallentamalla tieto, BinaryFormatter-objektia käyttäen, esimerkiksi luokkaan. Kun tietoa tallennetaan JSON-muotoon, luodaan tiedosto, muutetaan tieto string-muotoon ja kirjoitetaan se luotuun tiedostoon. JSON-muodosta ladattaessa etsitään haluttu tiedosto ja tallennetaan se, muutettuna, esimerkiksi luokkaan.
CONTINUE-pelissä tiedot tallennetaan, kun pelaaja aktivoi tallennuspisteen. Kenttään saapuessa haetaan kaikki tallennettavat objektit. Kun pelaaja siirtyy kentästä toiseen, voidaan joutua lataamaan kentän tiedot. Tiedot muutetaan käytettävään muotoon binäärijärjestelmämuodosta ja asetetaan haettuihin objekteihin. Quest for Conquest-pelissä tallennetaan esimerkiksi pelaajan ja pelaajan karavaanin tiedot JSON-muotoon matkatessa, taistelun jälkeen tai tapahtuman suoritettua. Tietojen tallennuksessa ja latauksessa hyödynnetään videopelin eri managereja.
Minkälainen tallennus- ja latausjärjestelmä sopii videopeliin, riippuu videopelin ominaisuuksista. Yksinpelin järjestelmän voi toteuttaa käyttämällä JSON -muotoa ja tallentaa paikallisesti. CONTINUE- ja Quest for Conquest -videopelien järjestelmien suurimpia eroja ovat eri muotoihin tallentaminen ja CONTINUE:n useampi tallennustiedosto. Molemmat järjestelmät tarvitsisivat optimointia, sekä CONTINUE:n useampi tiedosto voisi muuttaa yhdeksi tiedostoksi. Molempien videopelien järjestelmät voisi myös muuttaa tukemaan useampaa samanaikaista tallennusta.
Opinnäytetyötä varten on tehty kaksi esimerkkijärjestelmää, joista toinen on binäärijärjestelmämuodossa ja toinen JSON-muodossa. Esimerkkien selitystä tukemassa käytettiin Microsoftin ja Unityn omaa dokumentaatiota aiheesta. CONTINUE- ja Quest for Conquestin järjestelmien kertomisen pohjalla on käytetty pelien lähdekoodia.