Tekoäly peleissä Agentit Tekniikoita Toimintapelit Taktiset pelit
Tekoäly Mitä on tekoäly? laskennallinen rationaalisuus nyt älykäs ei välttämättä ole sitä myöhemmin ajattelu vai toiminta ihmismäisyys vai rationaalisuus Poikkitieteellinen ala: filosofia, matematiikka, psykologia, tietotekniikka, lääketiede, robotiikka, kielitiede Paljon matemaattisia menetelmiä
Agentti Tekoälyllä varustettu olio usein ympäristöstään irrallinen toimija, jota kutsutaan agentiksi Agentin osat: sensorit, aktuaattorit, muisti, tiedonkäsittely Agentti toimii jossakin rajatussa ympäristössä Maailman luokittelua: havainnoitavuus, deterministisyys, episodisuus, dynaamisuus, diskreettisyys, agenttien määrä
Tekoäly peleissä Peleissä tekoälyn tavoitteina mm. luoda pelaajalle haastetta, elävöittää ja monipuolistaa maailmaa Vaatimukset hyvin erilaisia eri peleissä Tarvitaanko verkkopeleissä tekoälyä? kaikki haluavat olla sankareita, joten MMOpeleissäkin tarvitaan taviksia
Pelit vs. teknillistieteellinen Tekniikassa tekoälyllä pyritään ratkaisemaan ongelmia, peleissä luomaan illuusio järjestä Monissa peleissä tekoälyn on tarpeen tehdä tahallaan virheitä Peleissä maailma on hallittavissa ja omalla puolella : voidaan tarvittaessa huijata Peleissä usein kovemmat reaaliaikavaatimukset
Tekoäly peleissä Tekoälytutkimusta on tehty pitkään, mutta vain pieni osa siitä on hyötykäytössä peleissä Monet menetelmät vaativat paljon prosessoritehoa, mutta sitä ei usein haluta käyttää tekoälyyn Peliagentilta toivotaan luotettavuutta: aina vähintään kohtuullisia päätöksiä Oppivia järjestelmiä näkee silloin tällöin peleissä, mutta ennustettavuus on ongelma
Agentteja peleissä Ilmeisimmät tekoälyagentit peleissä sivuhahmot: vastustajat, apulaiset jne. Myös muita: kameran ohjaus, tutoriaalit, fysiikkaengine, avatarin automatiikka, ohjaaja Agentti: olio, joka tekee havaintoja pelimaailmasta ja suorittaa itsenäisesti niistä riippuvia toimintoja Tekoälyä eri tasolla: strategian suunnittelusta yksittäisten esineiden toimintaan
Agentteja peleissä Laird ja Lent luokittelevat pelitekoälyjä: taktiset vastustajat (esim. FPS-botit, autopelit) ystävät (roolipelit, urheilupelin joukkuekaverit) tukihahmot (opastavat pelaajaa, neuvonantajat) strategiset vastustajat (suunnittelee, strategiapelit) Muita: simulaatiohahmot, selostajat, dynamiikka (juoni, fysiikka, sää,...), pelaajan sijainen Toteutustekniikoita useita Tekniikoita voi yhdistellä ja luoda hierarkioita
Tekniikoita Peleissä käytettyjä perustekniikoita: Tilakoneet Päätöspuut Logiikka, sumea logiikka, sääntöjärjestelmät Tila-avaruushaku, polunetsintä Neuroverkot Geneettiset algoritmit Parveilualgoritmit Influence map
Tilakoneet Äärelliset tilakoneet (finite state machine, FSM) on ehkä eniten peleissä käytetty tekniikka Toiminta intuitiivista, joten myös pelisuunnittelijoiden käytössä Äärellinen määrä tiloja ja siirtymiä niiden välillä Tavoitteet määräytyvät sen mukaan, missä tilassa ollaan Havainnot maailmasta aiheuttavat tilasiirtymiä
Epädeterminismi Epädeterministisessä tilakoneessa sama syöte voi aiheuttaa eri tilasiirtymän Ilman tätä toiminta on aina samanlaista Käytännössä esim. tilasiirtymien todennäköisyydet todennäköisyyksiä voidaan päivittää agentin oppiessa
Rinnakkaisuus Samaakin agenttia voi ohjata useilla rinnakkaisilla tilakoneilla, joista kukin voi olla hyvinkin yksinkertainen Toimii parhaiten, jos tilakoneet ovat toisistaan riippumattomat Tilakoneita voi synkronisoida esim. jaetulla muistilla tai yhteisillä tilasiirtymillä Synkronisoiduilla tilakoneilla voi toteuttaa myös pienen tiimitekoälyn
Etuja ja haittoja Tilakoneiden hyviä puolia: paljon tutkimusta ja teoreettista taustaa helppo esittää ymmärrettävästi sopivat hyvin alimmalle, taktiselle tasolle Huonoja puolia: paisuvat nopeasti jos niillä yritetään mallintaa liikaa sellaisenaan rajoittuneita helposti liian ennalta-arvattavia, oppiminen vaikeaa
Päätöspuut Päätöspuut (decision trees) ovat yksinkertainen tapa aikaansaada rationaalista toimintaa Koostuvat kysymyksistä (usein binäärisiä), joiden vastaus määrää, mihin lapseen edetään Solmussa on haluttu toiminta (tai hierarkisen puun tapauksessa toinen päätöspuu) Oikeastaan siis vastaavat kasaa if-lauseita Yhdistäminen tilakoneisiin: suoritettava tilasiirtymä valitaan päätöspuun avulla
Päätöspuut Varsinaisesti hyödyllisiä päätöspuista tulee, kun niitä aletaan muodostaa saadun palautteen perusteella lennossa Hyvin yksinkertaisesti toteutettava oppiminen Esim. Black & White ja Quinlanin ID3-algoritmi Perustuu informaatioteoriaan: otetaan saadusta palautteesta maksimaalinen hyöty päätöspuun kysymyksillä Laajempi versio: behavior trees
Tila-avaruushaku Tila-avaruushaun idea on tutkia toimintojen mahdollisia seurauksia etukäteen ja löytää näin paras tai ainakin kelvollinen toiminto Maailma diskretisoidaan; tila-avaruuden tila vastaa maailman yhtä tilaa ja siirtymät niiden välillä mahdollisia toimintoja Tila-avaruus luodaan agentin saatavilla olevista tiedoista maailman toiminnasta (säännöistä) Syntyy puumainen rakenne, jonka juurena on tämänhetkinen tilanne
Tila-avaruushaku Tila-avaruus sisältää kaikki tilat, joita tästä tilasta voi sääntöjen mukaisesti seurata Pyritään valitsemaan toimintojen sarja, jonka seurauksena tila on agentille edullisin Useimmissa peleissä tila-avaruus on liian laaja edes rakennettavaksi kokonaan Lisäksi yleensä kaikki tekijät eivät ole agentin hallittavissa: viholliset, satunnaisuus Jako omiin siirtoihin ja muihin siirtoihin
Tila-avaruushaku Koska tila-avaruutta ei rakenneta pelin loppuun saakka, täytyy lehtisolmujen arvo määritellä Esim. shakissa voi kannattaa uhrata kuningatar, jos seuraavalla vuorolla saa matin; mutta jos puu katkeaa tässä välissä, voi uhraus näyttää erittäin huonolta idealta Käytännössä tila-avaruuden karsiminen jollakin menetelmällä on pakollista, ja tätä varten solmujen arvon arviointi on keskeistä Algoritmeja: A*, min-max, alfa-beta-karsinta
Tila-avaruushaku Tila-avaruushakua käytetään eniten lautapeleissä ja abstrakteissa strategiapeleissä lautapeleissä usein alfa-beta-karsintaa rubikin kuution ratkaisemiseen A* Modernien pelien tila-avaruudet olisivat hyvin laajoja ja diskretisointi hankalaa Moderneissa peleissä on silti joitakin osaalueita, joihin tila-avaruushaku sopii Polunetsintä (A* muunnelmineen)
Sääntöjärjestelmät Sääntöjärjestelmät (Rule-Based Systems) perustuvat loogiseen päättelyyn Säännöt ovat muotoa ehto reaktio Reaktio ei välttämättä ole toiminto, vaan se voi olla myös havainto tai päätelmä Sääntöjärjestelmän osat: säännöt, muisti, tulkki Käytetään paljon asiantuntijajärjestelmissä Säännöt voivat olla esim. propositio-, predikaatti- tai sumeaa logiikkaa
Sääntöjärjestelmät Esimerkki: näkyy(vihollinen) pakene() nälkä AND hallussa(ruoka) syö(ruoka), NOT hallussa(ruoka) nälkä AND näkyy(ruoka) poimi(ruoka), hallussa(ruoka) nälkä etsi(ruoka) TRUE nuku() Tässä valitaan ensimmäinen, jonka ehto toteutuu (voisi olla myös paras, tarkin,...)
Sääntöjärjestelmät Hyviä puolia: yksinkertainen ja luonnollinen modulaarinen (sääntöjä helppo lisätä ja poistaa) valmiita ratkaisuja olemassa Huonoja puolia: yksinkertaisuudesta johtuen arvattava hidas, jos sääntöjä on paljon ei sovellu pitkän tähtäimen suunnitteluun
Suunnittelu Loogista päättelyä voi käyttää myös pidemmälle suunnittelevien, tavoitteellisten agenttien toteutukseen Paljon tutkittu aihe sekä teknistieteellisellä alalla että peleissä Maailma kuvataan formaalisti, esim. logiikalla Agentilla käytössään sääntöjä, jotka koostuvat esiehdosta (milloin sääntöä voi käyttää), toiminnosta (mitä tehdään) ja jälkiehdosta (millainen maailma on toiminnon jälkeen)
Suunnittelu Agentti toimii seuraavasti (regression planning): Valitaan tavoite (voi olla kiinteä) Tutkitaan, minkä sääntöjen jälkeen tavoite voisi toteutua Niin edelleen etsitään, minkä sääntöjen avulla niiden esiehdot tulevat voimaan Jatketaan kunnes löydetään polku nykytilasta tavoitteeseen Yo. kuvaus on hyvin abstrakti, käytännössä menetelmiä on erilaisia
Suunnittelu Käytännön peleissä ei niin helppoa, koska sääntöjä ja faktoja on liikaa Esiehtojen määrä säännöissä voi olla valtava Esim. Matti haluaa leipää, jota saa kaupasta Esiehtoja: Matilla rahaa, kaupassa leipää, kauppa auki, kauppias elossa, ei zombieinvaasiota matkan varrella... Jos itsestäänselvä esiehto unohtuu mainita mallissa, koko suunnitelma voi epäonnistua Partial order planner, GOAP
Neuroverkot Neuroverkot jäljittelevät ihmisaivojen toimintaa Verkko koostuu neuroneista ja niiden välisistä yhteyksistä (Yleensä) järjestetään kerroksiksi: syötekerros, 0 tai useampia välikerroksia, ulostulokerros Jokaisesta neuronista yhteys jokaiseen seuraavan kerroksen neuroniin Toiminta koodattuna yhteyksien painokertoimiin Oppiminen on painokertoimien muuttamista
Neuroverkot Painokertoimia muutetaan opetusnäytteiden perusteella, yleisin algoritmi tähän on nimeltään back-propagation Neuroverkko lopultakin oppii vain jonkin funktion syötteen ja ulostulon välillä Oppiminen vaatii paljon laskemista Esim. autopelin kuski: syötteinä näkyvät esteet sijainteineen, ulostuloina kaasu/jarru, ohjaus Läpinäkyvyyden puute pahin ongelma
Geneettiset algoritmit Geneettisissä algoritmeissa (GA) matkitaan luonnonvalintaa Pidetään yllä populaatiota, jossa seuraava sukupolvi muodostetaan risteyttämällä (enimmäkseen) parhaiten menestyviä yksilöitä Risteytys esim. koodaamalla yksilöt bittijonoiksi ja ottamalla alkuosa toiselta, loppuosa toiselta vanhemmalta Yleensä lisäksi mutaatioita
Geneettiset algoritmit Mutaatioiden määrä täytyy valita niin, ettei kehitys jähmety, mutta populaatio pysyy kuitenkin elinkelpoisena Parhaiden valintaa varten täytyy suorittaa jonkinlainen evaluaatio, mikä voi olla vaikeaa tai ainakin työlästä Jos yksilöt esim. pelistrategioita, evaluaatio voi olla pelien pelaamista toisia yksilöitä vastaan Tuottaa kohtalaisia, mutta harvoin optimaalisia tuloksia
Geneettiset algoritmit Sukupolvia voidaan tarvita paljon, joten ei välttämättä sovi reaaliaikaiseen peliin Voidaan kuitenkin käyttää etukäteen vaikkapa pelistrategian optimoimiseen Joskus yksinkertainen hill climbing tms. voi olla helpompaa ja tuottaa nopeammin ratkaisuja GA usein pelkkä hypetermi Tosin evoluution seuraaminen sinänsä on hauskaa, joten joissakin peleissä GA:n toiminta ja hienovarainen ohjailu on osa itse sisältöä
Parveilu Parveilu (flocking) mallintaa yksinkertaisista olioista muodostuvien joukkojen käyttäytymistä Esimerkiksi linnut, kalat, muurahaiset Muurahaiset ja polunetsintä feromoneilla Käytetään etenkin sivuhahmojen kuten ihmismassojen liikkumisen luomiseen Boids: ero, suuntaus, yhtenäisyys ajateltavissa voimakenttien avulla, jolloin esteet ovat luotaantyöntäviä
A-life Keinoelämä (A-life, artificial life) viittaa elämän simuloimiseen keinotekoisessa ympäristössä Ei yksittäinen tekniikka, vaan laaja käsite, a- lifeä voi esiintyä monella tasolla Esim. ekosysteemit ja päämäärälliset ihmiset Peleissä voi olla yksinkertaisimmillaan vain sitä, että pelin hahmoja päivitetään vaikka ne eivät ole lähellä pelaajaa Sim-sarjan pelit, S.T.A.L.K.E.R.
Muita menetelmiä Sims ja fiksu maasto esineet osaavat kertoa hahmoille, mitä tarpeita ne tyydyttävät ja miten niitä käytetään mainostus, mitä lähempänä esine on, sitä enemmän se vaikuttaa hahmoon koska toiminnallisuus on esineissä eikä itse pelissä, pelistä tulee hyvin laajennettava Creatures ja kemialliset eritteet tunteet aiheuttavat hahmoille yhdisteiden eritystä muiden jättämät eritteet vaikuttavat hahmoon
Polunetsintä Polunetsintä on hyvin yleinen ongelma peleissä Lokaalit menetelmät ottavat huomioon van lähialueen: ihmismäisiä Globaalit menetelmät vastaavat ihmisen toimintaa, kun käytössä on kartta Jos maasto ei suoraan ruudukko, jaetaan konvekseihin soluihin ja portaaleihin Syntyy navigaatioverkko Algoritmeja: törmää ja käänny, Dijkstra, A* A*:stä erilaisia versioita: IDA* ym.
Toimintapelin AI Muutamia perusideoita, joita toimintapelin AI voi hyödyntää käytöksessään katsominen: käännytään kohti seuraaminen: katsotaan ja liikutaan eteenpäin ennakointi: kohteen tulevan sijainnin arviointi pakeneminen: katsotaan poispäin ja liikutaan välietapit (waypoints): vuorotellen kohteeksi ennalta määrättyjä pisteitä, joiden välillä partioidaan esim. käytetään välietappeja jos pelaajaa ei näy, muuten seurataan pelaajaa
Toimintapelin AI suojautuminen: etsitään lähin este, vedetään suora pelaajasta esteen keskipisteen kautta ja liikutaan mahdollisimman suoraan tämän suoran varrelle esteen taakse yllättäminen: suojan takaa voi hyökätä kun agentti ei enää ole pelaajan näköfrustumin alueella ampuminen: usein muistuttaa seuraamista (ennakoinnilla tai ilman), mutta esim. konekiväärillä voi olla erilaista joukkuetaktiikat: suojatuli, parit, piiritys tilakoneet yleisin tekniikka
Maaston piirteet Usein tekoälylle on avuksi, jos sille on etukäteen merkitty kenttään hyödyllisiä piirteitä polunetsinnän nopeutus: valmiit reitit, konveksi jako suojat, kyttäyspaikat, hyökkäyssuunnat, kapeikot autopeleissä optimaalinen ajolinja Näiden löytäminen automaattisesti on hankalaa tai ainakin aikaavievää Usein kenttäsuunnittelijan työtä, mutta silloin niitä täytyy päivittää kentän muuttuessa
Ryhmän liike Tekoäly liikuttaa usein joukkoa yksiköitä Esim. RTS:ien muodostelmat Synkronisoidut tilakoneet eivät välttämättä toimi, koska yksiköitä on helposti liikaa Parveilualgoritmit (boids) Sotilaallisessa muodostelmassa pysymiselle korkeampi painoarvo: voimakenttä, joka vetää kohti sotilaan oikeaa sijaintia muodostelmassa Avaruuden osittavat tietorakenteet avuksi
Influence map Ihminen näkee taistelukentästä heti, missä on kunkin puolen vahva alue ja missä on rintamia Tekoäly ratkoo ongelmaa influence mapilla Kartta jaetaan ruudukkoon Vaihtoehtoisesti käytetään navigaatioverkkoa, erityisesti jos pelimaailma on aidosti 3d Merkitään kartalle esim. omat (+) ja viholliset (-) Myös väliaikaiset uhat, esim. kranaatin räjähdys Yksikön tyyppi (kesto, vahinko) voi vaikuttaa kertoimena arvoihin
Influence map Vaikutus levitetään ympäristöön etäisyyden mukana vähenevän funktion avulla Vähenee nopeasti esteiden suuntaan Verkossa leviää vain yhteyksien suuntaan esim. eksponenttifunktio tai lineaarinen Kokonaisvaikutus summa yksiköiden kentistä Päivityksessä jätetään jokin osuus vanhasta arvosta voimaan (momentum) Päivitysväli esim. 0,2 s... 5 s pelistä riippuen
Influence map Kartasta voi tehdä monenlaisia analyysejä Positiiviset alueet omien hallussa, negatiiviset vihollisen Rintama on siellä, missä arvot ovat lähellä nollaa Jos kahden vahvan vihollisalueen välillä on heikko alue, isku sinne saattaa jakaa vihollisen kahtia Aikaderivaatan avulla näkee isot hyökkäykset Turvallisten reittien etsintä Suuri gradientti kuvaa kiisteltyä aluetta
Strateginen suunnittelu Esim. RTS-pelin tekoäly koostuu usein kahdesta kerroksesta: yksittäiset yksiköt kuten toimintapeleissä (tilakone tms.) Ylemmällä tasolla strateginen äly Vastaava äly myös strategiapeleissä, mutta hierarkiassa voi olla useampia kerroksia Käytettyjä tekniikoita sääntöpohjaiset järjestelmät, käsin tehdyt skriptit, suunnittelualgoritmit, influence mapit