Agentensimulation
Agenten
Computergesteuerte Akteure in Spielen (und anderen Simulationen) werden Agenten genannt (manchmal auch MOBs)
Zielsetzung f ¨ur Agenten ist ¨uberzeugend zu sein, nicht zu gewinnen
M ¨oglichkeiten realistischer zu wirken, ohne das grundlegende Verhalten zu verbessern
I Darstellung von Emotionen
I Wiederholungen im Verhalten vermeiden
I Darstellung von zielfremden Verhalten (langsam durch die Gegend bewegen beim Warten, umherschauen, pfeifen, . . . )
Agenten steuern
Verschiedene Algorithmen in Verwendung, um Agenten zu steuern (oft Kombinationen)
Da Ziel ist ¨uberzeugend zu sein: Fokus auf Algorithmen, die realistisch wirkendes Verhalten liefern, nicht zwingend beste Probleml ¨osef ¨ahigkeit
I Zustands ¨ubergangssysteme
I Priorit ¨atstabellen
I Bed ¨urfnishierarchie
I Planungswarteschlange
I Entscheidungslisten
I Entscheidungsb ¨aume
I Verhaltensb ¨aume
Agentenintelligenz
Intelligenz wirkt oft nicht ¨uberzeugend
I Erwartungshaltung schlechte k ¨unstliche Intelligenz
⇒Bei sehr intelligenten Agenten vermuten Spieler eher, dass sie schummeln, als dass sie intelligent sind
I Gute Intelligenz wird oft nur als solche wahrgenommen, wenn sich die Agenten erkl ¨aren.
Beispiel: Ein Agent erkl ¨art einem anderen Agenten die Beweggr ¨unde f ¨ur die Handlung
”Ich schaue mal hinter dieser T ¨ure nach dem Spieler, weil die Vase kaputt ist“
I Ubermenschliche Intelligenz wirkt auch dann nicht¨ menschlich, wenn klar ist, dass nicht geschummelt wird (Schach, Go, Rechenf ¨ahigkeiten, . . . )
I Menschliche wirkende Fehler k ¨onnen Darstellung
¨uberzeugender machen
Beobachtung durch Spieler
Innerer Zustand eines Agenten, der nicht durch den Spieler erahnbar ist, bringt nichts
⇒Hinweise darauf geben! ¨Außerung von Pl ¨anen; zeigen von Emotionen; extrem deutliche K ¨orpersprache (undeutliche K ¨orpersprache wird von Spielern als zuf ¨alliges Verhalten ignoriert); Hinweise auf Verhaltensaspekt durch andere Akteure, Beispiel:
”Ist dir aufgefallen, wie unruhig die W ¨olfe heute sind?“ kann Spieler motivieren auf den Gem ¨utszustand von W ¨olfen zu achten und inneren Zustand zu beobachten
Zufall im Verhalten
An vielen Stellen kann Zufall im Verhalten eingebaut werden
I Vorteil: Zufall alleine kann intelligent wirken, innerer Zustand kann vermutet werden, der nicht vorhanden ist, wirkt lebendiger
I Nachteil: Tats ¨achlicher innerer Zustand kann ¨ubersehen werden, bei zu viel Zufall wird vollst ¨andiger Zufall vermutet
I Ambivalent: Agenten k ¨onnen durch Spieler nicht mehr so gut vorhergesagt werden
Kombinieren und direkte Verhaltensimplementation
Grundlegende Verhaltensweisen lassen sich gut direkt implementieren
Hauptschwierigkeit in der Auswahl der Verhaltensweisen
Viele der genannten Algorithmen erlauben andere Algorithmen als Bestandteile, damit gute Kombinierbarkeit
Zustands ¨ubergangssysteme
Zustands ¨ubergangssysteme bekannt aus Kapitel
”zusammenfassende Berechnungen“
Mit Aktionen (Hooks, Codereferenzen) an den Zust ¨anden:
Nahezu beliebiges Verhalten darstellbar
I Einfache Verhaltensweisen sehr einfach umsetzbar
I Gute Maschinenlernverfahren f ¨ur Markovketten bekannt
I F ¨ur kompliziertere Verhaltensweisen sind andere Modelle geeigneter: Zustandsraum kann extrem groß werden
I Zustands ¨ubergangssysteme als Aktionen an
Zustands ¨ubergangssystemen: Bessere ¨Ubersichtlichkeit, weniger Zust ¨ande notwendig; bekannt als hierarchische Zustands ¨ubergangssysteme
Beispiel: Zustands ¨ubergangssystem
Bewegungssteuerung eines Huhns
Hunger?
K ¨orner in
Reichweite? picken
zuf ¨allig herumlaufen ja
nein
ja nein
Priorit ¨atstabellen
F ¨ur verschiedene Verhaltensweisen werden verschiedene Priorit ¨aten berechnet
Verhalten mit der h ¨ochsten Priorit ¨at wird ausgef ¨uhrt Beispiel: Hahn
I Hungerwert 0-1 gibt Priorit ¨atswert 0-5 f ¨ur Aktion K ¨orner suchen
I Fuchs in N ¨ahe gibt Priorit ¨at 8 f ¨ur Stall aufsuchen
I M ¨udigkeitswert 0-1 gibt Priorit ¨at 0-3 f ¨ur Stall aufsuchen
I Nach 5:00, vor 8:00 und heute noch nicht gekr ¨aht gibt Priorit ¨atswert 2 zum Kr ¨ahen
Bed ¨urfnishierarchie
Priorit ¨atsreihenfolge von Bed ¨urfnissen: Nur wenn die darunter liegenden Bed ¨urfnisse erf ¨ullt sind, werden die
dar ¨uberliegenden ber ¨ucksichtigt, immer das unterste unerf ¨ullte wird versucht zu erreichen
Beispiel:
I Soziale Interaktion
I Schlaf
I Hunger
I Durst
I K ¨orperliche Unversehrtheit (Abstand von Gegnern, . . . )
Planungswarteschlange
Warteschlange, in der Pl ¨ane stehen.
Plan am Anfang der Schlange wird bearbeitet, kann in Teilpl ¨ane zerteilt werden (Situationsabh ¨angig)
Dringende Pl ¨ane k ¨onnen vorne angestellt werden (Gegner in Sicht), weniger dringende (Wohnung reinigen) in der Mitte oder hinten
Pl ¨ane k ¨onnen umsortiert werden, damit zueinander passende Pl ¨ane zeitlich nahe ausgef ¨uhrt werden (r ¨aumlich nahe
beieinander; beim bearbeiten eines neuen Plans mehrere am Anfang anschauen, ob einer an diesem Ort bearbeitbar ist; . . . )
Entscheidungslisten
Liste von Bedingungen und Aktionen; erste Aktion mit erf ¨ullter Bedingung wird ausgef ¨uhrt
Problem 1: Lange Liste muss dauernd durchgearbeitet werden, ineffizient
Problem 2: L ¨angere Listen un ¨ubersichtlich
Entscheidungsb ¨aume
Effizientere Version der Entscheidungslisten:
Baum mit Enscheidungsfragen an inneren Knoten, unterschiedlichen Kindern f ¨ur die Antworten und Verhaltensweisen an den Bl ¨attern
n ¨achster Fuchs
Hunger Entfernung Stall
Zufall
Picken Zufall
in Ecke gehen
in Stall gehen
Verstecken
Weglaufen&
Flattern
Weglaufen&
Gackern
Herumlaufen Picken Flattern
weit weg Sichtweite
sehr nah
ja nein
im Stall
in Sichtweite
weit weg
64% 36%
60% 35% 5%
Entscheidungsb ¨aume, Eigenschaften
Kleine Entscheidungsb ¨aume k ¨onnen bereits komplexes Verhalten modellieren
Entscheidungsb ¨aume gut maschinell lernbar (ohne Zufall, daf ¨ur mehrere lernen und zuf ¨allig einen verwenden)
Baum als Modell ausreichend: Aktionen k ¨onnen wieder Entscheidungsb ¨aume sein
Nachteile: System rein reaktiv, innerer Zustand nicht direkt in der Modellierung (durch Aktionen, die inneren Zustand setzen machbar, schlecht f ¨ur ¨Ubersichtlichkeit)
Verhaltensb ¨aume
Seit etwa 2000 bekannt, popularisiert durch Halo 2, Spore und Bioshock, sowie die Unreal Engine.
Verbreitet in Computerspiele- und Robotikindustrie
Erweiterung von Entscheidungsb ¨aumen: Gibt Kombinatoren f ¨ur Verhalten, sowie zeitliche Komponenten
I Gibt die Konstrukture von Entscheidungsb ¨aumen:
Aktionen und Entscheidungsknoten
I Jeder Aktionsknoten gibt zus ¨atzlich an, ob die Aktion ein Erfolg oder ein Fehlschlag war
I Weitere Sorte innerer Knoten: Dekoratoren.
Hat genau ein Kind, bearbeitet das Ergebnis des Kinds
I Weitere Sorte innerer Knoten: Kombinatorknoten.
Hat Liste von Kinder, kombiniert ihre Verhaltensweisen in der Ausf ¨uhrung
Verhaltensb ¨aume nicht vollst ¨andig einheitlich in Verwendung, gibt verschiedene Erweiterungen und Einschr ¨ankungen
Verhaltensb ¨aume ausf ¨uhren
Ergebnis eines Verhaltensbaums zu berechnen nennt man von Ausf ¨uhren.
Ergebnis ist
”Erfolg“,
”Fehlschlag“, oder
”in Bearbeitung“;
”in Bearbeitung“ hat zus ¨atzliche Werte, den sogenannten Ausf ¨uhrungszustand
Aktionen haben Codereferenz, diese kann alle 3 R ¨uckgabewerte erzeugen, kann ihren internen Ausf ¨uhrungszustand fortsetzen
Gibt ein Kind
”in Bearbeitung“ zur ¨uck, so passiert einheitlich das Folgende in fast allen Knoten (außer Parallel, sp ¨atere Folie)
I Knoten selbst gibt ebenfalls
”in Bearbeitung“ zur ¨uck
I Ausf ¨uhrungszustand ist innerer Zustand des Knotens, sowie Information, welches Kind gerade ausgef ¨uhrt wird, sowie Ausf ¨uhrungszustand des Kindes in Ausf ¨uhrung
Verhaltensb ¨aume, Dekoratoren
Jeder Dekorator hat genau ein Kind
I Inverter: Kind wird ausgef ¨uhrt, Ergebnis invertiert: Bei Erfolg Fehlschlag zur ¨uckgeben, bei Fehlschlag Erfolg
I Warteknoten: Ausf ¨uhrung wird an der Stelle f ¨ur eine feste Zeitdauer angehalten, danach wird das Kind ausgef ¨uhrt Um das zu tun, gibt der Warteknoten
”in Bearbeitung“
zur ¨uck; wird er nach der Wartezeit fortgesetzt, wird das Kind ausgef ¨uhrt
I Feste Schleife: Kinderknoten wird mehrmals ausgef ¨uhrt, festgelegte Anzahl
I While-Schleife: Kinderknoten wird solange wiederholt, bis er Fehlschlag zur ¨uckgibt; gibt Fehlschlag zur ¨uck, wenn Kind nie erfolgreich war
I Retry-Schleife: Kinderknoten wird solange wiederholt, bis er Erfolg zur ¨uckgibt; dann Erfolg zur ¨uckgeben
I Debug: Kind wird normal ausgef ¨uhrt, aber es wird eine Debugnachricht ausgegeben, wenn die Bearbeitung anf ¨angt und wenn sie zuende ist
Verhaltensb ¨aume, Kombinatoren
Jeder Kombinator hat eine Liste an Kindern; kann fest oder randomisiert sein
I Sequenz:
Alle Kinder werden der Reihe nach ausgef ¨uhrt, es sei denn, ein Kind gibt Fehlschlag zur ¨uck, dann Fehlschlag zur ¨uckgeben.
Waren alle Kinder erfolgreich, dann Erfolg zur ¨uckgeben
I Selektor (auch Fallback genannt):
Wie Sequenz, nur Rolle von Erfolg und Fehlschlag vertauscht.
I Parallel:
Alle Kinder werden
”gleichzeitig“ ausgef ¨uhrt, d.h. die Kinder werden in Reihenfolge ausgef ¨uhrt, gibt aber ein Kind”in Bearbeitung“ zur ¨uck, so werden die anderen Kinder auch ausgef ¨uhrt.
Sobald ein Kind
”Erfolg“ oder
”Fehlschlag“ zur ¨uckgibt, wird das vom Parallel-Knoten auch zur ¨uckgegeben
Verhaltensb ¨aume, Parallelkombinator
Es gibt auch Parallelkombinatoren mit komplexeren Regeln, wie mit R ¨uckgaben umzugehen ist
Zustandscounter in Aktionen innerhalb eines
Parallelkombinators k ¨onnen Semaphoren simulieren
Parallelkombinatoren mit Bedacht einsetzen: K ¨onnen schnell un ¨ubersichtlich werden
Beispiel Verhaltensbaum: Ampel ¨uberquerung
SEQ
AKT PAR AKT
while SEQ
delay 1
SEL AKT
Zufall Ampel
while
AKT RET RET delay 1 RET
RET
Handy nehmen Handy weckstecken
Handy antippen Erfolg Fehlschlag Erfolg Erfolg
Straße ¨uberqueren
30% 70% gr ¨un rot
Beispiel Ausf ¨uhrung Verhaltensbaum
Beispielaufruf gek ¨urzter Verhaltensbaum, Startzeitpunkt: 343 while
Ampel
delay 2 RET
RET
Fehlschlag
Erfolg rot gr ¨un
t=343 Kein Aufrufzustand aus altem Aufruf, f ¨angt mit while-Knoten an; R ¨uckgabe (while (Ampel rot (delay 345))) t=344 Delay ist noch nicht bereit, darum
gleicher R ¨uckgabewert
t=345 Delay f ¨uhrt Kind aus, gibt Erfolg zur ¨uck. Damit gibt Ampel Erfolg zur ¨uck. Darum startet while Ampel neu, R ¨uckgabewert (while+ (Ampel rot (delay 347))) t=346 Delay ist noch nicht bereit, darum
gleicher R ¨uckgabewert
t=347 Delay f ¨uhrt Kind aus, gibt Erfolg zur ¨uck. Damit gibt Ampel Erfolg zur ¨uck. Diesmal Ampel gr ¨un, Fehlschlag beendet while, while wurde aber mindestens einmal ausgef ¨uhrt, R ¨uckgabe Erfolg
while+: Kennzeichnug, dass nicht erster while-Aufruf
Beispiel Ausf ¨uhrung Verhaltensbaum
Beispielaufruf gek ¨urzter Verhaltensbaum, Startzeitpunkt: 343 while
Ampel
delay 2 RET
RET
Fehlschlag
Erfolg rot gr ¨un
t=343 Kein Aufrufzustand aus altem Aufruf, f ¨angt mit while-Knoten an; R ¨uckgabe (while (Ampel rot (delay 345)))
t=344 Delay ist noch nicht bereit, darum gleicher R ¨uckgabewert
t=345 Delay f ¨uhrt Kind aus, gibt Erfolg zur ¨uck. Damit gibt Ampel Erfolg zur ¨uck. Darum startet while Ampel neu, R ¨uckgabewert (while+ (Ampel rot (delay 347))) t=346 Delay ist noch nicht bereit, darum
gleicher R ¨uckgabewert
t=347 Delay f ¨uhrt Kind aus, gibt Erfolg zur ¨uck. Damit gibt Ampel Erfolg zur ¨uck. Diesmal Ampel gr ¨un, Fehlschlag beendet while, while wurde aber mindestens einmal ausgef ¨uhrt, R ¨uckgabe Erfolg
while+: Kennzeichnug, dass nicht erster while-Aufruf
Beispiel Ausf ¨uhrung Verhaltensbaum
Beispielaufruf gek ¨urzter Verhaltensbaum, Startzeitpunkt: 343 while
Ampel
delay 2 RET
RET
Fehlschlag
Erfolg rot gr ¨un
t=343 Kein Aufrufzustand aus altem Aufruf, f ¨angt mit while-Knoten an; R ¨uckgabe (while (Ampel rot (delay 345))) t=344 Delay ist noch nicht bereit, darum
gleicher R ¨uckgabewert
t=345 Delay f ¨uhrt Kind aus, gibt Erfolg zur ¨uck. Damit gibt Ampel Erfolg zur ¨uck. Darum startet while Ampel neu, R ¨uckgabewert (while+ (Ampel rot (delay 347))) t=346 Delay ist noch nicht bereit, darum
gleicher R ¨uckgabewert
t=347 Delay f ¨uhrt Kind aus, gibt Erfolg zur ¨uck. Damit gibt Ampel Erfolg zur ¨uck. Diesmal Ampel gr ¨un, Fehlschlag beendet while, while wurde aber mindestens einmal ausgef ¨uhrt, R ¨uckgabe Erfolg
while+: Kennzeichnug, dass nicht erster while-Aufruf
Beispiel Ausf ¨uhrung Verhaltensbaum
Beispielaufruf gek ¨urzter Verhaltensbaum, Startzeitpunkt: 343 while
Ampel
delay 2 RET
RET
Fehlschlag
Erfolg rot gr ¨un
t=343 Kein Aufrufzustand aus altem Aufruf, f ¨angt mit while-Knoten an; R ¨uckgabe (while (Ampel rot (delay 345))) t=344 Delay ist noch nicht bereit, darum
gleicher R ¨uckgabewert
t=345 Delay f ¨uhrt Kind aus, gibt Erfolg zur ¨uck.
Damit gibt Ampel Erfolg zur ¨uck. Darum startet while Ampel neu, R ¨uckgabewert (while+ (Ampel rot (delay 347)))
t=346 Delay ist noch nicht bereit, darum gleicher R ¨uckgabewert
t=347 Delay f ¨uhrt Kind aus, gibt Erfolg zur ¨uck. Damit gibt Ampel Erfolg zur ¨uck. Diesmal Ampel gr ¨un, Fehlschlag beendet while, while wurde aber mindestens einmal ausgef ¨uhrt, R ¨uckgabe Erfolg
while+: Kennzeichnug, dass nicht erster while-Aufruf
Beispiel Ausf ¨uhrung Verhaltensbaum
Beispielaufruf gek ¨urzter Verhaltensbaum, Startzeitpunkt: 343 while
Ampel
delay 2 RET
RET
Fehlschlag
Erfolg rot gr ¨un
t=343 Kein Aufrufzustand aus altem Aufruf, f ¨angt mit while-Knoten an; R ¨uckgabe (while (Ampel rot (delay 345))) t=344 Delay ist noch nicht bereit, darum
gleicher R ¨uckgabewert
t=345 Delay f ¨uhrt Kind aus, gibt Erfolg zur ¨uck.
Damit gibt Ampel Erfolg zur ¨uck. Darum startet while Ampel neu, R ¨uckgabewert (while+ (Ampel rot (delay 347))) t=346 Delay ist noch nicht bereit, darum
gleicher R ¨uckgabewert
t=347 Delay f ¨uhrt Kind aus, gibt Erfolg zur ¨uck. Damit gibt Ampel Erfolg zur ¨uck. Diesmal Ampel gr ¨un, Fehlschlag beendet while, while wurde aber mindestens einmal ausgef ¨uhrt, R ¨uckgabe Erfolg
while+: Kennzeichnug, dass nicht erster while-Aufruf
Beispiel Ausf ¨uhrung Verhaltensbaum
Beispielaufruf gek ¨urzter Verhaltensbaum, Startzeitpunkt: 343 while
Ampel
delay 2 RET
RET
Fehlschlag
Erfolg rot gr ¨un
t=343 Kein Aufrufzustand aus altem Aufruf, f ¨angt mit while-Knoten an; R ¨uckgabe (while (Ampel rot (delay 345))) t=344 Delay ist noch nicht bereit, darum
gleicher R ¨uckgabewert
t=345 Delay f ¨uhrt Kind aus, gibt Erfolg zur ¨uck.
Damit gibt Ampel Erfolg zur ¨uck. Darum startet while Ampel neu, R ¨uckgabewert (while+ (Ampel rot (delay 347))) t=346 Delay ist noch nicht bereit, darum
gleicher R ¨uckgabewert
t=347 Delay f ¨uhrt Kind aus, gibt Erfolg zur ¨uck.
Damit gibt Ampel Erfolg zur ¨uck. Diesmal Ampel gr ¨un, Fehlschlag beendet while, while wurde aber mindestens einmal ausgef ¨uhrt, R ¨uckgabe Erfolg
while+: Kennzeichnug, dass nicht erster while-Aufruf