Artificiell Intelligens i datorspel
av David Lindström
[email protected]
2010 – 03 – 05
Akademin för Innovation, Design och Teknik
Mälardalens Högskola
SAMMANFATTNING
Denna rapport diskuterar artificiell intelligens i dagens datorspel, där fokus ligger på
intelligenta agenter. Rapporten börjar med att snabbt försöka definiera begreppet AI för att
sedan jämföra AI i datorspel med AI i den akademiska världen.
Rapporten fortsätter sedan med att titta närmare på några av de vanligaste AI-teknikerna inom
datorspel, samt diskuterar för- och nackdelar med dessa. Tekniker som diskuteras är främst
Finite State Machines, planerare och skriptad AI, men nämner även neurala nät.
Rapporten avslutas med en sammanfattning av hur det ser ut idag och vad vi kan förvänta oss
i framtiden.
2
INNEHÅLLSFÖRTECKNING
INLEDNING .............................................................................................................................. 4 ARTIFICIELL INTELLIGENS I DATORSPEL ...................................................................... 4 Vad är AI? .............................................................................................................................. 4 AI inom datorspel jämfört med akademisk AI ................................................................... 4 Agenter är så intelligenta som de framstår ......................................................................... 4 Vad i datorspel räknas som AI? ......................................................................................... 5 Vanliga AI-tekniker i datorspel .............................................................................................. 5 Finite State Machines ......................................................................................................... 5 Planerare ............................................................................................................................. 6 Skriptade beteenden ........................................................................................................... 7 Andra tekniker .................................................................................................................... 8 AI som primär spelmekanism ................................................................................................ 8 SLUTSATSER ........................................................................................................................... 9 REFERENSER ........................................................................................................................... 9 3
INLEDNING
Sedan datorerna började finna vägar ut till allmänheten har de åtföljts av datorspel. De
tidigaste spelen var av enkel karaktär, mycket som en följd av datorernas begränsningar. Allt
eftersom datorerna blev kraftigare blev dock spelen mer och mer avancerade och det dröjde
inte länge innan utvecklare började använda sig av artificiell intelligens för att höja spelens
underhållningsvärde.
ARTIFICIELL INTELLIGENS I DATORSPEL
Trots att man använde sig av AI-tekniker i datorspel redan på 70- och 80-talet så var
användningen ganska primitiv. Ofta prioriterade man ljud, grafik samt större världar över
intelligens i spelen. Detta resulterade hur som helst i att speciell hårdvara utvecklades för både
ljud och grafik, vilket idag har lämnat stora delar av datorkraften till andra spelkomponenter,
speciellt fysik och AI.
Idag är fysik, interaktiva världar och kanske framförallt AI de områden som ligger i störst
fokus hos spelutvecklarna.
Vad är AI?
Att definiera begreppet AI har visat sig vara svårt, inte minst då definitionen av intelligens är
så vag. Ofta associeras begreppet intelligens med lärande eller inhämtande av kunskap, och
även förmågan att använda kunskap för att fatta beslut och lösa problem. Artificiell intelligens
kan då ses som intelligens skapad av människan [Wiki10-1].
AI inom datorspel jämfört med akademisk AI
AI har varit ett hett forskningsområde sedan slutet av 1950-talet. Målet är där att skapa en
maskin så intelligent som en människa, eller att i alla fall skapa maskiner som hjälper oss att
fatta intelligenta beslut i vår vardag. Denna inriktning kallas oftast akademisk AI. När det
gäller datorspel är målet ett annat, nämligen underhållning.
Detta medför både förenklingar och komplikationer för spelutvecklarna. Istället för verklig
intelligens talar man om upplevd intelligens. Spelaren bryr sig nämligen inte om huruvida
datormotståndaren valde sitt drag genom att noggrant analysera spelarens taktik eller genom
ett enkelt tärningskast, så länge det framstår som ett intelligent beslut [Wiki10-2].
Samtidigt får man vara försiktig så att inte datorspelaren blir för intelligent. I många datorspel
är det för utvecklaren relativt enkelt att skapa en AI-motståndare som vinner över spelaren
varje omgång, men detta är inte önskvärt då det i allmänhet inte är roligt att bara förlora varje
match. Ett exempel på detta är Team 17's actionspel Worms, där datorkontrollerade maskarna
alltid siktar perfekt. I uppföljare och nyare spel har man alltså fått programmera AI-spelarna
till att medvetet göra felberäkningar för att höja underhållningsvärdet.
Agenter är så intelligenta som de framstår
I datorspel är det som ovan nämnt inte lika viktigt att de AI-styrda agenterna fattar intelligenta
beslut som att de ser ut att fatta intelligenta beslut. Ett exempel är Bungies Halo, där två av
utvecklarna höll en presentation på GDC 20021 där sade något i stil med följande:
1
GDC står för Game Developers Conference och är alltså en konferens för spelutvecklare.
4
"Om ni söker tips för att göra intelligenta beteenden så har ni kommit fel, vi kan inget om
sådant, men det låter svårt. Vad vi däremot kan ge er är tips på hur ni kan få er AI att framstå
som intelligent. Det är vi jättebra på." [Gries02]
I en artikel från GDC 2006 berättar Jeff Orkin, en av utvecklarna bakom F.E.A.R. om hur de
ser till att kommunicera sina beslut till spelaren med hjälp av dialoger mellan spelets agenter.
Exempelvis kan man höra något i stil med "Gå åt det hållet så omringar vi honom!" varpå
spelaren förstår att motståndarna agerar enligt en intelligent och genomtänkt plan. Orkin säger
att det är meningslöst att spendera tid på intelligenta och koordinerade attacker av den
karaktären om inte spelaren förstår det [Orkin06].
I samma artikel berättar Orkin om hur de även använde uttalade meddelanden i rena
illusionssyften. Exempelvis kan en ensam fiende uttala något i stil med "jag behöver
förstärkningar", trots att spelet inte har något system för att kalla på sådana. Spelaren stöter
tillräckligt snart på nya fiender och tror då att dessa är inkallade som förstärkning, trots att så
alltså inte är fallet.
Vad i datorspel räknas som AI?
Samtidigt som man skiljer på akademisk AI och AI för datorspel så råder delade meningar om
vad i datorspel som ska kallas AI. Exempelvis råder det delade meningar om huruvida
algoritmerna för att hitta bästa vägen mellan
två punkter (path-finding) bör kategoriseras
som AI eller som så kallad hjälplogik.
De flesta spelarna skulle nog uppleva det som
ointelligent att inleda en resa från Västerås till
Eskilstuna med att åka till Sundsvall, så det
finns till synes en koppling mellan pathfinding och AI. Brian Schwab menar dock att
algoritmer som på ett väldefinierat sätt hittar
en (och endast en) optimal lösning på det
sättet som path-finders gör inte är mer
intelligenta än de algoritmer som används för
grafik eller fysik [Schwab09].
Figur 1: Visualisering av en A*-sökning för att hitta
kortaste vägen mellan två punkter.
Vanliga AI-tekniker i datorspel
Som tidigare nämnt har datorspel oftast endast som mål att underhålla spelaren. Detta, i
kombination med prestandaaspekter gör att vissa tekniker är vanligare än andra inom
datorspel.
Vilka tekniker som är vanliga varierar också kraftigt beroende på vilken typ av spel det rör sig
om. Denna artikel fokuserar på spel med relativt få men ofta mer unika agenter med
avancerade beteenden såsom rollspel och äventyrsspel.
Finite State Machines
En av de vanligaste AI-teknikerna i datorspel är så kallade Finite State Machines, ofta
förkortade som FSM:s. Denna teknik går ut på att objekt, såsom karaktärer i spelvärden, har
olika lägen (en: States) som alla har olika associerade beteenden. Som exempel kan man tänka
sig lägen som exempelvis "väntar" där karaktären bara står och väntar på att något ska hända
(som att spelaren ska komma nära) och "attackerar" där karaktären följer efter spelaren och
försöker använda sitt vapen för att skada denne. Om spelaren springer för långt från
karaktären så kanske denne skulle byta tillbaka till "väntar" igen.
5
Det finns även spel som använder sig av FSM:s på en något högre nivå, som exempelvis spel
där en karaktär i början av spelet ger spelaren något uppdrag eller någon information för att
senare öppna sin egen butik i vilken spelaren kan handla.
I nyare spel använder man sig ofta av hierarkiska FSM:s vilket innebär att en karaktär har två
eller fler lager av lägen. Man skulle kunna tänka sig lägen som "offensiv" och "defensiv" som
beror på hur mycket liv en karaktär har kvar. För "offensiv" kan karaktären då ha underlägen
som "jagar spelaren" eller "omringar spelaren". Läget "defensiv" skulle då kunna ha
underlägen som "flyr" eller "gömmer sig".
Att byta lägen
En viktig del av ett FSM-system är när och varför man byter mellan olika lägen (beteenden).
Det finns många olika varianter. Vanligt är att byta läge som en direkt följd av vad spelaren
gör. Detta kan inkludera att spelaren attackerar objektet i fråga eller kommer inom en viss
radie. Ett annat exempel är baserat på tid eller händelser i spelet, såsom att spelaren besegrade
någon betydelsefull fiende.
Behov och begär
En annan metod, främst känd från Maxis The Sims, är att byta lägen baserat på så kallade
behov. En karaktär har då behov som sömn, mat och underhållning. Allt eftersom karaktären
utför aktiviteter så tillfredställs (sjunker) något behov samtidigt som andra ökar. När något
behov blir för akut byter karaktären aktivitet till en som tillfredställer det behovet. Om en
aktivitet till fullo tillfredställt ett behov (exempelvis om karaktären blir mätt) så kan denne
byta till en ny aktivitet, ofta genom att försöka tillfredställa det mest akuta behovet vid
tillfället.
Att basera beteenden på behov har många fördelar. Det ger ett relativt förutsägbart
beteendemönster som kan vara varierat och ofta känns naturligt. Det kan dessutom ge
spelaren unika möjligheter att påverka ett beteende. Spelaren skulle exempelvis kunna stjäla
en vakts matlåda för att tvinga denna att gå och köpa ny mat och därmed lämna sin post en
kort stund.
Samtidigt kan ett system baserat på
behov ställa till med problem. Det vore
exempelvis dåligt om en vakt som höll
på att attackera spelaren plötsligt
avbröt attacken för att gå hem till
sängen eller kylskåpet. Något annat
som kan hända är att flera behov blir
akuta samtidigt, som exempelvis att en
karaktär blir både hungrig och trött
samtidigt. Karaktären börjar laga mat,
men inser att denne är för trött och går
till sängen bara för att komma på att
denne är för hungrig för att kunna sova
och så vidare.
Figur 2: Skärmdump från The Sims med behov synliga i nedre
högra hörnet.
Planerare
Vissa modernare spel, nämnvärt F.E.A.R. som kom 2005, använder sig av så kallade
planerare för att växla mellan olika beteenden. Att det varit sällsynt fram till nyligen beror
6
dels på tekniska svårigheter och dels att det ger utvecklaren mindre kontroll ur ett
designperspektiv.
En planerare utgår från ett läge och ett mål. Dessa används för att hitta en uppsättning steg för
att ta sig från det aktuella läget till målet. För det vanligt förekommande målet "döda
spelaren" kan en uppsättning steg vara något i stil med följande: spring till punkt A, skjut mot
spelaren, spring till punkt B, kasta rökgranat, vänta tills röken blockerar sikten, gå till punkt
C, skjut spelaren, klar. Om målet inte är uppnått när en plan är utförd så skapas en ny plan.
Fördelar med att använda planerare
Planerare kan ge ett väldigt avancerat beteende som är till synes intelligent. Det kan ge en stor
utmaning åt spelaren, utan att denne behöver känna sig orättvist behandlad. Ett exempel kan
vara att spelaren ser en fiende som direkt vänder sig mot spelaren och avlossar ett dödligt
skott jämfört med en situation där tre mindre träffsäkra fiender lyckas omringa spelaren. I
själva verket kan båda fallen vara lika svåra att klara, men det sistnämnda känns antagligen
som en mer ärlig utmaning för spelaren, då fienderna existerar på samma villkor som denne.
Planerare används ofta för en grupp agenter vilket låter dessa samarbeta för att åstadkomma
ett gemensamt mål.
Nackdelar med att använda planerare
Nackdelen med att använda planerare i ett spel är att de ofta resulterar i mindre rum för olika
personligheter och taktiker. På grund av de tekniska svårigheterna med planerare så används i
regel bara en liten uppsättning åtgärder, som samtliga agenter använder sig av. Om samtliga
agenter i spelet använder sig av samma taktik för ett givet scenario så räcker det för spelaren
att lära sig den taktiken en gång för att ta sig igenom hela spelet.
Planerare kan även ge problem med att förutbestämma en agents beteende, som exempelvis i
en berättarsekvens. En berättarsekvens är en filmliknande sekvens som berättar något för
spelaren, som ofta berör spelets historia eller spelarens uppdrag.
Skriptade beteenden
Inom datorspel talar man ofta om skript och kanske framförallt AI-skript. I dessa fall syftar
man i regel på textfiler som definierar agenters beteenden. Detta görs av flera anledningar där
den största är att göra livet enklare för utvecklarna. Att lägga spelets AI i skriptfiler har även
den ofta önskvärda sidoeffekten att det möjliggör användarmodifikationer, vilket alltså
betyder att spelarna kan definiera egna beteenden åt spelets agenter, något som avsevärt kan
öka spelets värde.
När man talar om skriptad AI som teknik syftar man dock på något annat, nämligen att
förutbestämma beteendet på en eller flera agenter. Detta ger en hundraprocentig kontroll åt
utvecklaren på bekostnad av variation. Man kan som exempel tänka sig två patrullerande
soldater som går och skämtar med varandra längs en väg. De kanske till och med stannar och
spelar fotboll med en sten de hittar.
En sådan scen kan ge ett oerhört positivt intryck hos spelaren. Nackdelen är att exakt samma
scen inträffar varje gång spelaren kommer till den punkten i spelet. Dessutom kan det
resultera i fall som att spelaren skjuter den ena soldaten varpå den andra fortsätter skämta och
sparka på sin sten, något som antagligen ger ett betydligt mindre positivt intryck.
7
Andra tekniker
Det finns många tekniker som används inom datorspel med mer eller mindre framgång än de
som beskrivits ovan. För mer strategiskt inriktade spel används exempelvis ofta så kallade
beslutsträd där man försöker hitta den serie beslut eller åtgärder som med störst sannolikhet
resulterar i bäst resultat. Denna typ av tekniker är ofta väldigt prestandakrävande varpå de
sällan används i realtidsspel men ofta i turbaserade spel.
Neurala nät
Neurala nät är en annan teknik som ofta nämns, speciellt av spelutvecklare som kommer från
en mer akademisk bakgrund. Tekniken möjliggör nämligen lärande vilket många tror skulle
förbättra spelupplevelser avsevärt. Exempelvis kan man tänka sig ett strategispel där
motståndaren lär sig av sina misstag och anpassar sig efter spelarens taktiker. Neurala nät
används dock sällan i praktiken, dels på grund av tekniska svårigheter med implementation
och dels på grund av den begränsade kontroll det ger utvecklaren över beteendet. Neurala nät
kan dessutom använda stora mängder datorkraft i förhållande till andra tekniker som FSM:s.
Med det sagt är det varken omöjligt eller osannolikt att vi får se mer av tekniker som denna i
framtiden, allt eftersom vi får kraftigare datorer och bättre utvecklingsverktyg [Bourg04].
AI som primär spelmekanism
Att spel innehåller till synes intelligenta
beteenden är varken nytt eller ovanligt,
men något som däremot är relativt
ovanligt är spel som primärt går ut på att
interagera med intelligenta agenter. Till
dessa spel hör exempelvis Creatures
från 1996 [Champ07].
I Creatures styr inte spelaren direkt över
vad varelserna i världen ska göra, utan
får istället utdela belöningar och straff
när dessa gör vad spelaren anser är bra
respektive dåliga saker. På så vis lär sig
varelserna allt eftersom hur de ska bete
sig.
Figur 3: Skärmdump från spelet Creatures.
Även Black & White från 2001 möjliggör interaktion med ett intelligent djur som kan lära sig
hur det ska bete sig genom exempel från spelaren och med hjälp av straff och belöning. I
Black & White används bland annat (men inte uteslutande) interaktion med detta djur för att
klara av olika uppdrag.
Black & White och Creatures ligger på plats 1 respektive 5 på AiGameDev.com:s lista över
de 10 mest inflytelserika datorspelen inom AI.
8
SLUTSATSER
Artificiell intelligens i datorspel är idag ofta mer artificiell än intelligent, men detta ses inte
som ett problem så länge det är underhållande. Trots att många av dagens spel använder sig av
relativt primitiva AI-tekniker lyckas de ibland åstadkomma fascinerande resultat, och
utvecklingen fortsätter att gå framåt för varje år.
Redan 1996 användes den mer akademiska tekniken neurala nät i det framgångsrika spelet
Creatures för att styra agenter. Tekniker som neurala nät, ibland betraktade som verkligt
intelligenta, har ännu inte slagit igenom i någon större utsträckning i datorspelsindustrin,
vilket är något kan få en ändring på framöver.
Personligen tror jag helt klart att framtiden kommer att erbjuda mer självlärande datorspel
som anpassar beteendet efter spelaren. En sak är säker: framtiden ser ljus ut för datorspelens
intelligens.
REFERENSER
[Bourg04]
D. M. Bourg & G. Seemann, AI for Game Developers,
O'Really Media, Inc., ISBN 0-596-00555-5, 2004
[Champ07] A. J. Champandard, "Top 10 most influential AI games",
AiGameDev.com, 2007-09-12, [2010-03-05]
<http://aigamedev.com/open/highlights/top-ai-games/>
[Gries02]
J. Griesemer & C. Butcher, "The Integration of AI and Level Design in Halo",
Game Developers Conference 2002
<http://www.gamasutra.com/gdcarchive/2002/jaime_griesemer.ppt>
[Orkin06]
J. Orkin, "Three States and a Plan: The A.I. of F.E.A.R.",
Game Developers Conference 2006 Proceedings
<http://www.media.mit.edu/~jorkin/gdc2006_orkin_jeff_fear.doc>
[Schwab09] B. Schwab, AI Game Engine Programming 2e,
Course Technology PTR, ISBN 1-58450-572-9, 2009
[Wiki10-1] Wikipedia, "Artificial Intelligence",
Wikipedia.com, [2010-03-05]
<http://en.wikipedia.org/wiki/Artificial_intelligence>
[Wiki10-2] Wikipedia, "Game Artificial Intelligence",
Wikipedia.com, [2010-03-05]
<http://en.wikipedia.org/wiki/Game_artificial_intelligence>
9