motion planning in games

40
Motion Planning in Games Pathfinding with A * Ronald Treur

Upload: regina

Post on 14-Jan-2016

55 views

Category:

Documents


0 download

DESCRIPTION

Motion Planning in Games. Pathfinding with A * Ronald Treur. Pathfinding - Intro. Eén van de meest voorkomende AI problemen in computergames Meestal is een simpel algoritme voldoende. Pathfinding - The Beginning. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Motion Planning in Games

Motion Planning in Games

Pathfinding with A *

Ronald Treur

Page 2: Motion Planning in Games

Pathfinding - Intro

Eén van de meest voorkomende AI problemen in computergames

Meestal is een simpel algoritme voldoende

Page 3: Motion Planning in Games

Pathfinding - The Beginning

while not at the goalpick a direction to move toward the goalif that direction is clear for movement

move thereelse

pick another direction according to an avoidance strategy

Page 4: Motion Planning in Games

Avoiding Objects - Random

Beweeg in een random richting Doe random een stap terug en probeer het

nog een keer Als objecten klein en convex zijn kan de

player er waarschijnlijk wel langs Als objecten groot en / of concave zijn gaat dit

stukken lastiger

Page 5: Motion Planning in Games

Avoiding Objects - Random

Page 6: Motion Planning in Games

Avoiding Objects - Random

Page 7: Motion Planning in Games

Avoiding Objects - Tracing

Traceer een pad langs de randen van het object “Zet je hand tegen de muur en loop er langs” Werkt ook met grote en concave objecten Probleem: Wanneer stoppen met traceren

Wanneer de richting waar je heen wilde weer toegankelijk is

Als “de muur” ophoud

Page 8: Motion Planning in Games

Avoiding Objects - Tracing

Page 9: Motion Planning in Games

Avoiding Objects - Tracing

Page 10: Motion Planning in Games

Verbetering: Zodra je botst: bereken de lijn vanaf je positie

op dat moment tot het doel Traceer nu op oude manier tot je die lijn

doorsnijdt Stop als dit op je beginpositie is Werkt altijd!

O.a. gebruikt in Warcraft I: Orcs and Humans

Avoiding Objects - Tracing

Page 11: Motion Planning in Games

Avoiding Objects - Tracing

Page 12: Motion Planning in Games

Avoiding Objects - Tracing

Page 13: Motion Planning in Games

Pathfinding - The Smart Way

Vroeger voldoende Tegenwoordig: sneller en mooier Alternatief: bereken pad van te voren

Het snelste / goedkoopste pad vinden is hier een groter probleem dan ‘een’ pad vinden

Gebruikte datastructuur is hier veelal een graaf

Page 14: Motion Planning in Games

Pathfinding - Breadth First Search

Standaard BFS algoritme: Push de node waarin je start in een queue Loop door de queue heen tot deze op is of je een

pad hebt gevonden Haal elke iteratie een node van de queue en ga al

zijn buren langs. Stop als zo’n node het doel is. Voeg hem toe aan de stack als het een lege, onbezochte, node is.

Hou een linked-list bij met de bezochte, lege nodes

Page 15: Motion Planning in Games

Pathfinding - Breadth First Search

Page 16: Motion Planning in Games

Pathfinding - Breadth First Search

Bi-directional werkt efficiënter

Page 17: Motion Planning in Games

Pathfinding - Dijkstra’s Algorithm

Dijkstra’s “graph traversing” algoritme Loop: haal elke iteratie de dichtstbijzijnde,

nog onbezochte, node (t.o.v. de startnode) op Loop langs de buren van deze node en

initialiseer hun afstand tot de startnode of update deze eventueel

Gebruik hier geen FIFO queue voor (zoals bij BFS) maar een priority queue. Kleinste afstand heeft hoogste prioriteit

Page 18: Motion Planning in Games

Pathfinding - Dijkstra’s Algorithm

Page 19: Motion Planning in Games

Pathfinding - Best First Search

Hoewel Dijkstra’s algoritme beter werkt dan Breadth First Search qua het vinden van het kortste pad zijn ze beiden niet erg efficient

Richting waarin het doel zich bevind wordt genegeerd

Best First Search werkt beter

Page 20: Motion Planning in Games

Pathfinding - Best First Search

Best First Search Identiek aan Dijkstra’s algoritme behalve dat

het niet de afstand tussen de startpositie en de betreffende node opslaat maar de ‘geschatte’ afstand tot het doel

Snelste algoritme tot nog toe Houdt geen rekening met kosten van terrein Is niet direct, maar gedraagt zich als Trace

methode langs obstakels

Page 21: Motion Planning in Games

Pathfinding - Best First Search

Page 22: Motion Planning in Games

Pathfinding - Best First Search

Page 23: Motion Planning in Games

Pathfinding - A*

Combinatie van Dijkstra’s algoritme met de heuristiek gebruikt in Best First Search

f(n) = g(n) + h(n) f(n) is de score die aan node n gegeven wordt g(n) levert de kosten op van de goedkoopste

route naar n vanaf de start (Dijkstra) h(n) is de geschatte afstand van n tot het doel

(Best First Search)

Page 24: Motion Planning in Games

AStarSearch s.g = 0 // s is the start node s.h = GoalDistEstimate( s ) s.f = s.g + s.h s.parent = null push s on Open while Open is not empty pop node n from Open // n heeft de laagste f if n is a goal node construct path return success for each successor n' of n newg = n.g + cost(n,n') if n' is in Open or Closed, and n'.g < = newg

skip n'.parent = n n'.g = newg n'.h = GoalDistEstimate( n' ) n'.f = n'.g + n'.h if n' is in Closed remove it from Closed if n' is not yet in Open push n' on Open push n onto Closed return failure // if no path found

Pat

hfin

ding

- A

*

Page 25: Motion Planning in Games

Pathfinding - A*

Levert gegarandeerd het kortste pad op als de afstand tot het doel die h(n) oplevert in alle gevallen kleiner of gelijk is aan de werkelijke afstand tot het doel

Flexibel: kan ook gebruikt worden in Configuration space (verbind eventueel kosten aan orientatie veranderingen)

Kosten kunnen veel betekenen

Page 26: Motion Planning in Games

Pathfinding - A*

Page 27: Motion Planning in Games

Pathfinding - A*

Page 28: Motion Planning in Games

Pathfinding - A*

Page 29: Motion Planning in Games

A* - Beperkingen

Grote terreinen zullen veel geheugen en CPU tijd nodig hebben alvorens een pad is gevonden Oplossing: deel gebied op in grotere stukken

en kijk eerst op een hoger niveau naar de te nemen route

Oplossing: breek het pad op in subpaden met eigen subgoals

Page 30: Motion Planning in Games

A* - Beperkingen

Terreinen die niet grid-gebaseerd zijn kunnen met reeds behandelde methoden wel zo ingedeeld worden, waarna het A* algoritme alsnog kan worden gebruikt

Page 31: Motion Planning in Games

A* - Smoothing

Standaard ziet een A* pad er meestal niet erg realistisch uit. Het pad bevat vaak veel zig-zag bewegingen

Het proces om het pad glad te trekken noemen we smoothing

Page 32: Motion Planning in Games

A* - Smoothing

Page 33: Motion Planning in Games

A* - Smoothing

Page 34: Motion Planning in Games

A* - Smoothing Solutions

Oplossing 1 Laat de cost functie kosten in rekening

brengen als er een ‘turn’ wordt gemaakt Zorgt ervoor dat nodes met zelfde distance maar

zonder ‘turn’ voordeliger zijn Nog steeds niet erg realistisch

Page 35: Motion Planning in Games

A* - Smoothing Solutions

Oplossing 2 Postproces het pad met een smoothing

functie

Page 36: Motion Planning in Games

A* - Smoothing Solutions

Page 37: Motion Planning in Games

A* - Smoothing Solutions

Page 38: Motion Planning in Games

Pathfinding - More Complex

Bijna elk spel (zeker RTS) maakt gebruik van een ‘verbeterde’ vorm van A*

Toch is dit niet voldoende om echte intelligente manouvres te maken. Zeker als je met een groep units door een nauw steegje moet lopen gaat het vaak fout

Page 39: Motion Planning in Games

Pathfinding - More Complex De algoritmes van tegenwoordig moeten

meer: Rekening houden met terrein (Age of Empires 2

maakt hier een begin mee) Rekening houden met plekken waar mogelijke

hinderlagen kunnen komen Rekening houden met elkaar (flocking) Bochten maken in plaast van plots iets draaien Onderlinge snelheid aanpassen

Page 40: Motion Planning in Games

Pathfinding - Questions

?