Proseduraalinen maailma 2D-peleihin
Kilpeläinen, Tommi (2022)
Kilpeläinen, Tommi
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-2022052912888
https://urn.fi/URN:NBN:fi:amk-2022052912888
Tiivistelmä
Insinöörityö toteutettiin omaan peliprojektiin suunniteltujen ominaisuuksien teknisten haasteiden ratkaisemiseksi ja niiden toteutuskelpoisuuden varmistamiseksi. Tavoitteena oli kehittää tapa luoda GameMaker-pelimoottorilla proseduraalisia pelimaailmoja, jotka sopisivat ylhäältäpäin kuvatun kaksiulotteisen hiekkalaatikkopelin kartoiksi. Pelimaailmojen haluttiin olevan rakenteeltaan monipuolisia ja ulkoasultaan näyttäviä sekä muokattavissa pelin suoritusaikana niin, että visuaalinen ilme säilyisi yhtenäisenä.
Työssä perehdyttiin GameMaker-pelimoottorin ominaisuuksiin ja sen käyttämään GameMaker Language -ohjelmointikieleen, jolla proseduraalista maailman luontia käyttävät sovellukset oli tarkoitus toteuttaa. Pelimoottorin kehityshistoriaa ja ominaisuuksia tarkasteltiin, jotta pystyttiin varmistumaan sen soveltuvuudesta haluttuun käyttötarkoitukseen. GameMakerin osalta kartoitettiin sen eroavaisuuksia usein pelikehityksessä käytetyn Unity-pelimoottoriin, ja samalla tutustuttiin työn toteutuksen kannalta GameMakerin tärkeimpiin tietorakenteisiin ja niiden ominaispiirteisiin.
Tärkeänä osana työtä käytiin läpi proseduraalisen sisällön tuotantoa peleissä sekä proseduraalisen kartan generointiin valitun Perlin noise -algoritmin toimintaperiaatteet, joiden pohjalta kehitettiin käyttötarkoitukseen soveltuva funktio. Tuotettuja karttoja analysoitaessa huomattiin ongelmia niiden rosoisuudessa ja ennalta-arvattavuudessa, joita varten kehitettiin menetelmät, joilla ongelmat saatiin ratkaistua.
Luotujen karttojen visualisointia varten perehdyttiin GameMakerin tarjoamiin suoristuskyvyltään tehokkaisiin maastolaattoihin ja toteutettiin kolme tekniikkaa, joilla voitiin asetella kartan eri materiaalien maastolaattojen reunapalat automaattisesti suoritusaikana. Tekniikat poikkesivat toisistaan tarvittavien reunapalojen ja tile-kerrosten määrän suhteen, joista jokainen tekniikka ratkaisi ilmenneitä visuaalisia haasteita edelliseen tekniikkaan nähden. Yksikään tekniikka ei kuitenkaan yksinään ollut ongelmaton tai soveltunut käytettäväksi jokaisessa tilanteessa ilman kompromisseja.
Lopputuloksena syntyi apuohjelma proseduraalisten karttojen esikatseluun sekä peliprojektin alku, jossa karttojen toimivuutta ja maastolaattojen asettelua testattiin käytännössä. Projektien perusteella voitiin todeta kehitetyt tekniikat toimiviksi ja suorituskyvyltään tarpeeksi tehokkaiksi, jotta peliprojektia voitaisiin jatkaa valmiiksi asti.
Työssä perehdyttiin GameMaker-pelimoottorin ominaisuuksiin ja sen käyttämään GameMaker Language -ohjelmointikieleen, jolla proseduraalista maailman luontia käyttävät sovellukset oli tarkoitus toteuttaa. Pelimoottorin kehityshistoriaa ja ominaisuuksia tarkasteltiin, jotta pystyttiin varmistumaan sen soveltuvuudesta haluttuun käyttötarkoitukseen. GameMakerin osalta kartoitettiin sen eroavaisuuksia usein pelikehityksessä käytetyn Unity-pelimoottoriin, ja samalla tutustuttiin työn toteutuksen kannalta GameMakerin tärkeimpiin tietorakenteisiin ja niiden ominaispiirteisiin.
Tärkeänä osana työtä käytiin läpi proseduraalisen sisällön tuotantoa peleissä sekä proseduraalisen kartan generointiin valitun Perlin noise -algoritmin toimintaperiaatteet, joiden pohjalta kehitettiin käyttötarkoitukseen soveltuva funktio. Tuotettuja karttoja analysoitaessa huomattiin ongelmia niiden rosoisuudessa ja ennalta-arvattavuudessa, joita varten kehitettiin menetelmät, joilla ongelmat saatiin ratkaistua.
Luotujen karttojen visualisointia varten perehdyttiin GameMakerin tarjoamiin suoristuskyvyltään tehokkaisiin maastolaattoihin ja toteutettiin kolme tekniikkaa, joilla voitiin asetella kartan eri materiaalien maastolaattojen reunapalat automaattisesti suoritusaikana. Tekniikat poikkesivat toisistaan tarvittavien reunapalojen ja tile-kerrosten määrän suhteen, joista jokainen tekniikka ratkaisi ilmenneitä visuaalisia haasteita edelliseen tekniikkaan nähden. Yksikään tekniikka ei kuitenkaan yksinään ollut ongelmaton tai soveltunut käytettäväksi jokaisessa tilanteessa ilman kompromisseja.
Lopputuloksena syntyi apuohjelma proseduraalisten karttojen esikatseluun sekä peliprojektin alku, jossa karttojen toimivuutta ja maastolaattojen asettelua testattiin käytännössä. Projektien perusteella voitiin todeta kehitetyt tekniikat toimiviksi ja suorituskyvyltään tarpeeksi tehokkaiksi, jotta peliprojektia voitaisiin jatkaa valmiiksi asti.