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