"Intelligent Virtual Characters" Künstliche Intelligenz in Spielen - Quan Nguyen () Dozent: Dr. Michael Kipp

 
WEITER LESEN
“Intelligent Virtual Characters”

    Künstliche Intelligenz
           in Spielen

          Quan Nguyen
     (quan.nguyen@dfki.de)

     Dozent: Dr. Michael Kipp

            18.08.2006
Abstract

Die vorliegende Arbeit beschäftigt sich mit einigen Techniken zur Modellierung und
Implementierung von künstlicher Intelligenz in Spielen.
Zunächst werden Techniken zur Modellierung von Non-Personal-Characters (NPCs)
vorgestellt, mit denen es den NPCs möglich ist, sich intelligent und selbständig zu bewegen
(Steering, A*-Algorithmus).
Auch wird anhand von verschiedenen Lernmethoden (Lernen durch Feedback) gezeigt, wie
man NPCs unterschiedlich ausbilden und individualisieren kann.
Am Beispiel des Spiels “Black & White” kann man sehen, wie man Perzeptrone benutzen
werden, um Bedürfnisse von Agenten zu repräsentieren und zu trainieren.
Um Entscheidungen und Vorhersagen treffen zu können, werden endliche Automaten,
Entscheidungsbäume und N-Gramme erläutert.
Zum Schluss wird eine Möglichkeit gezeigt, wie die Kommunikation zwischen KI-Entwickler
und Programmierer bei der Entwicklung von KI erleichtert werden kann.
Inhaltsverzeichnis:
1    EINLEITUNG ........................................................................................................................................... 4

2    TECHNIKEN ZU MODELLIERUNG VON NON-PERSONAL-CHARACTERS (NPCS) ................... 6

    2.1    BEWEGEN VON NPCS ........................................................................................................................ 6
       2.1.1      Intelligente Bewegung der Agenten durch das Gelände ....................................................... 6
    2.2    ENTSCHEIDUNGEN VON NPCS ........................................................................................................... 9
    2.3    PROGRAMMIERUNG VON AGENTEN ................................................................................................... 10
    2.4    VORHERSAGEN VON NPCS .............................................................................................................. 12
       2.4.1      N-Gramm-Modell .................................................................................................................... 12
    2.5    LERNEN VON NPCS.......................................................................................................................... 16
       2.5.1      Verschiedene Lernmethoden ................................................................................................ 18

3    KONKLUSION....................................................................................................................................... 20

    3.1    KI-FORSCHUNG VS. KI IN SPIELEN ................................................................................................... 20
    3.2    ZUKÜNFTIGE ENTWICKLUNG .......................................................................................................... 21
    3.3    ZUSAMMENFASSUNG ........................................................................................................................ 21

4    LITERATUR........................................................................................................................................... 23
1 Einleitung
Aktuelle Computerspiele arbeiten mit zunehmend imposanter werdenden Grafiken und
immer komplexeren Storys. Innerhalb dieser modernen Spiele spielt die künstliche Intelligenz
(KI) der computergesteuerten Agenten eine zentrale Rolle. Im Vergleich zur Grafik eines
Spieles besitzt die KI hinsichtlich der Vermarktung lediglich einen untergeordneten
Stellenwert, da sie nicht in dem Maße präsentiert werden kann wie eine neue Grafik-Engine.
Eine gute KI mit ihren besonderen Facetten wird im Hintergrund, im Detail und erst langfristig
(im Spielspaß) erkennbar – nicht in medienwirksamen, fotorealistischen Explosionen und
realitätsnahen Physikeigenschaften [1].

Die künstliche Intelligenz eines neuen Spieles muss mindestens den heutigen Standards
genügen – oder diese noch übertreffen. Dadurch dass KI nicht auf Fotos gebannt und
präsentiert werden kann, wird sie daher häufig nur verbal hochgepreisen und als
„revolutionär neu“ und überaus komplex beschrieben, um überhaupt in der Fachpresse
Beachtung zu finden. Denn ungeachtet der schwierigen Vermarktung spielt die KI eine
entscheidende Rolle für den Erfolg eines Spiels. Man erwartet ganz selbstverständlich, eine
gute und nicht leicht zu durchschauende KI. Ein Spiel ohne diese Voraussetzung ist bereits
zum Misserfolg verdammt – selbst bei einer hervorragenden Grafik. Der Spieler will
Herausforderungen und lang anhaltenden Spielspaß, welcher neben einer ausgeklügelten
Story nur durch eine gute KI ermöglicht werden kann. Ein Spiel mit schlechten Kritiken in der
Fachpresse aufgrund der KI wird zum „Ladenhüter“.

Dies ist auch der Grund dafür, dass viele Spieleentwickler immer mehr Geld in „Forschung“
und Entwicklung von künstlicher Intelligenz stecken, da die Computerspiele Industrie ein
großer Markt ist und die Entwicklung und der Verkauf eines einzigen Spiels schon das
Schicksal eines Unternehmens besiegeln kann.

Spieler erwarten keine perfekte KI, da man weiß, dass man noch weit davon entfernt ist. Sie
erwarten nur eine KI, die ihnen den Spielspaß solange wie möglich erhalten, in dem sie
„mitdenken“ (passen ihre Route den Umständen an), sich nicht so schnell durchschauen
lassen (haben kein fest gefahrenes Muster) und den Spieler immer wieder überraschen
(interagieren mit der Umwelt). Um diese Wünsche zu erfüllen, haben Spielehersteller
mittlerweile eigene KI Abteilungen, die immer ausgeklügeltere Techniken entwickeln und
verfeinern.
Im Folgenden werden diese Techniken eingehend betrachtet und erläutert. Hierbei wird
erläutert, wie eine solche KI aussieht, wie man sie implementiert und welche Ideen dahinter
stehen, so dass ein kleiner Einblick in das Gehirn von Computerspielen gewonnen wird.

Zuerst werden einige Techniken zur Modellierung von Non-Personal-Characters (NPCs)
vorgestellt, um den NPCs zu ermöglichen, sich intelligent und selbständig zu bewegen
(Steering und A*-Algorithmus).
Um Entscheidungen von NPCs zu realisieren,             werden Endliche Automaten und
Entscheidungsbäume besprochen.
Zur Vorhersage von menschlichen Zügen werden N-Gramme, sowie ihre Benutzung,
Training und weitere Einsatzmöglichkeiten erläutert.
Anschließend wird die Lernphase von Agenten anhand von verschiedenen Lernmethoden
geklärt. Damit wird gezeigt wie man NPCs unterschiedlich ausbilden und individualisieren
kann. Am Beispiel des Spiels “Black & White” wird man sehen, wie man Perzeptrone
benutzen kann, um Bedürfnisse von Agenten zu repräsentieren.
An einer Methode wird erläutert, wie es möglich ist, eine Brücke zwischen KI-Designer und
Programmierer zu schlagen, da Vertreter dieser beiden Gruppen die Problematik bei der
Realisierung der KI aus zwei verschiedenen Perspektiven betrachten, kennen sie die
Grenzen der jeweils anderen Disziplin nicht.
Abschließend wird auf das Zusammenspiel von KI-Forschung und KI in Spielen, sowie die
zukünftige Entwicklung der künstlichen Intelligenz in Spielen eingegangen.
2 Techniken zu Modellierung von Non-Personal-
    Characters (NPCs)
Eine häufig aufkommende Frage (hinsichtlich der KI in Computerspielen) zielt auf die
Bewegung der Non-Personal-Characters (NPCs) ab. Welche Techniken zeigen den Agenten
den Weg? Dazu werden hier zwei verschiedene Methoden diskutiert, die unterschiedliche
Aufgaben haben. Steering berechnet den optimalen Weg in kleinen Räumen und Maps,
während der A*-Algorithmus in der Regel für große Landschaften benutzt wird [1].

2.1 Bewegen von NPCs
Hierbei sind zwei Problemszenarien denkbar, die gelöst werden müssen.

   1) Das Bewegen in Landschaften und großen Räumen:
       Bewegung auf der gesamten Karte, d.h. Levelmap übergreifend.

   2) Die Orientierung in kleinen Räumen:
       Bewegungen auf dem Spiellevel (also in einer Levelmap)

2.1.1 Intelligente Bewegung der Agenten durch das Gelände

2.1.1.1 A*-Algorithmus

Um Agenten zielsicher auf dem kürzesten Weg durch das Gelände zu schicken, bedient man
sich in der Regel des A*-Algorithmus’. Dieser Algorithmus basiert auf „Djikstras-Shortest-
Path“-Algorithmus und berechnet mit Hilfe einer zusätzlichen Abschätzungsfunktion h den
kürzesten Pfad zwischen zwei Knoten.

Hierfür werden sowohl Wegpunkte (Knoten) als auch Verbindungen (Kanten) zwischen den
benachbarten Wegpunkten benötigt, um die möglichen Laufwege der Map abzubilden.

Diese Knoten und Kanten definieren einen Graphen, welcher mögliche Pfade zwischen
Regionen und Knoten der Karte repräsentiert.

Der A*-Algorithmus versucht nun mit Angabe des Start- und Zielknotens den kürzesten Weg
entlang der Knoten zu finden. Dazu werden zuerst alle vom Startknoten aus direkt
erreichbaren Knoten anhand der Formel f(n) = g(n) + h(n) in einer sogenannten „openlist“-
Liste sortiert, wobei n der n-te Knoten ist, der betrachtet wird. g(n) ist die kürzeste Strecke
zwischen dem Startknoten und dem Knoten n. h(n) ist die abgeschätze Entfernung vom
Knoten n zum Zielknoten, wobei h(n) kleiner oder gleich der Entfernung zu einem direkt
erreichbaren Nachbarknoten sein muss.

Nun wird in jedem Schritt der Knoten mit dem kleinsten f(n) in die            „closedlist“-Liste
verschoben und die „openlist“ wird neu berechnet. Dazu werden alle von Knoten n direkt
erreichbaren Knoten in die „openlist“ hinzugefügt. Ist der neue Knoten schon in dieser Liste
enthalten, wird f(n) neu berechnet. Dieser Algorithmus wird so oft wiederholt, bis der
Zielknoten in der „closedlist“ enthalten ist. Anhand dieser „closedlist“ kann der Algorithmus
dann einen Pfad mit minimaler Länge vom Start- zum Zielknoten konstruieren.

             Abbildung 2.1.1.1.a: Beispiel eines Schrittes beim A*-Algorithmus’

Aufgrund der Abschätzungsfunktion h, die bei jedem Schritt gegebenenfalls neu berechnet
werden muss, ist A* nur für große Maps geeignet. Denn bei kleinen Maps, wie
beispielsweise Levelmaps, könnte der berechnete Weg verworfen werden, sobald sich die
Spielsituation ändert. Dies könnte z.B. dann eintreten, wenn ein plötzliches Hindernis den
berechneten Weg versperrt. Dies geschieht bei Levelmaps häufig, so dass die
Berechnungen immer wieder von vorne beginnen müssten – und das auf Kosten der
Rechenzeit. Daher benutzt man A* um sich grob im großen statischen Terrain bewegen zu
können.
Was passiert aber, wenn man sich zwischen zwei Wegpunkten von A* bewegt und plötzliche
Hindernisse den berechneten Weg versperren? Solche Szenarien sind typsich für kleine
Levels. Daher werden für diese dynamischeren Levels eine andere Technik benötigt: die so
genannten Steering-Technik.

2.1.1.2 Steering

Unter Steering versteht man das Bewegen zwischen zwei Wegpunkten der großen Map (die
zum Beispiel von A* berechnet wurden). Steering-Methoden eignen sich nur für
eingeschränkte Perspektiven (Zimmer, Gebäude, usw.).

Die Implementierung erfolgt meist durch die Berechnung von Vektoren, welche alle
relevanten Informationen für die     Fortbewegung beinhalten (Geschwindigkeitsvektor,
Richtungsvektor, usw.). Diese Vektoren werden anschließend zu einem „Final“-Vektor
zusammengefasst, der dann z.B. als neuer Richtungsvektor für den Agenten dient.

Beispiel:

Es wird ein Vektor berechnet, der die momentane Richtung des Agenten repräsentiert. Ein
Hinderniss, das sich auf dem Weg des Agenten befindet, kann dann mit einem Vektor
repräsentiert werden, der orthogonal zum Vektor des Agenten steht. Mit einer einfachen
Vektoraddition hätte man dann einen neuen Vektor, der als neuer Richtungsvektor für den
Agenten fungieren kann. Auf diese Weise kann er das Hinderniss umgehen (siehe Abbildung
2.1.1.2.a).
Da nun die Bewegung der NPCs im Raum verdeutlicht worden ist, soll nachfolgend erläutert
werden, wie Agenten gezwungen werden können, sich zu entscheiden.

                  Abbildung 2.1.1.2.a: Beispiel eines Final-Vector beim Steering

2.2 Entscheidungen von NPCs
Auch hinsichtlich des Entscheidungsverhaltens der Agenten stehen zwei Techniken zur
Verfügung.

   1) Endliche Automaten

   2) Entscheidungsbäume

Die häufigste Realisierungsmethode ist das Konzept der endlichen Automaten. Der Grund
für ihren häufigen Einsatz innerhalb der KI ist ihre Mächtigkeit und vor allen Dingen ihre
Effizienz und Übersichtlichkeit. Umgesetzt wird dieses Konzept in einfachen If-Then-
Statements, was dazu führt, dass es sich hier nur um ein Designkonzept handelt, da keine
Automateninterpreter zum Einsatz kommen.

Das andere Konzept, ist das Konzept der Entscheidungsbäume, welches hierbei auch nur
als ein Designkonzept zu verstehen ist, bei dem Testbedingungen die Knoten des Baumes
repräsentieren.
Endliche Automaten sind ein einfaches aber sehr mächtiges Konzept der Informatik. Dieses
Konzept haben auch KI Designer für sich entdeckt, damit aber gleichzeitig auch eine
Möglichkeit gefunden, ihre Ideen Informatikern verständlich zu machen. Denn spätestens bei
der Programmierung von Agenten muss das Know-How beider Disziplinen vereint und das
Problem gelöst werden, wie man die verschiedenen Konzepte vermittelt.

2.3 Programmierung von Agenten
Bei der Entwicklung der künstlichen Intelligenz von Spielen arbeiten KI-Designer und
Programmierer     zusammen,       was     zwangsläufig     oft   zu     Verständnis-   und
Kommunikationsproblemen führt. Auf der einen Seite sind KI-Designer keine Programmierer,
kennen folglich also nicht die programmiertechnischen Grenzen. Andererseits besitzen
Programmierer wenig oder gar kein Wissen über die zugrunde liegenden KI-Konzepte.
Hierbei wird deutlich, dass die Notwendigkeit besteht, den Programmierern das KI-Design
zu vermitteln.

Als eine Möglichkeit dieser Vermittlung gelten UML ähnliche, GUI basierte Tools, die
endliche Automaten modellieren [2].

Anhand der Automatentheorie kann das KI-Konzept anschaulich erläutert und visuell
aufgezeigt werden.

Dafür werden verschiedene Komponenten definiert:

   1) Maschinen

   2) Zustände (abgerundetes Rechteck)

   3) Übergänge (Linie mit der Bedingung in der Mitte)

   4) Bedingung (Kreis, kann beinhalten boolean, range, contains, ≤, ≥, , =)

   5) Input und Events (Rechteck, Inputs von außen an die Maschine)

   6) Aktion (ausgeführter Codeblock in geschweiften Klammern)
Abbildung 2.3.a: Beispiel eines Automaten

Abbildung 2.3.a zeigt einen Automaten der sich mit dem Gesundheitszustand eines Agenten
befasst. Der Ausgangszustand ist der „HEALTHY“ Zustand, der durch eine Situation des
Spiels verändert wurde (Verletzung des Agenten). Damit wäre die Bedingung „LOW
HEALTH“ erfüllt und der Automat geht in den neuen Zustand „UNHEALTHY“ über. In diesem
Zustand wird ein Codeblock ausgeführt (wie zum Beispiel essen, schlafen, trinken o.ä.), um
wieder zum Ausgangszustand gelangen zu können. Wenn der Gesundheitszustand wieder
erreicht wurde, ist die Bedingung „HEALED“ wieder erfüllt und der Automat geht in den
Defaultzustand „HEALTHY“ zurück.

Nachdem so ein Verhaltensmodell als Automat erzeugt wurde, kann aus ihm sehr leicht ein
Programmiercode generiert werden, der leicht ins Hauptprogramm eingebunden werden
kann.

Da sich intelligente Agenten sich nicht nur durch eigene Entscheidungen auszeichnen,
sondern auch durch die Fähigkeit Spielzüge des menschlichen Gegners vorherzusagen, soll
im Folgenden betrachtet werden, wie NPCs Vorhersagen treffen.
2.4 Vorhersagen von NPCs
Die hier besprochene Technik zur Vorhersage von Spielzügen beruht auf dem statistischen
N-Gramm-Modell.

2.4.1 N-Gramm-Modell

Aus programmiertechnischer Sicht handelt es sich bei N-Gramm-Modellen um

n-dimensionale Arrays, wobei die Stellen 1 bis (N-1) die letzten Spielzüge beinhalten [4].

Position N ist eine Tabelle mit den Wahrscheinlichkeiten des nächsten Zuges.

Dabei stellt sich allerdings die Frage, wie die Wahrscheinlichkeiten berechnet werden.

Um die Wahrscheinlichkeiten des n-Knotens zu berechnen verwendet man folgende
Formeln:
                                                 #(an-1,an)
      mit Bigrammen (N=2): P(an | an-1) =       #(an-1)
      mit Trigrammen (N=3): P(an | an-2, an-1) =     #(an-2, an-1, an)
                                                       #(an-2, an-1)

Wie man an der Formel für die Trigramwahrscheinlichkeit sieht, benötigt sie Bigramme und
Trigramme.

N-Gramme können jedoch auch als Graphen dargestellt werden.

                       Abbildung 2.4.1.a: Beispiel N-Gramm als Graph
Abbildung 2.4.1.b: Beispiel eines Bigramms

Beispiel Bigramm: Aus der Tabelle 2.4.1.b kann man nun die Werte für die Berechnung der
Wahrscheinlichkeiten ablesen. So trat die Kombination a2, a2 genau drei mal und a2 ,a1 sechs
mal im Trainingskorpus auf. Möchte man nun wissen, wie hoch die Wahrscheinlichkeit ist,
dass a2 als nächste Aktion auftritt, nachdem a2 schon als (n-1)-te Aktion vorliegt.
                                                            #(a2,a2)            3             1
Mit der Formel wäre die Wahrscheinlichkeit P(a2 | a2) =                  =            =
                                                          #(a2)           12                  4
Das bedeutet, dass mit einer Wahrscheinlichkeit von 25% a2 nach a2 folgen würde.

2.4.1.1 Einsatz von N-Grammen zur Vorhersage

Um    N-Gramme     zu   verwenden,     muss    man   beachten,    dass   sie   einigen    lokalen
Einschränkungen unterliegen. Diese können beispielsweise sein:

     1. Spielewelt-Constraints: Erst nachladen, dann schießen.

     2. Player Styles: Bevorzugte (Schlag-)Techniken (z.B. Tekken). Dadurch kommen
        einige Kombinationen selten vor.

     3. Bonus: Bestimmte Schläge erhält man erst nach einer bestimmten Sequenz.

     4. Spielkontrolle: Einige Moves und Kombinationen sind aufgrund der Anordnung der
        Buttons am Controller einfacher und andere schwerer.
2.4.1.2 Wieso werden N-Gramme verwendet?

Das programmieren von N-Grammen ist durch die Verwendung von einem Array relativ
einfach. Diese Form der Implementierung ist jedoch bei höherer Ordnung unbrauchbar

(N≥ 4), da der Speicherverbrauch bei O(MN) liegt, wobei M die Anzahl der möglichen Moves
in einem Spiel ist [4].

Dies liegt daran, weil das Array durch viele 0-Einträge schwach besetzt wäre, der Speicher
aber dennoch dafür reserviert wird. Die einzige Lösung dieses Problems besteht darin, N so
klein wie möglich zu halten. Aber selbst in diesem Fall hat man immer noch das Problem des
kleinen Trainingkorpus’, da dieser endlich ist.

Bei einem endlichen Trainingskorpus werden valide Sequenzen unterschlagen, weil die
Testspieler diese nicht gespielt haben. Dadurch erhalten andere Sequenzen eine höhere
Wahrscheinlichkeit. Hierbei handelt es sich um das sog. Sparse-Data-Problem, für welches
zwei Lösungsansätze vorhanden sind:

    1) Threshholding

    2) Gewichtete Summe über N-Gramme

Beim Tresholding werden einfach bestimmte Werte, die einen beliebigen Grenzwert nicht
überschreiten, ignoriert und durch einen „rare-event“ ersetzt.

Bei gewichteten Summen berechnet man die Wahrscheinlichkeit über eine Formel:

       Wahrscheinlichkeiten über Bigramme:

        P(an|an-2, an-1) = λ0*P(an) + λ1*P(an|an-1)+ λ2*P(an|an-2, an-1)

       mit ∑ λi = 1

Auf diese Weise versucht man die Stärken der einzelnen N-Gramme zu „verschmelzen“.
Denn Trigramme sind genauer bei richtigen Werten, bei einem Fehlschlag ist der
Unterschied allerdings viel stärker. Bigramme sind zwar nicht so genau, aber dafür robuster.
Unigramme sind lediglich die absoluten Wahrscheinlichkeiten von Vorkommnissen eines
Spielzuges.
2.4.1.3 Training von N-Grammen

Das Training von N und (N-1)-Grammen ist simpel. Dafür werden lediglich Spielzüge von
Testspielern der Länge N gezählt, in einem Array abgespeichert und später in
Wahrscheinlichkeiten ausgedrückt (siehe Beispiel 2.4.1.b).

Der Trainingsmodus wird mit möglichst vielen Spielern wiederholt, um einen breit gestreuten
Trainingskorpus zu erhalten. Als Faustregel für einen ausreichend großen Trainingskorpus
gilt:

C = k*MN-1

           K: konstanter Wert zwischen 10 und 25
           M: erlaubte Moves
           N: Rang des N-Gramms

Das Anpassen von N-Grammen an verschiedene Spieler gestaltet sich ebenfalls sehr
simpel. Der Trainingsalgorithmus wird hierbei einfach mit den Spielen des Spielers neu
gestartet. Der Trainingskorpus mit der Faustregel ermöglicht allerdings bereits, dass man
schon relativ gute Gegner erhält, welche den meisten Spielern genügen.

2.4.1.4 Benutzung von N-Grammen

Die einfachste Methode der N-Gramm-Nutzung ist die deterministische Variante. Es wird
derjenige Eintrag gewählt, der die höchste Wahrscheinlichkeit besitzt.

Bei der probabilistischen Methode wird eine Zufallszahl generiert und der Eintrag gewählt,
der zu dieser probabilistischen Streuung gehört.

Beispiel: Seien 0.3, 0.6, 0.1 drei Wahrscheinlichkeiten, die zu drei verschiedenen
Ereignissesn gehören. Statt dieser Wahrscheinlichkeiten speichert man 0.3, 0.9 und 1.0.
Jetzt „würfelt“ man eine Zufallszahl zwischen 0.0 und 1.0. Anschließend wählt man einfach
das erste Ereignis aus, deren gespeicherten probabilistischen Streuung kleiner als die
Zufallszahl ist.

Mit N-Grammen ist es demnach also möglich, menschliche Züge nachzuahmen und auch
vorherzusagen. Und das mit nur geringen Laufzeitkosten.
Dies bedeutet jedoch gleichzeitig auch Nachteile von N-Grammen: Sie sind für die
Langzeitplanung ungeeignet. Zudem ist nach wie vor noch eine Anpassung an den Spieler
erforderlich.

2.5 Lernen von NPCs
Um Agenten das „Lernen“ beizubringen, sollte man beachten, dass Lernen nicht immer
gleich Lernen ist. Denn verschiedene Agenten haben verschiedene Aufgaben. Das Erfüllen
der unterschiedlichen Aufgaben setzt eine Unterscheidung bezüglich der Lernform voraus.

Anhand des Spiels „Black & White“ soll verdeutlicht werden, wie solche flexible Agenten
trainiert werden.

Um die verschiedenen Agenten (Bauer, Ritter) zu trainieren hat man verschiedene
Lernstrategien:

    1) Lernen von Fakten:
        Agent lernt: Städte befinden sich bei Nahrungsquellen.

    2) Dominanz von Desires:
        Wann soll ein Agent friedlich sein und wann nicht?
        Energie „aufladen“ ist wichtiger als den Kampf fortzusetzen

    3) Welche Objekte befriedigen welche Bedürfnisse?
        Was darf der Agent Essen?

    4) Lernen durch Feedback:
        Bestrafen oder Belohnen des Agenten.

    5) Lernen durch Beobachten:
        Agent beobachtet, leitet daraus Ziele ab und lernt die Handlung.

    6) Lernen durch Befehl:
        Agent lernt durch direkte Befehle.

Um die verschiedenen Lernmethoden zu realisieren, hat man die Belief-Desire-Intention-
Architektur (BDI) entwickelt, welche anschließend um die Kategorie der Opinions erweitert
wurde [3].
Mit Hilfe der drei Kategorien – Belief, Desire und Opinion – wird die Intention generiert,
welche wiederum in Pläne und Handlungen umgesetzt wird.

Die einzelnen Kategorien subsumieren unterschiedliche Inhalte.

   1) Beliefs:
       Beliefs speichern Informationen über Objekte und bestimmte Fakten ab. Wie z.B.
       „Steine kann man nicht essen“ usw. Sie können jedoch ausschließlich Informationen
       über bereits „erfahrene“ Objekte sammeln.

   2) Desires:
       Desires repräsentieren Bedürfnisse. Diese haben jeweils zu verschiedenen
       Zeitpukten unterschiedliche Intensität. Jedes Desire hat unterschiedliche „Desire-
       sources“,        welche        zur        aktuellen        Intensität      beitragen.
       Eine Kreatur kann beispielsweise verschiedene Gründe haben, aus denen es Hunger
       verspürt. Dieser kann daher durch das Sehen eines als schmackhaft empfundenen
       Nahrungsmittels hervorgerufen werden, Folge eines niedrigen Energiestandes oder
       auch Trauer sein. Diese drei „Desire-sources“ dienen als Input für ein Perzeptron.
       Durch Training kann man die Gewichte des Perzeptrons derart verändern, dass
       persönlich bevorzugte Kreaturen entstehen, wie z.B. eine Kreatur, die immer fressen
       will, eine die nur frisst, wenn sie sich traurig fühlt oder wenn sie am verhungern ist
       (siehe Abbildung 2.5.a).

                         Abbildung 2.5.a: Beispiel eine Perzeptrons
3) Opinions:
          Opinions werden benötigt um Pläne zu erstellen. In ihnen wird festgehalten, welches
          Objekt, welche Bedürfnisse am Besten befriedigt. Z.B. Wasser stillt den Durst.

Diese unterschiedlichen Kategorien werden in verschiedenen Datenstrukturen dargestellt:

Die Darstellung der Beliefs erfolgt über einfache Listen mit Attribut-Wert-Paaren, die
bestimmte Objekte repräsentieren.

Opinions werden in Form von Entscheidungsbäumen und Intentionsplänen dargestellt.

Desires sind als Neuronen repräsentiert.

Hierbei     verläuft   die    Verhaltensplanung      durch     den     Agenten     folgendermaßen:
Für jedes aktive Desire durchläuft der Agent seine brauchbaren Beliefs und wählt daraus
denjenigen mit der besten Opinion aus. Anschließend wird für jedes Ziel ein Plan erstellt und
derjenige mit dem höchsten Nutzwert ausgewählt, welcher anhand der Formel

                 utility(desire, object) = intensity(desire) * opinion(desire, object)

berechnet wird.

2.5.1 Verschiedene Lernmethoden

2.5.1.1 Lernen durch Entscheidungsbäume

Beim Lernen durch Entscheidungsbäume werden Informationen von Außen benötigt [3].
Diese können entweder vom Spieler oder von der Spielwelt ausgehend an den Agenten
weitergegeben werden. Sie werden danach im Langzeitspeicher als Beliefs abgespeichert.
Das Verschmelzen von Desires und Opinions ermöglicht den Agenten eine Veränderung
ihrer     Persönlichkeit,    um    sich    somit    ihrem    Meister     anpassen        zu   können.
Genau dies geschieht beim „Lernen durch Entscheidungsbäume“. Infolge einer Aktion erhält
der Agent eine Form von Feedback, die ihm sagt, ob die vollzogene Handlung in dieser
Situation gut oder schlecht war.

Wie lernt ein Agent nun aber konkret z.B. welche Dinge essbar sind und welche nicht?

Hierzu blickt er auf die gesammelten Erfahrungen und das dazugehörige Feedback
hinsichtlich des gegessenen Objektes und dessen Essbarkeit. Mit Hilfe der Generierung
eines Entscheidungsbaums versucht der Agent herauszufinden, welche Daten einen Sinn
ergeben.

Der ID3-Algorithmus generiert einen „schönen“ Baum aus der Erfahrungstabelle, indem er
die Entropie minimiert. Unter Entropie versteht man ein Maß, welches angibt, wie zufällig
oder gezielt ein Feedback war.

2.5.1.2 Training von Desires

Desires werden als Neuronen modelliert (siehe Abbilund 2.5.a). Neuronen sind eine
Ansammlung von Inputs („desire-sources“) und deren Gewichten.

Neuronales Training besteht darin, die Gewichte derart zu verändern, dass die Kreaturen
sich wie gewünscht verhalten.

Bei N Inputs x1,…, xn und N Gewichte w1,…, wn

       Intensity = 1 if ∑ wi*x i > 0.5 and 0 otherwise

Die Gewichte werden verändert durch

       wi  wi + ∆wi

mit

       ∆wi = η * (intended value – actual value) * xi

verändert.

(η ist dabei die Lerngeschwindigtkeit, die meist klein gewählt wird)

2.5.1.3 Nachteile des Lernens durch Feedback

Das Lernen durch Feedback wirkt für den Spieler unrealistisch, da immer ein offensichtlicher
Input erfolgen muss (Feedback). In der Realität wird auch nicht immer nur durch die
Unterscheidung zwischen „Gut“ und „Böse“ gelehrt, sondern auch durch Vormachen und
Zeigen.

Darüber hinaus kann es Frust erzeugen, da der Spieler immer warten muss, bis der Agent
seine Aktion beendet hat, um ihn beurteilen zu können.
Zusätzlich kann es zu Lernfallen kommen, wenn der Agent ein Feedback des Spielers falsch
interpretiert oder es durch Versehen des Spielers zu falschen Feedbacks kam (schlechte
Steuerung des Spiels, falsche Taste gedrückt). In solchen Situationen kann der Spieler den
Agenten nicht mehr dazu bewegen, eine doch gewünschte Aktion zu wiederholen, wenn sie
zuvor als „schlecht“ bewertet worden ist.

In derartigen Situationen muss der Agent sozusagen „erfühlen“, was sein Meister von ihm
erwartet hat. Dies beinhaltet, dass die Lernsituation eventuell wiederholt oder auf andere
Situationen übertragen werden muss.

Der einfachste Weg solch eine Empathie zu simulieren ist eine Tabelle, in der festgehalten
wird, welche Aktion in welcher Situation durchgeführt wurde. Durch Vergleiche ist der Agent
folglich imstande auf Aktionen in bestimmten Situationen zu schließen.

Da vorhergehend Techniken zur Modellierung und die Möglichkeiten des Lernens von Non-
Personal-Characters skizziert wurden, soll im Folgenden die Frage des Programmierens
geklärt werden.

3 Konklusion

3.1 KI-Forschung vs. KI in Spielen
Es gilt als Traum, dass die traditionelle KI-Forschung das Material für die Spieleentwickler
liefert, die dann mit leichter Anpassung sofort Einsatzbereit wäre.

Die Wirklichkeit der Zusammenarbeit zwischen der KI-Forschung an den Universitäten und
den Spieleherstellern fällt leider nüchterner aus:

Die Erkenntnisse der KI-Forschung sind für die Spieleindustrie leider viel zu oft unbrauchbar,
da die Umsetzung aufgrund der zusätzlich eigenen Entwicklung, Tests und Anpassung zu
teuer wäre.

Dennoch werden viele Erkenntnisse und Algorithmen der KI-Forschung angepasst und
verwendet (z.B.: A*-Algorithmus, neuronale Netzwerke, Automatentheorie, usw.)

Eine erschwerte Zusammenarbeit entsteht allerdings nicht nur durch die ökonomischen
Nachteile. Die reservierte Haltung der KI-Forscher gegenüber dem Einsatzfeld der
Computerspiele trägt ebenfalls zu der geringen Kooperation bei.
Dies ändert sich jedoch aufgrund des wachsenden Spielemarktes und der zunehmenden
Komplexität der Spiele.

3.2 Zukünftige Entwicklung
In naher Zukunft besteht die Möglichkeit einige Probleme der heutigen KI (z.B. fehlende
CPU-Zeit) durch die steigende CPU-Power und bessere Hardware zu lösen. Demzufolge
können immer bessere NPCs entwickelt und die unnatürlichen KI-Cheats können reduziert
werden.

Darüber hinaus bleiben jedoch noch eine Menge Probleme erhalten, welche es zu lösen gilt.
Das Problem des zu großen Spektrums – d.h. dass eigentlich alle Agenten (nicht nur die
sichtbaren) gesteuert und berechnet werden müssten – wird wohl auch in ferner Zukunft
noch ungelöst bleiben. Dies liegt darin begründet, dass die Anzahl der NPCs in Spielen
stetig steigen wird.

Dennoch ist der heutige Trend deutlich sichtbar: Es geht um die Optimierung des
Spielspaßes und des Spielerlebnisses. Agenten sollen den menschlichen Gegner
herausfordern und ihm lang anhaltenden Spielspaß garantieren. Dies wird beispielsweise mit
Hilfe komplett simulierter Städte und Zivilisationen sowie tiefere NPC-Charaktere realisiert.

Abschließend ist zu sagen, dass Spiele wie „Fear“ bereits in die angestrebte Richtung
gehen. Dort werden die im Raum befindlichen Gegenstände oder Zimmerecken als Deckung
genutzt, so dass der Spieler nicht mehr mit wild umherschießenden, unkoordinierten und
berechenbaren Gegnern konfrontiert ist. Denn ihm geht es nicht ausschließlich ums
Gewinnen, sondern um die möglichst realistische Herausforderung!

3.3 Zusammenfassung
Die Spieleindustrie ist ein immer weiter anwachsender Markt mit einem großen
wirtschaftlichen Potenzial. Um dieses Potenzial richtig ausschöpfen zu können, bedarf es
großer Spielehits die überzeugen. Neben der aufwendigen Grafik, einer realistischen
Physikengine ist die KI in den Spielen, ein nicht mehr wegzudenkender Faktor geworden.
Das haben die Spieleentwickler gemerkt und setzten mittlerweile immer mehr auf eine
ausgeklügelte KI, die langanhaltenden Spielespaß garantieren.
Um ihre KI umzusetzen, erfinden Hersteller entwerder neue Techniken oder übernehmen sie
aus der KI Forschung.
Einige der eingesetzen Techniken und die damit verfolgten Ziele wurden hier vorgestellt und
erläutert.
Dazu gehören z.B. die Steering-Technik und der A*-Algorithmus, die für das Bewegen der
Agenten in großen und kleinen Areale verantworlich sind.
Zu den Erfindungen gehören Tools, wie das hier vorgestellte, um die Arbeitsschritte und
Zusammenarbeit zwischen KI-Designern und Programmieren zu vereinfachen. Mit diesen
UML ähnlichen Tools können Verhaltensweisen von Agenten als Automaten modelliert
werden, so dass aus den designten Automaten dann einfach Programmiercode automatisch
erzeugt werden kann, der sich dann einfach in den restlichen Programmcode einfügen lässt.
Ausserdem wurde gezeigt, wie Agenten Vorhersagen mit Hilfe von N-Grammen machen
können. Anschließend wurde am Spiel „Black & White“ aufgezeigt, wie man auch
Perzeptrone und Entscheidungsbäume nutzen kann, um Agenten individuell zu trainieren,
damit sie später verschiedene Aufgaben nach den Vorstellungen des „Meisters“ (Spielers)
meistern.
Abschließend ist zu erwähnen, dass die Spielewelt für die konventionelle KI-Forschung ein
interessantes Einsatzgebiet geworden ist, so dass es langfristig zu einer Annäherung
kommen wird. Es bleibt zu hoffen, dass durch diese Annäherung Spiele noch interessanter
werden, weil die Spieleindustrie von den aktuellen KI-Forschungen schneller profitieren.
Denn heute dauert es noch zulange, bis Erkenntnisse und Entdeckungen der KI-Forschung
den Weg in die Spieleindustrie finden, weil die Anpassung und das Testen der neuen
Techniken aus der Forschung noch zu teuer und aufwendig ist.
4 LITERATUR
     1. Nareyek, A.: Artifical Intelligence in Computer Games – State of the Art and
        Future Directions 2004, ACM Queue 1(10), 58-65
     2. Carlisle Phil (Team17 Software Ltd): Designing a GUI Tool to Aid in the
        Development of Finite-State: In: Rabin, S.,
        (ed.) AI Game Programming Wisdom, (2002), Section 2.5
     3. Evans, R. (Lionhead Studios): Varities of Learning: In: Rabin, S., (ed.) AI
        Game Programming Wisdom, (2002), Section 11.2
     4. Laramée D. F.: Using N-Gram Statistical Models to Predict Player Behavior:
        In: Rabin, S., (ed.) AI Game Programming Wisdom, (2002), Section 11.5:
Sie können auch lesen