Roguelike-pelin kehitys
Kokkonen, Miro (2016)
Kokkonen, Miro
Metropolia Ammattikorkeakoulu
2016

Creative Commons Attribution-NonCommercial-NoDerivs 1.0 Suomi
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-201605117262
https://urn.fi/URN:NBN:fi:amk-201605117262
Tiivistelmä
Insinöörityön tavoitteena oli toteuttaa helposti laajennettava roguelike-peli, joka sisältää proseduraalisen sisällön luomisen ja tekoälyn ohjaamia objekteja. Peli toteutettiin C++-ohjelmointikielellä uusimman C++14-standardin mukaisesti ja kehityksessä käytettiin apuna libtcod- eli ”The Doryen Library” -kirjastoa. Pelin moottorista pyrittiin tekemään suorituskykyinen.
Työssä toteutetun pelin sisältö luodaan proseduraalisesti. Määritellyt muuttujat vaikuttavat generoinnin tulokseen, jolloin sisältö on pseudo-satunnaisesti luotua. Pelin alueet generoidaan hyödyntäen toteutusta varten kehitettyjä algoritmeja ja A*- ja flood fill -algoritmien räätälöityjä toteutuksia. Peliin myös luotiin sen peliobjektihierarkian kattava harvinaisuus-järjestelmä, joka vaikuttaa objektien ominaisuuksiin ja niiden esiintymistiheyteen pelin simulaatiossa. Pelin objekteja ohjaamaan toteutettiin tilakoneperiaatteella toimiva tekoäly, joka käyttää A*- ja ”ray casting” -algoritmeja päätösten teossa. Lisäksi peliin toteutettiin näppäinkomennoilla ohjattava käyttöliittymä ja partikkeliefektit.
Libtcod-kirjastosta käytettyjä ominaisuuksia, jotka työn toteutuksen kannalta havaittiin puutteellisiksi, korvattiin työssä toteutetuilla sopivammilla ratkaisuilla. Toteutuksessa jatkokehitystä vaativiksi osa-alueiksi osoittautuivat käyttöliittymän toteutus ja harvinaisuus-järjestelmän liitos pelin objekteihin.
Pelistä saatiin kehitettyä versio, johon on luotu suppea sisältö esittämään pelimoottorin toiminnallisuutta. Toteutettu moottori on käyttökelpoinen ja suorituskykyinen pelin jatkokehitykseen, ja sen osia on mahdollista käyttää myös erikseen uusissa projekteissa.
Työssä toteutetun pelin sisältö luodaan proseduraalisesti. Määritellyt muuttujat vaikuttavat generoinnin tulokseen, jolloin sisältö on pseudo-satunnaisesti luotua. Pelin alueet generoidaan hyödyntäen toteutusta varten kehitettyjä algoritmeja ja A*- ja flood fill -algoritmien räätälöityjä toteutuksia. Peliin myös luotiin sen peliobjektihierarkian kattava harvinaisuus-järjestelmä, joka vaikuttaa objektien ominaisuuksiin ja niiden esiintymistiheyteen pelin simulaatiossa. Pelin objekteja ohjaamaan toteutettiin tilakoneperiaatteella toimiva tekoäly, joka käyttää A*- ja ”ray casting” -algoritmeja päätösten teossa. Lisäksi peliin toteutettiin näppäinkomennoilla ohjattava käyttöliittymä ja partikkeliefektit.
Libtcod-kirjastosta käytettyjä ominaisuuksia, jotka työn toteutuksen kannalta havaittiin puutteellisiksi, korvattiin työssä toteutetuilla sopivammilla ratkaisuilla. Toteutuksessa jatkokehitystä vaativiksi osa-alueiksi osoittautuivat käyttöliittymän toteutus ja harvinaisuus-järjestelmän liitos pelin objekteihin.
Pelistä saatiin kehitettyä versio, johon on luotu suppea sisältö esittämään pelimoottorin toiminnallisuutta. Toteutettu moottori on käyttökelpoinen ja suorituskykyinen pelin jatkokehitykseen, ja sen osia on mahdollista käyttää myös erikseen uusissa projekteissa.