Simulointi peliohjelmoinnissa
Juhala, Miika (2023)
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2023060217399
https://urn.fi/URN:NBN:fi:amk-2023060217399
Tiivistelmä
Pelihahmojen ja ympäristön simulointi on olennainen osa pelinkehitystä. Tutkimuksessa käsitellään yhtä yleistä tapaa simuloida ei-pelattavien pelihahmojen, eli npc:n näkö- ja kuuloaisteja, sekä autonomista liikkumista pelimaailmassa. Tutkimus kertoo aiheista teoriaa, jonka jälkeen teoriassa läpi käydyt asiat havainnollistetaan käytännön ohjelmointiesimerkeillä. Pelinkehitykseen käytetään Unity-pelimoottoria, sekä joitain valmiita grafiikkamalleja.
Nykyaikaisessa pelikehityksessä pelimoottorit tarjoavat hyvän alustan tehokkaalle kehitykselle. Pelimoottorit tarjoavat alustan, joka sisältää usein kaikkia pelinkehitykseen tarvittavia työkaluja, kuten, ääni-, renderöinti-, tekoäly-, animointi- sekä fysiikkamoottorin. Nämä työkalut riittävät kokonaisuudessaan toimivan pelin kehittämiseen.
Pelisimuloinnissa yleistä kaikille simulointitavoille on havainnoi-ajattele-toimi-kierre, mikä kuvaa npc:n toiminnan vaiheita. Työssä käytetty simuloinnin tapa on päätelmäpuuhun perustuva seuraavan tavoitteen -menetelmä, jossa hahmo kerää ympäristöstään havaintoja, ja toimii niiden perusteella ennalta määrätyillä toimintamalleilla. Havainnot voivat olla esimerkiksi havaintoja pelihahmoista tai muista pelin sisäisistä asioista. Suuri osa havaintolistaan perustuvasta ohjelmoinnista on määrittelyä liittyen siihen kelpaavista havainnoista, listaan halutaan kerätä vain tiettyjä tapahtuman laukaisevia asioita, kun ne täyttävät ennaltamääritellyt ehdot. Havaintojen ehtoja voivat olla esimerkiksi pelimaailman ulkopuoleltakin tutut asiat, kuten näkö- tai kuuloesteet, näkökentän laajuus tai esimerkiksi muu aistin lamauttava asia, kuten kirkas valo tai muu kova samanaikainen ääni. Ajatteluvaihe kuvaa sitä vaihetta, joka määrittää toiminnan laadun, ajattelu muodostuu useasta muuttujasta havainnon perusteella. Toiminta taas tarkoittaa havainnon ja siitä seuranneen ajattelun tulosta, jossa npc suorittaa jonkinlaista toimintaa pelimaailmassa.
Npc:n simuloinnin toteutuksessa tuli esille selkeitä havaintoja, miten havainnointi ja rajoitukset toteutuvat käytännössä. Keskeistä havaintojen lukemisessa on npc:lle annettava havaintoalue, jossa havainnon tapahtuminen on mahdollista. Havainnon tuleminen tapahtuu lähettämällä npc:n keskipisteestä rajatulle alueelle jatkuvasti vektoreita, jotka kertovat osumasta kaikuluotaimen tapaan. Kun katsomissuuntaan lähtevä vektori on kosketuslinjassa toiseen objektiin, voidaan se laskea alustavaksi havainnoksi. Havaintoihin tarvitaan kuitenkin aistirajoituksia, kuten näköesteiden ja matkan rajoituksia. Rajoitukset toimivat myös vektoreiden avulla, vektorin osuessa matkalla olevaan näköesteeseen, ei esteen takana olevasta objektista tule havaintoa.
Nykyaikaisessa pelikehityksessä pelimoottorit tarjoavat hyvän alustan tehokkaalle kehitykselle. Pelimoottorit tarjoavat alustan, joka sisältää usein kaikkia pelinkehitykseen tarvittavia työkaluja, kuten, ääni-, renderöinti-, tekoäly-, animointi- sekä fysiikkamoottorin. Nämä työkalut riittävät kokonaisuudessaan toimivan pelin kehittämiseen.
Pelisimuloinnissa yleistä kaikille simulointitavoille on havainnoi-ajattele-toimi-kierre, mikä kuvaa npc:n toiminnan vaiheita. Työssä käytetty simuloinnin tapa on päätelmäpuuhun perustuva seuraavan tavoitteen -menetelmä, jossa hahmo kerää ympäristöstään havaintoja, ja toimii niiden perusteella ennalta määrätyillä toimintamalleilla. Havainnot voivat olla esimerkiksi havaintoja pelihahmoista tai muista pelin sisäisistä asioista. Suuri osa havaintolistaan perustuvasta ohjelmoinnista on määrittelyä liittyen siihen kelpaavista havainnoista, listaan halutaan kerätä vain tiettyjä tapahtuman laukaisevia asioita, kun ne täyttävät ennaltamääritellyt ehdot. Havaintojen ehtoja voivat olla esimerkiksi pelimaailman ulkopuoleltakin tutut asiat, kuten näkö- tai kuuloesteet, näkökentän laajuus tai esimerkiksi muu aistin lamauttava asia, kuten kirkas valo tai muu kova samanaikainen ääni. Ajatteluvaihe kuvaa sitä vaihetta, joka määrittää toiminnan laadun, ajattelu muodostuu useasta muuttujasta havainnon perusteella. Toiminta taas tarkoittaa havainnon ja siitä seuranneen ajattelun tulosta, jossa npc suorittaa jonkinlaista toimintaa pelimaailmassa.
Npc:n simuloinnin toteutuksessa tuli esille selkeitä havaintoja, miten havainnointi ja rajoitukset toteutuvat käytännössä. Keskeistä havaintojen lukemisessa on npc:lle annettava havaintoalue, jossa havainnon tapahtuminen on mahdollista. Havainnon tuleminen tapahtuu lähettämällä npc:n keskipisteestä rajatulle alueelle jatkuvasti vektoreita, jotka kertovat osumasta kaikuluotaimen tapaan. Kun katsomissuuntaan lähtevä vektori on kosketuslinjassa toiseen objektiin, voidaan se laskea alustavaksi havainnoksi. Havaintoihin tarvitaan kuitenkin aistirajoituksia, kuten näköesteiden ja matkan rajoituksia. Rajoitukset toimivat myös vektoreiden avulla, vektorin osuessa matkalla olevaan näköesteeseen, ei esteen takana olevasta objektista tule havaintoa.