Tekoälyn toteutus 2D-tasohyppelypelissä
Tarsala, Erika (2021)
Tarsala, Erika
2021
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-2021120523860
https://urn.fi/URN:NBN:fi:amk-2021120523860
Tiivistelmä
Tekoäly on laaja ja jatkuvasti kehittyvä ala, jonka soveltaminen videopeleissä eroaa merkittävästi sen muista käyttökohteista. Tämän insinöörityön tavoitteena on tutustua tekoälyyn käsitteenä ja sen eri osa-alueisiin sekä erityisesti tekoälyn hyödyntämiseen videopeleissä ja niiden kehityksessä. Tutkimuksessa tarkastellaan käytetyimpiä tekoälymenetelmiä peleissä, kuten äärellistä tilakonetta ja reitinhakua. Lisäksi käydään hieman läpi, mihin suuntaan kehitys on alalla menossa.
Teoriaosuuden lisäksi tutkimuksen tueksi suunniteltiin ja toteutettiin myös yksinkertainen tasohyppelypeli Unitylla ja C#-ohjelmointikielellä. Siinä tarkastellaan muutamaa yleisintä tapaa hyödyntää tekoälymenetelmiä tämänkaltaisessa pelissä. Monia näistä menetelmistä voidaan soveltaa riippumatta pelin monimutkaisuudesta tai siitä, onko se toteutettu 2D- vai 3D-ympäristössä. Perusperiaatteiltaan algoritmien toimintatavat ovat kuitenkin samanlaisia riippumatta näistä seikoista. Esimerkkipelissä keskitytään kuitenkin melko yksinkertaisiin tekniikoihin, jotka soveltuvat käytettäväksi kyseisessä peligenressä.
Pelissä toteutettiin yksinkertainen tekoäly tietokoneohjattuun hahmoon yhdistelemällä erilaisia tekniikoita itsenäiseen liikkumiseen ja ympäristön havaitsemiseen. Lisäksi rakennettiin äärellinen tilakone kahta eri tekniikkaa käyttäen. Yksittäisellä pelihahmolla on useita erilaisia tiloja, kuten hyökkäys ja partiointi, ja se voi olla vain yhdessä niistä kerrallaan. Lisäksi tutustuttiin hieman A*-reitinhakualgoritmin toimintaan käytännössä.
Lopputuloksena saatiin rakennettua toimiva peli siihen soveltuvaa tekoälyä hyödyntäen. Käytetyt tekoälymenetelmät saatiin toimivaan suunnitellun mukaisesti. Peli soveltuu myös hyvin jatkokehitykseen, eli sitä voitaisiin laajentaa lisäämällä esimerkiksi enemmän kenttiä ja erilaisia vihollisia, joiden toiminnan ohjaamisessa voisi hyödyntää myös muita kuin tässä projektissa käytettyjä tekoälyalgoritmeja. Myös proseduraalista generointia olisi mahdollista toteuttaa tällaisessa pelissä.
Teoriaosuuden lisäksi tutkimuksen tueksi suunniteltiin ja toteutettiin myös yksinkertainen tasohyppelypeli Unitylla ja C#-ohjelmointikielellä. Siinä tarkastellaan muutamaa yleisintä tapaa hyödyntää tekoälymenetelmiä tämänkaltaisessa pelissä. Monia näistä menetelmistä voidaan soveltaa riippumatta pelin monimutkaisuudesta tai siitä, onko se toteutettu 2D- vai 3D-ympäristössä. Perusperiaatteiltaan algoritmien toimintatavat ovat kuitenkin samanlaisia riippumatta näistä seikoista. Esimerkkipelissä keskitytään kuitenkin melko yksinkertaisiin tekniikoihin, jotka soveltuvat käytettäväksi kyseisessä peligenressä.
Pelissä toteutettiin yksinkertainen tekoäly tietokoneohjattuun hahmoon yhdistelemällä erilaisia tekniikoita itsenäiseen liikkumiseen ja ympäristön havaitsemiseen. Lisäksi rakennettiin äärellinen tilakone kahta eri tekniikkaa käyttäen. Yksittäisellä pelihahmolla on useita erilaisia tiloja, kuten hyökkäys ja partiointi, ja se voi olla vain yhdessä niistä kerrallaan. Lisäksi tutustuttiin hieman A*-reitinhakualgoritmin toimintaan käytännössä.
Lopputuloksena saatiin rakennettua toimiva peli siihen soveltuvaa tekoälyä hyödyntäen. Käytetyt tekoälymenetelmät saatiin toimivaan suunnitellun mukaisesti. Peli soveltuu myös hyvin jatkokehitykseen, eli sitä voitaisiin laajentaa lisäämällä esimerkiksi enemmän kenttiä ja erilaisia vihollisia, joiden toiminnan ohjaamisessa voisi hyödyntää myös muita kuin tässä projektissa käytettyjä tekoälyalgoritmeja. Myös proseduraalista generointia olisi mahdollista toteuttaa tällaisessa pelissä.
