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