AI-genererte spillkarakterer

Harald Vinje og Eirik Skjærseth

Del:

6. oktober 2021

4 min lesning

Kategorier:AIGame development

De fleste IT-interesserte har nok fått med seg at kunstig intelligens (AI) er i vinden, både i industrien og som forskningsfelt. Kombinasjonen av spill og AI er heller ikke et fremmed konsept for de fleste. I spillverden utforskes AI-metoder som oftest for å spille et eller flere spill bedre enn mennesker, noe vi så med for eksempel AlphaGo Zero og AlphaZero. Men visste du at AI også kan brukes til mer kreative oppgaver, som å generere spill for mennesker? Det var dette vi utforsket i masteroppgaven vår!

Picture of the 2D game Sol

Mer spesifikt var målet å lage et system som kunne generere spillkarakterer i «fighting spill»- sjangeren. For å forklare dette hjelper det nok å trekke en parallell til et spill som står mange nær, Super Smash Bros. (Smash). Det siste spillet i serien «Smash Ultimate» består av over 70 karakterer, alle med et unikt sett med angrep og egenskaper. Det er utvilsomt en stor oppgave å designe alle disse karakterene, da de må være balanserte, morsomme og kanskje ikke for «gimmicky». Vi ville lage et system for å automatisere denne designprosessen ved bruk av AI-metoder, som et «proof of concept».

Smash er et relativt komplekst spill, som vi ikke har kildekoden til, men heldigvis for oss hadde vi i 2017 laget «Sol», et litt enklere fighting-spill som vi kunne bruke i stedet. Sol består av fire karakterer, og alle karakterene har tre angrep hver, i tillegg til egenskaper som størrelse og vekt. Som i Smash, så er målet i Sol å bygge opp skade hos motstanderne for å deretter dytte dem ut av banen. Systemet vårt skulle kunne generere nye karakterer til Sol. De genererte karakterene skulle være minst like morsomme som de eksisterende karakterene, uten noen som helst input fra mennesker under prosessen.

Da vi så gjennom eksisterende litteratur om å bruke AI for generering av spillkarakterer, fant vi fort ut at evolusjonære algoritmer er den mest brukte metoden for dette. Evolusjonære algoritmer fungerer veldig likt som evolusjonsprosessen vi kjenner fra biologien, derav navnet. Vi har et sett med individer som sammen utgjør en populasjon. Disse individene vurderes av en funksjon for å bestemme hvert individs fitness. De individene med høyest fitness velges ut til mutasjon og reproduksjon i neste generasjon, noe som gjør at vi får en ny og forhåpentligvis bedre populasjon. Denne prosessen gjentas helt til man selv går lei, PC-en går lei eller andre kriterier. I vårt tilfelle representerte hvert individ en karakter-konfigurasjon (hver karakter hadde en egen konfigurasjonsfil som beskrev alle egenskapene og angrepene deres).

Diagram showing the architecture of the Sol Evolution

Den største utfordringen med systemet vårt var spørsmålet om hvordan datamaskinen kan måle en karakters fitness. Vi ønsket jo å generere karakterer som er morsomme å spille, og da måtte fitness-funksjonen vår kunne måle hvor morsom hver enkelt karakter er. For å løse dette måtte vi dykke i litteratur etter egenskaper som gjør spill morsomme. Det som vi fant ut av og resonnerte oss frem til, var blant annet at mennesker liker karakterer som er balanserte, som kan bevege seg mye rundt, og hvor alle angrepene deres er nyttige og blir brukt. Disse aspektene kunne vi måle ved å simulere en kamp mellom en av våre eksisterende karakterer og en generert karakter. Kampene ble spilt av enkle regelbaserte AI-agenter, som ble monitorert av et program for å avgjøre fitnessen til karakterene.

For å til slutt vurdere hvor godt systemet vårt fungerte, arrangerte vi et lite LAN hvor testpersoner fikk prøve å spille alle karakterene uten å bli fortalt hvilke karakterer som var generert og hvilke som var skapt av oss. Resultatet viste faktisk at de maskingenererte karakterene i snitt ble evaluert som litt mer interessante å spille enn de menneskeskapte!

Masteroppgaven i sin helhet kan lastes ned her. En kort versjon av masteroppgaven ble publisert i GECCO conference, og kan lastes ned her.

Del: