3D Pathfinding

Transcription

3D Pathfinding
3D Pathfinding
Seminar „Computer Graphics / Aspects of Game Design“ – Vortrag vom 8. Juni 2006
Technische Universität München / Lehrstuhl für Computergrafik & Visualisierung (TUM 3D)
Autor: Daniel Kastenholz ([email protected])
Betreuer: Jens Schneider ([email protected])
Rechtliche Hinweise
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.0
Germany License. To view a copy of this license, visit http://creativecommons.org/licenses/by-ncsa/2.0/de/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco,
California, 94105, USA.
Namensnennung-NichtKommerziell-Weitergabe unter gleichen Bedingungen 2.0 Deutschland
Sie dürfen:
• den Inhalt vervielfältigen, verbreiten und öffentlich aufführen
• Bearbeitungen anfertigen
Zu den folgenden Bedingungen:
Namensnennung.
Sie müssen den Namen des Autors/Rechtsinhabers nennen.
Keine kommerzielle Nutzung.
Dieser Inhalt darf nicht für kommerzielle Zwecke verwendet werden.
Weitergabe unter gleichen Bedingungen.
Wenn Sie diesen Inhalt bearbeiten oder in anderer Weise
umgestalten, verändern oder als Grundlage für einen anderen Inhalt
verwenden, dann dürfen Sie den neu entstandenen Inhalt nur unter
Verwendung identischer Lizenzbedingungen weitergeben.
•
•
Im Falle einer Verbreitung müssen Sie anderen die Lizenzbedingungen, unter
die dieser Inhalt fällt, mitteilen.
Jede dieser Bedingungen kann nach schriftlicher Einwilligung des
Rechtsinhabers aufgehoben werden.
Die gesetzlichen Schranken des Urheberrechts bleiben hiervon unberührt.
Das Commons Deed ist eine Zusammenfassung des Lizenzvertrags in allgemeinverständlicher Sprache.
1
Inhalt
Einleitung ................................................................................................................................................................. 3
Begriffsklärung ..................................................................................................................................................... 3
Thematische Einordnung...................................................................................................................................... 3
Abgrenzung zu anderen Themen ......................................................................................................................... 3
Inhalt dieser Ausarbeitung.................................................................................................................................... 4
Historie ................................................................................................................................................................. 4
Kritik: Pathfinding – „Black Magic“ oder „alles Betrug“?........................................................................................ 5
Preprocessing .......................................................................................................................................................... 6
Grundlagen........................................................................................................................................................... 6
Partitionierung von Landschaften ohne Verfeinerung........................................................................................... 6
Gleichmäßiges Raster ...................................................................................................................................... 6
Wegpunkte-Graphen......................................................................................................................................... 7
Kreisbasierte Wegpunkte-Graphen................................................................................................................... 8
n
„2 “-Trees.......................................................................................................................................................... 8
Polygonale Zerlegung ....................................................................................................................................... 9
Zusammenfassung ......................................................................................................................................... 10
Partitionierung von Landschaften mit Verfeinerung............................................................................................ 11
Submapping/Subgraphing .................................................................................................................................. 12
Optimierungen im Level Design...................................................................................................................... 12
Nutzung von Restriktionen im Spiel-Design.................................................................................................... 13
Bewegungskosten .............................................................................................................................................. 13
Real-Time Processing............................................................................................................................................ 14
Algorithmen zur Berechnung günstigster Pfade ................................................................................................. 14
Grundlagen ..................................................................................................................................................... 14
Dijkstra............................................................................................................................................................ 15
A-Star (A*) ...................................................................................................................................................... 16
Natürliche Wegführung....................................................................................................................................... 17
Wegpunkte-Optimierung & Interpolation ......................................................................................................... 17
Pfadglättung durch Splines ............................................................................................................................. 17
Ausblick / Forschungsthemen ................................................................................................................................ 18
Behandlung dynamischer und neu aufgetretener Hindernisse ........................................................................... 18
Grundlagen ..................................................................................................................................................... 18
Lifelong-Planning-A-Star (LPA)....................................................................................................................... 19
Intelligentere Gegner durch Influence Maps....................................................................................................... 20
Literatur.................................................................................................................................................................. 22
2
Einleitung
Begriffsklärung
Die Auswertung von Geländedaten zur Gewinnung einer nutzbaren Information bezeichnet man allgemein als
Terrain Analysis. Pathfinding befasst sich als eine konkrete Anwendung von Terrain Analysis mit dem Finden
eines Weges zwischen zwei Punkten in einem gegebenen Suchraum. Nicht immer ist dabei aber der
geografisch „kürzeste“ Weg auch der Beste. Je nach Anwendungsfall können besondere Zusatzanforderungen
bestehen:
„Predominately the problem is ‘Find the shortest path from A to B’, but other forms of pathfinding issues also
exist, such as ‘Find any path from A to B’ or ‘Find a path from A to B via C’.“ (Q16)
Aufgrund von Wegkosten, spezifischen Eigenschaften der zu bewegenden Entität oder besonderen Umweltfaktoren können Fälle auftreten, in denen evtl. ein längerer Weg besser geeignet erscheint als der Kürzeste.
Daher soll im Folgenden gelten:
„[Pathfinding means] looking for a good route for moving an entity from here to there.“ (Q4)
3
3D Pathfinding befasst sich als besondere Ausprägung des Pathfinding mit dem Suchen von Pfaden im R . Im
2
Vergleich zu Pathfinding im R ergibt sich hier durch die Erhebung des Suchraums in die nächst höhere Dimension typischerweise eine größere Auswahl an möglichen Wegen.
Thematische Einordnung
Pathfinding im Allgemeinen kann als Teilgebiet der „Künstlichen Intelligenz“ verstanden werden. Besonders relevant ist Pathfiding heute in der Spiele-Entwicklung, aber auch Anwendungen wie die Berechnung von Fahrplänen und günstigsten Routen (Online-Routenplaner, Navigations-Systeme) und der Einsatz im militärischen Bereich (Roboter, Drohnen) gewinnen zunehmend an Bedeutung.
Abgrenzung zu anderen Themen
Methodisch fundiert das 3D Pathfinding insbesondere auf den Mitteln der Graphentheorie und der Diskreten
Optimierung. In der praktischen Anwendung steht das Pathfinding in enger Verbindung mit anderen Themengebieten der Künstlichen Intelligenz.
Im Spielebereich sind nicht zuletzt durch die gegenseitigen Wechselwirkungen der Spielelemente die
Aufgabenbereiche „Terrain Modelling“, „Pathfinding“, „Character Design“ und „Character Intelligence“ eng
miteinander verbunden. Trotzdem lassen sich auch dort Grenzen ziehen. Im Rahmen dieser Ausarbeitung wird
die thematische Abgrenzung nach Q30 zu Grunde gelegt:
3D Engine: Full resolution 3D world.
Physics: Physical 3D description of the world.
Collision Detection: Object and world collision.
AI & Pathfinding: Understanding and navigating the 3D world.
3D Sound: Sound rendering in 3D environment.
Besonders hervorzuheben ist hierbei die Abgrenzung von Pathfinding und Collision Detection. Pathfinding endet,
wo ein gangbarer Weg von einem Startpunkt zu einem Zielpunkt gefunden worden ist. Collision Detection beginnt,
sobald eine Einheit sich abseits eines solchen Idealpfades bewegt (ideal, weil bereits bekannt ist, dass er
gangbar ist) und geprüft werden muss, ob das Abweichen nicht zu einer unzulässigen Kollision mit der Umwelt
führt, die unterbunden werden muss.
3
Inhalt dieser Ausarbeitung
In den vergangenen 10 Jahren hat sich im Spielebereich der Generationswechsel vom 2D- zum 3D-Standard
in der Visualisierung vollzogen. Legt man eine einfache Diskretisierung des Suchraums in Rasterform (2D) bzw.
Würfelform (3D) zugrunde, steigt die Anzahl der zu berücksichtigen Wegpunkte in einer Anwendung dadurch
(theoretisch) von x * y auf x * y * z. Rechnerisch ist einer solchen Vergrößerung des Suchraums nicht ohne
weiteres nachzukommen, wenn ein vergleichbarer Spielfluss gewährleistet werden soll. Prinzipiell stellt sich
deswegen insbesondere beim Thema 3D-Pathfinding die Frage nach Optimierungsmöglichkeiten.
Besonders effiziente Implementierungen sind dann zu erreichen, wenn Festlegungen getroffen werden können,
die Teile des diskretisierten Suchraums bereits im Vorfeld ausschließen und damit die Zahl der möglichen
Lösungen im Vorfeld reduzieren. In zeitkritischen Umgebungen (wie z.B. Echtzeit-Strategiespielen) ergibt sich im
Rahmen der Optimierung häufig auch die Möglichkeit, die Wegberechnung in der Echtzeit-Anwendung durch ein
vorangehendes „Preprocessing“ des Suchraums zu beschleunigen. Das Pathfinding wird damit zu einem
zweiphasigen Prozess.
Im Rahmen dieser Ausarbeitung sollen die grundsätzlichen Herausforderungen und Lösungsansätze des
Pathfinding anhand gängiger Algorithmen erläutert und spezielle Lösungsansätze für die effiziente Berechnung
3
von Pfaden im R vorgestellt werden. Dazu werden nacheinander Techniken des Preprocessing und des Realtime Processing vorgestellt und an Fallbeispielen verdeutlicht. In den Illustrationen werden bevorzugt Anwendungsbeispiele aus der Spiele-Entwicklung verwendet. Ein abschließendes Kapitel gibt in aller Kürze einen
Überblick über aktuelle Forschungsthemen sowie einen Ausblick in die Zukunft.
Historie
Pathfinding gewinnt in der Informatik einen zunehmend an Stellenwert. Neben klassischen Anwendungen wie
der Netzwerkflussanalyse findet Pathfinding insbesondere auch in (Internet-) Diensten zur Routenplanung
Anwendung. Auch in Zukunftsbereichen wie militärischer Anwendung und Robotik (Beispiel: KrankenhausRoboter) ist Pathfinding ein elementarer Forschungsbestandteil.
Im Spielebereich wird Pathfinding seit über 20 Jahren überall dort angewendet, wo Charaktere des Computergegners simuliert werden müssen, die sich in einer vorgegebenen Spiellandschaft bewegen, durch Fortbewegung dynamisch (re-) agieren und dabei möglichst „intelligent“ wirken sollen.
Beispiele:
Mario Bros. (© 1983 Nintendo)
Pacman (© 1980 Namco)
In neueren (insbesondere: Echtzeit-Strategie-) Spielen gewinnt Pathfinding auch bei den Spielercharakteren zunehmend an Bedeutung. Der Spieler erteilt, anders als in klassischen Arcade-Spielen, seinen Einheiten nicht
mehr kontinuierliche Bewegungsanweisungen, sondern gibt z.B. seinen militärischen Einheiten den Marschbefehl
nur noch abstrakt per Start- und Zielpunkt (und ggf. einigen Wegpunkten) vor. Die Suche eines passenden Weges übernimmt dann jedoch die Spiel-Engine.
4
Beispiele:
Warcraft II – Tides of War (© 1995 Blizzard)
Age of Empires III (© 2005 Ensemble Studios)
Kritik: Pathfinding – „Black Magic“ oder „alles Betrug“?
In den späten 90er Jahren hat sich in der Spielebranche der technologische Fortschritt von Spielen mit 2D- zu
3D-Grafik vollzogen. Zieht man in Betracht, dass noch zu 2D-Zeiten im Jahr 1999 bei Age of Empires II die Rechenbelastung eines durchschnittlichen PCs allein für das Pathfinding bei 60 bis 70 Prozent lag (Q14), so
wirft die Tatsache, dass bereits 2005 der Folgetitel Age of Empires III eine 3D-Darstellung implementierte, die auf
einem zu dieser Zeit durchschnittlichen Rechner ebenso flüssig lief, Fragen auf. Schon bei Anwendung einer
Faustformel wie „Moore’s Law“ erscheint
2
3
1.
völlig ausgeschlossen, dass beim Übergang von R nach R die Anzahl der berücksichtigen Lösungen
im Suchraum tatsächlich um den Faktor Z gestiegen ist, weil dafür die Rechenleistung nicht vorhanden
wäre
2.
äußerst fragwürdig, ob, unabhängig von der Anzahl der Dimensionen, der berücksichtigen Suchraum
wirklich so groß ist, wie er den Spielern vom rein visuellen Eindruck her erscheinen mag.
Tatsächlich wird in Spieleprojekten viel Aufwand investiert, um die Explosion des Suchraums bestmöglich zu
verhindern. Die große Frage, die sich in diesem Zusammenhang stellt, ist, wie trotz der (visuellen) 3D-Ansicht das
logische Modell weiterhin auf kleinen, planaren Graphen abgebildet werden kann und die gleichen Algorithmen
angewandt werden können, wie dies bei einer 2D-Darstellung der Fall gewesen wäre. Wäre der Suchraum nicht
bereits vor der eigentlichen Wegberechnung stark eingegrenzt, wäre sie in akzeptabler Zeit nicht durchführbar.
Pathfinding käme damit für Echtzeitanwendungen nicht in Frage.
Wie fest das Schaffen von „Illusionen“ mittlerweile in der Spieleentwicklung verankert ist, zeigt dieses Zitat von
John R. McCawley, der nach vier Jahren Entwicklertätigkeit im KI-Bereich in Q9 sein Fazit zieht:
“When I started Game AI I was ‘into’ genetic algorithms, neural nets and other such ‘real’ AI subjects. Over time I
came to realize that it isn’t high falootin’ learning that people want out of games. People want the illusion of
intelligence. It doesn’t matter how you arrive at the result, what matters is the appearance of thought. The way
you obtain this illusion is through complexity and tweaking.”
Ein wesentlicher Teil der Entwicklungsleistung bei Pathfinding besteht in der Identifikation und dem Ausschluss suboptimaler oder unmöglicher Wegkombinationen. Die Implementierung eines effizienten Pathfinding-Algorithmus ist damit eine analytische Aufgabe, die nur mit genauen Kenntnissen der Beschaffenheit des
Suchraums und der darin agierenden Charaktere zu praktisch verwertbaren Ergebnissen führt.
Bei der Entwicklung heutiger Computerspiele wird Pathfinding meist als zweiphasiger Prozess realisiert. Neben
der Optimierung des Pathfinding zur Laufzeit hat in heutigen Spielen vor allem das Preprocessing einen hohen
Stellenwert. Dabei werden statische (d.h. zur Laufzeit unveränderliche Teile des Terrains wie Gebirge, Flüsse
oder Seen), bereits im Vorfeld untersucht und die wenigen dort als Wege in Frage kommenden Routen für die
spätere Wiederverwendung gespeichert.
5
Preprocessing
Grundlagen
Das Preprocessing großer Spielkarten kann mehrere Minuten in Anspruch nehmen. Die Ergebnisdaten des Preprocessing werden daher normalerweise vom Hersteller des Spiels gleich fertig mitgeliefert. Die Ladezeit, die z.B.
in Echtzeit-Strategiespielen nach Auswahl der Spielkarte anfällt, ist v.a. auf die Vorberechnung dynamischer
Spieldaten zurückzuführen.
Bevor ein „visuelles” Modell in Echtzeit von einem Pathfinding-Algorithmus nach Pfaden durchsucht werden
kann, muss es in eine für diesen Algorithmus angemessene logische Repräsentation überführt werden.
Diese logische Repräsentation besteht üblicherweise aus einem ungerichteten Graphen mit einer zunächst
nicht weiter bestimmten Zahl an Knoten und Kanten. Die Knoten repräsentieren jeweils einen bestimmten Teilbereich (engl.: Partition) des visuellen Modells, die Kanten die Verbindungen der Teilbereiche untereinander.
(Die Knoten, deren Teilbereiche im visuellen Modell aneinander angrenzen, werden in der logischen Repräsentation mit einer Kante verbunden.) Andere Techniken werden hier von der näheren Betrachtung ausgeschlossen,
weil sie in der Praxis eine untergeordnete Rolle spielen.
Algorithmen, die ein visuelles (meist: polygonales) Modell in Teilbereiche zerlegen und in einen Graphen überführen, werden als Partitioning-Algorithmen bezeichnet.
VisuelleRepräsentation
LogischeRepräsentation
WorldModel
PartitioningAlgorithmus
Input
UngerichteterGraph
Output
1
1
*
*
verbindet
Knoten
2
Kante
1
grenzt an
1
1..*
Bei der Partitionierung des visuellen Modells in die logische Repräsentation können verschiedene Techniken angewandt werden. Grundsätzlich ist zu unterscheiden zwischen Partitionierung ohne bzw. mit Verfeinerung. Zu
beiden methodischen Ansätzen sollen nachfolgend einige Varianten vorgestellt werden.
Partitionierung von Landschaften ohne Verfeinerung
Gleichmäßiges Raster
Bei der Zerlegung in ein gleichmäßiges Raster wird die Landschaft in gleich große Einheiten einer bestimmten
Form, üblicherweise in Quadrate, zerlegt. Jedes dieser Quadrate stellt für den Algorithmus einen eigenen Teilbereich dar und wird folglich in der logischen Repräsentation als einzelner Knoten erfasst. Liegen zwei Quadrate aneinander und kann man von einem das andere erreichen, werden die dazugehörigen Knoten mit einer Kante verbunden.
6
Logische Repräsentation (Q20)
Unterteilung einer Landschaft in Raster (Q20)
Begrenzt man, wie in der obigen Abbildung gezeigt, die Verbindungen eines Quadrats auf die jeweils links, rechts,
oben und unten angrenzenden Quadraten, wird dies in den meisten Fällen zu „unnatürlich“ erscheinenden Fortbewegungen der Einheiten führen. Es empfiehlt sich daher, auch die diagonal angrenzenden Flächen mit
einzubeziehen. Streng genommen ist dabei jedoch zu berücksichtigen, dass die mit einem diagonalen Schritt
zurückgelegte Strecke länger ist als die eines geraden Schrittes.
Neben der Zerlegung in Quadrate sind auch andere Formen denkbar, wie z.B. Hexagone. Der Vorteil einer Aufteilung in Hexagone ist, dass die Differenz zwischen „schrägen“ und „geraden“ Seitenschritten nicht so stark ins
Gewicht fällt. (Dafür ist die Auswertung von Maus-Klicks in der Karte etwas aufwendiger.)
Im dreidimensionalen Raum könnten statt der Quadrate Würfel eingesetzt werden.
Wegpunkte-Graphen
Einen grundlegend anderen Ansatz verfolgt man beim Setzen von Wegpunkten. Bei dieser Technik ergänzt normalerweise der Level Designer die Geometriedaten durch Metadaten. In Abhängigkeit von der Gestaltung des
Raums wählt er diejenigen Punkte aus, die ihm als besonders wichtige „Verkehrsknotenpunkte“ erscheinen, und
markiert sie als Wegpunkte. Diese Wegpunkte stellen gleichzeitig die Knoten des Logikgraphen dar. Entweder
ebenfalls manuell oder automatisiert durch die Auswertung von Distanzen und Hindernissen werden danach die
Kanten ergänzt.
Der Hauptvorteil von Wegpunktesystemen ist, dass der Level Designer irrelevante Stellen aussparen kann und
die Größe des Logikgraphen erheblich reduziert wird. Besonders deutliche Vorteile lassen sich auch bei der
Erfassung gerader Strecken erzielen, wo im „intelligent“ gestalteten Wegpunktesystem auf die vielen „interpolierenden“, aber eigentlich unnötigen Punkte zwischen Start und Ziel verzichtet werden kann und stattdessen einfach eine einzige lange Strecke definiert wird.
Der Nachteil von Wegpunktesystemen besteht darin, dass, wenn nicht sehr viele Wegpunkte gesetzt werden, der
vom Algorithmus zurückgegebene Pfad in den seltensten Situationen auch den in der Landschaft theoretisch
kürzesten wählbaren Weg darstellt.
Wegpunktesysteme überzeugen nicht immer durch die Güte der gefundenen Pfade (Q20)
7
Kreisbasierte Wegpunkte-Graphen
Bei kreisbasierten Wegpunkte-Graphen wird ein regulärer Wegpunktegraph ergänzt durch gedachte Kreise um
die einzelnen Wegpunkte. Diese Kreise können (bzw. sollen sogar!) unterschiedlich groß ausfallen und sich
gegenseitig überlagern. Eine Verbindung zwischen zwei Wegpunkten wird überall dort angenommen, wo sich die
Kreise zweier Wegpunkte überschneiden.
Kreisbasierte Wegpunkte-Graphen sind überall dort von Vorteil, wo große, offene Gelände vorzufinden sind.
Dort lassen sich durch die Variation der Dichte der Wegpunkte und ihrer Kreispunkte sogar relativ einfach Kostenfunktionen (z.B. durch größere Dichte und kleinere Radien bei unwegsamem Gelände) realisieren.
Als ungünstig erweist sich das System vor allem in geschlossenen Räumen mit vielen Ecken und Winkeln, weil
diese von den Kreisen nur schwer abgedeckt werden können.
Kreisbasierte Wegpunktesysteme stoßen in geschlossenen Räumen schnell an ihre Grenzen (Q20)
„2n“-Trees
Im vorangegangen Beispiel für gleichmäßige Zerlegung ist deutlich geworden, dass diese Form des Partitioning
bei großen zu sehr umfangreichen logischen Repräsentationen führt, die viel Speicherplatz benötigen und den
Suchalgorithmus in späteren Verarbeitungsschritten lange beschäftigen können. Eine Möglichkeit, dem
n
entgegenzuwirken, ohne all zu weit vom Raster-Prinzip abzuweichen, ist die Verwendung von „2 “-Trees.
Zerlegung in einen Quad-Tree
Spielansicht einer Landschaft mit Quad-Tree: das Quadrat am
linken Bildrand ist sehr groß ausgefallen (Q16)
Bei der Bildung von Quad-Trees wird eine gegebene Fläche rekursiv immer dann in vier gleich große Unterteile
zerlegt, wenn sie sowohl Teile enthält, die begehbar sind, als auch solche, die nicht begehbar sind. Den geografischer „Ankerpunkt“ bildet jeweils der Mittelpunkt einer Fläche.
8
n
Durch die Bildung von 2 -Trees entsteht in den meisten Fällen eine sehr viel „kompaktere“ logische Repräsentation: die Anzahl der betrachteten Flächen sinkt, und mit ihr die Anzahl der Knoten im Graphen. Leider wird
dabei aber auch die Bewegungsmöglichkeit auf der Karte stark eingeschränkt: Einheiten können nur noch die
Zentren der Flächen ansteuern, was bei sehr unterschiedlich großen Flächen verwirrend wirken oder gar den
Spielfluss stören kann.
Bei einer Anhebung des Verfahrens in den dreidimensionalen Raum spricht man von Octrees.
Schematische Darstellung einer Octree-Zerlegung (Q27)
Felsformation, aufgelöst als Octree (Q27)
Polygonale Zerlegung
Eine weitere Möglichkeit, eine Karte in Teilbereiche zu unterteilen, ist die Zerlegung in Polygone. Die Polygone
können dabei eine feste Größe haben oder als Flächen mit unterschiedlichen Größen gebildet werden. Die
Beschränkung auf Dreiecke ist genauso möglich wie das Zusammenfassen größerer Bereiche als konvexe
Polygone.
Bei der polygonalen Zerlegung bestehen die besten Chancen, in natürlichen Landschaften aneinander liegende
Flächen mit gleichen Eigenschaften zu erkennen, diese als eine Einheit zusammenzufassen und folglich auch nur
mit einem Knoten in der logischen Repräsentation erfassen zu müssen.
Logische Repräsentation (Q16)
Unterteilung einer Landschaft in Polygone (Q14)
Da bei 3D-Geometrie derzeit ohnehin die polygonale Darstellungsform dominiert, könnte es nahe liegend erscheinen, auf die Erstellung einer separaten Repräsentation für das Pathfinding zu verzichten und lediglich die
Geometriedaten um die Spieldaten zu ergänzen, die normalerweise zu den Kantendaten des Graphenmodells
geworden wären. Genau davon ist jedoch dringend abzuraten – nicht nur, um evtl. den Ansprüchen ingenieur9
mäßiger Software-Entwicklung gerecht zu werden, sondern auch, weil sich in der Spieleindustrie ein Trend zur
Auslagerung von AI nach „off-the-shelf“-Prinzip abzeichnet.
Die Anforderungen an Künstliche Intelligenz in Spielen haben in den vergangenen Jahren so stark zugenommen,
dass, nach „Lizensierungswelle“ für 3D-Engines in den späten 90er Jahren, nun zunehmend auch die Künstliche
Intelligenz als Modul von Drittanbietern als eigenständige Komponente geliefert wird und damit die Implementierung einer diskreten Schnittstelle zwischen Spielintelligenz und Grafik-Engine mehr denn je geboten scheint.
1
Der französische Anbieter Kynogon bietet bereits jetzt eine erweiterbare AI-Engine an, die von Spieleherstellern
wie Electronic Arts, Real Time World, Atari, Majesco, Pyro Studios, Lionhead Studios, Ascaron und Digital Illusion
CE in deren Spielen verwendet wird und dort Features wie Bewegung, Kampf, Formationsbildung, Kooperation
und Fahrzeugkontrolle bereitstellt.
„I avoid accessing any 3D data structures, vectors, or entity information directly from the AI. I have middleman
functions that loop through data in the 3D world and copy the data into a format easily digestable to the AI. This
shields the AI from changes in the internal representation of game data, and also aids in porting the AI to another
game.” (Q9)
Zusammenfassung
PartitioningAlgorithmus
VisuelleRepräsentation
WorldModel
Input
LogischeRepräsentation
UngerichteterGraph
Output
1
1
1
1
1
PartitioningMethodik
*
Kante
1
MethodikOhneVerfeinerung
Element
1
1..*
grenzt an
*
GleichmäßigesRastern
Quadrat
in
ergibt
1
Knoten
verbindet
2
ergibt
QuadTree
Quads
in
ergibt
Polygon
PolygonaleZerlegung
in
1
http://www.kynogon.com/
10
Partitionierung von Landschaften mit Verfeinerung
Ein wirklich effizientes Pathfinding lässt sich in Echtzeit-Spielen mit vielen computergesteuerten Einheiten nur
dann realisieren, wenn in der Partitionierung mit Verfeinerung gearbeitet wird. Verfeinerung bedeutet in diesem
Zusammenhang, dass nicht eine einzige logische Repräsentation der Landschaft generiert wird, sondern mehrere
– und zwar mit unterschiedlichen Abstraktionsstufen. Das Datenmodell verändert sich dabei nur unerheblich:
LogischeRepräsentation
PartitioningAlgorithmus
MipMappingGraphSet
UngerichteterGraph
Output
1
1..*
-
levelOfDetail: int
1
1
*
*
Knoten
Kante
grenzt an
1
1..*
verbindet
2
1
Liegen die Kartendaten in verschiedenen Abstraktionsstufen vor, kann auch der Pathfinding-Algorithmus bei der
Anforderung eines neuen Weges stufenweise vorgehen. Zunächst wird also in einer sehr groben Abstraktionsstufe geprüft, ob z.B. ein Weg vom Sektor (1, 1) in den Sektor (3, 3) möglich ist. Ist dies nicht der Fall, kann die
Berechnung bereits an dieser Stelle abgebrochen werden. Sollte in der groben Auflösung ein Weg gefunden
werden, wird zur nächst feineren Stufe übergegangen und dort erneut geprüft, ob ein Weg möglich ist. Da aber
bereits aus der vorangegangenen Analyse bekannt ist, durch welche groben Sektoren der Pfad führen wird, kann
in dieser Verfeinerungsstufe ein Großteil der normalerweise in Betracht kommenden Knoten von vornherein
ausgeschlossen werden – und so weiter.
Verfeinerung einer Landschaft über drei Abstraktionsstufen
Wie dieses „Mip-Mapping“ in einem bereits erschienenen Spiel genutzt wurde, wird in Q14 am Beispiel von Age
of Empires II erläutert:
„AOE2 shipped with three distinctly different pathing algorithms. We sepcifically added a mip-mapped pathfinder
to address the problem our units had finding good paths across long distances. We solved this problem by
generating successively zoomed out mip-maps of the terrain (including obstructions) with the criteria of
subdivision being passability across that mip level. […] The other two pathfinders are a short distance polygonal
pathfinder and an extremely simple short/medium distance tile-based pathfinder. […] Together, all three of the
pathfinders gave us a huge win in terms of quality and speed for all of the units. […] If we wanted to path a unit
across the map, we checked the mip-map pathfinder and could assume that the polygonal pathfinder would solve
the problem when the unit got close.”
11
Submapping/Subgraphing
Der Umstieg von einer 2D- in eine 3D-Welt bedeutet aus Spielersicht einen spürbaren Zuwachs an Bewegungsfreiheit. Ohne Hilfsmittel würde die dritte Dimension jedoch für das Pathfinding einen kritischen Mehraufwand darstellen. Die Submappding/Subgraphing-Strategie ist eines dieser Hilfsmittel und bedient sich der Tatsache,
dass die meisten Einheiten, die sich über ein 3D-Gelände bewegen, in Wahrheit die meiste Zeit doch nur in zwei
Dimensionen unterwegs sind.
Das Prinzip des Submapping/Subgraphing ist die Unterteilung einer großen Spielwelt in viele kleine Spielwelten, die in Berechnungen separat betrachtet werden können. Falls möglich, werden Berechnungen auf eine oder
wenige der Teilspielwelten begrenzt. Dadurch verkleinern sich der Suchraum und folglich auch der Suchaufwand.
Grundsätzlich sind zwei Varianten (Submapping/Subgraphing durch Optimierung im Level Design, Submapping/
Subgraphing durch die Nutzung von Restriktionen im Spieldesign) zu unterscheiden. Beide Varianten können
auch kombiniert werden.
Optimierungen im Level Design
Aus Räumen zusammengesetzte Spielkarte im Shooter-Klassiker „Wolfenstein 3D“ (© id Software, 1992)
Durch geschicktes Level Design können große Spielwelten für den Spieler weitgehend unbemerkt in kleinere
Spielwelten zerlegt werden. Wie die o.a. Abbildung einer Spielkarte aus dem Shooter-Klassiker “Wolfenstein 3D”
verdeutlicht, kann dieser Effekt z.B. durch die Aufteilung eines Gebäudes in einzelne Räume erfolgen, die
durch Türen getrennt sind. Betritt ein Spieler einen neuen Raum durch eine Tür, kann der Suchgraph dynamisch
um die Geometrie dieses Raums erweitert bzw. die Geometrie des verlassenen Raums zukünftig vernachlässigt
werden.
Dieses Prinzip lässt sich auch auf 3D-Spiele übertragen:
„Is your game a first person 3D shooter? If so you may be able to get away with strictly 2D pathfinding if you set
up the world correctly. If your character is essentially moving on a 2D plane (a la Doom), it is a prime candidate
for 2D pathfinding. This is one place where the tweaking comes in. In order to maintain this 2D-ness you may
have to build contrived levels to avoid confusing the AI. An example would be organizing your level into a series
of 2D planes with only a few ways to move between them (staircases). I imagine that a whole article could be
written on keeping 3D levels ‘logically’ 2D for the sake of AI.” (Q9)
In freiem Gelände lässt sich ein solches Submapping/Subgraphing z.B. durch enge Geländepassagen oder
Brücken realisieren. Speziell die Möglichkeit zur Aufteilung einer Karte durch Brücken ist sehr beliebt, wobei mit
Fortschreiten des Spiels und der Anzahl der produzierten (und damit Pfade suchenden) Einheiten häufig die
Zahl der verfügbaren Brücken (durch Zerstörung) abnimmt und der Suchraum automatisch kleiner wird.
12
3D-Gelände-Aufteilung durch Brücken im Spiel
„Warcraft III“ (© Blizzard Entertainment)
2D-Gelände-Aufteilung durch Brücken im Spiel
„Command & Conquer II“ (© Westwood)
Nutzung von Restriktionen im Spiel-Design
Eine zusätzliche Möglichkeit, den Suchraum zu verkleinern, bieten Restriktionen im Spiel-Design. Werden
beispielsweise fliegende Einheiten angeboten, könnte im Spiel-Design z.B. auch die Annahme gemacht werden,
dass diese Flugeinheiten so hoch fliegen, dass sie höher fliegen als die höchsten Gebäude. Setzt man voraus,
dass Flugzeuge nur an ihrem Start- und Zielflughafen die Höhe variieren und im Falle einer drohenden Kollision
mit einem anderen Flugzeug eine Ausweichstrategie anwenden, so entfällt hier vollständig die Notwendigkeit, den
unterhalb der Flugebene liegenden dreidimensionalen Raum im Pathfinding überhaupt zu berücksichtigen.
Kampfflugzeuge in Aktion im Spiel „Command & Conquer III“ (© Westwood)
Bewegungskosten
Je ungleichmäßiger eine Landschaft in Teilbereiche zerlegt wird, desto „ungerechter“ erschiene es auch, im Spielverlauf allen Kanten des Graphen als gleich teuer zu behandeln. Unter Umständen könnten Spieleinheiten dann
lange Strecken schneller zurücklegen als kurze, nur, weil diese durch weniger oft aufgespaltetes Terrain führen.
Durch die Einführung von Bewegungskosten kann diesem Problem entgegengewirkt werden. Zur Darstellung
dieser Kosten im Graphen werden den einzelnen Kanten Gewichte zugeordnet.
13
LogischeRepräsentation
UngerichteterGraph
1
1
*
*
Knoten
Kante
grenzt an
1
1..* -
gewicht: int
verbindet
2
1
Logische Repräsentation ergänzt um
2
Wegkosten (Kantengewichte)
Unterschiedliche Gewichte können für ungleiche Distanz stehen oder, besonders in dreidimensionalen Welten
relevant, z.B. auch die Höhenunterschiede repräsentieren, die beim Übergang von einem Knoten zu einem
anderen überwunden werden müssen.
Der Algorithmus, der später im Real-Time-Processing den Graphen auswertet, sollte dann mithilfe der Kantengewichte erkennen, dass evtl. auch ein Weg über mehr Knoten für eine Einheit günstiger ausfallen kann und damit
zu bevorzugen ist.
Real-Time Processing
Algorithmen zur Berechnung günstigster Pfade
Grundlagen
Alle in der Spieleentwicklung relevanten Algorithmen zur Berechnung kürzester Pfade sind graphenorientiert.
Als Eingangsparameter nehmen sie einen Startknoten, einen Zielknoten und den Graphen selbst entgegen. Je
nach Komplexität des Spieleprojekts kann es auch sinnvoll erscheinen, zusätzliche Informationen zu der Einheit, die den Weg anfordert, als Constraints an den Algorithmus zu übergeben, um z.B. unterschiedliche Manövrierfähigkeit im Gelände simulieren zu können.
start : Node
in
algo :PathfindingAlgorithm
goal : Node
out
in
cheapest : Path
in
graph : Graph
in
unit_properties :
constraints
Die verschiedenen zur Auswahl stehenden Algorithmen lassen sich nach einer Vielzahl von Merkmalen kategorisieren. Eines der entscheidenden Merkmale der hier betrachteten Graphen ist, dass sie alle mit Kosten (d.h. mit
2
http://www.csie.ntu.edu.tw/~wcchen/algorithm/weightedGraph/Map5.gif
14
Gewichten) umgehen können. (Im vorangegangenen Kapitel wurde bereits angedeutet, dass eine Auswertung
ohne Kostenberücksichtigung insbesondere bei Spielen zu vielen unerwünschten Ergebnissen führen kann.)
Algorithmen, die keine Kostenberücksichtigung implementieren, haben in der heutigen Spielewelt (abgesehen
vielleicht von einer Support-Funktion in besonders geschwindigkeitskritischen Bereichen) keine Relevanz mehr
und werden deswegen hier vernachlässigt.
PathfindingAlgorithm
GeometricPathfindingAlgorithm
WeightAwarePathfindingAlgorithm
Dijkstra
AStar
Dijkstra
Der Algorithmus von Dijkstra, benannt nach Edsger W. Dijkstra, dient der Ermittlung kürzester Pfade in Graphen
mit gewichteten Kanten. Grundlegendes Konzept ist eine Breitensuche, als Datenstruktur wird eine Prioritätswarteschlange benötigt.
Der Algorithmus beginnt am Startknoten und fügt zunächst alle umliegenden, erreichbaren Knoten in die
Prioritätswarteschlange ein. Das Gewicht eines Knotens in der Prioritätswarteschlange entspricht dabei stets dem
Gewicht aller Knoten, die auf dem Weg zu ihm besucht wurden, zuzüglich des Gewichts der letzten Kante, die zu
ihm selbst geführt hat. (Der Startknoten hat per Definition das Gewicht null zugeordnet.) Zu jedem Knoten in der
Prioritätswarteschlange wird außerdem der Knoten vermerkt, über den er erreicht wurde. Sukzessive wird nun immer wieder der „günstigste“ Knoten aus der Prioritätswartschlange gewählt. Auch seine umliegende Knoten werden (falls sie zuvor noch nicht besucht wurden) ebenfalls in die Prioritätswarteschlange eingefügt.
Stößt der Algorithmus bei dem Untersuchen der umliegenden Knoten des aktuellen Knotens auf den Zielknoten,
ist der Weg zwischen Start und Ziel gefunden; der Pfad (es handelt sich um den Günstigsten!) ergibt sich dann
über eine einfache Rückverfolgung anhand der gespeicherten Vorgängerknoten. Wird die Prioritätswarteschlange
leer, ohne, dass der Zielknoten gefunden werden konnte, dann gibt es keine Verbindung zwischen Start und Ziel.
Es folgt eine Pseudo-Code-Darstellung nach Q22:
01
02
Distanz(s) := 0
Vorgänger(s) := s
03
04
05
für jedes v aus V ohne {s}
Distanz(v) := unendlich
Vorgänger(v) := <kein>
06
U := V
07
08
09
10
11
12
13
solange U nicht leer
wähle u aus U mit Distanz(u) minimal
U := U - {u}
wenn u = z dann STOP
# optional
für jedes (u,v) aus E mit v aus U
wenn Distanz(u) + Kosten(u,v) < Distanz(v) dann
Distanz(v) := Distanz(u) + Kosten(u,v)
15
14
Vorgänger(v) := u
A-Star (A*)
Wie der Algorithmus von Dijkstra dient auch der A-Star-Algorithmus dem Auffinden kürzester Wege in gewichteten Graphen. Die Besonderheit an A-Star ist, dass er nicht nur grundsätzlich Kosten berücksichtigt, sondern während seiner Laufzeit kontinuierlich Schätzungen über die Restdistanz anfertigt. Anhand dieser Schätzungen
wird bestimmt, welcher Knoten am Günstigsten erscheint und folglich als Nächstes gewählt wird. Zur Durchführung der Schätzung dient eine Heuristik-Funktion. Als Datenstrukturen werden außerdem eine Prioritätswarteschlange („Open“ Queue) und eine dynamisch erweiterbare Liste („Closed“ List) benötigt.
Der Algorithmus arbeitet nach folgendem Pseudo-Code (Q21):
/*
* Der eigentliche A*-Algorithmus
* -----------------------------* graph: Zu untersuchender Graph
* start: Startknoten
* goal: Der Zielknoten
* h: Heuristikfunktion zum Schätzen des Abstandes eines Knotens bis zum Ziel
* S: Prioritätswarteschlange der Knoten, deren f-Wert bereits bekannt ist
* N: Liste aller bereits besuchten Knoten
*/
A-Star (graph, start, goal, h, S, N)
{
insert (start, S);
while not isEmpty(S)
{
current_node := pop(S);
if current_node in N then
// Es existiert kein Pfad vom Start zum Ziel
return fail;
insert (current_node, N);
if (current_node == goal) then
return reconstruct_shortest_path(start, goal, graph);
else
{
// Finde alle vom aktuellen Knoten aus erreichbaren Knoten
successors := expand(current_node, graph);
// Speichere Vorgänger des expandierten Knotens im Graph
save_predecessor_in_graph(current_node, graph)
forall s in sucessors do
{
// Speichere Knoten von dem aus s erkundet wurde
predecessor(s) := current_node;
// Berechne und speichere die f-Kosten
f(s) := g(s) + h(s);
insert(s, S);
}
}
}
// Es konnte kein Pfad gefunden werden
return fail;
}
Nach erfolgreicher Bearbeitung kann unter Verwendung des folgenden Pseudo-Codes der eigentliche Pfad aus
den gesammelten Daten bestimmt werden (Q21):
/*
*
*
*
*
*
Algorithmus zur Rekonstruktion des kürzesten Pfades
--------------------------------------------------P: berechneter kürzester Pfad
start: Startknoten
node: Zielknoten
16
*/
reconstruct_shortest_path (start, node, graph)
{
if (node != start)
{
push(node, P);
// Lese den Vorgänger des aktuellen Knoten aus
predecessor := getPredecessor(node, graph);
reconstruct_shortest_path (start, predecessor, graph)
}
else
return P;
}
Natürliche Wegführung
Ein grundsätzliches Problem bei der Berechnung von Pfaden, das unabhängig vom gewählten Suchalgorithmus
auftritt, ist die „künstlich“ wirkende Beschaffenheit der berechneten Routen.
Wenn das Gelände während des Preprocessing als gleichförmiges Raster oder Quad-Tree zerlegt wurde, ist der
Effekt besonders deutlich zu erkennen. Dann wird in der Regel der berechnete Pfad durch die Zentren aller Quadrate verlaufen, die als Bestandteil des kürzesten Weges erkannt wurden. Die Vergröberung der Landschaft,
die als Folge der Rasterung entstanden ist und die Berechnung des Pfades in einer komplexen Umgebung in
zumutbarer Zeit vielleicht überhaupt erst möglich gemacht hat, wird damit – in der Darstellung – zum Problemfall.
Auch hier gibt es verschiedene Lösungsstrategien.
Wegpunkte-Optimierung & Interpolation
In einem ersten Schritt sollte zunächst für längere Knotenfolgen geprüft werden, ob das Erreichen des letzten
Knotens in der Folge vom ersten Knoten in der Folge nicht auch ohne die vorhandenen „Zwischenstationen“ möglich ist. Die Faustformel zur Durchführung dieser Optimierung lautet: „Lösche jeden Knoten Pn aus dem
Pfad, wenn es möglich ist, von Pn-1 auf direktem Wege zu Pn+1 zu gelangen“. (Evtl. sind mehrere Iterationen
durchzuführen.)
Das Resultat dieser Optimierung sind weniger „abgehackte“ Bewegungen, die außerdem noch engen an
Hindernissen vorbeiführen können als der nicht optimierte Pfad.
„Verkürzung“ des „kürzesten“ Pfades (Q20)
Pfadglättung durch Splines
Ist der gefundene Pfad soweit vereinfacht, kann er, sobald sich die Einheit auf ihm bewegt, zusätzlich auch noch
durch ein Spline verfeinert werden. Aufgrund der Positionierung der On- und Off-Punkte empfiehlt sich hierfür der
Catmull-Rom-Algorithmus eher als die Berechnung der Bézier-Kurven. Anders als der Bézier-Algorithmus gewährleistet die Berechnung nach Catmull/Rom, dass der verwendete Pfad nicht plötzlich durch ein Hindernis führt.
17
Glättung eines Pfades durch Catmull-Rom-Splines (Q20)
Ausblick / Forschungsthemen
Behandlung dynamischer und neu aufgetretener Hindernisse
Grundlagen
Eingangs wurde darauf hingewiesen, dass der Aufgabenbereich des Pathfinding endet, sobald die Untersuchung
der Landschaft abgeschlossen ist und ein gültiger Weg zum Ziel gefunden werden konnte. (Die Behandlung von
Kollisionen mit Gegnern z.B. fällt in den Bereich Collision Detection.)
Trotzdem gibt es einige wenige Spezialfälle, in denen sich die Aufgaben beider Bereiche überschneiden. Die
nachstehende Grafik verdeutlicht eines der größten Probleme in diesem Zusammenhang: was, wenn der Collision Detection-Algorithmus das Ausweichen anordnet, die Einheit sich aber dadurch so weit von ihrem „sicheren“ Pfad fortbewegt, dass sie nicht mehr ankommt oder gar „stirbt“?
In solchen Fällen kann die automatische Berechnung einer Ausweichroute nützlich sein. Zur Laufzeit muss dann,
in enger Abstimmung von Collision Detection und Pathfinding, eine alternative Route zu dem von einem fremden
Charakter gesperrten Streckenstück gesucht werden. (Enge Abstimmung, weil es Fälle geben kann, in denen
durch eine komplette Neuplanung des Weges ein enormer Umweg entstehen würde – zudem ein Umweg, der
evtl. schon kurze Zeit später überflüssig gewesen wäre, weil die blockierende Einheit den gesperrten Weg
zwischenzeitlich geräumt hat.) Einen anderen Lösungsansatz stellt hier also das Warten dar. Und nicht zuletzt
kann es natürlich sein, dass feindliche Truppen aufeinander stoßen und eine Auseinandersetzung beginnt. In
diesem Fall könnte z.B. in Abhängigkeit von der Einheit und Situation die Wahl einer neuen Strategie anstehen
(Flucht, Gelände umfahren, falls selbst noch nicht entdeckt worden, usw.)
Auf dem Weg von X nach Y dem weißen Kreis auszuweichen, könnte sich als Fehler erweisen (Q20)
Einen anderen Spezialfall stellen Hindernisse dar, die nicht aus anderen Charakteren bestehen und damit den
„dynamischen“ Hindernissen zuzuordnen wären, sondern solche, die seit dem Beginn der Pfadsuche einfach neu
hinzugekommen sind: z.B. durch Veränderung der Geländebeschaffenheit (Felsrutsch, Brücke zerstört, neues
Gebäude versperrt den Weg etc.). Anders als im vorherigen Fall kann hier eine klare Aufgabenzuständigkeit des
Pathfindings festgestellt werden, denn eine Kollision findet nicht statt. Die Lösung besteht dementsprechend auch
meistens in der Suche eines neuen Pfades, es sei denn, eine „intelligentere“ Strategie sieht Abbruch oder
temporäre Aussetzung des Pathfindings vor (Haus niederreißen, Brücke reparieren o.ä.)
18
Lifelong-Planning-A-Star (LPA)
Der Trend geht zur Zeit dahin, die harte Trennung zwischen statischen und dynamischen Spielelementen
sukzessive aufzuweichen. Die Interaktionsmöglichkeiten der Charaktere mit ihrer Umwelt nehmen zu. Die Folge
für das Pathfinding ist, dass immer seltener die „statischen“ Geländedaten, die zu Beginn einer Pfadberechnung
als Berechnungsgrundlage dienten, während der eigentlichen Begehung des Weges auch noch so aussehen wie
zu Beginn angenommen. Es besteht folglich ein steigender Bedarf an nachträglichen Korrekturmöglichkeiten der
Routenplanung.
Unter der Bezeichnung „Lifelong-Planning A-Star“, kurz LPA, ist in den letzten Jahren im Rahmen eines Forschungsprojekts (vgl. u.a. Q12) eine Weiterentwicklung des A-Star-Algorithmus konzipiert geworden, die
genau diesem Umstand Rechnung trägt.
Die Anwendung von LPA geht zunächst davon aus, dass berechnete Pfade in einer Art Cache oder Puffer
vorliegen, in dem sie auch nachträglich noch in ihrer Form modifiziert werden können.
WeightAwarePathfindingAlgorithm
AStar
LifelongPlanningAStar
PathCache
1
1
Stößt nun eine Einheit während der Verfolgung ihres Weges auf ein Hindernis, das nicht per Collision Detection
umwandert werden kann und bei dem auch kurzes Warten nicht zur Klärung des Weges führen würde, wird die
Neuberechnung eines Teilpfades angestoßen.
Neuberechnung eines Teilpfades mit LPA (Q9)
Bei der Durchführung von LPA kommt eine neue Variable, bezeichnet als rhs-Wert, zum Einsatz, die sich für
jeden Knoten eines Pfades aus dem kleinsten Kostenwert (G-Wert) seiner direkt angrenzenden Knoten zzgl. der
Wegkosten für den einen Knotenübergang ergibt. Stellt sich für einen Knoten im Pfad heraus, dass sein bei der
19
Neuberechnung generierter rhs-Wert von seinem ursprünglich berechneten Kostenwert abweicht, steht fest, dass
der Pfad unterbrochen wurde. In diesem Fall ist wie folgt zu verfahren:
1.
Wenn der alte Kostenwert größer als der neue rhs-Wert ist, kann der Knoten wieder gültig gemacht
werden, indem man ihn auf den rhs-Wert setzt, denn es besteht offenbar eine nutzbare Verbindung zu
den umliegenden Knoten.
2.
Ist der alte Kostenwert kleiner als der neue RHS-Wert, so wird
a.
der neue Kostenwert auf „unendlich“ gesetzt
b.
eine Prüfung auch für die umliegenden Knoten angestoßen
c.
in umgekehrter Reihenfolge allen Knoten ein neuer Kostenwert zugewiesen, sobald einem
Knoten nicht mehr „unendlich“ zugewiesen werden musste.
Veranschaulicht wird dieser Algorithmus in der o.a. Abbildung aus Q9.
Intelligentere Gegner durch Influence Maps
In heutigen Echtzeit-Strategiespielen erwarten die Spieler von Computergegnern, dass diese aus Fehlern lernen,
ihre Strategien zur Laufzeit ändern, komplexe Angriffsstrategien aufbauen und ihre Lager „intelligent“ vor
Angriffen schützen. Technisch werden viele dieser Anforderungen durch Influence Maps überhaupt erst möglich.
Influence Maps sind „Meta-Karten“, die Computerspieler zur Laufzeit über ein Gelände sammeln. Wird ein Computergegner beispielsweise mehrfach an der gleichen Stelle angegriffen und vom Gegner geschlagen, wird er
dem nahegelegenen Knoten eine Meta-Information „besonders gefährlich“ zuordnen.
Die Informationen einer Influence Map sind eng verknüpft mit dem Graphen der logischen Gelände-Repräsentation. In der Praxis kann es sich anbieten, für die Influence Maps zusätzliche Kantengewichte (falls es sich um
wege-bezogene Daten handelt) oder ggf. auch Knotengewichte (falls die „Gegenden“ betroffen sind) zu definieren.
So können die Daten der Influence Map wieder zurückfließen in die Wegeberechnung. Im zuvor geschilderten
Beispiel könnte dies bedeuten, dass Einheiten des Computerspielers in Zukunft die als „besonders gefährlich“ markierte Stelle weiträumig umfahren, weil sie ein sehr hohes Gewicht hat und damit in der Wegberechnung
als „zu teuer“ erscheint.
Wenn die Gefahr besteht, dass der Logikgraph für die strategischen Verwendungszwecke der Influence Map zu
ungünstig aufgeteilt ist, besteht (falls z.B. der A-Star-Algorithmus verwendet wird) eine Alternative darin, die
Informationen der Influence Map über die Heuristikfunktion wieder in das Pathfinding einfließen zu lassen.
Die nachfolgenden Grafiken wurden mit einem Influence Map Simulator (Q34) generiert und verdeutlichen, wie
sich die Platzierung der Einheiten zweier Gegner (orange und blau, erstes Bild) auf die Spannungsfelder (stärkste
Bereiche orange, zweites Bild) und die Instabilität in der Region auswirken (blau für geringe, orange für extreme
Instabilität, drittes Bild):
Platzierung von Einheiten
durch zwei Spieler
Auswertung der größten
Spannungsfelder
20
Auswertung der größten
Instabilität
Die nachfolgende Abbildung aus Q14 visualisiert die Abbildung von Influence Maps auf eine Spiellandschaft:
Influence-Map als Meta-Information zum Gelände (Q14)
21
Literatur
Q1
Terrain Analysis in Realtime Strategy Games (Slides), Dave C. Pottinger (2002)
http://vr.kaist.ac.kr/courses/cs682/data/ssw.ppt
Q2
Game AI: The State of the Industry, Steven Woodcock (2000)
http://www.gamasutra.com/features/20001101/woodcock_01.htm
Q3
An optimal pathfinder for vehicles in real-world digital terrain maps, F. Markus Jönsson (1997)
http://www.student.nada.kth.se/~f93-maj/pathfinder/
Q4
Smart Moves: Intelligent Pathfinding, Bryan Stout (1997)
http://www.gamasutra.com/features/19970801/pathfinding.htm
Q5
Toward More Realistic Pathfinding, Marco Pinter (2001)
http://www.gamasutra.com/features/20010314/pinter_01.htm
Q6
GDC 2002: Polygon Soup for the Programmer’s Soul: 3D Pathfinding, Patrick Smith (2002)
http://www.gamasutra.com/features/20020405/smith_01.htm
Q7
Beginners Guide to Pathfinding Algorithms, o.a.
http://ai-depot.com/Tutorial/PathFinding.html
Q8
Pathfinding: From A* to LPA, Kelly Manley (2003)
http://csci.morris.umn.edu/UMMCSciWiki/pub/CSci3903s03/KellysPaper/seminar.pdf
Q9
Pathfinding and the Art of Tweaking, John R. McCawley
http://www.hardgeus.com/pathfinding/
Q10
A Generalized Framework for Lifelong Planning A* Search, Maxim Likhachev u.a. (2005)
http://www.cs.cmu.edu/~maxim/docs/glpa_icaps05.pdf
Q11
Incremental Heuristic Search in Artificial Intelligence, Sven Koenig u.a. (2004)
http://www-scf.usc.edu/~csci573/notes/aimag04a.pdf
Q12
Lifelong Planning A*, Sven Koenig u.a. (2005)
http://www.cs.cmu.edu/~maxim/docs/aij04.pdf
Q13
A* Pathfinding for Beginners, Patrick Lester (2004)
http://www.policyalmanac.org/games/aStarTutorial.htm
Q14
Terrain Analysis in Realtime Strategy Games (Paper), Dave C. Pottinger (2000)
http://www.gamasutra.com/features/gdcarchive/2000/pottinger.doc
Q15
Terrain Reasoning for 3D Action Games, William van der Sterren (2001)
http://www.gamasutra.com/features/20010912/sterren_01.htm
Q16
Pathfinding in an Entity Cluttered 3D Virtual Environment, Matt Hall (2005)
http://www.comp.leeds.ac.uk/fyproj/reports/0405/HallM.pdf
Q17
Strategy AI, o.a. (2005)
http://www.itee.uq.edu.au/~penny/_strategy.htm
Q18
Strategic and Tactical Reasoning with Waypoints, Lard Lidén (2002)
http://www.liden.cc/lars/WEB/Resume/Papers/2002_AIWisdom.pdf
Q19
Time-sliced pathfinding on arbitrary polygon surfaces, Arvid Norberg (2004)
http://www.cs.umu.se/education/examina/Rapporter/ArvidNorberg.pdf
Q20
Pathfinding: Search Space Representations, Dan Bader (2001)
http://www.cse.lehigh.edu/~munoz/CSE497/classes/BaderPathfinding_2_1.ppt
22
Q21
A*-Algorithmus
http://de.wikipedia.org/wiki/A*
Q22
Algorithmus von Dijkstra
http://de.wikipedia.org/wiki/Algorithmus_von_Dijkstra
Q23
Pathfinding Technology, o.a.
http://www.cse.ohio-state.edu/~crawfis/cse788GameDesign/ReferenceMaterial/CourseNotes/
Technology_Pathfinding.ppt
Q27
iehova Terrain Library Documentation, Peter Venis
http://www.home.zonnet.nl/petervenis/data/features.htm
Q30
Lecture Notes: Collision Detection, Niklas Elmqvist (2005)
http://www.cs.chalmers.se/Cs/Grundutb/iss/kurser/simul/doc/lecture-12.pdf
Q32
Strategic Decision Making: Using Neural Networks and Influence Maps, o.a. (2005)
http://homepage.cs.uri.edu/faculty/hamel/courses/spring2006/csc481/presentations/strategicdecisions.ppt
Q33
Pathfinding: Basic Algorithms, o.a.
http://www.ime.usp.br/~lidet/files/courses/aicg05/lecture6.ppt
Q34
Influence Map Generator
http://canut-ki-in.jeudego.org/simul_influence/
23