Top Banner
AUS: ARTIFICIAL INTELLIGENCE FOR GAMES PATHFINDING- WORLD REPRESENTATION WS 2011/12 Softwaretechnologie II: Simulation und 3D Programmierung Dozent: Prof. Dr. phil. M. Thaller Referent: Marcel Schotten
67

Pathfinding - World Representation

Feb 24, 2016

Download

Documents

jada

Pathfinding - World Representation. aus: artificial intelligence for games. WS 2011/12 Softwaretechnologie II: Simulation und 3D Programmierung Dozent: Prof. Dr. phil. M. Thaller Referent: Marcel Schotten. Inhalt. World Representation Tile Graph Dirichlet Domain Points of Vibility - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Pathfinding - World  Representation

A U S : A RT I F I C I A L I N T E L L I G E N C E F O R G A M E S

PATHFINDING-WORLD REPRESENTATION

WS 2011/12Softwaretechnologie II: Simulation und 3D ProgrammierungDozent: Prof. Dr. phil. M. ThallerReferent: Marcel Schotten

Page 2: Pathfinding - World  Representation

INHALT

• World Representation• Tile Graph• Dirichlet Domain• Points of Vibility• Polygonal Meshes• Cost Functions• Path Smoothing• Improving on A*

Page 3: Pathfinding - World  Representation

WORLD REPRESENTATION

Page 4: Pathfinding - World  Representation

QUANTIZATION/LOCALIZATION

Geometrie <-> Graphen

• Quantization:• Die Möglichkeit, sowohl die Position des Spielers, als auch

die der Objekten, in Knoten eines Graphen zu wandeln.

• Localization:• Bei der Bewegung eines Spielers auf den generierten

Weg des Pathfinders, müssen die Knoten des Plans in die verschiedenen Positionen im Spiel umgewandelt werden können.

Page 5: Pathfinding - World  Representation

DARSTELLUNG DER WELT

• Grund: • Eine Spielewelt besteht aus geometrischen Formen, doch

der Pathfinder basiert auf einem Graphen aus Knoten und Verbindungen.

• => Umsetzung von der Geometrie und den Bewegungsmöglichkeiten, zu Knoten und Verbindungen wird benötigt.

• Ansatz:• Die Spiele-Welt wird aufgeteilt über Aufteilungs-Modelle• Wichtige Eigenschaften:• Quantization/Localization; Generation; Vailidity

Page 6: Pathfinding - World  Representation

GENERATION

• Möglichkeit durchgehenden Freiraum in Regionen und Verbindungen aufzuteilen.• Eine gewisse Anzahl der Methoden sind

standardisiert.• Aufteilung in manuell oder algorithmisch:• Manuell -> bessere Ergebnisse, kann zuweilen auf das

jeweilige Level abgestimmt werden.• most used: Dirichlet Domain.

• Algorithmisch -> einfacher da automatisch.• Most used: tile graph, points of visibility, polygonal mesh.

Page 7: Pathfinding - World  Representation

VAILIDITY I

• Befasst sich mit der Gültigkeit des vom Pathfinder generierten Plan.• Dem Charakter muss es ermöglicht werden, sofern es im

Plan inbegriffen ist, von einem beliebigen Punkt im Knoten A, zu einem beliebigen Punkt im Knoten B zu reisen.• Ist dies nicht möglich ist der Plan nutzlos und somit ungültig.

• Resultat: Ein Aufteilungs-Modell ist nur dann gültig, wenn alle Punkte in zwei mit einander verbundenen Regionen erreicht werden können.

Page 8: Pathfinding - World  Representation

VAILIDITY II

Page 9: Pathfinding - World  Representation

TILE GRAPHS

Page 10: Pathfinding - World  Representation

DEFINITION

• Ehemalige Spiele in 2D basierten auf diesem Modell. Heute werden die Platten dazu benutzt Gitter zu erstellen, auf denen 3D-Modelle platziert werden können. Diese Gitter werden dann in Graphen umgewandelt.• Meist genutzten Formen sind Quadrate.

• Aufteilungs-Modell:• Knoten repräsentieren die Platten der Spielwelt.// • Jede Platte hat eine offensichtliche Menge an Nachbarn.// • Verbindungen bestehen zwischen unmittelbaren

Nachbarn.

Page 11: Pathfinding - World  Representation

QUANTIZATION//LOCALIZATION• Schneller Prozess• Im Fall eines Square-Grids, werden die x- und z-

Koordinaten des Charakters benutzt um festzustellen, in welchem Quadrat er sich gerade befindet:

tileX = floor(x / tileSize)tileZ = floor(z / tileSize)

• Floor() gibt eine Funktion an, die den höchsten Integer-Wert zurückgibt, die kleiner-gleich seines Arguments ist.

• tileX und tileZ indentifizieren die Platte innerhalb des Graphen.

• Der Repräsentationspunkt der Platte (meistens Mittelpunkt) um einen Knoten ist die Position im Spiel.

Page 12: Pathfinding - World  Representation

GENERATION//VALIDITY

• Automatische Generierung in Echtzeit• Viele Spiele erlauben das Blocken von einzelnen

Platten• Der Graph gibt somit keine Verbindung zu diesen gesperrten

Platten zurück und es wird vom Pathfinder nicht versucht, durch sie hindurch zu gehen.

• Validity:• Platten werden entweder komplett geblockt oder werden

leer gelassen. Werden einzig die leeren Platten mit einander verbunden so ist der Graph gültig.

• Sind die Graph-Knoten teilweise geblockt, ist der Graph vielleicht ungültig, das liegt aber an der Form der Blockade.

Page 13: Pathfinding - World  Representation

GENERATION//VALIDITY.2

Page 14: Pathfinding - World  Representation

USEFULLNESS

• Die Darstellungsform die am einfachsten zu regenerieren ist => automatisch eine hohe Anzahl an Platten die dem Pathfinder eine Menge Arbeit machen.• Wird nun ein vom Pathfinder zurückgegebener

Plan auf einen Graphen gezeichnet, so wirkt dieser blockiert und ungleichmäßig, was die Bewegung des Charakters „strange“ wirken lässt.

Page 15: Pathfinding - World  Representation

DIRICHLET DOMAINS

Page 16: Pathfinding - World  Representation

DEFINITION//DIVISION SCHEME

• Auch ‚voronoir polygon‘ genannt. Bezeichnet die Region um einen von vielen Quellpunkten, wessen inneres aus allem besteht, welches näher zum Punkt liegt als anderes.

• Division Schemes:• Characteristic Point: assoziierter Punkt für die Knoten.• Die Quant. benutzt Platz um alle Lokalisierungen der

Dirichlet Domain eines Punkte in einen Knoten zu speichern.• Für die Bestimmung der Position im Spiel, muss der

Characteristic Point gefunden werden, der am nahe liegensten ist.

Page 17: Pathfinding - World  Representation

VORSTELLUNG

Page 18: Pathfinding - World  Representation

DIRICHLET DOMAINS II

• Man stelle sich die ‚dirichlet domains‘ als eine kegelförmige Region vor, die nach unten von den Quell-Punkten hinweg geht. Auch hierbei entstehen einzelne Problematiken:• Grund-Idee wurde erweitert um ‚falloff functions‘

wodurch manche Knoten einen größeren Zug mit sich bringen als Andere in der Übertragungsphase.• => weighted dirichlet domain• Jeder Punkt hat einen assoziierten Breite-Wert der die Größe

des Kegels kontrolliert.• Wird dieser Wert verändert, verändert sich auch die

Erweiterung des Kegels.

Page 19: Pathfinding - World  Representation

DIRICHLET DOMAINS II.2

• Dient zur Visualisierung der Problematik der manuellen Änderung der Breite-Werte der Quellpunkte

Page 20: Pathfinding - World  Representation

DIRICHLET DOMAINS II.3

• Verbindungen werden zwischen angrenzenden Domänen gezogen.• Die Vorlage für diese Verbindungen findet man in den

mathematischen Strukturen des Voronoi Diagramms:• Delaunay triangulation• Ecken sind die Verbindungen im Graphen.• Scheitelpunkte sind die Characteristic Points der Domäne.

Page 21: Pathfinding - World  Representation

DIRICHLET DOMAINS III

• Quantization//Localization:• Quant. -> naheliegender Characteristic Point.• Lok. -> ebenfalls naheliegenden C.-Pukte.

• Suche ist zeit konsumierend (O(n), wobei n die Anzahl der Domänen ist). => partitionierende Algorithmus erlauben alleinigen Bezug auf naheliegende Punkte.

Page 22: Pathfinding - World  Representation

DIRICHLET DOMAINS IV

• Validity:• Dadurch das verschiedene Formen erstellt werden,

besteht die Möglichkeit das das Reisen zwischen zweier Domänen über eine dritte Domäne führt, die eventuell vom Pathfinder nicht aufgeführt wird und dadurch unpassierbar wird.• => Probleme folgen: Der Graph ist ungültig.

• Usefulness:• Oft genutzt, Vorteil des einfachen Programmierens

(automatische Generierung), einfache Änderungen, es ist möglich die komplette Struktur zu ändern.

Page 23: Pathfinding - World  Representation

POINTS OF VISIBILITY

Page 24: Pathfinding - World  Representation

POINTS OF VISIBILITY I

• Definition: PoV besteht aus einem Weg, bestimmt und bestehend aus Beugungspunkten an verschiedenen gewölbten Scheitelpunkten der Umgebung. • Der Unterschied zwischen 2D und 3D liegt bei der

Erscheinung der Beugungspunkte:• 2D nur auf den gewölbten Scheitelpunkten• 3D auf den Scheitelpunkten oder auf gewölbten Polygonen

• Festlegung durch ‚characteristic points‘, die für die Geometrie ausgerechnet werden können, indem selbige minimal erweitert und anschließend ausgerechnet wird, => Ecken der neuen Geometrie.

Page 25: Pathfinding - World  Representation

POINTS OF VISIBILITY II

• Knoten = Beugungspunkte im kürzesten Pfad.• Anzahl der Punkte im normalen Game Level sind zu groß:• Einfachere Version: Die Beugungspunkte verwenden, wo sich die

Geometrie am meisten verändert.• => können von der Kollisions-Geometrie verwendet werden• Anschließend werden die Punkte als Knoten für den Graphen genutzt.

• Verbindungen entstehen durch Strahlen, die zwischen den Knoten hin und her geworfen. Treffen sie auf keine Hindernisse oder Geometire, besteht eine Verbindung.

• Durch diese Verbindung erhält diese Teilungsmöglichkeit ihren Namen, da man von einem Punkt aus, einen oder mehrere Punkte sehen kann.

Page 26: Pathfinding - World  Representation

BEISPIEL

Page 27: Pathfinding - World  Representation

POINTS OF VISIBILITY III

• Quantization//Localization//Vailidity:• ‚PoV‘ ist Teil der Darstellung der ‚dirichlet

domains‘.• Wenn die ‚dirichlet domains‘ noch dazu benutzt

werden, die Punkte in Knoten zu wandeln, kann es geschehen, das sich Punkte, die mit einander verbunden sind, nicht erreichen können.• Dadurch wird auch der Graph dieser Methode

unbrauchbar, genauso wie bei den dirichlet domains.

Page 28: Pathfinding - World  Representation

POINTS OF VISBILITY IV

• Usefulness:• Beliebte Methode zur automatischen Generierung von

Graphen.• Aber das Ergebnis ist die Mühe nicht wert:• Viele Korrekturen müssen per Hand eingegeben werden, was

dazu führt das die eigentliche Generierung soweit aufgebrochen wird, das es nicht mehr die ursprüngliche Form aufweist.

Der Autor schwört für die automatische Variante auf die ‚polygonal meshes‘ und für die manuelle Variante auf die ‚dirichlet domains‘.

Page 29: Pathfinding - World  Representation

POLYGONAL MESHES

Page 30: Pathfinding - World  Representation

DEFINITON

• Die grafische Struktur die sich hinter dieser Methode befindet, dient als Basis für die Repräsentation durch den Pathfinder. Jedes Level besteht aus Polygonen, die wieder mit anderen verbunden sind, ob nun eine KI vorhanden ist oder nicht.

• Trotz fehlender KI müssen die Verbindungen der einzelnen Regionen vom Designer spezifiziert werden.

Page 31: Pathfinding - World  Representation

QUANTIZATION//LOCALIZATION

• Benutzung von Boden-Polygone als Regionen => Knoten im Graphen.• Graph basiert auf der Maschen-Geometrie des Levels

=> nav‘ mesh• Knoten sind dann verbunden, wenn 2 Polygone sich

eine Kante oder Ecke teilen, dadurch entstehen bei anderen Formen wie dem Dreieck oder dem Quadrat, eine Vielzahl von Verbindungen.

• Nav‘ mesh: Involvierung spezieller Bezeichnungen von Polygonen als Boden, für die Möglichkeit des Einbringen von Sound-Effekten oder Haftungs-Unterschiede, beim Auslösen des Boden-Polygons.

Page 32: Pathfinding - World  Representation

QUANTIZATION//LOCALIZATION.2

• Der Wert einer Position wird in einen Boden-Polygon umgewandelt der den selbigen Wert enthält.• Welches Polygon ist das Richtige?• Vorrausetzung: Wir wissen wo sich der Charakter vorher

befunden hat (sprich: auf welchem Frame). Wenn wir das wissen, können wir davon ausgehen, das er sich im gleichen oder einem benachbartem Frame aufhält. => Diese Knoten werden als erstes getestet.

• Die ‚localization‘ kann jeden Punkt des Polygons benutzen, aber normal wird der geometrische Mittelpunkt genutzt.

Page 33: Pathfinding - World  Representation

VALIDITY

• Validity//Usefulness• Regionen die mit den ‚polygonal meshes‘ erstellt

worden, könnten problematisch sein.• Grund:• Bei verbunden Dreiecken zum Beispiel, kann das direkte

Reisen gegebenenfalls zu Kollisionen führen.

• Die bessere Variante ist die Verbindungsherstellung über sogenannte Knoten die als ‚portals‘ definiert sind. (später)

Page 34: Pathfinding - World  Representation

USEFULNESS

• Gehen wir von dieser Problematik aus, benötigen wir weitere Prozesse. • Nicht alle ‚locations‘ in einem Boden-Polygon sind

besetzt (manche sind zu nah ein einer Mauer), deshalb wird ein wenig Zubehör benötigt:• Hat eine Beeinflussung der generierten Verbindungen

durch geteilte Ecken und Kanten.• => Meisten Probleme geben komplexe, gewölbte Bereiche

ab: z.B. Türen!• Hier profitieren Spiele von erweiterten

Bewegungsmöglichkeiten für die verschiedenen geometrischen Formen.

Page 35: Pathfinding - World  Representation

EDGES AS NODES• Unterschied: Verbindungen laufen nicht mehr über

Standorte in den Boden-Polygonen ab, sondern deren Kanten dienen als Knoten. Somit generiert der Pathfinder einen Weg durch die Polygone über die Kanten.

• => Meist genutzt wird dies in der ‚portal-based rendering‘; dort sind Knoten Portale und eine Verbindung besteht zwischen allen Portalen die in Sichtweite sind.

• Bei den ‚polygonal meshes‘ fungieren die Ecken wie die Portale und haben ihren eigenen Knoten.

• Vorteil: eine dynamische Platzierung der Portale auf den Kanten und einen optimierten Weg durch den Pathfinder.

• Dies ist eine Art erweiterte Wegfindung!

Page 36: Pathfinding - World  Representation

EDGES AS NODES

Page 37: Pathfinding - World  Representation

COST FUNCTIONS

Page 38: Pathfinding - World  Representation

COST FUNCTIONS

• Die Kosten der kürzesten Verbindung, repräsentiert die Distanz. • Je höher die Kosten um so weiter ist die Distanz.

• Die Kosten für die schnellste Verbindung, die Zeit.• Distanz != Zeit, es ist schneller 10m zu laufen, als 10m zu

klettern.• Es können alle Arten von Sorgen zu den Kosten des

Graphen hinzufügen.• Bsp.: RTS-Games -> verschiedene Verbindungen werden teurer

wenn jemand dem feindlichen Feuer ausgesetzt ist oder er sich in einem gefährlichen Terrain bewegt.

• Der richtige Weg wäre dann der mit den geringsten Kosten.

Page 39: Pathfinding - World  Representation

COST FUNCTIONS II

• Meistens sind die Kosten eine Mischung aus unterschiedlichen Bedürfnissen und es können verschiedene Kosten für verschiedene Charakter entstehen.• Mögliche Anwendung:• Eine Aufklärungs-Truppe besteht aus Charakteren die eine

erhöhte Interesse an der Sichtbarkeit und der Geschwindigkeit haben.

• Eine schwere Artillerie hingegen hat eine Interesse in der Schwierigkeit der Umgebung.

• Dies nennt man ‚tactical pathfinding‘

Page 40: Pathfinding - World  Representation

PATH SMOOTHING

Page 41: Pathfinding - World  Representation

DEFINITION

• Ein Weg der von einem Knoten zum anderen führt, kann ungleichmäßig erscheinen. • Einige Darstellungsformen für die Spielewelt sind

anfälliger für dieses Phänomen als andere.• ‚Points of Visibility‘ Verbindungen wirken schon sehr

geglättet wohingegen ‚tile-based graphs‘ extrem zur Ungleichmäßigkeit tendiert.

• Wenn das Path Smoothing also nicht durch das steuernde Verhalten des Charakters stattfindet, ist der Gebrauch eines Path Smoothing Algorithm unerlässlich.

Page 42: Pathfinding - World  Representation

THE ALGORITHM

• Ausgehend von der Gültigkeit:• -> Neuer Pfad=output path; bekommt Start-Knoten.• -> Start und Ende sind im Input sowie im Output Path

gleich.• -> 3. Knoten aus geht ein Strahl reihenweise alle Knoten

bis zum Endknoten ab. • -> Wenn ein Strahl nicht durchkommt wird der vorherige

Knoten vom Input Path zum Output Path hinzugefügt.• -> Der Strahl wird vom nächsten Knoten im Input Path

fortgesetzt. • Wenn der Endknoten erreicht ist, wird dieser dem Output

Path hinzugefügt.• Der so entstandene Output Path ist der zu folgende Weg.

Page 43: Pathfinding - World  Representation

THE ALGORITHM IIDef smoothPath(inputPath):

#If the path is only two nodes long, then we can‘t smooth #it, so returnif len(inputPath) == 2: return inputPath

#Compile an output pathoutputPath = [inputPath[0]]

#Keep track of where we are in the input path we start at #2, because we assume two adjacent#nodes will pass the raycastinputIndex = 2

#Loop until we find the last item in the inputwhile inputIndex < len(inputPath)-1:

#Do the ray castif not rayClear(outputPath[len(outputPath)-1], inputPath[inputIndex]):

#The ray text failed, add the last node that passed to the output listoutputPath += inputPath[inputIndex-1]

#Consider the next nodeinputIndex++

#We‘ve reached the End of the input path, add the end node to the output and return itoutputPath += inputPath[len(inputPath)-1]Return outputPath

Page 44: Pathfinding - World  Representation

BEISPIEL

Page 45: Pathfinding - World  Representation

IMPROVING ON A*ANHAND DES ‚HIERARCHICAL PATHFINDING‘

Page 46: Pathfinding - World  Representation

IMPROVEMENT

• Da A*-Algorithmus eine effiziente Methode zur Berechnung des Wegs ist, gibt es verschiedene Methoden um einzelne Wünsche abzudecken.

• Gerade in Spielen mit teils mehreren Millionen Plätzen ist es schonender für den Speicherplatz, den A*-Algorithmus zu erweitern:• Hierarchical pathfinding: viele verschiedene Pläne müssen in

kurzer Abfolge erstellt werden• Dynamic pathfinding: erhöht die Geschwindigkeit der

umplanung.• Andere Variationen verringern dramatisch den

Speichergebrauch zur Wegfindung, auf Kosten der Performanz.

Page 47: Pathfinding - World  Representation

HIERARCHICAL PATHFINDING

• Aufgebaut in mehrere Abschnitte:• Angefangen mir einem Abstrakten Plan:• Wir wollen nach London zum Büro von einem Freund

• Dieser Plan wird in viele kleinen Schritte aufgeteilt:• Vom eigenem Haus zum Auto, vom Auto zum Flughafen, usw.

• Diese einzelnen Schritte werden auch wieder aufgeteilt:• Von der Couch zum Auto-Schlüssel, damit dann zur Haustür,…

• Auch diese Schritte werden aufgeteilt:• Von der Couch an dem Wohnzimmer-Tisch vorbei und dann über

den Teppich zur Anrichte, zum Behälter mit den Schlüsseln• So kann jeder Schritt im einzelnen bearbeitet und

überschaut werden. Und das Wegfindungsproblem für verschiedene Fälle wird aufgeteilt.

Page 48: Pathfinding - World  Representation

THE HIERARCHICAL PATHFINDING GRAPH

• Um das ‚hierarchical pathfinding‘ für A* zu unterstützen, muss die Informations-Struktur für den Graphen abgewandelt werden. • Der Umgang mit Knoten und Verbindungen ist

unterschiedlich zu denen aus den regulären Graphen.

Page 49: Pathfinding - World  Representation

NODES

• Plätze/Orte zusammengefasst -> Cluster• Bsp.: Alle Plätze in einem Raum gehören zu einer Gruppe

an• Für den abstrakten Plan, zählt dieser als ein Punkt!

• Dieser Vorgang kann nun beliebig oft wiederholt werden. Die Knoten für alle Räume können zu einer Gruppe zusammen gefasst werden usw. • => Wegfindung: Ein Knoten auf einer niedrigeren

Stufe des Plans muss zu einem Knoten einer höheren Stufe des Plans konvertierbar sein. • Eine typische Implementation zeichnet diese

Schritte auf.

Page 50: Pathfinding - World  Representation

NODES II

Page 51: Pathfinding - World  Representation

CONNECTIONS

• Verbindungen sind zwingend notwendig.• Verbindungen bauen sich zwischen den einzelnen

Gruppierungen auf und agieren übergreifend auf den einzelnen Ebenen des Plans.• Wenn wir uns nun von der Couch aufmachen Richtung

Flughafen Köln/Bonn, passieren wir die Gruppierungen „Heimat“, „Auto“, „Autobahn“, „Flughafen“.

• Jede dieser Gruppierungen ist durch diese Route mit einander Verbunden!

Page 52: Pathfinding - World  Representation

CONNECTION II

Page 53: Pathfinding - World  Representation

CONNECTION COSTS• Die Kosten zwischen zwei Gruppen, soll die Schwierigkeit der

Reise reflektieren. • Kann manuell eingegeben werden oder aus den Kosten der unteren Ebenen

berechnet werden.• Es gibt 3 Methoden die rein oder gemischt genutzt werden

können, um die Kosten zu kalkulieren:• Minimum Distance:• Die Kosten der Bewegung zwischen 2 Gruppen = die Kosten der günstigsten

Verbindung von zwei verbundenen Knoten in ihnen.• Maximin Distance:• Für jede eingehende Verbindung wird der geringste Abstand zu einer ausgehenden

verwendbaren Verbindung kalkuliert. Der größte dieser Wert wird dann zur Ausgehenden Verbindung addiert und stellt die Kosten zwischen den Gruppen dar.

• Average Minimum Distance:• Berechnung ähnlich wie bei der maximin distance, doch die Werte sind eher

durchschnittlich, lieber als einfach den Größten Wert zu nehmen.

Page 54: Pathfinding - World  Representation

CONNECTIONS COST II

• Zusammenfassung der 3 Methoden: • Minimum distance: optimistisch -> setzt voraus das es

keine Kosten bei der Bewegung zwischen zwei Knoten innerhalb der Gruppe gibt.

• Maximin distance: pessimistisch -> Findet die größten möglichen Kosten und benutzt nur diese.

• Average minimum distance: pragmatisch -> gibt dir nur die Kosten an, die du zahlst, über 100 von verschiedenen Pathfindern Anfragen.

Page 55: Pathfinding - World  Representation

BEISPIEL COST

Page 56: Pathfinding - World  Representation

PATHFINDING ON THE HIERARCHICAL GRAPH

• Bei der Wegfindung arbeiten wir mit dem normalen A*-Algorithmus.• Dieser durchläuft die komplette Struktur und

beginnt dabei bei der obersten Ebene und arbeitet sich bis unten hin durch. • Das Ergebnis der höheren Ebenen werden dazu

benutzt, die Arbeit auf den niedrigeren Ebenen einzugrenzen.

Page 57: Pathfinding - World  Representation

ALGORITHM

• Zuerst finden wir die Ebene auf der wir beginnen!• So hoch wie möglich, da die Arbeit sich dadurch verringert.

• Die Anfangs-Ebene sollte eine sein, wo die Start und Ziel Position nicht im gleichen Knoten liegt.

• Wenn ein Plan gefunden wurde, müssen die Anfänge verfeinert werden, da diese am wichtigsten sind für die Bewegung des Charakters.

• Nun gehen wir auf eine tiefere Ebene und verfeinern die dortigen Bewegungen des Charakters. Wenn er an sein Ziel angekommen ist, werden die Positionen resettet und das gleiche Spiel beginnt von vorne.

Page 58: Pathfinding - World  Representation

PSEUDO-CODEIf start == end: return NonestartNode = startendNode = endlevel0fNodes = 0

currentLevel = graph.getLevels()-1While currentLevel >= 0:startNode = graph.getNodeAtLevel(0, start, currentLevel)endNode = graph.getNodeAtLevel(level0fNodes, endNode, currentLevel)level0fNodes = currentLevelif startNode == endNode:continuegraph.setLevel(currentLevel)path = pathfindAStar(graph, startNode, endNode, heuristic)endNode = path[0].getToNode()Return path

Page 59: Pathfinding - World  Representation

PERFORMANCE

• Die Performanz von A* bleibt gleich, der unverändert benutzt wird.• Die Funktion des ‚hierarchical pathfinder‘, O(plm)

in Zeit, erscheint langsamer als andere Grund-Algorithmen der Wegfindung. • Es gibt p Ebenen vom O(lm) A*-Algorithmus, aber

in jedem Fall ist die Nummer der Wiederholungen geringer als ein grober A* Abruf. Die praktische Performanz ist dadurch signifikant höher!

Page 60: Pathfinding - World  Representation

INSTANCED GEOMETRY

• Die meisten Level-Details in Spielen sind meist einzigartig. Genauso ist das auch bei den Graphen für die Wegfindung.• Auf manchem Landschaften stehen Gebäude oder

Eingänge zu gesonderten Zugang zu Instanzen.• Diese in sich separierten Level beinhalten meist

Content der nur für einen kleinen Kreis von Spielern vorbehalten ist. Aber auch dort müssen Wegfindungen stattfinden.

Page 61: Pathfinding - World  Representation

ALGORITHM

• Jede Art der Gebäude (indem Fall sind es die separierten Gegenden um die Instanz herum) gibt es eine ‚pathfinder graph‘.• Dieser Graph besitzt Verbindungen ‚exit‘, so wie

‚exit‘-Knoten, die aber nicht mit dem Graphen der Gebäude verbunden sind. • Für jede Instanz innerhalb eines solchen Gebäudes,

wird erfasst von welcher Art sie ist und welche Knoten des ‚main pathfinding graphs‘ mit dem ‚exit‘-Knoten verbunden ist.• Das liefert eine Übersicht Graphen von Gebäuden wie

mit dem Graphen der Welt verwirbelt ist.

Page 62: Pathfinding - World  Representation

INSTANCE GRAPH• Wenn der Instance Graph nach einer Sammlung von

Verbindungen mit einem seiner Knoten gefragt wird, bezieht er sich auf den Gebäude-Typ und schickt die dazugehörigen Werte zurück.

• Um nun eine Verwechslung vorzubeugen, ändert die Instanz die Knoten so , das die einzigartig sind.

• Er ist schlicht ein Übersetzer = Er übersetzt die Werte der Knoten eines Instanz-Graphen in einen Gebäude-Graphen und zurück.

• Wenn der Knoten ‚exit‘ besagt, fügt er eine Exit-Verbindung hinzu und

• => Die Kosten der Verbindungen beläuft sich auf Null, da die Ermittlung zu schwer ist.

Page 63: Pathfinding - World  Representation

OPEN GOAL PATHFINDING

• Knoten als Ziel deklarieren• Überprüfen ob der Knoten EIN Ziel ist und nicht

DAS Ziel. • Die Methode braucht eine genaue Anzeige der

Distanz zum nächsten Ziel. • Doch was ist das gewählte Ziel?

Dies sollte nicht über den Pathfinder stattfinden, eher sollte die KI die Auswahl treffen und er findet den passenden Weg dazu.

Page 64: Pathfinding - World  Representation

DYNAMIC PATHFINDING

• Bei dieser Methode geht es darum, das sich die Gestaltung des Weges anhand von neu gewonnen Informationen ändern kann und das immer zu jeder Zeit. • Allerdings kann dies, bei einem ständig wechselnden

Informationsfluss, zu einer Überflutung des pathfinder führen. Dieser beginnt dann von vorne und beendet den vorherigen Plan erst gar nicht => kein Prozess wird fertiggestellt.• Erlaubt eine Kalkulation eines neues Weg nur für die

Teile des Plan, die sich geändert haben• => A* wird zu D*

Page 65: Pathfinding - World  Representation

IDA* - ITERATIVE DEEPENING A*

• Hat weder offene noch geschlossene Listen.• Startet mit einem „cutt-off“ Wert, sucht alle möglichen

Wege ab, bis einer kürzer ist, als der Wert.• Der Start-Wert ist sehr gering, sollte kein Weg

gefunden werden, wird der Wert ein wenig erhöht und der Vorgang wiederholt sich.

• Geringes Implementations-Aufkommen; kein Speicher wird benötigt.

• Allerdings nur dann effizient benutzbar, wenn der Speicher Bedarf , das Schlüssel Element in der Betrachtung ist

• => Ansonsten sind A* und Dijkstra effektiver.

Page 66: Pathfinding - World  Representation

SMA* - SIMPLIFIED MEMORY-BOUNDED A*

• Ein festgelegter Wert der Liste reguliert das Hinzufügen von Knoten:• Ist ein Knoten über diesen Wert, wird er abgelegt. Ist er

unter diesem Wert, wird er hinzugefügt und der Knoten in der Liste, mit dem höchsten Wert wird entfernt.

• Diese Variante garantiert nicht den optimalen Weg, aber es verhindert Probleme mit den cashe misses und dem aliasing, was A* ab und an mit sich führt.

Page 67: Pathfinding - World  Representation

VIELEN DANK FÜR DIE AUFMERKSAMKEIT!!!