Hahmojoukon tekoälytoteutus tarvejärjestelmän avulla
Luukkonen, Ella (2019)
Luukkonen, Ella
2019
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-2019120123723
https://urn.fi/URN:NBN:fi:amk-2019120123723
Tiivistelmä
Insinöörityössä tutkittiin yleisimpiä tekoälymenetelmiä videopeleissä etenkin pelihahmotekoälyn toteutuksessa. Tarkoituksena oli luoda peliprojektiin tekoäly, joka ohjaa pelihahmojoukon toimintaa. Peliprojekti ja tekoälytoteutus toteutettiin Unity-pelimoottoria ja C#-ohjelmointikieltä käyttäen. Tekoälyjärjestelmäksi valittiin niin kutsuttu ”tarvejärjestelmä”.
Insinöörityön tutkintavaiheessa selvitettiin tekoälyn määritelmää videopeleissä ja niiden ulkopuolella. Tarkemmin perehdyttiin muutamiin käytetyimpiin menetelmiin pelitekoälyn alalla, kuten tilakoneeseen, polunetsintä- ja tiedonoppimisalgoritmeihin.
Tutkinta- ja suunnitteluvaiheessa havaittiin eri tekoälymenetelmien sopivan erilaisiin ratkaisuihin, ja tämän perusteella saatiin rajattua sopivaa menetelmää, jota lopulta käytettäisiin insinöörityössä. Tekoälyn pitäisi pystyä vaihtamaan pelihahmon toimintaa pelin aikana ja tarpeiden evaluointi tulisi tapahtua tavalla, joka saisi aikaan järkevän pelikokemuksen pelaajalle.
Lopulliseksi toteutustavaksi työhön valittiin tarvejärjestelmä, joka mahdollistaa pelihahmolle useita erilaisia toimintatapoja, jotka määräytyvät asetettujen tarpeiden mukaan. Pelihahmolle määriteltiin neljä eri tarvetilaa: normaali, ravitsemus, lepo ja pakoon juoksu. Toteutuneet tarpeet toimivat lähes suunnitellulla tavalla, muutamaa toimintahäiriötä lukuun ottamatta.
Insinöörityössä saatiin rakennettua toimiva pohja tekoälyratkaisulle, jossa pelihahmolla on neljä eri toimintatilaa. Toimintatiloja ohjaava tekoäly määrittää pelihahmon toiminnolle tarpeet, ja suoritettavaksi toiminnoksi valitaan toiminto, jolla on korkein tarvelukema. Tarpeita lasketaan Unity-pelimoottorissa olevien animaatiokäyrien avulla. Kolme neljästä tarpeesta toimii suunnitelman mukaisesti. Lepotarpeen evaluointiin jäi laskentavirhe, jota ei ehditty korjaamaan. Toteutunut ratkaisu on kuitenkin toimiva pohja tekoälyn toimintojen kehittämiselle.
Insinöörityön tutkintavaiheessa selvitettiin tekoälyn määritelmää videopeleissä ja niiden ulkopuolella. Tarkemmin perehdyttiin muutamiin käytetyimpiin menetelmiin pelitekoälyn alalla, kuten tilakoneeseen, polunetsintä- ja tiedonoppimisalgoritmeihin.
Tutkinta- ja suunnitteluvaiheessa havaittiin eri tekoälymenetelmien sopivan erilaisiin ratkaisuihin, ja tämän perusteella saatiin rajattua sopivaa menetelmää, jota lopulta käytettäisiin insinöörityössä. Tekoälyn pitäisi pystyä vaihtamaan pelihahmon toimintaa pelin aikana ja tarpeiden evaluointi tulisi tapahtua tavalla, joka saisi aikaan järkevän pelikokemuksen pelaajalle.
Lopulliseksi toteutustavaksi työhön valittiin tarvejärjestelmä, joka mahdollistaa pelihahmolle useita erilaisia toimintatapoja, jotka määräytyvät asetettujen tarpeiden mukaan. Pelihahmolle määriteltiin neljä eri tarvetilaa: normaali, ravitsemus, lepo ja pakoon juoksu. Toteutuneet tarpeet toimivat lähes suunnitellulla tavalla, muutamaa toimintahäiriötä lukuun ottamatta.
Insinöörityössä saatiin rakennettua toimiva pohja tekoälyratkaisulle, jossa pelihahmolla on neljä eri toimintatilaa. Toimintatiloja ohjaava tekoäly määrittää pelihahmon toiminnolle tarpeet, ja suoritettavaksi toiminnoksi valitaan toiminto, jolla on korkein tarvelukema. Tarpeita lasketaan Unity-pelimoottorissa olevien animaatiokäyrien avulla. Kolme neljästä tarpeesta toimii suunnitelman mukaisesti. Lepotarpeen evaluointiin jäi laskentavirhe, jota ei ehditty korjaamaan. Toteutunut ratkaisu on kuitenkin toimiva pohja tekoälyn toimintojen kehittämiselle.