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
Feb 24, 2016
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
INHALT
• World Representation• Tile Graph• Dirichlet Domain• Points of Vibility• Polygonal Meshes• Cost Functions• Path Smoothing• Improving on A*
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.
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
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.
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.
VAILIDITY II
TILE GRAPHS
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.
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.
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.
GENERATION//VALIDITY.2
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.
DIRICHLET DOMAINS
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.
VORSTELLUNG
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.
DIRICHLET DOMAINS II.2
• Dient zur Visualisierung der Problematik der manuellen Änderung der Breite-Werte der Quellpunkte
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.
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.
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.
POINTS OF VISIBILITY
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.
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.
BEISPIEL
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.
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‘.
POLYGONAL MESHES
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.
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.
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.
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)
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.
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!
EDGES AS NODES
COST FUNCTIONS
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.
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‘
PATH SMOOTHING
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.
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.
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
BEISPIEL
IMPROVING ON A*ANHAND DES ‚HIERARCHICAL PATHFINDING‘
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.
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.
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.
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.
NODES II
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!
CONNECTION II
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.
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.
BEISPIEL COST
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.
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.
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
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!
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.
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.
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.
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.
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*
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.
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.
VIELEN DANK FÜR DIE AUFMERKSAMKEIT!!!