Pathfinding - World Representation
description
Transcript of Pathfinding - World Representation
![Page 1: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/1.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/2.jpg)
INHALT
• World Representation• Tile Graph• Dirichlet Domain• Points of Vibility• Polygonal Meshes• Cost Functions• Path Smoothing• Improving on A*
![Page 3: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/3.jpg)
WORLD REPRESENTATION
![Page 4: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/4.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/5.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/6.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/7.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/8.jpg)
VAILIDITY II
![Page 9: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/9.jpg)
TILE GRAPHS
![Page 10: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/10.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/11.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/12.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/13.jpg)
GENERATION//VALIDITY.2
![Page 14: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/14.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/15.jpg)
DIRICHLET DOMAINS
![Page 16: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/16.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/17.jpg)
VORSTELLUNG
![Page 18: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/18.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/19.jpg)
DIRICHLET DOMAINS II.2
• Dient zur Visualisierung der Problematik der manuellen Änderung der Breite-Werte der Quellpunkte
![Page 20: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/20.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/21.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/22.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/23.jpg)
POINTS OF VISIBILITY
![Page 24: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/24.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/25.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/26.jpg)
BEISPIEL
![Page 27: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/27.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/28.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/29.jpg)
POLYGONAL MESHES
![Page 30: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/30.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/31.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/32.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/33.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/34.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/35.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/36.jpg)
EDGES AS NODES
![Page 37: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/37.jpg)
COST FUNCTIONS
![Page 38: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/38.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/39.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/40.jpg)
PATH SMOOTHING
![Page 41: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/41.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/42.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/43.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/44.jpg)
BEISPIEL
![Page 45: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/45.jpg)
IMPROVING ON A*ANHAND DES ‚HIERARCHICAL PATHFINDING‘
![Page 46: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/46.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/47.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/48.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/49.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/50.jpg)
NODES II
![Page 51: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/51.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/52.jpg)
CONNECTION II
![Page 53: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/53.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/54.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/55.jpg)
BEISPIEL COST
![Page 56: Pathfinding - World Representation](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/56.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/57.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/58.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/59.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/60.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/61.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/62.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/63.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/64.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/65.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/66.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022081513/56816708550346895ddb6fc0/html5/thumbnails/67.jpg)
VIELEN DANK FÜR DIE AUFMERKSAMKEIT!!!