Künstliche Intelligenz in Computerspielen Proseminar

Transcription

Künstliche Intelligenz in Computerspielen Proseminar
Künstliche Intelligenz in Computerspielen
Proseminar
Von: Daniel Bauer
Abstract
Diese Ausarbeitung behandelt künstliche Intelligenz speziell in 3D-Action Spielen.
Besprochen werden Sichtmodelle, Wegpunkte und Verhalten. Zum besseren Verständnis
werden diese drei Dinge anhand eines Beispiels veranschaulicht.
Künstliche Intelligenz in Computerspielen
Inhalt
1
Einleitung ............................................................................................................... 3
2
Sichtmodell............................................................................................................. 3
3
Weitere r Aufbau eines Bots und Bewegungskonzepte ...................................... 5
3.1
Attribute von Wegpunkten...........................................................................................8
4
Verhalten von Bots ................................................................................................ 9
5
Beispiel für Wegpunktfindung ........................................................................... 10
5.1
Umgebung................................................................................................................10
5.2
Welche Eigenschaften muss der Punkt besitzen? .........................................................11
6
Ausblick................................................................................................................ 13
7
Literatur............................................................................................................... 14
Doc.: KI in Computerspielen
Page 2 / 14
Künstliche Intelligenz in Computerspielen
1
Einleitung
Künstliche Intelligenz in Computerspielen soll in sämtlichen Spielegenres das Spiel für den
Menschen spannender machen bzw. überhaupt ermöglichen und Computergegner wie
menschliche Spieler wirken lassen. Der Computer soll einen Menschen überzeugend
„simulieren“.
Eine umfassende und trotzdem ins Detail gehende Darstellung über alle Spielegenres würde
den Umfang dieser Ausarbeitung übersteigen, aus diesem Grund wird hier die künstliche
Intelligenz in Ego-Shootern behandelt. Das Spielziel in Ego-Shootern besteht grob darin,
Gegner in einem Level zu finden und zu eliminieren. Was im Gegensatz zu anderen Genres
ein einfaches Ziel darstellt, da sehr wenig Interaktion zwischen den Spielern stattfindet.
Einen vom Computer simulierten Spieler nennt man in Ego-Shootern (und nur in EgoShootern) „Bot“, im Gegensatz dazu wäre die Bezeichnung in einem Adventure NPC (NonPlayer-Character).
Ein Bot ermöglicht es dem Programmierer einem Spieler, auch ohne Netzwerk- oder
Internetanbindung ein anspruchsvolles Spiel zu bieten, bzw. überhaupt ein Spiel bieten zu
können.
Im Laufe der letzten Jahre hat sich die für den Bot verfügbare Rechenzeit verbessert, da
moderne Grafikkarten einen großen Teil der Grafikdarstellung übernehmen, was früher
Aufgabe des Prozessors war. Früher bestand „intelligentes“ Verhalten von Bots lediglich
darin, immer hundertprozentig zu treffen und sich irgendwie durch das Level bewegen zu
können. Heute wird auf diesen Bereich des Spiels mehr Wert gelegt. Diese Ausarbeitung soll
einen kleinen Einblick geben, worauf es bei der Realisierung von Bots ankommt.
2
Sichtmodell
Der wichtigste Unterschied zwischen einem menschlichen Spieler und einem Bot ist die Art
und Weise, wie die Spielwelt wahrgenommen wird. Ein menschlicher Spieler erhält ein
fertiges Bild dieser Welt und er erkennt auch bestimmte Gegenstände. Er sieht nicht durch
Wände,
da
die
Sicht,
die
er
erhält
bereits
Texturen
enthält.
Da die meisten Spiele kein gesondertes User-Interface besitzen, sind Bots sehr stark im
eigentlichen Spiel integriert. Das führt unweigerlich dazu, dass ein Bot Zugriff auf sämtliche
Daten
des
Spiels
besitzt.
Beispielsweise wüsste der Bot zu jederzeit wo sich welcher Spieler befindet, denn für ihn
macht es ohne ein entsprechendes Sichtmodell keinen Unterschied, ob sich eine Wand
zwischen
ihm
und
dem
Gegner
befindet
oder
nicht.
Doc.: KI in Computerspielen
Page 3 / 14
Künstliche Intelligenz in Computerspielen
Das erste Problem ist also, ein Sichtmodell für Bots zu entwickeln. Dazu wird dem Bot ein
Sichtkegel verpasst, dass dem menschlichen Gesichtsfeld in etwa entspricht. Das bedeutet, er
kann nur Dinge wahrnehmen, die sich in diesem Kegel befinden. Das schränkt die Sichtweite
schon enorm ein, aber der Bot würde immer noch durch Wände und Gegenstände sehen.
Also muss er auch Informationen über die Dinge erhalten, die sich in seinem Gesichtsfeld
befinden.
Wenn Bots von Anfang an in einem Spiel eingeplant sind, geben meistens die Leveldesigner
den verschiedenen Gegenständen Eigenschaften mit, auf die der Botprogrammierer dann
zugreifen kann. Die Sichtbarkeit von Gegenständen wird durch viele Dinge beeinflusst.
Abbildung 1.1 Informationen über die Umgebung [6]
Abbildung 1.1 zeigt, wie ein Bot Gegner wahrnimmt. Die wichtigen Daten sind dabei
Sichtbarkeit des Körpers ( bod ), Entfernung ( dst ), Position im Gesichtsfeld ( ang ),
Lichtverhältnisse ( lit ), Durch Glas oder Wasser behinderte Sicht ( red ). Diese Werte werden
über Formeln zu einem Gesamtwert verrechnet. Je höher dieser Wert ist, desto besser wird der
Gegner wahrgenommen.
Doc.: KI in Computerspielen
Page 4 / 14
Künstliche Intelligenz in Computerspielen
Das Sichtmodell wird dazu verwendet, um die Reaktionszeit des Bots künstlich zu verlängern.
Menschliche Spieler nehmen Gegner in dunklen Ecken schlechter wahr als Gegner in einem
hellen Raum. Dadurch verzögert sich ihre Reaktionszeit. Das Ziel des Sichtmodells ist es,
genau das bei Bots zu erreichen.
3
Weiterer Aufbau eines Bots und Bewegungskonzepte
Bei der Bewegung ist natürlich auch wichtig, dass der Bot Informationen über Gegenstände
erhält, damit er zum Beispiel eine Treppe als das erkennt, was sie ist. (Abbildung 1.2) Ohne
eine entsprechende Erklärung würde ein Bot keine Treppe benutzen, denn er wüsste lediglich,
dass sich etwas in seinem Weg befindet.
Abbildung 1.2 Informationen über Gegenstände [5]
Wenn das Level diese Informationen bereits beinhaltet, erhält der Bot so eine Vorstellung von
seiner Umgebung.
Wünschenswert wäre ein Bot, der sich selbstständig in jedem Level zurechtfindet und „klug“
handelt. Es ist durchaus möglich einen Bot zu programmieren, der das relativ gut kann. Ein
Problem ist jedoch, der enorme Rechenaufwand, den ein solcher Bot benötigen würde.
Das Hauptproblem bei diesem Konzept ist jedoch, dem Bot ein taktisches Verständnis zu
geben. Man kann der Umgebung wie oben genannt zwar gewisse Eigenschaften geben, aber
allein die Wegfindung durch das Level wäre schon aufwendig. Es existieren zwar
Wegfindungsalgorithmen, diese sind jedoch meistens auf Graphen ausgelegt. Es gibt natürlich
auch Wegfindungsalgorithmen, die ohne Graphen auskommen, sie benötigen jedoch meist
mehr Rechnerleistung.
Doc.: KI in Computerspielen
Page 5 / 14
Künstliche Intelligenz in Computerspielen
Aus diesen Gründen wurde ein Wegpunktkonzept entwickelt. Damit bewegen sich die Bots
zwar nicht frei im Level, es stellt jedoch den besten Kompromiss dar zwischen dem Wunsch
Ergebnis und dem, was in angemessener Zeit mit angemessenem Aufwand machbar ist.
Wegpunkte sind Punkte, die in einem Level gesetzt werden um dem Bot eine Karte der Orte
im Level zu geben, an denen man sich aufhalten kann.
Abbildung 2.1 Wegpunktnetz als Repräsentation des Levels
und in der fertigen Spielewelt dargestellt [3]
Die einzelnen Wegpunkte werden über Kanten so verbunden, wie man sich von einem Punkt
zum anderen bewegen kann. Bei diesem Vorgehen erhält man einen Graph, der eine
Repräsentation des Levels darstellt. Da das Wegpunkt netz ein Graph ist, lassen sich alle
gängigen Wegfindungsalgorithmen direkt darauf anwenden, was das Problem der
Wegfindung behebt.
Das Wegpunktnetz ist ein zusammenhängender und gerichteter Graph. Gerichtet deswegen,
da man sich beispielsweise an einer Dachschräge abwärts bewegen kann, jedoch nicht
aufwärts.
Doc.: KI in Computerspielen
Page 6 / 14
Künstliche Intelligenz in Computerspielen
Abbildung 2.2 Darstellung eines einfachen Wegpunktnetzes [5]
Damit der Bot das Wegpunktnetz nutzen kann, muss ein solches Netz erst erstellt werden.
Eine Möglichkeit wäre, den Bot die Karte beim ersten Start des Levels erkunden zu lassen
und ihn zufällig Wegpunkte setzen zu lassen. Dabei lassen sich die Wegfindungsalgorithmen
jedoch erst nach setzen der Wegpunkte anwenden. Außerdem könnten vom Leveldesigner
angelegte Geheimgänge, Abkürzungen etc. vom Bot unter Umständen nur zufällig gefunden
werden, was ziemlich unwahrscheinlich ist.
Das nächste Problem wäre, dass Wegpunkte evtl. an falschen Orten gesetzt werden.
Beispielsweise könnte der Bot einen Wegpunkt zu Nahe am Abgrund setzen, was dazu führt,
dass er jedes Mal in den Abgrund stürzen würde, wenn er den Weg benutzt.
Aus diesen Gründen wird meist das Konzept eines fest vorgegebenen Wegpunkt Netzes
benutzt. Dazu muss der Leveldesigner die Wegpunkte setzen, was den Vorteil hat, dass er
auch Wegpunkte in Geheimgänge setzen kann. Außerdem lässt sich so vermeiden, dass
Wegpunkte an falschen Stellen gesetzt werden.
Ein weiterer Vorteil ist, dass der Leveldesigner natürlich genau weiß, welcher Punkt welche
besonderen Vor – und Nachteile für das Spiel bietet. Dazu mehr im nächsten Abschnitt.
Für den Einzelspielermodus bietet dieses Vorgehen auch die Möglichkeit,
Computergesteuerte Gegner in ihrer Bewegungsfreiheit einzuschränken, denn wo keine
Wegpunkte sind, können sie sich auch nicht bewegen.
Das Wegpunktkonzept hat natürlich auch Nachteile. Zum Einen stellt das erstellen und
entwickeln des Wegpunktnetzes einen erheblichen Mehraufwand für den Programmierer dar.
Zum anderen ist die Qualität der Bots stark vom Wegpunktnetz abhängig. Ein Bot ist nur so
gut, wie das Wegpunktnetz.
Doc.: KI in Computerspielen
Page 7 / 14
Künstliche Intelligenz in Computerspielen
3.1
Attribute von Wegpunkten
Die Wegpunkte lassen sich nicht nur dazu nutzen, dass der Bot geschickt durch das Level
navigieren kann, man kann den Wegpunkten auch bestimmte Attribute mitgeben.
Zum Beispiel kann man den Wegpunkten Informationen über die Helligkeit an diesem Punkt
geben, oder wie viele andere Punkte man von hier aus überblicken kann ( Abbildung 3.1).
Abbildung 3.1 Sichtbarkeit von Wegpunkten und Übersicht [3]
Man kann die Wegpunkte also dazu nutzen, dem Bot Informationen über seine Umgebung zu
geben.
Dadurch ist es wesentlich einfacher, das Botverhalten richtig zu programmieren, denn
beispielsweise ist ein Wegpunkt, der viele andere überblickt und im Dunkeln liegt ein
optimaler Scharfschütze npunkt. Das Setzen dieser Eigenschaften ist auch Aufgabe des
Leveldesigners, da er die Wegpunkte setzt. Das bietet ihm die Möglichkeit, den Wegpunkten
die Eigenschaften zu geben, die er sich überlegt hat. Wie im Beispiel mit dem
Scharfschützenpunkt
später
noch
deutlich
gemacht
wird.
Zusätzlich zu den Informationen, die vom Level aus gegeben sind, könnte der Bot eine eigene
Liste von Attributen zu dem Punkt führen. Beispielsweise, wie oft er dort getötet wurde und
welche Waffen er dabei in der Hand gehalten hat. Dadurch kann man den Bot lernfähig
machen. Er könnte diesen Punkt meiden oder nur mit stärkeren Waffen benutzen.
Insgesamt erleichtern die Wegpunkte die Realisierung von Bots erheblich.
Da die Wegpunkte, wie oben genannt, eine Repräsentation des eigentlichen Levels sind, kann
man sie sehr einfach dazu benutzen, den Bots ein einfaches taktisches Vorgehen zu
ermöglichen.
Zum Beispiel enthält einer der Punkte die Information über eine besonders starke Waffe. Bei
manchen Ego-Shootern tauchen Waffen an bestimmten Punkten auf. Sammelt man sie dort
ein, dauert es eine Weile, bis die Waffe dort wieder auftaucht. Die Zeit, die bis zum
Wiederauftauchen der Waffe vergeht, ist abhängig von der Stärke der Waffe. Wenn der Bot
sich in seinem Programm “merkt”, wann die Waffe wieder auftauchen müsste, dann kann er
gezielt zu diesem Zeitpunkt an diesen Ort gelangen.
Doc.: KI in Computerspielen
Page 8 / 14
Künstliche Intelligenz in Computerspielen
4
Verhalten von Bots
Nachdem sich der Bot jetzt ein Sichtmodell besitzt und sich bewegen kann, kommen wir zu
seinem Verhalten. Mit Verhalten ist gemeint, dass der Bot Entscheidungen treffen muss, wie
er weiter vorgeht.
Abbildung 4.1 Entscheidungsbaum eines Bots [4]
Der Bot hat jederzeit verschiedene Möglichkeiten, wie er weiter vorgeht. Er erhält vom
Programmierer einen „Handlungsbaum“, der all seine Handlungen beinhaltet. Je nach dem,
was er an Informationen aus seiner Umgebung erhält, werden die Punkte wichtiger, bzw.
weniger wichtig. Das führt zu einem reaktiven Verhalten, d.h. er plant nicht taktisch sein
Vorgehen,
sondern
reagiert
auf
vorhandene
Situationen.
Zur Erläuterung des Handlungsbaumes ein kleines Beispiel. Angenommen ein Bot betritt
einen Raum. In seinem Gesichtsfeld befinden sich keine Gegner sondern nur eine starke
Waffe. Die Handlung „Waffen einsammeln“ wird anhand des Sichtmodells als nächste
wichtige Handlung erkannt und bekommt einen hohen Stellenwert. Der Bot wird sich mit
Hilfe seines Wegpunktnetzes einen Weg zu der Waffe suchen und diese Einsammeln. Damit
ist diese Handlung abgeschlossen und die Handlung „Waffe einsammeln“ verliert ihre
Wichtigkeit.
Doc.: KI in Computerspielen
Page 9 / 14
Künstliche Intelligenz in Computerspielen
Auch beim Verhalten von Bots bieten dieWegpunkte viele Möglichkeiten Man könnte den
Bot eine eigene „Liste“ mit Vor- und Nachteilen der verschiedenen Wegpunkte führen lassen.
Also eine Art lernen aus bisherigen Situationen.
Verbindung mit der Waffe nicht zum Erfolg führt, würde er den Weg nur mit einer anderen
Waffe benutzen.
5
Beispiel für Wegpunktbewertung
Das folgende Beispiel ([3]) zeigt, wie ein Bot einen Scharfschützenpunkt auswählt. Dabei
wird klar, wie ein Bot das Wegpunktnetz nutzen kann, um einen geeigneten Punkt finden zu
können und vor allem, wie er das Wegpunktnetz dazu nutzen kann, aus Fehlern zu lernen.
5.1
Umgebung
Als Umgebung dient in diesem Beispiel ein einfaches Level (Abbildung 5.1)
Abbildung 5.1 Ein einfaches Symmetrisches Level [3]
Der Bot befindet sich im Nordwesten der Karte und soll das gegenüberliegende Haus mit
einem Scharfschützengewehr überwachen. Dazu muss er erst einmal einen bestimmten
Wegpunkt auswählen, von dem aus er seinen Auftrag am besten erfüllen kann. Selbst diese
komplexe wirkende Aufgabe, ist ein rein reaktives Verhalten, denn der Bot reagiert auf den
Befehl, ein Gebäude zu überwachen. Das weitere Vorgehen ist ein durchlaufen des
Doc.: KI in Computerspielen
Page 10 / 14
Künstliche Intelligenz in Computerspielen
Handlungsbaumes, was zu einer Entscheidung für einen bestimmten Punkt führt. Welche
Schritte dabei gemacht werden, wird im folgenden beschrieben.
5.2
Welche Eigenschaften muss der Punkt besitzen?
Der Wegpunkt, von dem aus der Bot das Gebäude überwachen soll, sollte von möglichst
wenig anderen Punkten eingesehen werden können. Außerdem sollte der Scharfschütze
möglichst im Dunkeln sitzen. Ein weiterer wichtiger Punkt ist, dass der Punkt eine gute
Deckung gegenüber Angriffen von Gegnern bieten sollte.
(Abbildung 5.2)
Abbildung 5.2 [3]
Links : Punkte mit guter Sicht nach Osten und Deckung nach Westen
Rechts : Die sich aus Überlagerung ergebende Karte für den Bot
Die Abbildung zeigt links eine Karte, die Punkte mit Sicht nach Osten und guter Deckung
zeigt. Die rechte Karte entsteht aus der Überlagerung der linken Karte mit der Karte, die sich
aus den statischen Levelinformationen ergibt. Wie aus der Abbildung hervorgeht, schränkt
das Vorgehen die möglichen Punkte schon extrem ein.
Als nächstes spielt für den Bot die eigene „Erfahrung“ eine Rolle. Wie oben genannt, führt
der Bot eine Art Liste über Erfolg und Misserfolg an bestimmten Punkten. Dazu zählt auch,
dass er sich merkt, welche Waffe er in der Hand hatte. Diese Erfahrungen lassen sich
natürlich auf einer Karte darstellen (Abbildung 5.3).
Doc.: KI in Computerspielen
Page 11 / 14
Künstliche Intelligenz in Computerspielen
Abbildung 5.3 [3]
Links : Karte der Erfahrungen
Rechts : Karte die sich aus der Überlagerung der Karten ergibt
Die linke Karte in Abbildung 5.3 zeigt, wo der Bot gute Erfahrungen mit dem
Scharfschützengewehr gemacht hat. Je dunkler die Fläche ist, desto besser sind die
Erfahrungen dort. Die rechte Karte ergibt sich aus der Überlagerung der rechten Karte aus
Abbildung 5.2 mit den zusätzlichen Informationen aus der Erfahrungskarte.
Das nächste Problem ist, einen Punkt zu wählen, der möglichst viele Wegpunkte überblickt,
auf denen sich viele Gegner bewegen, bzw. aufhalten. (Abbildung 5.4)
Abbildung 5.4 [3]
Links : Karte mit guter Sicht über benutzte Wegpunkte
(Je dunkler, desto besser)
Rechts : Die sich ergebende Karte für den Bot
Doc.: KI in Computerspielen
Page 12 / 14
Künstliche Intelligenz in Computerspielen
Nachdem alle Aspekte berücksichtigt wurden, erhält der Bot eine Karte, mit den bevorzugten
Punkten zum erledigen seiner Aufgabe. Anhand seiner eigenen Position und dieser Karte,
wird er sich den nächst gelegenen Punkt suchen, der nach dieser Karte ein guter
Scharfschützenpunkt ist.
6
Ausblick
Es existieren bereits einige gute Konzepte zum Thema Bots, aber es lässt sich sicher noch
einiges verbessern. Optimal wäre natürlich ein Bot, der ohne sämtliche Hilfsmittel wie
Wegpunkte etc. auskommt.
Doch bisher ist die Umsetzung solcher Ideen zu kostspielig und langwierig. Das
Wegpunktsystem ist schneller umzusetzen und ein Spieler würde den Unterschied kaum
bemerken, da die heutigen Bots mit dem Wegpunktsystem schon ziemlich realistisches
Verhalten zeigen.
Es gibt auch Versuche mit Bots, die taktisches Vorgehen und Planung nutzen, um einen
menschlichen Spieler möglichst realistisch zu ersetzen. Der sogenannte „SoarBot“ ist ein
Beispiel dafür. Die erzielten Ergebnisse sind ziemlich gut und der Ansatz sollte sicher
verfolgt werden, doch noch benötigen Bots, die taktisches Vorgehen beherrschen zu viel
Rechenzeit. Beim SoarBot wurden die Bots über ein Netzwerkinterface in ein Spiel integriert.
Die taktische Planung wurde von einem gesonderten Rechner übernommen.
In Quake 3 Arena wurde ein erster Ansatz gemacht, den Bots eine Persönlichkeit zu geben,
d.h. sie spielen unterschiedlich aggressiv. Man könnte an diesem Ansatz weiterarbeiten und
den Bots eine realistischere Persönlichkeit geben, was sie meiner Meinung nach automatisch
einem menschlichen Spieler ähnlicher machen würde. Steuern könnte man das, indem man
das Fluchtverhalten nach unterschiedlichem Verlust von Lebenspunkten startet. Oder indem
ein Bot mit einer schwachen Waffe angreift, während ein anderer lieber starke Waffen
sammelt.
Ein kleiner Punkt, der den Gesamteindruck eines Bots ausmacht ist das Chatverhalten.
Menschliche Spieler unterhalten sich über die in den Spielen enthaltenen Chatprogramme
miteinander. Einem Bot beizubringen, wie man chattet, ist unheimlich schwer und eine
ziemlich komplexe Aufgabe. Es gibt bereits Versuche dazu (www.computer.org/intelligent),
doch bis jetzt wurden keine Bots programmiert, die ein realistisches Chatverhalten besitzen.
Zusammenhänge zwischen Sätzen und das reagieren auf ihre eigenen Namen sind dabei zwei
große Probleme, die bisher nicht behoben werden konnten.
Doc.: KI in Computerspielen
Page 13 / 14
Künstliche Intelligenz in Computerspielen
7
Literatur
1. Applying Inexpensive AI Techniques to Computer Games, Aaron Khoo and Robert
Zubek, AI and Infotainment 2002
2. Creating Human- like Synthetic Characters with Multiple Skill Levels: A Case study
using the Soar Quakebot, John E. Laird and John C. Duchi, www.aaai.org (2000)
3. Terrain Reasoning for 3D Action Games, William van der Sterren, CGF-AI,
www.cgf-ai.com
4. It knows what You’re going to do : Adding Anticipation to a Quakebot, John E. Laird,
University of Michigan
5. The Quake 3 Arena Bot, J.M.P van Waveren, University of Technology Delft
6. „CGF for Action Quake2: Bots, Missions, Tactics and Scripting in Action!“, William
van der Sterren, www.botepidemic.com (2002)
Doc.: KI in Computerspielen
Page 14 / 14