pathfinding i spel komp - ida729g11/projekt/studentpap... · resultatet blir att ai behöver göra...

15
729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919 LINKOPINGS UNIVERSITET Pathfinding i spel Inte bara optimalt, utan även realistiskt. Richard Wiik 9/16/2011

Upload: others

Post on 25-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

LINKOPINGS  UNIVERSITET  

Pathfinding  i  spel  Inte  bara  optimalt,  utan  även  realistiskt.  

Richard Wiik

9/16/2011

Page 2: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

Abstrakt

Hur AI används för att avgöra hur AI karaktärer väljer hur och var de ska gå i

Första Persons Actionspel. Vilka olika system att göra detta som är populära just nu, dess

skillnader och fördelar samt hur man får agenten i spelet att verka realistisk.

Page 3: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

Innehåll_Toc304203218  1) Inledning ............................................................................................................................ 1  

2) Pathfinding ......................................................................................................................... 2  

2.1) Waypoint based system ................................................................................................... 2  

2.2) Navigation mesh ............................................................................................................. 3  

2.3) Skillnader på Navigation Mesh och Waypoint based system ......................................... 4  

3) Hur AI väljer vart och hur den skall röra sig ..................................................................... 6  

3.1) AI val .......................................................................................................................... 6  

3.2) Bästa valet ................................................................................................................... 7  

3.3) Att ta sig till det bästa valet ....................................................................................... 10  

3.4) Att göra det realistiska valet ..................................................................................... 11  

4) Referenser ........................................................................................................................ 12  

Page 4: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

1

1) Inledning

Användning av Artificiell Intelligens (AI) är utbrett inom dagens spelindustri.

Styrkan, och det som möjliggör en stor utveckling av AI inom spel så som Killzone, Quake

eller exempelvis Starcraft, är de virtuella världar och karaktärer som skapas. Människor som

spelar dessa spel kan interagera med dem i en dynamisk omgivning och hålla AI:s utveckling

i full gång[1]. Det sagt har utvecklingen gått otroligt mycket framåt inom AI i spel och

kommer fortsätta.

Denna artikel kommer inte gå djupgående inom allt vad AI i spel innebär för att

ämnet är för stort för att täckas av mig. Istället kommer inriktningen ligga på agentens beslut

kring att röra sig i spel, så kallat pathfinding. Denna rapport inriktar sig på hur pathfinding

genomförs och byggs upp samt hur beslutfattandet hos den intelligenta agenten avgör vilken

väg som inte bara är den optimala, utan även att få agenten att verka realistisk för spelaren.

Page 5: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

2

2) Pathfinding

Om AI styrda karaktärer(agenter) skulle blir nedsläppta i en virtuell spelvärld

som för en vanlig spelare skulle vara en fullt utvecklad värld redo att upptäckas med hus, fast

mark och så vidare, är det för NPCs ett tomrum. För att en AI karaktär skall kunna röra sig

behöver den veta vart den kan gå, även om marken under NPCn är fast. För att en NPC skall

veta vart den skall gå används huvudsakligen två olika system. Det första systemet kallas

”waypoint based system”, det andra kallas ”navigation mesh”. För att vi ska kunna gå vidare

behöver vi lära oss om dessa två system.

2.1) Waypoint based system

Waypoint based system (WBS) är det systemet som varit standard sen AI i tog

steget in i spelvärlden. WBS är ett nätverk av noder, där kopplingarna emellan dessa visar för

NPCn var den kan gå utan att riskera att gå rakt in i en vägg. Dessa noder sätts ut med

mellanrum som oftast på två meter eller mindre[2], där varje nod innehåller information om

avstånd till sina grannoder. Detta betyder att agenten ej kan gå utanför ramen för dessa noder,

vilket påtvingar ett väldigt tätt nodnätverk. Figur 1visar hur ett sådant system skulle kunna se

ut. Dock behövs det ett otroligt mycket större antal noder än vad som visas på bilden, men för

att inte göra visningen av WBS systemet för rörigt är det simplifierat.

Page 6: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

3

Figur 1) Ett waypoint based system över Halaa, en stad I spelet World of Warcraft [3].

Systemet är välanvänt än idag, men är utvecklat från en tid när AI utvecklingen i spel var

väldigt begränsad[3]. Paul Touzour presenterar i boken ”AI Game Programming Wisdom”[4]

ett alternativ till WBS, kallat Navigation mesh.

2.2) Navigation mesh

Navigation mesh (NavMech) är ett nätverk av polygoner som läggs ut över

områden där AI karaktärer har möjlighet att röra sig. Dessa polygoner som byggs utöver

världen binds ihop till ett stort nätverk i dess hörn (vertex). NavMesh specificerar det vill säga

inte exakta gångmönster, utan allt inom en NavMesh polygon är mark där agenten vet att det

är möjligt att röra sig.

Page 7: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

4

Figur 2) Ett Navigation Mesh system över över Halaa, en stad I spelet World of Warcraft[3].

2.3) Skillnader på Navigation Mesh och Waypoint based system

Över stora områden kräver WBS ett otroligt stort antal noder eftersom de är

tvungna att sitta tätt. NavMesh klarar stora områden genom att markera alla områden med en

stor polygon som säger att allt inom det här området är gåbart område för AI karaktären. WBS

skulle kunna ha färre noder, men detta resulterar lätt i orealistiska rörelsemönster, för agenten

riskerar då röra sig i ett ”zick-zack mönster”. Är noderna tätt placerade blir även det ett zick-

zack mönster, men mindre märkbart eftersom de sitter så pass tätt. Zick-zack mönster kan

mjukas upp med exempelvis en teknik som kallas Cubic Hermite Spine.

Men det finns ingen information i spelvärlden som förhindrar att denna uppmjukning av

gångvägen gör att AI fastnar eller ramlar utför ett stup. NavMesh däremot deklarerar exakt

var AI kan röra sig, och kan välja en optimalare väg och använda exempelvis Cubic Hermite

Spine tekniken för att få en mer realistisk gångväg från start till mål.

Page 8: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

5

Många av dagens spel erbjuder en föränderlig miljö (lådor, förstöra väggar,

osv), WBS har problem med detta, då de inte har möjlighet att ”gå runt” sina kopplingar,

resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om

exempelvis en låda blockerar den enda WBS gången på exempelvis en bro. NavMesh skulle

erbjuda att gå runt lådan utan mycket extra sök-kostnad. WBS kan undvika detta med mer

waypoints, men det betyder större sökningar i WBS trädet.

Ytterligare skillnader är att olika WBS behövs för om det är AI i spelet som är

olika stora eller har en annan motorik, exempelvis i Battlefield 2 där bilar och stridsvagnar

förekommer. Om Battlefield 2 hade använt ett WBS system i sitt spel skulle varje fordon

behöva ett eget waypoint system, vilket resulterar i ett otroligt extra arbete. I NavMesh

behöver agenten bara vara medveten om sig själv och sin egen storlek så klarar den att röra

sig i systemet, det vill säga kan den röra sig i polygonerna utan att krocka.

Ytterligare en limitation för WBS är, som tidigare nämnt, att AI inte kan gå utanför sina

waypoint-kopplingar, så i spel där strider sker på nära avstånd, exempelvis med svärd eller

knytnävar, är AI fortfarande begränsade till sitt WBS så att röra sig mobilt blir väldigt

olämpligt.

Page 9: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

6

3) Hur AI väljer vart och hur den skall röra sig

Nu har vi täckt hur vi möjliggör för agenten att röra sig i en spelvärld, men hur

agenten väljer hur och var den skall gå kvarstår. I och med att olika spel har olika uppgifter

för vad AI ska göra i spelet det används i har jag valt att utgå från ett spel för att kunna ge

konkreta exempel, spelet som jag kommer ta exempel från kallas Killzone. Killzone är ett

Första Persons Actionspel som kom ut 2004 och är uppbyggt med ett Waypoint based system

(WBS), vilket är täckt i en tidigare del av denna rapport, möjliggör för AI karaktärer att röra

sig runt i spelvärlden.

Killzone, likt många andra spel, använder noderna som utgör WBS för att lagra annan

information än bara nodens plats i världen och avståndet mellan den och angränsande noder,

det är denna information och hur den hanteras av AI som gör ett bra spel med trovärdig AI.

Samtliga sökningar som görs inom detta område är gjorda med A*.

3.1) AI val

När AI ska välja vart den skall förflytta är det mång faktorer som behöver

övervägas, framförallt är det viktigt att påpeka att dessa beslut inget fungerar som en min-max

graf, då inget i världen är helt säkert. Utöver det finns det praktiskt problem, exempelvis hur

stort område klarar agenten att söka av för att hitta en lösning. Ett för stort område skulle

exempelvis kunna leda till att för mycket datorkraft går åt till AI eller att sökningen tar för

lång tid så reaktionsförmågan hos agenten blir för långsam. Dessa sökningar är AI

beslutcykel, det betyder att denna sökning beslutar AI kommande drag. Hur ofta denna

sökning genomförs avgör hur ofta AI beslutar sig om vad denne ska göra. Killzone löste detta

att på ett ungefär förflyttade sig AI under en till tre sekunder från A till B, och vid ankomst

gjordes en ny sökning. Detta för att undvika att mitt under en förflyttning söka efter en ny

målnod, vilket kan resultera i att AI springer runt otroligt länge utan att nå ett enda mål[2].

Killzones AI är inriktad på att strida, mot både och AI motståndare och riktiga spelare. För att

nämna några exempel på attribut AI måste ta hänsyn till vid ett beslut om vart AI vill gå, är:

Page 10: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

7

• Avstånd till närmaste fiende

• Vilka vapen den har till sitt förfogande (avgör vilket avstånd AI vill vara gentemot

fienden)

• Avstånd till vänligt sinnad AI

Och så vidare. Tanken med dessa exempel är att visa att attributen är varierande både

beroende på tid, men även från vilken plats sökningen görs. Detta betyder att nya sökningar

måste göras, och nya resultat bearbetas. Exempelvis om AI vill röra sig från position A till B

måste en sökning göras över både positionen som man är på, samt den man vill röra sig till.

Utöver det tillkommer det vägen från A till B och varje nod längs vägen agenten planerar att

gå.

3.2) Bästa valet

Agenten måste därför undersöka sin omgivning och utefter det besluta vart

denne ska röra sig. För att fortsätta att ta exempel från Killzone är en av de vanligaste

reaktionerna att finna skydd när denne blir attackerad. WBS noderna är informationsbärarna,

information som lagras i dessa noder får aldrig ha ett negativt värde för att förhindra att

noderna negerar varandra[2]. Först måste AI limitera dess sökfält, det gör den genom att ta

alla noder som är runt agenten i ett cirkulärt område runt sig själv. Detta är nödvändigt för att

minska sökningen och oftast är ett närmare alternativ bättre för AI, samt är det nödvändigt för

nästa sökning, som är nämnt i del 3.1.

Som exemplet är, att AI ska hitta det bästa skyddet mot dess fiender gör den en

”line of sight” (LoS) sökning utifrån positionen dennes fiender har. Om den möter andra AI

motståndare står de antagligen på en nod, men om det är en riktig datorspelare står denne

eventuellt ej på en nod. I sådana fall görs en avståndssökning till dennes närmaste nod, och

LoS sökningen görs utifrån den. ”line of sight” sökning går till så att utifrån varje nod som är

inom AI karaktärens område (den cirkulära sökningen som gjordes först), där det avgörs om

en nod har partiellt skydd, helt skydd eller inget skydd alls mot skytten. Beroende på får varje

nod inom AI område ett värde, 0 för inget skydd eller 20 för skydd. Om det är flera skyttar

adderas deras värden och ett totalt värde skapas. Givetvis måste många fler beräkningar av

liknande sort göras, men i slutändan kommer den nod som ger det högsta skyddet och är

närmast att väljas av AI karaktären, och det blir målnoden dit den vill röra sig.

Page 11: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

8

Killzones tillvägagångsätt för att lösa LoS problemet är annorlunda gentemot

vad jag har uppfattat som standard för hur detta problem löses. Varje nod w lagrar beroende

på om agenten är sittande eller stående (s) åt åtta olika riktningar d i ett polärt mönster utifrån

noden, det framgår inte hur värdet på d räknas ut, men antagligen är det manuellt eller med

hjälp av ”ray casting”, vilket jag återkommer till senare i rapporten. För bildförklaring på

polära mönstret se Figur 3. Hur som, om vi tittar på ”polar visibility” på wt noden ser vi att de

två riktningarna d1,2 norrut har värdet noll. Det betyder att om agenten befinner sig på

position wt är han skyddad från det hållet, även om en fiende skulle befinna vara z= 1 längs

d1,2. Så som exemplet på Figur 3 visar har agenten, om den står på nod wt skydd mot nod wa

om avståndet till nod wa är längre än fyra. Alltså vet agenten att den är skyddad vid nod wt

mot eventuella fiender vid nod wa.

Nod wa säger däremot att dennes riktning d mot nod wt har värdet åtta, och med värdet sju på

avståndet z mellan de två noderna så pekar informationen från wa noden att wa och wt har

LoS. Värdet på d utifrån en nod w är dock ett ”worst case scenario” värde, och om vi tittar

noga på visualiseringen av polarvärdet (Figur 3) på (wa, d) ser vi att d fick det höga värdet på

grund av att den sträcker sig precis ovan skyddet (markerad med röd linje på Figur 3).

Riktningen d utifrån wt ser vi dock ger ett mindre värde på d, som garanterat är sant. Eftersom

man kan anta symmetri i samtliga LoS beräkningar kan vi anta att wt ligger i skydd gentemot

wa, och vise versa.

Detta exempel visar, i min mening, bristerna med systemet, för även om man kan garantera att

agenten är definitivt i skydd om så är uträknat, men det finns risker att agenten faktiskt är

skyddad vid en viss nod, fastän uträkningarna säger att denna inte är det, på grund av ”worst

case scenario” tillvägagångssättet som används. Fördelen är att minnesanvändningen blir

linjär, vilket är väldigt bra. Jag nämnde tidigare att Killzone hade ett alternativt

tillvägagångssätt när det kom till LoS gentemot andra spel av liknande typ. Det är för att

informationen om LoS som Killzone har lagrat i noderna sker i andra spel under spelets gång.

Det finns en stor mängd variationer på hur detta görsi virituella 3d världar, men det är

variationer på ”ray casting”. Ray casting kan beskrivas som att utifrån agenten eller spelaren

skickas en ljusstråle ut i spelvärlden och studsar tillbaka, med information om vad den ser.

Eller som i LoS fallet, om den har möjlighet att se fienden eller inte. Detta, till skillnad mot

Killzones lösning på LoS, är att man helt enkelt får ett bättre resultat. Problemet är dock som

jag uppfattat det, är att man fortfarande inte har kommit förbi är att minnesförbrukningen

Page 12: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

9

växer exponentiellt i och med avståndet som ray castingen täcker. Som allt inom AI är

exponentiella världen något man alltid vill undvika, vilket Killzone har lyckats göra, med risk

för sämre AI-motståndare i spelet. Hur ray casting fungerar rent praktiskt har jag inte till fullo

förstått, då matematiken för det ligger utanför mina kunskaper, men ett rektangulärt 3rd

mönster läggs ut i den virtuella världen, som sedan används för att räkna ut positionen av det

ray castingen träffar. Figur 4 visar hur en ray casting från punkt A till B blir avbruten av

terräng. Värt att nämna är att givetvis fungerar bara Killzones lösning på WBS baserade spel,

skulle ett spel använda Nav Mesh är Killzones lösning på LoS ej genomförbart, eftersom Nav

Mesh inte använder ett nodsystem.

Figur 3

Figur 4

Page 13: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

10

3.3) Att ta sig till det bästa valet

När agenten vet vart det bästa valet är, kvarstår problemet att ta sig till denna

punkt. I spel där agenten inte behöver skydda sig mot fiender eller på annat sätt riskerar något

genom att gå en viss väg, är det ett enkelt val att välja den kortaste vägen till målnoden. I spel

som exempelvis Killzone där agentens liv står på spel, är den närmaste vägen sällan den bästa.

Figur 3) Visar den kortaste vägen från A till B, och hur denna lösning inte fungerar i shooterspel[2].

Lösningen är, till skillnad från att hitta målnoden där man söker efter det högsta värdet, att

hitta den vägen med det lägsta möjliga värdet från A till B. Attribut så som ”line of fire” eller

”inom granatavstånd” adderas från den tidigare sökningen, och sedan görs en sökning för att

hitta det lägsta värdet på en väg till målnoden. Problemet med detta är att sökningen kan bli

otroligt stor, då som visat i figur 3 är allt bakom de svarta skydden i figur 3 är möjliga

alternativ för sökningen. Killzones lösning på detta var att ange ett område som varje AI

karaktär ansvarade för och limiterade vidden av sökningen på detta sätt. Annat alternativ är att

utifrån AI ge varje nod ett progressivt högre värde desto längre noden är ifrån AI. Detta kan

dock resultera i buggar och ett fel val görs.

Page 14: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

11

3.4) Att göra det realistiska valet

Mycket har skrivits om att göra det optimala valet men AI i spel behöver även

vara realistisk för att ge en bra upplevelse för spelaren. I många spel räcker det i många fall att

välja den bästa lösning, helt enkelt för att AI i spel har svårt nog som det är att göra bra val. I

spel finns ofta flera olika svårighetsgrader för spelaren att välja på. Beroende på hur bra

agenten visar sig vara är det möjligt att påverka deras beslut på två olika sätt. Antingen kan en

stor mängd sökningar göras i olika miljöer. Tittar man på medelvärdena kan man beroende på

svårighetsgrad, säga åt agenten i spelet välja det beslut som är inom ramen för

svårighetsgraden. Exempelvis om svårighetsgraden ”hard” skulle vara 120poäng och uppåt,

”normal” 90-120poäng och ”easy” 90 och nedåt kan man påverka hur bra beslut agenten, och

göra det lättare eller svårare för spelaren.

Page 15: Pathfinding i spel komp - IDA729G11/projekt/studentpap... · resultatet blir att AI behöver göra en back-track sökning för att hitta en alternativ väg, om exempelvis en låda

729G11 Artificiell Intelligens II Richard Wiik Fördjupningsarbete Ht -11 ricwi919

12

4) Referenser

[2] Straatman Remco, Willian van der Sterren and Arjen Beij “Killzone's AI: dynamic procedural combat tactics” Hämtat från http://www.cgf-ai.com/docs/straatman_remco_killzone_ai.pdf (2011-10-03) [1] John E. Laird and Michael van Lent, AI Magazine volume 22 “Human-Level AI’s Killer Application” [3] Paul Tozour, "Fixing Pathfinding Once and For All" Hämtat från http://www.ai-blog.net/archives/2008_07.html (2011-10-03) [4] Steve Rabin, "AI Game-Programming-Wisdom", Charles River Media [5] Wikipedia, http://en.wikipedia.org/wiki/Cubic_Hermite_spline#Catmull.E2.80.93Rom_spline Hämtat från (2011-10-03)