Motion Planning in Games Pathfinding with A * Ronald Treur.

Slides:



Advertisements
Verwante presentaties
Sudoku puzzels: hoe los je ze op en hoe maak je ze?
Advertisements

Hoe ruim ik mijn kamer op?
Echte Vrienden zijn belangrijk in het leven.
1 Motion Planning (simpel) •Gegeven een “robot” A in een ruimte W, een verzameling obstakels B, en een start en doel positie, bepaal een beweging voor.
Om te beginnen moeten we eerst muziek laden en dat kan vanaf de computer of via een geluidsbron, {met de microfoon ingang kan het ook}of indien de geluidsbron.
Robcad Hands On Workshop
Hoofdstukken 15 en 16.  als spelers meer keuze hebben kunnen nieuwe verhalen ontstaan. Hoe kan ik meer keuzes brengen?  Conflicten leiden tot meerdere.
PHP & MYSQL LES 03 PHP & DATABASES. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
De intelligente stofzuiger
Multiple Moving Objects Siu-Siu Ha Marlies Mooijekind.

Tel de zwarte stippen!. Tel de zwarte stippen!
Hoofdstuk 6: Controle structuren
1 Indeling Inleiding Opbouw van potentiaalvelden Pathplanning in potentiaalvelden Alternatieve potentiaalvelden Gerandomiseerde pathplanning.
Datastructuren Zoekbomen
1 Datastructuren Zoekbomen II Invoegen en weglaten.
Visibility-based Probabilistic Roadmaps for Motion Planning Tim Schlechter 13 februari 2003.
Dijkstra Kortste pad algoritme.
De koektrommel of de grabbelton
Oplossen van een doolhof
Approximate Cell Decomposition
1 Complexiteit Bij motion planning is er sprake van drie typen van complexiteit –Complexiteit van de obstakels (aantal, aantal hoekpunten, algebraische.
Netwerk Algorithms: Shortest paths1 Shortest paths II Network Algorithms 2004.
Movable Objects Richard Jacobs Robin Langerak. Movable Objects Introductie en definities Aanpak Aangepaste algoritmen Grasp planning Assembly planning.
Motion planning with complete knowledge using a colored SOM Jules Vleugels, Joost N. Kok, & Mark Overmars Presentatie: Richard Jacobs.
Indeling Inleiding op PRM-planners & Medial Axis Retraction van configuraties op de Medial Axis Verbetering van retraction Verbetering van sampling Expliciete.
Lokale zoekmethoden Goed in de praktijk:
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 3.
1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13.
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Nummer een. Waarom gaat het toch altijd om wie het beste is Kijkt iedereen altijd naar nummer één Is er iets dat ik niet snap Is er iets dat ik soms mis.
Lagoonia.
Shortest path with negative arc-costs allowed. Dijkstra?
Planning With Nonholonomic Constraints By Jeroen Resoort & Ronald Treur.
Programmeer les voor gevorderden
Ladders Sport voor sport. Ladders Sport voor sport.
Monday, 30 March 2015 maandag 30 maart 2015 Leonard Cohen is still on stage This must be a miracle at his age I’m sure that you like this song Enjoy.
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
Coordinaten: Tom Tourwé 10F729 Tel: 3492 Organisatie van de oefeningen: * 1 uur bespreking van oplossing vorige les + bespreking opgave.
Representatie & Zoeken
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 6 Cees Witteveen.
MINECRAFT PLAATJES TUTORIAL #3 KUBUSCRAFT.
Gevorderde PROGRAMMeer Les
Torens van Hanoi ● Uitgevonden door Franse Wiskundige Edouard Lucas in ● Beschreven in zijn wiskundig “spelletjesboek” Récréations Mathématiques.
Code compressie in Embedded Systems Onno Kievit ET4074 Kwantitatieve aspecten van computer architectuur.
Allard Kamphuisen Hado van Hasselt Wilco Broeders
Dirigeren Wat doet een dirigent?. inhoudsopgave Wie laat ik spelen? Ga ik aftellen? Welke opdrachten kan ik geven? Hoe laat ik ze stoppen?
Grafentheorie Graaf Verzameling knopen al dan niet verbonden door takken, bijv:
Recursie…. De Mandelbrot Fractal De werking… De verzameling natuurlijke getallen… 0 ∞-∞
Woordjes leren.
RoboCup Junior Bouwen van een robot voor de RCJr lessen Versie
Minimum Opspannende Bomen Algoritmiek. 2 Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee.
Doorzoeken van grafen Algoritmiek. Algoritmiek: Divide & Conquer2 Vandaag Methoden om door grafen te wandelen –Depth First Search –Breadth First Search.
Divergeren Deze powerpoint ga je aan de slag met verschillende divergerende technieken. Hierbij bedenk je zoveel mogelijk ideeën. Bij een brainstormsessie.
IF() ELSE() LES 4: VOORWAARDEN. BOOL Een variabele die slechts 2 mogelijke waarden kan hebben: true(waar) of false(niet waar) duid je aan met bool bool.
Proportionele Besturing
Kortste Paden Algoritmiek.
Doorzoeken van grafen Algoritmiek.
BEGINNER EV3 PROGRAMMEER Les
Minimum Opspannende Bomen
Modderdorp UNPLUGGED Bron: csunplugged.org.
Modderdorp Bron: csunplugged.org.
Route planning in wegen netwerken
Tel de zwarte stippen!. Tel de zwarte stippen!
Modderdorp Bron: csunplugged.org.
VIMTAG Keuzehulp voor het vinden van de juiste IP camera.
Modderdorp UNPLUGGED Bron: csunplugged.org.
Doolhof. doolhof doolhof Maak een routine die de ‘hekken’ tussen de cellen weghaalt Maak een 2-dimensionale array met kolommen en rijen aangeklikt.
Tel de zwarte stippen!. Tel de zwarte stippen!
Software Development fundamentals
Transcript van de presentatie:

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 while not at the goal pick a direction to move toward the goal if that direction is clear for movement move there else pick another direction according to an avoidance strategy

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

Avoiding Objects - Random

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

Avoiding Objects - Tracing

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

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

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

Pathfinding - Breadth First Search

Bi-directional werkt efficiënter

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

Pathfinding - Dijkstra’s Algorithm

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

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

Pathfinding - Best First Search

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)

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 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

Pathfinding - A*

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

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

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

A* - Smoothing

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

A* - Smoothing Solutions Oplossing 2 Postproces het pad met een smoothing functie

A* - Smoothing Solutions

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

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

Pathfinding - Questions ?