Luentomuistiinpanot: Pelitekoäly - sepeliry/YhdistyksenToiminta GitHub Wiki

Luentomuistiinpanot : Pelitekoäly

Wednesday 05 November 2014 Timo Kellomäki, TTY (muistiinpanot J. Rasku)

Mikä on pelitekoälyä: Määrittelykysymys. Pääasiassa pelin hahmojen ja sen kaltaisten ohjailua, mutta sitä voi olla myös kameran, apurin, maailman ym. ohjaus.

Insinööritekoäly vs. pelitekoäly, Peleissä ei tarvita täydellisesti ongelmia ratkovaa älyä. Tavoitteena pelaajan flow ja viihtyminen. Keinona esim. tahalliset virheet ja ennaltaarvattavuus (onko pelin toiminnan oppiminen osa peliä)? Tavoitteena uskottava äly. Ilmaise myös päätelmät ja aikeet pelaajalle (tell; "pitää käydä vessassa", pomohirviön jytkyhyökkäyksestä varoittavat elkeet).

Tylsät ratkaisut: reittipisteet, katsekeila, ehdot (jos näkyy, hyökkää), skriptit (esim. RTS rakennusjärjestys). Tosin, nämä usein riittävätkin. Em. ratkaisuja voi laajentaa lisäämällä käyttäytymismalleja jolloin tosin koodin kompleksisuus kasvaa.

Paremmat ratkaisut:

  • Tilakone: Mahdollistaa monimutkaisen äly, joka on suunnittelmijan hallinnassa. Voi olla hierarkisia. Vaikeinta usein on animaatioiden hallinta dynaamisessa ympäristössä. Käyttäytyminen voidaan esittää ja sitä voidaan muokata visuaalisesti. Voidaan myös antaa hahmolle "tietoja", joiden perusteella tilakone muuttaa tilaansa.

  • Behaviour tree: HIerarkinen puu käyttäytymisille/tiloille. Haaran vailintaan voidaan vaikuttaa, ja myös puun muokkaus on mahdollista tilanteen mukaan (hahmo, komennot ect. Halo 2 paperi).

  • Tila-avaruushaku: Pelin maailman/kentän/laudan tilat puuhun ja sitten haketaan voittava tila. Perinnepeleihin: shakit ym. Äly on suunnittelijan puolesta syöttänyt tietämyksensä evaluaatiofunkitoon, joka kertoo kuinka hyvä tilanne on (jotta meidän ei tarvitse evaluoida KAIKKIA tiloja). Määrää voidaan myös rajoittaa rajoittamalla esim aikaa (2 sekuntia eteenpäin). Myös alpha-beta pruning. Uusinta uutta MCTS (Monte carlo tree search), jossa evaluaatioufnktio korvataan esim. 1000 satunnaisesti loppuun pelatulla pelillä. Haaroja voidaan myös painottaa sinne missä näyttää lupaavalta. Ei riippuvainen suunnittelijasta -> voidaan toteuttaa yleinen pelitekoäly.

Tosi hienot (liian hienot?) ratkaisut:

  • Suunnittelulähestymistapa: mallinnetaan pelimaailmaa ja sen tosiasioita ja tavoitetiloja ja toimintoja (esiehdot ja seuraukset). Sitten tässä tilapuussa etsitään reitti (esim A*). Esimerkkipeli F.E.A.R.

  • Evolutionary Algorithms (EA,GA) ja Artificial Neural Networks (ANN): Oppivia menetelmiä mutta ei näitä paljon käytetä peleissä. Pelitekoälyltä toivotaan ennustettavuutta, mutta EA ja ANN ovat "mustia laatikoita".

  • Kartta-analyysi: Pelimaailmaa kannatta analysoida tekoälylle: väijytyspaikat, ajolinjat ym.

  • Influence map: Lasketaan mitkä ympäristön alueet on oman puolen yksiköiden hallussa. Tieto voi vaikuttaa käyttäytymiseen. Mahdollista toteuttaa myös ajan mukaan hälvenevät jäljet, jolloin alue voidaan "rauhoittaa" hetkeksi. Tekniikalla voidaan laskea turvalliset alueet, konfliktipaikat ym. Toisena esimerkkitekniikkana KILLZONE, jossa lasketaan eri kartan eri sijainneille "hyvyysarvoja".