• Keine Ergebnisse gefunden

Regeln debuggen

N/A
N/A
Protected

Academic year: 2021

Aktie "Regeln debuggen"

Copied!
19
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Erweiterungen: Leveleditor, KI, Zufall

(2)

Erweiterungen

Wie angek ¨undigt: Erweiterungen zu dem Projekt Boulder Dash Heute:

I Leveleditor

I in das Spiel eingebauter Editor, um Level zu erstellen

I Unterst ¨utzung f ¨ur die Karte an sich, aber auch f ¨ur Levelregeln (pre/post)

I KI

I Ein Computerspieler, der automatisch das Spiel spielt

I Sollte zumindestens einige Level erfolgreich durchspielen;

je mehr, desto besser

I Zufall: Levelregeln, die zufallsgesteuert nicht immer ausgef ¨uhrt werden

Das meiste der auf diesen Folien vorgeschlagenen

Umsetzungen soll als grobe Richtlinie dienen: Ab ¨anderungen und dar ¨uber hinausgehendes sind m ¨oglich

(3)

Leveleditor

Leveleditor ist dritter Modus neben Levelauswahl und Level spielen

Leveleditor besteht aus

I Level speichern: JSON-Datei muss geschrieben werden

I Karte bearbeiten: Felder ¨andern, Gr ¨oße der Karte ¨andern, Zeit- und Edelsteinvoraussetzungen zum Gewinnen anpassen

I Regeln bearbeiten: Bequeme Eingabe von einzelnen Regeln, ¨ubersichtliche Anzeige der definierten Regeln

I Test- und Debugunterst ¨utzung: Level direkt aus dem Editor heraus ausprobierbar, danach R ¨uckkehr in den Editor;

Debugm ¨oglichkeiten: Runden einzeln ausf ¨uhren auf Tastendruck, Regeln debuggen

(4)

Regeln debuggen

Verschiedene Debugm ¨oglichkeiten helfen beim Entwickeln von Levelregeln:

I Auch Levelregeln einzeln ausf ¨uhren und ¨Anderungen anzeigen

I Beim einzeln Ausf ¨uhren f ¨ur eine ausgew ¨ahlte Stelle anzeigen, wieso die Regel dort nicht ausgef ¨uhrt wird

I Levelzustand w ¨ahrend der Ausf ¨uhrung ¨andern, ohne diese Anderung dauerhaft abzuspeichern¨

I Zusatzwerte anzeigen, zwecks ¨Ubersichtlichkeit besser nur ausgew ¨ahlte Zusatzwerte

(5)

Karte bearbeiten

Prinzipiell reicht es, den Wert jedes einzelnen Feldes bearbeiten zu k ¨onnen

Besser sind mehr unterschiedliche Bearbeitungsm ¨oglichkeiten:

I Undo/Redo: Letzte ¨Anderungen r ¨uckg ¨angig machen, Anderungen wiederherstellen¨

I Fl ¨achenf ¨ullwerkzeug

I Bereiche an eine andere Stelle der Karte kopieren

I Linien ziehen

I Felder zuf ¨allig verteilen, beispielweise ein F ¨ullwerkzeug, das nur mit einer einstellbaren Wahrscheinlichkeit das Feld

¨andert

I Viele weitere n ¨utzliche Kartenbearbeitungsvarianten m ¨oglich

(6)

KI

Es gibt verschiedene Ans ¨atze, um eine KI umzusetzen; h ¨aufig verwendet werden:

I Betrachtung des Spielgraphens, Vorausberechnung von Z ¨ugen

I Regelbasierte Systeme, um auf konkrete Situationen reagieren zu k ¨onnen

Dabei sind folgende Aspekte zu beachten:

I Berechnung kann sehr zeitaufwendig werden

I Regelbasierte Systeme sind oft sehr schnell in der Berechnung, aber von m ¨aßiger Qualit ¨at und nicht flexibel

(7)

Spielgraph

Ein wichtiges Konzept f ¨ur eine KI ist der Spielgraph:

I Ein Graph mit den Spielsituationen als Knoten und m ¨oglichen Z ¨ugen als Kanten

I Wird normalerweise nicht vollst ¨andig berechnet, da zu groß

I Tic-tac-toe: ca. 19 000 Knoten

I Schach: ca. 1042Knoten,

I Boulder Dash (Level Text): ca. 10100 Knoten

I Es wird nur der Bereich berechnet, der nahe (=wenige Spielz ¨uge entfernt) an der aktuellen Spielsituation liegt

I Auswahl eines guten Zuges ist damit ein Suchproblem auf einem Graphen, daf ¨ur sind gute Algorithmen bekannt, wir verwenden Breitensuche

(8)

Beispiel Spielgraph

0 0

Die Zahlen unter der Karte stehen daf ¨ur, wie viel Zeit vergangen ist und wie viele Edelsteine eingesammelt wurden

1 0 1 0 1 1

2 0 2 0 2 1 2 0 2 0 2 1 2 1

. . . .

(9)

Spielstandbewertung

Idee: Alle Zugm ¨oglichkeiten ausprobieren, den besten Zug nehmen

Festlegung, was gut ist: Berechnen einer Spielstandbewertung als eine Zahl, je gr ¨oßer, desto besser der Spielstand

I Gesammelte Edelsteine geben Pluspunkte

I N ¨ahe zu Edelsteinen auf dem Spielfeld gibt Pluspunkte

I Spieler tot: Viele Minuspunkte

I viele weitere M ¨oglichkeiten

Uberlegen Sie sich selbst eine m ¨oglichst gute¨ Spielfeldbewertung

Je besser die KI sich mit einer Spielfeldbewertung benimmt, desto besser die Bewertung (Ausprobieren!)

(10)

Breitensuche auf Spielegraph

Breitensuche aus dem Vorprojekt (Flughafen) angepasst:

I Es wird nicht mehr ein m ¨oglicher, sondern ein bester Weg gesucht

I Breitensuche wird abgebrochen, sobald Zeit zum Suchen vorbei ist (Zug muss rechtzeitig berechnet sein)

Dabei wird ein Knoten mit einer m ¨oglichst guten

Spielstandbewertung gesucht, der mehrere Z ¨uge entfernt ist Vom gefundenen Weg wird der erste Schritt genommen

Vorteil gegen ¨uber direkten bestbewerteten Nachfolger nehmen:

so k ¨onnen auch kleine

”Pl ¨ane“ ausgef ¨uhrt werden: z.B.

Edelststein unter einem Stein befreien und dann nehmen

(11)

Regelbasierte Systeme

Regelbasierte Systeme reagieren direkt auf einzelne bekannte Situationen, beispielsweise

I Steht man neben einem Edelstein, ohne dass auf ihm etwas liegt, was einst ¨urzen kann, so soll man ihn nehmen

I Einem Gegner muss man ausweichen

I Steht man nahe einesxlings, hat einen geeigneten Bereich mit Erdreich und einem Stein ¨uber sich, so kann man demxlingauf eine vorgegebene Weise einen Stein auf den Kopf fallen lassen

(12)

Regelbasierte Systeme, Vor- und Nachteile

Regelbasierte Systeme bieten eine Reihe von Vorteilen gegen ¨uber der Suche auf dem Spielgraphen:

I Die Implementierung ist schneller so weit, dass die KI ein erkennbares Verhalten zeigt und einfache Level l ¨osen kann

I Es k ¨onnen wesentlich komplexere Verhaltensweise

vorgegeben werden und die KI wirkt zeitweise intelligenter

I In vielen F ¨allen ist die Berechnung ¨uber Regelsysteme effizienter

Nachteile gegen ¨uber einer Suche auf dem Spielgraphen sind

I Um alle Situationen abzudecken m ¨ussen sehr viele Regeln angegeben werden

I Fehler in regelbasierten Systemen sind oft schwer zu finden, gerade bei Regeln, die selten verwendet werden

I Regelbasierte Systeme kommen sehr schlecht mit

unerwarteten Situationen zurecht, gerade die Levelregeln sind schwer zu erfassen

(13)

KI, Kombinierter Ansatz

Als Kompromiss kann man beide Systeme kombinieren:

Wenige Regeln f ¨ur gewisse Situationen, bei denen die Suche schlechte Ergebnisse liefert k ¨onnen Vorteile beider Ans ¨atze vereinen

(14)

KI, M ¨oglicher Implementationsablauf

Als weitere Hilfestellung gibt es hier einen m ¨oglichen Ablauf eine KI zu implementieren; dabei implementiert man aufbauend eine immer bessere KI

1. Zuf ¨allige Auswahl der Aktion

2. Auswahl des n ¨achsten Zugs mit bester Spielstandbewertung

3. Breitensuche nach Spielposition mit guter Spielstandbewertung

4. Regelbasiert komplexere Verhaltensweise hinzuf ¨ugen, z.B.

Gegner durch Steine erschlagen, sofern das in der Situation geht und hilft

(15)

Hinweis: Statische KI

Keine gute Idee ist es den Spielverlauf mit Spieleraktionen vorauszuberechnen und dann anzuzeigen:

I Kommt nicht mit Zufall in den Leveln klar (Schleim, Erweiterungen)

I Eine KI, die bei jedem Aufruf das gleiche macht, wirkt langweilig

I Kann nicht so erweitert werden, dass sie im Spiel auf Spielerwunsch jederzeit ¨ubernimmt

(16)

Hinweis: Selbstlernende KI

Erfahrungswert: viele Gruppen wollen eine selbstlernende levelabh ¨angige KI implementieren, die funktioniert aber dann nicht richtig

Von einer selbstlernenden KI wird abgeraten, aber wenn man es trotzdem machen m ¨ochte, sollte man folgendes beachten

I Schwierigkeitsgrad von komplexeren Verfahren f ¨ur selbstlernende KIs wird oft untersch ¨atzt

I Vollst ¨andiges Verhalten zu erlernen ist das Hauptproblem

I Teilweises Erlernen ist einfacher: Erlernen der Parameter f ¨ur die Spielstandbewertung funktioniert besser

I Parameter bestimmen, wie viele Punkte welche Aspekte der Spielstandbewertung geben

I Mehr Parameter: Besseres Endergebnis, aber viel l ¨angere Suche nach guten Werten. Erstmal maximal 4 Parameter!

I Parameterwerte so optimieren, dass sie eine m ¨oglichst gute KI hervorbringen (evolution ¨are Suche am einfachsten zu implementieren, viele Optimierungsverfahren funktionieren)

(17)

KI und Leveleditor

Eine gute KI kann den Leveleditor bereichern

I Level im Editor mit KI starten: Gibt ein Gef ¨uhl f ¨ur das Level, ohne dass man es jedes Mal selbst spielen muss

I Ohne Anzeige im Hintergrund spielen: kann Daten f ¨ur verschiedene hilfreiche Anzeigen liefern:

I Mit welcher Chance schafft die KI dieses Level (falls Zufall in der KI oder im Spiel verwendet wird)?

I Wie lange braucht die KI?

I Wie viele Edelsteine sammelt sie?

I Welche Edelsteine werden (nicht) gesammelt?

(18)

Zufall in Levelregeln

Die dritte Erweiterung f ¨uhrt Zufall in Levelregeln ein.

Dazu k ¨onnen die Objekte der Levelregeln einen zus ¨atzlichen Eintragprobabilityhaben:

{ "situation":...,

"probability":...,

"direction":...,

"original":[...],

"result":[...]

},

Hatprobabilityden Wertp, so gibt dies an, dass wenn eine Regel an einer Stelle passen w ¨urde, die Wahrscheinlichkeit, dass sie tats ¨achlich passt, nur nochpist.

Gibt es keinen Eintrageprobability, so wird, genau wie bei einemprobability-Wert von 1, die Regel ganz normal ausgef ¨uhrt, also immer, wenn sie passt.

(19)

Zufall und KI

Zufall (Zufallserweiterung, Schleim) in einem Level kann f ¨ur ein anderes Ergebnis im Spielablauf, als in der Vorausberechnung sorgen

Einfache M ¨oglichkeit: Besten Zug mehrmals vorausberechnen und der erste, der ¨ofter als eine bestimmt Schranke kommt, nehmen

Komplexere M ¨oglichkeit: Einen Schritt vorausberechnen und von jeder der m ¨oglichen Ergebnisse bestimmen, eine wie gute Position man erreicht, dann den Erwartungswert optimieren

Referenzen

ÄHNLICHE DOKUMENTE

Eigentlich muß nicht jede Aufgabe bearbeitet werden, aber : – Die ersten Punkte jeder Aufgabe sind viel leichter zu holen. als

Diese Themen wurde alle in Mathematik besprochen und k¨ onnen noch- mal im Laufe der Vorlesung wiederholt werden. Aus Numerik f¨ ur InformatikerInnen werden Grundlagen

Da aber die Zahlen 1 und 8 die Gleichung mod 9 nicht l¨ osen, existiert ein solches Triple

(Beginn oder Ende der Dienstzeit - Veranstaltung - angeben und kürzesten Weg beschreiben) während eines Dienstganges innerhalb des Dienstortes2. (Zweck des Dienstganges,

• Beachten Sie, dass die einzelnen Teilaufgaben innerhalb einer Aufgabe weit- gehend unabh¨ angig voneinander gel¨ ost werden k¨ onnen.. • Notieren Sie alle Zwischenresultate und

• Beachten Sie, dass die einzelnen Teilaufgaben innerhalb einer Aufgabe weit- gehend unabh¨ angig voneinander gel¨ ost werden k¨ onnen.. • Notieren Sie alle Zwischenresultate und

• Beachten Sie, dass die einzelnen Teilaufgaben innerhalb einer Aufgabe weit- gehend unabh¨ angig voneinander gel¨ ost werden k¨ onnen.. • Notieren Sie alle Zwischenresultate und

I Asynchrone Ausf¨ uhrung von Kernels ⇒ CPU Ausf¨ uhrung kehrt zur¨ uck / CPU blockiert nicht.. I Kernel werden im Default aber nicht (immer) parallel