Geneerisen korttipelimoottorin suunnittelu
Eerio, Jussi Aulis (2014)
Eerio, Jussi Aulis
2014
Tietotekniikan koulutusohjelma
Tieto- ja sähkötekniikan tiedekunta - Faculty of Computing and Electrical Engineering
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2014-10-08
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201409301464
https://urn.fi/URN:NBN:fi:tty-201409301464
Tiivistelmä
Erilaiset korttipelit ovat jo pitkään olleet suosittuja ympäri maailmaa. Tämän vuoksi ei ole yllättävää, että niistä on vuosien mittaan tehty myös digitaalisia versioita. Lähes jokaisen tietokoneen mukana tulevan pasianssin lisäksi myös monet erilaiset keräilykorttipelit ovat saaneet omat digitaaliset vastineensa. Näistä tunnetuin on Magic: The Gathering, josta on toteutettu useita erilaisia digitaalisia versioita sekä alkuperäisen korttipelin julkaisijan että fanien toimesta.
Keräilykorttipelien digitalisoinnissa on monenlaisia ongelmia. Niiden perussäännöt ovat yleensä pohjimmiltaan yksinkertaiset, mutta monet kortit joko lisäävät, muuttavat tai kiertävät näitä perussääntöjä. Yksi toteutuksen haasteista on näiden poikkeuksien huomioiminen. Keräilykorttipelit ovat myös hyvin monimuotoisia. Jokaisella keräilykorttipelillä on omat korttityyppinsä ja niiden toimintaan liittyvät sääntönsä, minkä vuoksi suurin osa korttipelimoottoreista tukee vain yhtä korttipeliä. Korttipelin sääntöjen toteutuksen lisäksi myös korttipelien pelattavuuden takaaminen tarjoaa omat haasteensa. Kasvotusten pelatessa pelaajat voivat siirtyä vaiheesta toiseen hyvin nopeasti. Keskeisenä ongelmana on pelin sujuvuuden ja salaisen informaation säilyttämisen välinen ristiriita.
Tässä diplomityössä tavoitteena oli suunnitella geneerinen korttipelimoottori, jonka päälle olisi mahdollista rakentaa toteutus periaatteessa mille tahansa keräilykorttipelille. Korttipelimoottorin suunnittelussa päädyttiin hyödyntämään liitännäispohjaista sovelluskehitystä. Liitännäisiä hyödyntämällä sovellus voidaan jakaa geneeriseen, kaikille korttipeleille yhteiseen toteutukseen ja sen päällä toimiviin korttipelikohtaisiin toteutuksiin. Osana suunnittelutyötä lähdettiin kehittämään prototyyppiä geneerisen osion tarvitsemien ominaisuuksien määrittelemiseksi. Prototyyppi sisälsi geneerisen korttipelimoottorin ja sen päällä toimivan yksinkertaisen korttipelin toteutukset.
Työn tuloksena saatiin toteutettua proof-of-concept -prototyyyppi geneerisestä korttipelimoottorista ja sen päällä toimivasta korttipelitoteutuksesta. Prototyypin perusteella voidaan todeta, että liitännäispohjainen sovelluskehitys toimii hyvin geneerisen korttipelimoottorin toteutuksessa. Työn tulosten perusteella on hyvä jatkaa työn laajuuden ulkopuolelle jätettyjen osien suunnittelua ja geneerisen korttipelimoottorin toteutusta.
Keräilykorttipelien digitalisoinnissa on monenlaisia ongelmia. Niiden perussäännöt ovat yleensä pohjimmiltaan yksinkertaiset, mutta monet kortit joko lisäävät, muuttavat tai kiertävät näitä perussääntöjä. Yksi toteutuksen haasteista on näiden poikkeuksien huomioiminen. Keräilykorttipelit ovat myös hyvin monimuotoisia. Jokaisella keräilykorttipelillä on omat korttityyppinsä ja niiden toimintaan liittyvät sääntönsä, minkä vuoksi suurin osa korttipelimoottoreista tukee vain yhtä korttipeliä. Korttipelin sääntöjen toteutuksen lisäksi myös korttipelien pelattavuuden takaaminen tarjoaa omat haasteensa. Kasvotusten pelatessa pelaajat voivat siirtyä vaiheesta toiseen hyvin nopeasti. Keskeisenä ongelmana on pelin sujuvuuden ja salaisen informaation säilyttämisen välinen ristiriita.
Tässä diplomityössä tavoitteena oli suunnitella geneerinen korttipelimoottori, jonka päälle olisi mahdollista rakentaa toteutus periaatteessa mille tahansa keräilykorttipelille. Korttipelimoottorin suunnittelussa päädyttiin hyödyntämään liitännäispohjaista sovelluskehitystä. Liitännäisiä hyödyntämällä sovellus voidaan jakaa geneeriseen, kaikille korttipeleille yhteiseen toteutukseen ja sen päällä toimiviin korttipelikohtaisiin toteutuksiin. Osana suunnittelutyötä lähdettiin kehittämään prototyyppiä geneerisen osion tarvitsemien ominaisuuksien määrittelemiseksi. Prototyyppi sisälsi geneerisen korttipelimoottorin ja sen päällä toimivan yksinkertaisen korttipelin toteutukset.
Työn tuloksena saatiin toteutettua proof-of-concept -prototyyyppi geneerisestä korttipelimoottorista ja sen päällä toimivasta korttipelitoteutuksesta. Prototyypin perusteella voidaan todeta, että liitännäispohjainen sovelluskehitys toimii hyvin geneerisen korttipelimoottorin toteutuksessa. Työn tulosten perusteella on hyvä jatkaa työn laajuuden ulkopuolelle jätettyjen osien suunnittelua ja geneerisen korttipelimoottorin toteutusta.