Fußgänger in C.I.T.Y

Werbung
FACHHOCHSCHULE KÖLN
Fußgänger in C.I.T.Y
Analyse und Integration von Pfadfindung für
Fußgänger in der virtuellen Stadt von C.I.T.Y.
Hubert Grzeskowiak
16.02.2013
Diese Arbeit ist im Rahmen des Fachs „Entwicklungsprojekt Serious Games“
im Wintersemester 2012/2013 entstanden.
Betreuer:
Prof. Dr. Friedbert Jochum
Beate Münster
Dennis Buderus
Marco Reitano
Dieses Dokument beschreibt die Vorgehensweise, sowie Ergebnisse und Erfahrungen, die während
der Arbeit von mir gemacht wurden. Der Schwerpunkt liegt darin, die Weiterarbeit an diesem Thema
im Rahmen des C.I.T.Y. Projektes möglichst effizient zu gestalten. Es werden die wichtigsten Begriffe
und Techniken erklärt, und erkannte „Stolperfallen“ aufgedeckt.
Fußgänger in C.I.T.Y - Hubert Grzeskowiak
16.02.2013
Inhaltsverzeichnis
1 Einführung ........................................................................................................................................ 2
2 Ziel dieser Arbeit .............................................................................................................................. 2
3 Analyse ............................................................................................................................................. 2
3.1 Begehbare Bereiche ................................................................................................................... 3
3.2 Wegfindungsalgorithmus .......................................................................................................... 4
4 Bibliotheken ..................................................................................................................................... 5
5 Implementierung .............................................................................................................................. 5
5.1 Einscannen von Bürgersteigen .................................................................................................. 5
5.2 Links/UserConnections ............................................................................................................. 6
5.3 Animationen .............................................................................................................................. 6
5.4 Ampeln ...................................................................................................................................... 6
5.5 Spawning ................................................................................................................................... 7
5.6 Skalierbarkeit............................................................................................................................. 9
6 Erweiterungsmöglichkeiten .............................................................................................................. 9
7 Resümee ......................................................................................................................................... 10
-
1
Fußgänger in C.I.T.Y - Hubert Grzeskowiak
16.02.2013
1 Einführung
Seit einigen Jahren wird am Campus Gummersbach an einem Softwareprojekt namens C.I.T.Y
gearbeitet. Es handelt sich dabei um eine virtuelle, realitätsnahe 3D Lernumgebung, die an echte
urbane Orte erinnern soll. Sie soll Kindern und Jugendlichen beim Umgang mit Menschen,
Straßenverkehr, Öffentlichen Verkehrsmitteln, Geschäften und anderen Einrichtungen helfen soll.
Zum Zeitpunkt dieses Schreibens befindet sich das Projekt in einer frühen Entwicklungsphase und
bietet einen kleinen nachgebauten Teil der Stadt Köln, sowie fahrende Autos und Straßenbahnen. Der
Spieler bewegt in dieser Umgebung einen Avatar in der First-Person Ansicht und kann so auch mit der
Umgebung interagieren.
2 Ziel dieser Arbeit
In der 3D Stadt befinden sich bereits einige Passanten, die manuell an bestimmte Positionen gesetzt
wurden und an dieser Stelle stehen oder eine einfache Animation abspielen (z. B. leichtes Wippen,
Umsehen). Die Passanten sind allerdings nicht in der Lage ihre Position zu ändern bzw. sich
abgesehen von den Animationen zu bewegen.
Das Ziel dieser Arbeit ist eine Steigerung der Autonomie der Passanten in der virtuellen Stadt. Als
erstes und wichtigstes Ziel wird dabei die selbstständige Bewegung der Passanten verstanden. Als
Spieler soll man an allen üblichen Orten Passanten antreffen, die jeweils scheinbar ein eigenes Ziel
verfolgen. Dadurch soll dem Spieler sugeriert werden, er befände sich in einer bevölkerten, lebendigen
und dynamischen Stadt. Das hat einerseits den Vorteil, dass das Gesamterlebnis realitätsnäher wirkt,
und andererseits legt diese Entwicklung den Grundstein für spätere Übungen zu menschlicher
Interaktion.
Verhaltensmuster werden nicht behandelt, sondern stellen eine mögliche Erweiterung des Themas dar.
Es wird lediglich die Pfadfindung und Bewegung bearbeitet.
3 Analyse
Aktuell verfügt das C.I.T.Y. Projekt über keinerlei Pfadfindung oder sonstige Techniken zur
autonomen Bewegung von Passanten. Ein Pfadfindungssystem besteht für Fahrzeuge auf den Straßen,
allerdings lässt sich dieses nicht auf Fußgänger anwenden, da Fußgänger sich nicht wie Autos in einer
2
Fußgänger in C.I.T.Y - Hubert Grzeskowiak
16.02.2013
Schlange entlang von „Schienen“ vorwärts bewegen. Außerdem basiert das Fahrzeug-System auf
einem Straßen-Graphen, der für Bürgersteige nur teilweise und für sonstige begehbare Bereiche, z. B.
Bahnstationen, gar nicht existiert.
Die allgemein im Bereich der Spieleentwicklung und Simulation zur Verfügung stehenden Techniken
zur Pfadfindung im 3D Raum (eng. Pathfinding) sind überschaubar. Sie unterscheiden sich im Grunde
nur durch die Definition der begehbaren Bereiche und den verwendeten Algorithmus zur eigentlichen
Wegfindung auf diesen begehbaren Bereichen. Im Kern jeder aktuell anwendbaren Lösung steckt ein
Graph im Sinne der Graphentheorie. Dabei bietet jede Technik in variierendem Umfang den
begehbaren Bereich als einen zyklischen, gewichteten und/oder gerichteten Graphen zu beschreiben.
Dies erlaubt den Einsatz von Algorithmen zum Finden von kürzesten Wegen innerhalb des Graphen
und somit auch auf dem 3D Mesh.
3.1 Begehbare Bereiche
Der Computer kann bei 3D Geometrie von sich aus keinen Unterschied zwischen begehbaren Flächen,
wie Bürgersteigen, Rasenflächen und Plätzen, und zwischen unpassierbarem Wasser, Graben,
befahrenen Straßen oder gar Boden unter Gebäuden feststellen. Zur Führung der Passanten werden
diese Informationen aber benötigt. Im Folgenden werden drei übliche Verfahren zur Ermittlung und
Beschreibung der begehbaren Flächen vorgestellt.
3.1.1 Point Graph/Waypoints
Bei dieser Technik wird in der 3D Szene ein Netz aus vielen
Punkten/Knoten verlegt, die untereinander beliebig mit
Linien/Kanten verbunden sein können. Sowohl die Knoten,
wie auch die Kanten zeichnen den begehbaren Bereich aus.
Die Entfernung zwischen zwei verbundenen Knoten wird der
Kante als Gewichtung zugeschrieben.
Problem bei dieser Technik ist der enorme Aufwand wegen
der manuellen Platzierung der Punkte und Kanten, sowie
starke Einschränkungen bei größeren Agentengruppen. Jeder
Abbildung 1: Point Graph auf einer kleinen
Dorf Szene
(Quelle: Chris Kalani,
http://www.ai-blog.net/archives/000152.html,
abgerufen am 14.3.2013)
Weg muss mit mehreren parallelen Pfaden versehen sein und diese müssen zwischendrin immer
wieder verbunden sein, damit sich Fußgänger beispielsweise überholen können.
3
Fußgänger in C.I.T.Y - Hubert Grzeskowiak
16.02.2013
3.1.2 Grid Graph
Bei dieser Technik wird ein Raster aus vielen
Quadraten (manchmal auch Dreiecken oder
Sechsecken) über die Szene gelegt. Das Raster besteht
auch hier aus Knoten und Kanten. Bei jedem Knoten
wird ein Strahl nach unten geworfen und wenn er mit
keiner 3D Geometrie, als unbegehbar markierter- oder
zu steiler Oberfläche kollidiert, wird er deaktiviert (aus
dem Graphen entfernt). Bei diesem Graphen sind auch
Abbildung 2: Ein Grid Graph
(Quelle: Aron Granberg,
http://arongranberg.com/astar/docs/class_pathfinding
_1_1_grid_graph.php , abgerufen am 14.3.2013)
Diagonalverbindungen möglich und bei großer Auflösung ist eine sehr genaue Abdeckung des
begehbaren Bereiches möglich, wodurch sich schon ein Vorteil gegenüber Point Graphen herausstellt.
Ein großer Nachteil dieser Technik ist das Fehlen der Möglichkeit für mehrere Etagen, da dieses
Raster zweidimensional ist. So wären beispielsweise Tunnel oder überbedachte Gebäude nur mit
mehreren Schichten von Rastern abdeckbar.
3.1.3 Navmesh
Navmeshes (Navigation Mesh) werden in modernen 3D Spielen, vor
allem da, wo freie Bewegung von NPCs wichtig ist, am häufigsten
genutzt. Sie bieten den Algorithmen viel mehr Informationen, da in
erster Linie nicht Punkte, sondern begehbare Polygone gespeichert
werden. Diese können beliebig viele Seiten haben, müssen aber stets
konvex sein. Durch das Mehr an Informationen ist es möglich mehrere
Agenten nebeneinander zu gehen- oder sich gegenseitig überholen zu
lassen. Die Abstraktion auf einen Graphen bei einem Navmesh kann
auf mehrere Arten erfolgen, wobei die hier verwendete Methode jedes
Polygon als einen Knoten und gemeinsame Seiten zu benachbarten
Abbildung 3: Navmesh auf einer
Dorf Szene
(Quelle: Chris Kalani,
http://www.aiblog.net/archives/000152.html,
abgerufen am 14.3.2013)
Polygonen als Kanten im Graphen definiert.
Da in C.I.T.Y. ein großer Teil der Meshes ohnehin prozedural generiert wird, bietet sich diese Technik
besonders an.
3.2 Wegfindungsalgorithmus
Bei der Wegfindung gibt es aktuell zwei Ansätze, die oft auch gleichzeitig genutzt werden. Der erste
Ansatz ist die Verwendung des A* Algorithmus. Mithilfe dieses aus der Graphentheorie bekannten
Verfahrens lässt sich sehr performant der kürzeste Weg zwischen zwei Knoten innerhalb eines
Graphen berechnen. Die Gewichtung der Kanten entspricht der Entfernung der Knoten voneinander
4
Fußgänger in C.I.T.Y - Hubert Grzeskowiak
16.02.2013
(Bei Navmeshes: Flächenmittelpunkte). Als Heuristik für den A* Algorithmus kann hier
beispielsweise der Luftweg zum Ziel verwendet werden. Wenn nur die Draufsicht relevant ist, kann
auch die Entfernung zum Ziel zum Quadrat verwendet werden, da so das Wurzelziehen entfällt und
die Performanz steigt (vgl. Satz des Pythagoras).
Damit lässt sich der Weg durch die verschiedenen Flächen berechnen. Für die konkrete
Streckenführung innerhalb der einzelnen Flächen werden andere Algorithmen, wie zum Beispiel
Bezier Kurven oder Splines verwendet (siehe hierzu "Modifier" aus der A* Pathfinding Project
Bibliothek, allen voran „Funnel Modifier“).
4 Bibliotheken
Nach einer gründlichen Marktanalyse im Bereich von Unity und Pfadfindung wurde "A* Pathfinding
Project" (auch „Astar Pathfinding Project“) als zu verwendende Bibliothek gewählt. Diese bietet in der
kostenlosen Version bereits die Abstraktion von Meshes zu Graphen, eine Implementierung des A*
Algorithmus mit vielen Einstellungsmöglichkeiten, sowie visuelles Debugging. Zudem ist der
Quellcode verfügbar. Die Projekt Website ist unter dem URI http://arongranberg.com/astar/ zu finden.
Die Navmesh Werkzeuge aus Unity Pro sind nicht zu empfehlen, da damit eine Abhängigkeit von
teuren Softwarelizenzen einhergeht, der Quellcode nicht einsehbar ist (bzw. extra gekauft werden
muss) und weil es damit nicht möglich ist, Navmeshes während der Laufzeit zu verändern, was im
späteren Projektverlauf mit hoher Wahrscheinlichkeit eine Anforderung darstelen wird.
5 Implementierung
Die Programmierung der hier beschriebenen Bibliotheken und Schnipsel erfolgte vollständig in C#.
Für genauere Erklärungen zu den einzelnen Klassen und Funktionen soll hier auf die Dokumentation
innerhalb des Quellcodes verweisen.
5.1 Einscannen von Bürgersteigen
Aktuell (WS 2012/2013) liegt dem abgegebenen Quellcode des Projektes eine Klasse zur einfachen
Konvertierung der Bürgersteige aus C.I.T.Y in ein zusammenhängendes Mesh, das an die
A*Pathfinding Bibliothek übergeben wird. Hierzu dient die Datei BCRNNavmesh.cs. (Der Name steht
für Blended Cities Road Network Navmesh.) Die Klasse enthält Methoden zum Hinzufügen, Ersetzen
5
Fußgänger in C.I.T.Y - Hubert Grzeskowiak
16.02.2013
und Generieren eines Navmeshes. Beim Benutzen des Inspectors ist zu beachten, dass die Navmeshes
wahlweise im Editor oder beim Starten des Spiels erstellt werden können. Die Erstellung im Editor
verkürzt die Startzeit, sollte aber eher nur zu Testzwecken eingesetzt werden. Das automatische
Scannen seitens der "Astar Path" Komponente ist bei Benutzung des Straßennetz-Scanners im Astar
Path Inspektor abzustellen.
5.2 Links/UserConnections
Es können auch Links (sog. UserConnections)
zwischen Knoten, beispielsweise bei Kreuzungen
gesetzt werden. Dadurch ist es den Passanten
möglich die Straßen zu passieren, auch wenn sie
dort nicht auf einem Navmesh stehen. Die Meshes
für die Straßen werden nicht in das Navmesh
eingespeist, um die Größe der Graphen möglichst
klein und das Fehlerpotenzial gering zu halten. Im
Abbildung 4: Vier generierte User Connections, die die
Überquerung der Straße ermöglichen
entsprechenden Inspektor können die zu
berücksichtigenden Kreuzungsarten (z.B. T-Kreuzung, Kurve etc.) eingestellt werden. Die Links
können auch manuell gesetzt werden. Damit lassen sich auch externe Navmeshes von Modellen wie
Plätzen, U-Bahn Stationen usw. in das Bürgersteige Navmesh integrieren. Für weitere Informationen
hierzu ist in der A* Pathfinding Project Dokumentation nachzuschlagen.
5.3 Animationen
Mit der Klasse HumanWalkerAnimator.cs und dem Prefab „Navmesh Agent“ wurde eine Basis für
universell einsetzbare Passanten geschaffen. Diese verfügen unter Anderen über die Möglichkeit
jeweils eigene Höchstgeschwindigkeiten zu definieren. (Die tatsächliche Geschwindigkeit hängt vom
Character Controller ab, da dieser beispielsweise in Kurven oder beim Erreichen des Ziels abbremst.)
Je nach der aktuellen Geschwindigkeit lassen sich auch verschiedene Animationen abspielen. Im
Prefab besitzt der Bauarbeiter (Platzhalter) drei Animationen: stehen, gehen und laufen. Über den
Inspektor lassen sich diese bei anderen Modellen je nach Geschwindigkeit anpassen, sodass ab einer
bestimmten Geschwindigkeit vom Gehen ins Laufen gewechselt wird. Auch die
Abspielgeschwindigkeit der jeweiligen Animationen wird geregelt, sodass sich beim Laufen
beispielsweise auch innerhalb der einen Animation Unterschiede je nach Geschwindigkeit ergeben.
5.4 Ampeln
Während der Implementierung wurde der Versuch unternommen, ein prototypisches Ampelsystem für
die Fußgänger zu bauen. Die Idee war, die Passanten, die eine Straße überqueren wollten so lange
6
Fußgänger in C.I.T.Y - Hubert Grzeskowiak
16.02.2013
aufzuhalten, bis der Übergang freigeschaltet wurde. Die Pfadfindung würde davon nur wenig
beeinflusst werden. Es müsste höchstens eine etwas höhere Gewichtung auf die Kante gelegt werden,
die den Straßenübergang darstellt. Probleme ergeben sich bei dem Feststellen, ob ein Fußgänger "vor
hat" eine Straße zu überqueren, und ob er gerade an einem Ende dieses Übergangs steht. Die
Pfadfindung in der verwendeten Bibliothek ist zur Steigerung der Performanz und zur Zieländerung
während der Laufzeit sehr dynamisch aufgebaut. Der aktuelle Pfad enthält zu jedem Zeitpunkt nur die
absolut notwendigen Daten zur Bewegung des Passanten. Dabei wird der aktuell iterierte Knoten oft
noch vor dem Betreten dieses aus der Liste der noch zu begehenden Knoten gelöscht. Ein weiteres
Problem bei dem Vorhaben ist, dass die Passanten nicht irgendwo auf der Fläche beim
Straßenübergang anhalten sollten. Handelt es sich beispielsweise um ein sehr großes Dreieck, so sollte
der Passant dennoch möglichst nahe an den Straßenrand gehen und sich zur anderen Seite der Straße
drehen. Sehr kleine Dreiecke wiederum könnten den Nebeneffekt haben, dass der Passant erst auf der
Straße stehenbleibt oder dass das Dreieck in der Pfadfindung ganz weggelassen wird, sobald sich der
nächste Knoten/Dreieck in einer gewissen Distanz zum Fußgänger befindet. (Wenn sich der
übernächste Knoten aus der Liste der zu begehenden Knoten in einem bestimmten Radius befindet,
wird der planmäßig nächste Knoten übersprungen. Dadurch wird der Pfad vereinfacht.)
Zu diesem Vorhaben liegen einige Klassen vor, in denen sich Bruchstücke von funktionierendem
Code befinden. Sie wurden allerdings nicht weiterentwickelt und dienen z. Z. als reine Hilfe bzw.
Nachschlagewerk für Ideen.
5.5 Spawning
Zur Zeit der Abgabe müssen die Passanten (im Projekt auch "Navmesh Agents" genannt) manuell im
Editor platziert und ihre Ziele jeweils im Inspektor eingestellt werden. Es wurde ein Versuch
unternommen, die Passanten anhand bestimmter Kriterien in der Stadt zufällig auftauchen zu lassen,
wie man es von vielen Spielen wie GTA, Driver etc. kennt.
Das Spawnen (engl. für "hervorbringen") umfasst mehrere Kriterien, anhand derer Passanten
erscheinen dürfen:
1. Die Passanten sollten beim Spawnen nicht vom Spieler gesehen werden können.
2. Die Streuung sollte unabhängig von der Beschaffenheit des Navmeshes geschehen. Das heißt,
die Anzahl oder Fläche der einzelnen Polygone im Navmesh sollten keine Auswirkung auf die
Verteilung der Fußgänger haben.
3. Es sollte sich zu jedem Zeitpunkt nur eine bestimmte Anzahl (min/max) an Fußgängern um
den Spieler herum befinden.
7
Fußgänger in C.I.T.Y - Hubert Grzeskowiak
16.02.2013
Der erste Punkt ist teilweise von Unity innerhalb der Methode Renderer.isVisible1 bereits vorhanden.
Wie die Dokumentation aber auch erwähnt, gilt ein Modell auch dann als sichtbar, wenn er für
Schattenwurf verwendet wird. Das genaue Verhalten bei Occlusion Culling2 in Unity ist leider nicht
dokumentiert.
Die Streuung wurde in einem ersten Versuch wie folgt angegangen: für jedes Dreieck des Navmeshes
(das Navmesh besteht genaugenommen nur aus Dreiecken) wird dessen Oberfläche als XZ-Projektion
berechnet. Die Kürzung der Y-Dimension (oben/unten) ist damit begründet, dass auf einer Schrägen
durch die größere Oberfläche nicht mehr Menschen stehen können als auf einer ebenen Fläche. Und
auf einem senkrechten Dreieck, das genaugenommen sowieso nicht in einem Navmesh vorkommen
sollte, können keine Menschen stehen, da sie parallel zur globalen Y Achse (aufrecht) platziert
werden. Durch Addition wird die gesamte Oberfläche des Navmeshes errechnet und die einzelnen
Flächen durch diese geteilt, sodass sich für jede Fläche eine Zahl ergibt, die den Anteil an der
Gesamtfläche beschreibt. Würde das Navmesh beispielsweise aus zehn gleichgroßen Dreiecken
bestehen, wären die Anteile jeweils 0,1.
Die Berechnung der Anteile am Ganzen ist notwendig für ein gleichmäßiges Spawnen. Sind die
Anteile der Dreiecke am Ganzen bekannt, kann nun mithilfe einer Zufallszahl zwischen 0 und 1, sowie
Addition der Flächen bis zur Erreichung dieser Zufallszahl eine zufällige Fläche ausgewählt werden,
wobei größere Flächen hierbei automatisch größere Wahrscheinlichkeiten bedeuten.
(Dem Beispiel von zehn gleichgroßen Flächen folgend: Zufallszahl ist 0.674. Die Dreiecke werden so
lange addiert, bis die Summe 0.674 erreicht oder übersteigt. Das siebte Dreieck in der Liste würde also
ausgewählt werden.)
Mit diesem Verfahren lassen sich so viele Dreiecke ermitteln, wie Passanten zur Zeit benötigt werden.
Eine zufällige Position innerhalb des jeweiligen Dreiecks lässt sich mittels eines Zufallspunktes in
einem Einheitsquadrat bestimmen, der auf das Dreieck mittels Multiplikation mit den aufspannenden
Vektoren des Dreiecks projiziert wird. Eine Multiplikation von jeweils 0..1 mit jedem der beiden
aufspannenden Vektoren führt zu einem Zufallspunkt innerhalb des Dreiecks, wenn beide Zufallswerte
addiert höchstens 1 ergeben.3
Leider hat diese Methode einen vorher unterschätzten Nachteil: die Berechnungen dauern sehr lange,
wodurch Neuberechnung während der Laufzeit (beispielsweise beim Ändern der Navmeshes), oder
Debugging fast unmöglich werden. Auch das Starten des Spiels wird dadurch um einige Minuten
1
API Referenz zu Renderer.isVisible: http://docs.unity3d.com/Documentation/ScriptReference/RendererisVisible.html
2
Occlusion Culling bezeichnet eine Optimierungstechnik beim Rendern, bei der verdeckte Polygone bzw.
Objekte bestimmt und für den weiteren Rendering Prozess ignoriert werden.
3
Dieser Algorithmus ist von Steven Pigeon im Detail erklärt auf http://hbfs.wordpress.com/2010/10/05/randompoints-in-a-triangle-generating-random-sequences-ii/ (abgerufen am 10.1.2013).
8
Fußgänger in C.I.T.Y - Hubert Grzeskowiak
16.02.2013
verzögert. Der Code ist größtenteils fertig und ist in der Datei NavmeshAgentSpawner.cs zu finden.
Die Fertigstellung wurde aufgrund der schlechten Performance aufgegeben.
Für die Zukunft empfiehlt sich eher das Spawnen an bestimmten Punkten, die manuell oder
automatisch gesetzt werden. Das könnten beispielsweise Eingänge von Häusern, Sackgassen oder
Ähnliches sein
5.6 Skalierbarkeit
Beim Versuch, den vorhandenen Code in aktuelle Versionen von C.I.T.Y einzubinden, wurde
entdeckt, dass die Gesamtheit der Bürgersteige nicht zu einem zusammenhängenden Mesh verbunden
werden kann. Die Anzahl der Punkte/Vertices übersteigt Unitys Kapazitäten. Beim Übertragen des
Prototyps in C.I.T.Y ist die Generierung vom Navmesh also auf einen kleineren Bereich ,z.B. um den
Spieleravatar herum, zu beschränken. Denkbar ist auch die Unterteilung der Stadt in mehrere
Sektoren, bei denen jedes ein eigenes Navmesh erhält. Je nach dem, wo sich der Spieler befindet,
müsste das genutzte Navmesh dann geändert werden. Die Fußgänger wären dabei leider auch auf
jeweils bestimmte Bereiche beschränkt. In diesem Aspekt ist weitere Nachforschung vonnöten.
6 Erweiterungsmöglichkeiten
Neben den obengenannten Punkten gibt es diverse weitere potenzielle Erweiterungen. Nicht weiter
verfolgt wurde beispielsweise Gruppenverhalten oder das gezielte Ausweichen vor anderen
Verkehrsteilnehmern. Zum Zeitpunkt dieses Schreibens wurde in der A* Pathfinding Bibliothek eine
erste Version eines Algorithmus eingeführt, mit der Lokales Ausweichen (engl. Local Avoidance)
ermöglicht wird.
Auch die Navmesh Generierung enthält noch viel Verbesserungspotential, wie beispielsweise der
Export von Navmeshes oder dynamische boolsche Operationen, die sich besonders zum Ausschneiden
von Löchern aus dem Navmesh eignen würden, wo Objekte auf dem Bürgersteig platziert wurden.
Die Bewegung von Passanten bildet im C.I.T.Y Projekt nur einen kleinen Teil des Spektrums
menschlicher Aktionen ab. Für realistischeres Verhalten ist eine komplexere KI unerlässlich.
Ein endlicher Automat (eng. Finite State Machine, kurz FSM) ist die häufigste in modernen Spielen
anzutreffende Variante einfacher KI für Agenten mit mehreren fest definierten Aktionen und
Verhaltensweisen. Speziell für Unity bieten sich hier auch diverse Bibliotheken und visuelle Editoren
von Drittanbietern an.
9
Fußgänger in C.I.T.Y - Hubert Grzeskowiak
16.02.2013
7 Resümee
Das gesetzte Ziel der Arbeit wurde nicht ganz erreicht, aber es wurde viel Analyse und
Prototypenentwicklung betrieben. Auf diese Arbeit kann in den folgenden Jahren hoffentlich
zurückgegriffen werden, wenn das Thema weiter bearbeitet werden sollte.
Die selbstständige Arbeit an einem ambitionierten Projekt, das sich mit Spieleentwicklung,
Simulation, Künstlicher Intelligenz und sogar sozio-pädagogischen Themen beschäftigt, brachte mir
persönlich einen enormen Erfahrungszuwachs. Die Betreuer waren sehr freundlich und hilfsbereit, und
standen mir immer mit qualifizierten Ratschlägen zur Seite. Die regelmäßigen Audits, sowie
konstruktive Kritik sorgten für anhaltende Motivation und halfen beim Planen des Vorgehens. Auch
die Einarbeitung in die populären Technologien Unity3D und C#, sowie in die A*Pathfinding
Bibliothek, war jede Stunde wert und hat mir neue Perspektiven und Projektmöglichkeiten eröffnet.
10
Herunterladen