You are on page 1of 24

Entwicklung eines intelligenten

Agenten für Bomberman

Stefan Neidig

13. Juli 2010


Inhaltsverzeichnis

1 Einleitung 3
1.1 Arbeitsbeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Thema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Hauptteil 4
2.1 Vorbetachtungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Künstliche Intelligenz in Spielen . . . . . . . . . . . . . . . . . . . 4
2.1.2 Formulierung eines rationalen intelligenten Agenten . . . . . . . . . 4
2.2 Entwicklung des intelligenten Agenten . . . . . . . . . . . . . . . . . . . . 5
2.2.1 Die Umwelt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.2 Wahrnehmung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.3 Aktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.4 Die Nutzenfunktion . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.5 Der Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Auswertung des Programms . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.1 Die Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . 15
2.3.2 Wegfindung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.3 Gegner-Erkennungsmodul . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.4 Entscheidungsmodul . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3 Zusammenfassung 21

2
1 Einleitung
1.1 Arbeitsbeschreibung
Im Rahmen des Kurses “Angewandte Systeme der künstlichen Intelligenz“ hat jeder teilneh-
mende Student ein Praktikum zu besuchen. Dieses Praktikum soll den Studenten befähigen,
sich mit einem Thema auf diesem Gebiet selbstständig auseinander zu setzen und dieses
wissenschaftlich zu bearbeiten. Auf der Basis dieser Recherchen entsteht eine schriftliche
Arbeit in der die Ergebnisse dargelegt werden.

1.2 Thema
Der Lehrstuhl stellt einige Themen bereit, für die sich ein Student entscheiden kann. Zu-
dem stellt er aber auch die Möglichkeit, sich für ein selbstgewähltes Thema zu entscheiden,
welches dann vom Praktikumsleiter abzusegnen ist. In meinem Fall habe ich mich für ein
eigenes Thema entschieden.

Ziel meiner Arbeit wird es sein, für das Spiel Bomberman einen intelligenten Agenten
zu schreiben, der später fähig ist gegen Menschen eingesetzt zu werden. Zudem wird ei-
ne Simulationsumgebung entwickelt, in dem verschiedene Verhaltensmuster des Agenten
parametrisiert, untersucht und getestet werden. Das Programm wird mit der Programmier-
sprache C++ und der frei erhältlichen Spiele-Engine Irrlicht 1 entwickelt.

1.3 Motivation
Dieser intelligente Agent soll Teil meines Projektes RPGBomber2009 werden, mit des-
sen Entwicklung ich im Herbst letzten Jahres angefangen habe. RPGBomber2009 ist ein
Bombermanklon, der sich im Wesentlichen durch das Hinzufügen von Rollenspielelementen
zum originalen Spielkonzept unterscheidet. Um einen Einzelspielermodus zu ermöglichen,
musste ein Bot - fachlich ausgedrückt ein intelligenter Agent - programmiert werden.

Ich habe daher meine Lehrveranstaltungen entsprechend gewählt, um auf diesen Vorle-
sungen basierend mir Fachwissen anzueignen, welche mich befähigen dieses Ziel in meinem
Projekt erfolgreich umzusetzen.

1 http://irrlicht.sourceforge.net/

3
2 Hauptteil
2.1 Vorbetachtungen
2.1.1 Künstliche Intelligenz in Spielen
Künstliche Intelligenz findet gerade in Spielen ein großes Anwendungsgebiet. In fast jedem
Spiel hat man die Aufgabe, sich an den Mitspielern zu messen. Hierbei wird meistens so-
wohl der Mehrspielermodus, in dem man sich mit menschlichen Mitspielern messen kann,
oder auch der Einzelspielermodus angeboten, bei dem man gegen einen sogenannten in-
telligenten Agenten antritt. Hierbei werden je nach Spielkonzept verschiedenste Methoden
der Logik und künstlichen Intelligenz verwendet, wie beispielsweise Wegfindungsalgorith-
men, Bewertungsstrategien, regelbasierte Systeme oder verschiedene Erkennungsmuster.

Das heißt, die formalen Konzepte, die sich hinter diesen Begriffen verbergen, werden
durch die Projektion auf eine Programmiersprache angepasst.

2.1.2 Formulierung eines rationalen intelligenten Agenten


Ein intelligenter Agent ist ein Programm oder ein System, welches seine Umgebung durch
Sensoren wahrnimmt und auf diese mit seinen Effektoren reagiert. Somit berechnete Ak-
tionen werden an die Umwelt zurückgegeben.

Abbildung 2.1: Darstellung eines intelligenten Agenten

Ein rationaler intelligenter Agent ist eine Spezialisierung eines intelligenten Agenten, der
seine Aktionen insofern wählt, dass gemäß einer Nutzfunktion und des Wissens über die

4
2.2. ENTWICKLUNG DES INTELLIGENTEN AGENTEN KAPITEL 2. HAUPTTEIL

Umwelt der größtmöglich zu erwartende Nutzen für den Agenten anfällt.

Abbildung 2.2: Darstellung eines rationalen intelligenten Agenten

2.2 Entwicklung des intelligenten Agenten


Bei dem Spiel Bomberman hat der Spieler beziehungsweise der Agent die Aufgabe, sich
in einem Labyrinth aus zerstörbaren und nicht zerstörbaren Steinen zurecht zu finden und
dabei mit Bomben, die er legen und zünden kann, seine Gegner zu besiegen. Wer von der
Explosion der Bombe getroffen wird, scheidet aus dem Spiel aus. Gewonnen hat derjenige
Spieler, der als letztes übrig bleibt. Im nachfolgenden wird ein Screenshot aus dem Projekt
RPGBomber2009 gezeigt um das Spielkonzept zu veranschaulichen.

Abbildung 2.3: Szene aus RPGBomber2009

5
2.2. ENTWICKLUNG DES INTELLIGENTEN AGENTEN KAPITEL 2. HAUPTTEIL

Nun muss das Konzept eines rationalen intelligenten Agenten auf Bomberman projiziert
werden. Das bedeutet wir definieren die Umwelt, mögliche Aktionen, die Wahrnehmung
und die Nutzfunktion.

2.2.1 Die Umwelt


Als “Umwelt“ wird bei RPGBomber 2009 das Spielfeld interpretiert. Es besteht aus einer
Map, die aufgebaut ist aus einzelnen Spielbausteinen - den sogenannten Tiles. Diese können
zerstörbar oder unzerstörbar sein, sowie betretbar oder nicht betretbar. Man kann somit
eine Funktion M benutzen, die ein Koordinatenpaar auf diese Eigenschaften abbildet:

D = (destroyable, nondestroyable)
E = (enterable, nonenterable)

M : N × N → D × E, (x, y) 7→ (d, e)

Die Umwelt muss zudem eine Schnittstelle bereithalten, über die Informationen (per-
ception) an den Agenten gelangen können. Diese Informationen, wie zum Beispiel der
Aufenthaltsort von Bomben, Gegnern oder auch Gegenständen, werden über eine Metho-
de im Spielmanager bereitgestellt. Weiterhin bietet dieser die Möglichkeit, eine Aktion an
die Umwelt zu übergeben, sodass auch die Umwelt über die Entscheidungen des Agenten
informiert wird.

Abbildung 2.4: Die Umwelt

2.2.2 Wahrnehmung
Die Wahrnehmung erfolgt über die Umwelt. Sie liefert eine sogenannte Wahrnehmungsse-
quenz aus, die aus folgenden Daten besteht:

• Der Status des Spiels

6
2.2. ENTWICKLUNG DES INTELLIGENTEN AGENTEN KAPITEL 2. HAUPTTEIL

• Alle Informationen zu jedem Mitspieler, inklusive sich selbst


• Alle Informationen über die Karte

Dieser Wahrnehmungsvektor ist exakt derjenige, der auch dem menschlichen Spieler zur
Verfügung steht. Somit sind beiden Spielparteien die gleichen Chancen auf den Sieg ge-
währt.

Status des Spiels


Hierbei handelt es sich um Metadaten zum Spielverlauf, wie beispielsweise den Spielstatus,
der Aufschluss gibt, ob ein Gewinner feststeht. Zudem erfährt er auch, wie viele Spieler
und vor allem welche schon ausgeschieden sind.

Informationen zu jedem Mitspieler


Diese Information ist wichtig, damit der Spieler oder Agent einschätzen kann, ob es sinnvoll
ist diesen Spieler anzugreifen oder sich vor ihm in Sicherheit zu bringen. Diese Informationen
bestehen aus:

• Position des Spielers


• Eine Liste von bisher eingesammelten Gegenständen
• Eine Anzahl von Bomben die der Spieler maximal legen kann

• Der gesundheitliche Status des Agenten

So ist es dem Spieler möglich, die Situation bestmöglich einzuschätzen und somit auch
die optimale Aktion - gemäß der Nutzenfunktion - auszuwählen. Diese Informationen helfen
dem Agenten dabei einzuschätzen, wie stark die unterschiedlichen Spieler sind, woraufhin
er dann einen bestimmten Spieler angreifen wird. Diese Berechnungen werden über ein
Gegner-Erkennungsmodul ermittelt.

Gegner-Erkennung Ein Agent speichert sich eine Liste, in der er die Gegenspieler durch
einen Wert - angegeben in Prozent - gewichtet. Je höher der Wert ist, desto bedrohter fühlt
sich der Agent von diesem Spieler. Dieser Wert wird derzeit über 2 Parameter ermittelt.
Einerseits ist die Nähe zum Agenten entscheidend, da ein Spieler, der sich nahe beim
Agenten befindet eine Bombe platzieren kann, die dann wieder eine Bedrohung für den
Agenten ist.
Jeder Agent bekommt daher einen Einzugsradius, in dem er sich bedroht fühlt, sobald ein
Gegenspieler diesen betritt. Je näher ihm ein Mitspieler ist, desto bedrohter fühlt er sich
und wird ihm entsprechend hohe Bewertungen geben. Die folgende Abbildung soll dies nun
erläutern:

7
2.2. ENTWICKLUNG DES INTELLIGENTEN AGENTEN KAPITEL 2. HAUPTTEIL

Abbildung 2.5: Ein Agent bewertet

Der schwarze Bomberman wird eine höhere Bewertung bekommen als der blaue. Diese
Punkte werden aber zu den schon vorhandenen Punkten addiert, sodass der Agent nicht
auf Basis der aktuellen Wahrnehmung sein Gefährlichkeitsmaß bildet, sondern über alle
Wahrnehmungssequenzen interpoliert.
Ein weiterer Faktor, der in die Berechnung eingeht, sind die verbleibenden Lebenspunk-
te, die der Gegenspieler hat, da es durchaus leichter sein kann einen schon geschwächten
Gegner zu besiegen, als einen, der noch alle Lebenspunkte besitzt.

Diese Beiden Faktoren werden nun zu einem Endwert errechnet und dann auf ein Maß
von 0 - 100 normiert:
maxhp − chp
edv(Agentx ) = dv(Agentx ) ∗
maxhp

edv(Agentx ) = norm(edv(Agentx ))
Somit ergibt sich eine Liste von Bewertungen für alle Mitspieler wie folgt:

edvs = (edv(Agent0 ), ..., edv(Agentn ))

Mit dieser Liste kann er nun die Spielstärke eines jeden Gegners einschätzen und gezielt
angreifen. Hierbei ist nun fraglich, ob er sich den Spieler mit der höchsten Bewertung,
also den für ihn am gefährlichsten aussucht, oder den mit der niedrigsten. Derzeit wird
statisch der mit der höchsten Bewertung als Ziel der Angriffe ausgesucht. Aber um dies
dynamisch zu gestalten, wäre es denkbar, ein Persönlichkeitsmodul zu implementieren.
Mit diesem könnten individuell Persönlichkeitsausprägungen, wie zum Beispiel Mut, Angst
oder ähnliches, erstellt werden, die dann solche Entscheidungen chaotischer und weniger
statisch gestalten könnten.

8
2.2. ENTWICKLUNG DES INTELLIGENTEN AGENTEN KAPITEL 2. HAUPTTEIL

Informationen über die Karte


Hierbei handelt es sich um die aktuelle Konfiguration des Spielfeldes. Der Agent bekommt
somit genaues Wissen über jedes einzelne Feld auf der Karte gemäß der Definition2.2.1.
Diese Informationen sind unerlässlich für den Agenten, da er diese für die Wegfindung
benutzt.

Wegfindung Die Wegfindung wird in RPGBomber2009 über den A*-Algorithmus und


den Breitensuchealgorithmus nach [Mag08] bereitgestellt. Der A*Suche liegt nach [Pol07]
folgender Kernalgorithmus zu Grunde:
queue.clear
visited.clear
currentN ode = startN ode
queue.pushback(currentN ode)
visited.pushback(currentN ode)
while !queue.empy do
currentN ode = getCheapestN ode
if currentN ode == endN ode then
return
end if
for all neighborsf romcurrentN ode do
neighbor = prepareN odeF orEnqueing
queue.pushback(neighbor)
visited.pushback(neighbor)
end for
end while
Hierbei wird das Feld in eine Liste von Knoten umgewandelt, die alle samt über Kanten
miteinander verbunden sind, wie bei einem Schachbrett. Ein Weg wäre also eine Folge
von Knoten, wobei benachbarte Knoten über eine Kante miteinander verbunden sind. Die
abzuarbeitenden Knoten werden in queue abgelegt und die bereits besuchten in visited,
damit später keine Kreise oder Schleifen im Weg vorhanden sind.
Als erstes wird getestet, ob der billigste Knoten mit dem Zielknoten übereinstimmt und
gegebenenfalls abgebrochen. Ansonsten werden alle validen Nachbarknoten dieses Knotens
mit in die Suche aufgenommen und wieder der billigste Knoten, über die Funktion get-
CheapestNode, ermittelt. Valide heißt hierbei, dass das jeweilige Feld betretbar ist und
nicht schon besucht wurde, also nicht bereits in visited ist. Hinter der Suche nach dem
billigsten Knoten in queue, verbirgt sich eine Heuristik, die dem Suchalgorithmus eine Ab-
schätzung gibt, wie weit der Zielort von unserem derzeitigen Standort entfernt ist. So wird
der Knoten mit den geringsten Kosten aus queue ausgewählt zum Fortführen der Suche.

In RPGBomber2009 kommen hierbei 2 Heuristiken zum Einsatz:

9
2.2. ENTWICKLUNG DES INTELLIGENTEN AGENTEN KAPITEL 2. HAUPTTEIL

City-Block-Distanz Die Kosten ergeben sich aus der Summe der vertikalen und hori-
zontalen Entfernung.

Abbildung 2.6: Ein mögliches Spielfeld

h = (xs + xe ) + (ys + ye )

Geometrische Distanz Die Kosten ergeben sich aus der tatsächlichen Entfernung, die
mit dem Satz des Pythagoras berechnet wird. Diese Heuristik wurde in Anlehnung an
[Len08, ab Seite 687] implementiert.

10
2.2. ENTWICKLUNG DES INTELLIGENTEN AGENTEN KAPITEL 2. HAUPTTEIL

Abbildung 2.7: Ein mögliches Spielfeld

p
h= (|xs − xe |)2 + (|ys − ye |)2

Beide Heuristiken haben sich als gleichwertig herausgestellt bezüglich des Speicherplatz-
bedarfs und der verwendeten Knoten. Dennoch ergeben sich unterschiedliche Wege:

Abbildung 2.8: 2 verschiedene Wege

Die Linke Grafik zeigt den ermittelten Weg unter Verwendung der City-Block-Distanz,
rechts hingegen der Weg der Heuristik geometrische Distanz. Blaue Felder kennzeichnen
den gefundenen Weg, grüne Felder die zusätzlich untersuchten Felder und rote sind nicht
betretbare Felder. Hierbei ist es denkbar, beide Wege erst einmal berechnen zu lassen und
dann zu untersuchen, welcher Weg der bessere ist. Unter besser ist hierbei derjenige Weg
zu verstehen, der ungefährlicher ist - also weniger Bomben oder Explosionen aufweist -

11
2.2. ENTWICKLUNG DES INTELLIGENTEN AGENTEN KAPITEL 2. HAUPTTEIL

oder auf dem mehr Gegenstände zu finden sind.

Bisher wird aus Optimierungsgründen bezüglich der Laufzeit darauf verzichtet und aus-
schließlich die City-Block-Distanz-Heuristik verwendet.

2.2.3 Aktionen
Das Spiel bietet im Grunde nur wenig mögliche Aktionen, die dann taktisch geschickt
aneinander gereiht werden müssen, um an sein Ziel zu kommen. Unter Aktion versteht
man einen Schritt im atomaren Sinne. Der Spieler hat somit folgende Möglichkeiten:

• Stehen bleiben beziehungsweise gar nichts tun


• Sich zu einem bestimmten Ziel auf der Karte hinbewegen

• Eine Bombe unter sich ablegen

Handlungsmöglichkeiten, wie “einer Bombe ausweichen“ ist nur eine semantisch aufbe-
reitete Summe von einzelnen Entscheidungen (Sich zu einem bestimmten Ziel hinbewegen
und stehen bleiben). Diese sind somit keine Aktion im oben beschriebenen Sinne. Die beste
Aktion wird über die Nutzenfunktion ermittelt und dann an die Umwelt übergeben.

2.2.4 Die Nutzenfunktion


Die Nutzenfunktion ermittelt diejenige Aktion, die für den Agenten den größten Nutzen
bringt. Hierbei ist es wichtig, den größtmöglichen Nutzen überhaupt zu definieren, indem
man die Ziele des Agenten betrachtet und diese priorisiert.

• Überleben, das bedeutet nicht von einer Explosion getroffen werden

• Andere Mitspieler besiegen


• Gegenstände einsammeln

Der Agent hat nun die Aufgabe, mit Hilfe seiner Wahrnehmung, den Nutzwert N zu
maximieren.

Überleben
Das ist das Hauptziel. Der Agent darf nicht in eine Explosion hineinlaufen oder im Ein-
zugsbereich einer Bombe stehen, bevor diese explodiert. Jede Aktion, die hilft, dieses Ziel
zu erreichen, hat höchste Priorität. Hierbei kommt aber nun hinzu, dass der Agent nicht
zwangsweise bei jeder Explosion stirbt, sondern lediglich eine bestimmte Anzahl von Le-
benspunkten verliert, die abhängig ist von der Angriffsstärke (strength) der Bombe. Dieser
Wert fließt direkt als Gewichtung in den Nutzwert des Agenten ein. Je mehr Lebenspunkte
er also besitzt, desto eher wird er auch einen Treffer in Kauf nehmen, um vielleicht gleich-
zeitig einen anderen Spieler zu besiegen. Sollten die Lebenspunkte aber in einen kritischen

12
2.2. ENTWICKLUNG DES INTELLIGENTEN AGENTEN KAPITEL 2. HAUPTTEIL

Bereich fallen, so wird der Agent auf Nummer sicher gehen und das Ausweichen der Bombe
als wichtigstes Ziel wahrnehmen.

hp = chp − strength(bomb)

3000 hp < 0
N1 = 3000
hp sonst

Andere Mitspieler besiegen


Sein sekundäres Hauptziel ist es, andere Mitspieler durch das Legen eigener Bomben zu
besiegen. Dieses ist weniger wichtig, als zu überleben, da ein Spieler sehr wohl gewinnen
kann, ohne eine Bombe gelegt zu haben. Er wird jedoch nie gewinnen, wenn er selbst
besiegt wird. Der Agent nimmt also an, dass es den größten Erfolg bringt, neben einem
anderen Agenten oder Spieler zu stehen und dort eine Bombe abzulegen. Diverse Taktiken,
wie Einkreisen oder Fallen stellen, werden hier vorerst außer Acht gelassen. Durch sein
Gegner-Erkennungsmodul2.2.2 wird der Wert des gefährlichsten Spielers geliefert, der auf
den Nutzwert addiert wird.

N2 = max(edvs)

Gegenstände einsammeln
Dies ist nur ein Nebenziel, da es nicht aktiv dazu beiträgt, das Ziel des Spieles zu erreichen,
sondern lediglich unterstützt. Der Agent berücksichtigt stets die drei Gegenstände, die am
nächsten sind. Hierbei wird je nach Gegenstand unterschieden, wie wichtig es ist, diesen
zu besitzen. Weiterhin wird der Agent vorher prüfen, wie weit er von diesem entfernt
steht und ob er einen solchen Gegenstand schon besitzt, da bei den meisten Items, die
man einsammeln kann, kein Sondereffekt eintritt, wenn man ihn mehrfach einsammelt.
Im Entscheidungsmodul ist eine Funktion weight vorhanden, die den Nutzwert für einen
beliebigen Gegenstand liefert.
Sofern es die Hauptziele des Agenten nicht beeinträchtigt, wird der Agent versuchen,
stets alle Gegenstände einzusammeln, da es ihm nicht nur einen Vorteil bringt, wenn er
sie besitzt, sondern auch einen weiteren Vorteil, wenn seine Gegner keine Gegenstände
besitzen.

N3 = max(weight(nextT hreeItems))

Die Auswertung des Nutzwertes


Nun liegen uns 3 verschiedene Nutzwerte vor, aus dem nun nur noch der maximale Nutzwert
Nmax zu bestimmen ist:

Nmax = max(N1 , N2 , N3 )

13
2.2. ENTWICKLUNG DES INTELLIGENTEN AGENTEN KAPITEL 2. HAUPTTEIL

2.2.5 Der Agent


Nachdem wir den rationalen Agenten bereits formal definiert haben, müssen wir nun ver-
suchen, ihn in ein programmierbares Modell umzuwandeln. Dabei verwenden wir unsere
bisherigen Erkenntnisse. Ein Agent ist ein System, welches seine Umwelt wahrnimmt und
mit einer Aktion - in unserem Fall die bestmögliche - darauf einwirkt. Betrachten wir
daraufhin das nachfolgende UML-Diagramm.

Abbildung 2.9: rationaler intelligenter Agent

Der Agent berechnet nun mit Hilfe des DecisionMaking-Moduls den maximalen Nutz-
wert aus und ermittelt über die Methode getBestChoice(...) die zugehörige Aktion. Für
diesen Vorgang stehen ihm in erster Linie der Wahrnehmungsvektor und diverse Subsys-
teme, wie die Kapselung von Wegfindungsalgorithmen oder Gegner-Erkennungsmodulen,
zur Verfügung.

Nun interagiert der Agent mit seiner Umwelt insofern, dass die ermittelte Aktion in die
Umwelt zurückgeschrieben wird und dadurch den als nächstes ausgegeben Wahrnehmungs-
vektor beeinflusst. Somit ergibt sich folgendes UML-Diagramm für das System.

14
2.3. AUSWERTUNG DES PROGRAMMS KAPITEL 2. HAUPTTEIL

Abbildung 2.10: Das System bestehend aus Agent und Umwelt

2.3 Auswertung des Programms


Hier soll nun die fertige Anwendung präsentiert und ein Bezug zu den Vorüberlegungen
gezogen werden. Weiterhin wird kurz die Funktionsweise beschrieben und die Interaktions-
möglichkeit mit der GUI aufgezeigt.

2.3.1 Die Entwicklungsumgebung


Mit dieser Arbeit ist nicht nur ein intelligenter Agent als solches entstanden, sondern viel
mehr auch eine Entwicklungsumgebung, in der die verschiedenen Module des Agenten
getestet werden und parametrisiert werden können. Später soll auch eine Exportfunktion
vorhanden sein, die eine XML-ähnliche Datei erzeugt, die dann vom Spiel selber weiter
behandelt werden kann. Das ganze Projekt läuft unter dem Titel Bombermans Playground.

15
2.3. AUSWERTUNG DES PROGRAMMS KAPITEL 2. HAUPTTEIL

Abbildung 2.11: Screenshot von Bombermans Playground

1 Das Spielfeld
2 Der intelligente Agent (Weiß)
3 Der menschliche Spieler (Schwarz)
4 Die Benutzeroberfläche

Der weiße Spieler steuert sich selbst, je nachdem in welchem Modul man sich befindet.
Der schwarze Spieler wird durch den Spieler über die Pfeiltasten kontrolliert, sodass der
Agent auch gegen einen Menschen getestet werden kann.

Über die Tastenkombination Alt + F4 wird das Programm verlassen. Es stehen bisher
drei Module zum testen bereit, wobei die Möglichkeiten, wie man mit dem Programm und
dem Agenten interagieren, kann von der jeweiligen Sicht, in der man sich gerade befindet,
abhängen.

16
2.3. AUSWERTUNG DES PROGRAMMS KAPITEL 2. HAUPTTEIL

2.3.2 Wegfindung
In der ersten Sicht hat man umfassende Möglichkeiten, die Wegfindungsalgorithmen des
Agenten auf verschiedene Art und Weise zu testen.

Abbildung 2.12: Screenshot der Wegfindungssicht

1 Debugmodus umschalten
2 Suchalgorithmus auswählen
3 Start- und Zielfeld des Agenten zufällig setzen
4 Suchalgorithmus mit den Einstellungen starten
5 Suchalgorithmus stoppen
6 Den schwarzen Spieler verfolgen

Der Debugmodus visualisiert den Suchalgorithmus und gibt dem Anwender Aufschluss
über die verschiedenen Algorithmen, da nicht nur der gefundene Weg, sondern auch die
untersuchten Felder angezeigt werden. Interessiert man sich nur für den Weg und nicht
über die Güte des Weges oder den Suchalgorithmus selber, so kann man diesen Modus
ausschalten. Ist der Debugmodus eingeschaltet, wird enorm Rechenkapazität beansprucht.
Das liegt an den Grafikroutinen der Engine, dessen Methoden einiges an Overhead mit sich
bringt.

Derzeit sind drei Suchalgorithmen implementiert. Breitensuche, die als Standard fest-
gesetzt ist, und der A*-Suchalgorithmus mit der City-Block-Distanz-Heuristik und der
Geometrischen-Distanz-Heuristik. Diese können über das Dropdownfeld ausgewählt wer-
den. Dabei ist zu beachten, dass die aktuelle Suche des Agenten vorher gestoppt werden
sollte, da es sonst zu Fehlinitialisierungen kommen kann.

Weiterhin können Start- und Zielfeld zufällig verteilt werden. Dabei wird der Agent au-
tomatisch auf das neu gefundene Startfeld bewegt. Sofern man dann den Suchalgorithmus
über den dazugehörigen Button startet, wird die Suche mit dem Startfeld initialisiert und

17
2.3. AUSWERTUNG DES PROGRAMMS KAPITEL 2. HAUPTTEIL

das Zielfeld als Ziel vorgegeben. Der Agent wird versuchen einen Weg zwischen diesen bei-
den Feldern zu finden. Das Spielfeld bietet keine Einschlüsse, sodass kein Feld unerreichbar
ist. Daher liefert die Suche immer eine Lösung.

Eine weitere Möglichkeit die Wegfindung zu testen, bietet sich mit der Maus. Dabei wird
eine Schnellsuche gestartet, wenn man einen Linksklick auf ein Feld auslöst, welches dann
als Zielfeld angesehen wird. Weiterhin kann man ein Feld als Startposition bestimmen,
wenn man auf das entsprechende Feld rechtsklickt.

Um die Wegfindung im richtigen Einsatz zu testen, gibt es die Möglichkeit, den Agenten
ein sich bewegendes Ziel zu verfolgen. Dabei sucht er sich den menschlichen Spieler aus,
der über die Pfeiltasten gesteuert werden kann. Der Agent bekommt periodisch eine Wahr-
nehmungssequenz ausgeliefert, in der er die aktuellen Koordinaten des Spielers erfährt und
somit seine Suche aktualisieren kann.

Abbildung 2.13: Verfolgung des menschlichen Spielers

Die Verfolgung kann über den gleichen Button wieder gestoppt werden.

2.3.3 Gegner-Erkennungsmodul
Die zweite Sicht ermöglicht tieferen Einblick in die Bewertungsalgorithmen des Agenten.
Er registriert zunächst alle Gegenspieler und initialisiert ihre Bewertungen mit 0. Im Laufe
der Zeit passt er die Bewertung entsprechend dem Verhalten des Spielers an und erzeugt
daraus ein Ranking.

18
2.3. AUSWERTUNG DES PROGRAMMS KAPITEL 2. HAUPTTEIL

Abbildung 2.14: Screenshot der Gegnererkennungssicht

1 Bewertungen für alle Gegenspieler mit 0 initialisieren


2 Bewertungen für alle Gegenspieler auf der Konsole ausgeben

Der Anwender hat die Möglichkeit, die aktuellen Bewertungen wieder zu reinitialisieren
und sozusagen eine neue Runde laufen zu lassen. Außerdem werden die Bewertungen nur
auf Anfrage auf der Konsole ausgegeben, da die Bewertungen zu jeder Zeit vorgenommen
werden, egal in welcher Sicht man sich befindet. Sollte man also noch etwas mit der Weg-
findung experimentieren, würden die ganze Zeit Log-Ausgaben erzeugt werden und der
Anwender müsste sich dann eine Vielzahl von Meldungen erst einmal durchforsten bevor
er wirklich die einzelnen Bewertungen nachvollziehen kann.

In der Log-Ausgabe kann der Anwender nicht nur die aktuelle Bewertung mitverfolgen,
sondern auch wie viel Prozent “Gefahr“ dem Gegenspieler zugesprochen wird, Dies wird
gemessen an allen Gegnern. Das ist im übrigen auch genau der Wert, der später an die
Nutzenfunktion übergeben wird.

2.3.4 Entscheidungsmodul
Die dritte und wichtigste Sicht, gewährt dem Anwender Einblick in das “Denken“ des
Agenten. Hier können genauere Informationen zu den Aktionen und deren Nutzen für den
Agenten eingesehen werden.

Abbildung 2.15: Screenshot des Entscheidungsmoduls

19
2.3. AUSWERTUNG DES PROGRAMMS KAPITEL 2. HAUPTTEIL

1 Die einzelnen Nutzwerte können hier ausgegeben werden


2 Eine einzelne Aktion wird auf Basis der aktuellen Nutzwerte erzeugt und in die
Umgebung zurückgeschrieben

3 Der Agent erzeugt auf Basis der Nutzwerte aller 500 ms eine Aktion

Für den Anwender ist es interessant zu wissen, welche Aktion welchen Nutzen für den
Agenten bringt. Derzeit werden drei Faktoren berücksichtigt. Die eigene Bedrohung des
Lebens, der gefährlichste Gegner und die Chance auf Gegenständen zu kommen, wobei
letzteres noch nicht implementiert ist. Ermittelt werden diese Werte wie in 2.2.4 beschrie-
ben.

Somit kann der Anwender Schritt für Schritt eine Aktion erzeugen, um zu jedem Zeit-
punkt nachzuvollziehen, wie der Agent seine Entscheidung trifft. Oder aber kann er den
Agenten automatisieren, sodass er selbst in einem Abstand von 500 ms seinen Wahrneh-
mungsvektor aktualisiert, den maximalen Nutzwert ermittelt und dann die entsprechende
Aktion auslöst und diese an die Umwelt propagiert. Dabei wird dem Anwender aber kaum
Möglichkeit gegeben, die Logausgaben zu verfolgen, da der Agent auf den Spieler losgehen
wird.

Dieser Button ist letztendlich die Synthese dieses Projektes. Hier kann der intelligente
Agent - mit den bisher eingestellten Möglichkeiten - gegen einen menschlichen Spieler ge-
testet und evaluiert werden. Sollten die bisherigen Einstellungen in den einzelnen Modulen
die Güte des Agenten mindern, so kann man diese Nachträglich rekonfigurieren und eine
neue Runde starten.

20
3 Zusammenfassung
Hier möchte Ich noch einmal einen Bezug zu meiner Einleitung, speziell zu meinem The-
ma 1.2 herstellen. Ziel war es einen Agenten zu entwickeln, der fähig ist gegen einen
Menschen eingesetzt zu werden. Das heißt, dass der Agent nicht wesentlich besser aber
auch nicht wesentlich schlechter spielt als ein Mensch. Da es auch unter Menschen unter-
schiedliche Spielstärken gibt, muss auch der intelligente Agent graduierbar sein. Durch die
Einstellung einzelner Parameter kann der Agent individuell an das Spielerlevel angepasst
werden - und das sogar dynamisch während des Spiels. Diese Einstellungen können der-
zeit noch zur Laufzeit vom Anwender vorgenommen werden. Denkbar wäre aber, dass der
Agent ein Spielstärke-Erkennungsmodul bekommt und so seine Parameter mit Gewichten
versehen kann, um sich selbst an den menschlichen Spieler anzupassen.

Ein solche Möglichkeit würde sich im Entscheidungsmodul bieten, speziell bei der Ent-
scheidung, ob ein Agent sich lieber in Sicherheit bringt, oder doch einen Treffer in Kauf
nimmt, um dafür ein anderes (für ihn wichtigeres) Ziel zu erreichen. Eine Gewichtung
würde hier charakteristische Spielzüge erzeugen und könnte zu einer Art Persönlichkeits-
ausprägung, wie etwa mutig, ängstlich, leichtsinnig und so weiter führen.

Hier bieten sich noch sehr viele Möglichkeiten, den simplen Ansatz der Entscheidungs-
findung zu erweitern.

Zurück zur Ausgangsthese: Der Agent kann ohne weiteres gegen menschliche Spieler
eingesetzt werden. Auch bei der Spielstärke nehmen sind die beiden Parteien gleich stark.
Dennoch ist es für den menschlichen Spieler sehr schwer, den Agenten zu stellen oder gar
in eine Falle zu locken. Einerseits, weil Spieler und Agenten derzeit noch Felder, auf denen
sich Bomben befinden, betreten können. Andererseits liegt das daran, dass der Agent ab
einen gewissen Zeitpunkt, genau dann, wenn er sein Leben in Gefahr sieht, keine Fehler
mehr macht. Oberste Priorität ist das Schützen seiner Lebenspunkte. Das geht sogar so-
weit, dass er nichts anderes macht als auszuweichen, sodass der Spieler in der Pflicht ist
selbst wiederholt anzugreifen.

Dahinter steckt ein Konzeptionsfehler. Es wurde versucht, dem Agenten eine möglichst
menschliche Wahrnehmung zu vermitteln. Beide nehmen absolut das gleiche wahr, aber
auf einem völlig unterschiedlichem Level. Der Agent bekommt Zahlen und Daten, während
der Spieler nur den Blick auf den Bildschirm hat und somit einzelne Abstände nur schätzen
kann. Der Agent hingegen kann genauestens berechnen und somit seine Aktionen dahin-
gehend optimieren. Optimal berechnete Aktionen des Agenten stehen somit mehr oder
weniger gut abgeschätzte Aktionen des Spielers gegenüber. Das führt zu einem nicht un-
bedingt kleinen Vorteil für den Agenten, der sich ab und an bemerkbar macht, wenn man

21
KAPITEL 3. ZUSAMMENFASSUNG

versucht einer Explosion auszuweichen und dabei an einer Wand hängen bleibt, weil man
doch ein Stück zu weit hineingelaufen ist. Um dieses Problem zu lösen oder zu mindern,
könnte man die Wahrnehmung des Agenten mit einer gewissen Unschärfe versehen, sodass
er nur ein unscharfes Set an Daten bekommt und dadurch auch eher zu Fehlern neigt,
genau wie der Mensch auch.

Dennoch ist das Resultat überraschend gut. Es wurde teils wirklich intelligentes Ver-
halten beobachtet, beispielsweise als der Agent durch einen Feuerteppich lief nur um den
Spieler erfolgreich zu bedrohen. Einer Anfangs offensiven Taktik weicht dann aber immer
mehr einer defensiveren.

Zusammenfassend lässt sich sagen, dass mit Bombermans Playground das Ziel dieser
Arbeit nicht im mindesten verfehlt wurde, da Ansätze intelligenten Denkens zu beobachten
sind und der Agent sehr wohl mit dem menschlichen Spieler mithalten kann. Dennoch muss
man sich eingestehen, dass noch einiges an Potential zur Verfügung steht, um den Agenten
auf ein optimales Level zu bringen.

22
Literaturverzeichnis
[Irr05] Irrlicht engine - a free open source 3d engine. http://irrlicht.sourceforge.net/.

[Irr07] Irrlicht3D.de - das deutsche Irrlicht-Portal. http://www.irrlicht3d.de/.


[Len08] Lennart Steinke. Spieleprogrammierung. Bhv Buch, 2. Auflage. edition, 2008.
[Mag08] Wegfindungsalgorithmen. http://user.cs.tu-berlin.de/~magus/labyrinth/.

[Pol07] A-star pfadfindung für anfänger. http://www.policyalmanac.org/games/aStarTutorial_de.html.

23
Abbildungsverzeichnis

2.1 Darstellung eines intelligenten Agenten . . . . . . . . . . . . . . . . . . . . 4


2.2 Darstellung eines rationalen intelligenten Agenten . . . . . . . . . . . . . . 5
2.3 Szene aus RPGBomber2009 . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Die Umwelt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.5 Ein Agent bewertet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.6 Ein mögliches Spielfeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.7 Ein mögliches Spielfeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.8 2 verschiedene Wege . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.9 rationaler intelligenter Agent . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.10 Das System bestehend aus Agent und Umwelt . . . . . . . . . . . . . . . . 15
2.11 Screenshot von Bombermans Playground . . . . . . . . . . . . . . . . . . . 16
2.12 Screenshot der Wegfindungssicht . . . . . . . . . . . . . . . . . . . . . . . 17
2.13 Verfolgung des menschlichen Spielers . . . . . . . . . . . . . . . . . . . . . 18
2.14 Screenshot der Gegnererkennungssicht . . . . . . . . . . . . . . . . . . . . 19
2.15 Screenshot des Entscheidungsmoduls . . . . . . . . . . . . . . . . . . . . . 19

24

You might also like