29
Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Embed Size (px)

Citation preview

Page 1: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Game Programming mit Lua

Universität zu KölnHistorisch Kulturwissenschaftliche InformationsverarbeitungReferent: Jens Wangenheim

Page 2: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Gliederung

1. Game Programming mit LUA

• 1.1 Rundenbasiertes Spiel

• 1.2 Endlosspiel

2. KI definieren und kontrollieren

Page 3: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

1. Game Programming mit LUA

Page 4: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Game Programming mit Lua

• Unterscheidung zwischen einem rundenbasierten Spiel und einem „Endlosspiel“

• Rundenbasiert: Der Spieler macht einen Zug, es gibt keinen wirklichen „Flow“ (Beispiel: Tic, Tac, Toe)

• Endlosspiel: Es gibt einen durchgehenden Spielfluss, der Spieler kann sich bewegen und es sind Gegner vorhanden (Beispiel: Pacman)

Page 5: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Rundenbasiertes Spiel

Grundsätzliche Überlegungen:

- Welche Elemente werden benötigt?

- Welche Regeln gibt es bei der Durchführung eines Zuges?

- Welche Bedingung muss für einen Sieg erfüllt werden?

Page 6: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Rundenbasiertes Spiel

Nötige Elemente:- Spielbrett myBoard {0, 0, 0, 0, 0, 0, 0, 0, 0}

Page 7: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Rundenbasiertes Spiel

Nötige Elemente:- 2 verschiedene „Spielfiguren“ um die Felder zu belegen

X O

Page 8: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Rundenbasiertes Spiel

Mögliche Belegungen der Felder vorbereiten

Page 9: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Rundenbasiertes Spiel

EnableObject( EX + 1, 0, 0)

1. Stelle: Position auf dem Feld

2. Stelle: Objekt auf Spielfeld rendern?

3. Stelle: Soll Objekt auf Benutzereingabe reagieren?

Page 10: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Rundenbasiertes Spiel

Regeln bei der Durchführung eines Zuges:

- „Besondere“ Situation vor dem ersten Zug im Spiel überhaupt:

Spiel muss initialisiert werden, Startwerte müssen gesetzt werden.

Page 11: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Rundenbasiertes Spiel

Durchführung eines Zuges:

- Spieler wählt Feld

- Prüfe: Ist Feld belegt?

- Wenn nicht: MakeMove();

Page 12: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Rundenbasiertes Spiel

Funktion MakeMove();

- Prüft Position auf die geklickt wurde

- Rendere Objekt auf Spielfeld EnableObject( EX + 1, 1, 1)

- Update Spielfeld Array myBoard( X, 0, 0, 0, 0, 0, 0, 0, 0)

- Führe WinCheck(); durch

Page 13: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Rundenbasiertes Spiel

Prüfe Position mit getBoardLocation();- X und Y Koordinaten werden an Funktion übergeben

If (X > 0) and (X < 100) and (Y > 0) and (Y < 100) then

myPostion = 1

If (X > 100) and (X < 200) and (Y > 0) and (Y < 200) then

myPostion = 2

usw.

Page 14: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Rundenbasiertes Spiel

Funktion WinCheck();- Prüfe ob 3 gleiche Symbole in einer Reihe:

If myBoard[1] == currTurn then

if myBoard[2] == currTurn then

if myBoard[3] == currTurn then

theGame == currTurn

- Prüfe ob Cat‘s game zutrifft (Unentschieden)

Page 15: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Beispiel: „Die Fürsten von Catan“

Spieler ist am Zug:• Würfeln (Beide Würfel mit math.random(); berechnen)• Wähle zu spielende Karte

- Prüfe ob Voraussetzungen für Karte erfüllt sind ( z.B. legalCheck();). Genug Rohstoffe? Bauplatz vorhanden? Weitere Voraussetzungen erfüllt (bestimmte Gebäude)?

• Wähle Bauplatz (Position des Mausklicks bestimmen), rendere Karte auf Spielfeld und wähle entsprechende Grafik- Falls Aktionskarte: Führe Aktion durch, sortiere Karte aus

• WinCheck();

Page 16: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

Endlosspiel

Ein Endlosspiel erhöht die Komplexität und hat, im Gegensatz zum Rundenbasierten Spiel, einige weitere Anforderungen:

- Spiel ist laufend in Bewegung- Es befinden sich Gegner auf dem Spielfeld- Punkte werden nach verschiedenen Regeln vergeben- Die „Kontrolle“ der Spielfigur rückt in den Fokus- Spielfiguren können durch „Abschuss“ zerstört werden

Page 17: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

2. KI definieren und kontrollieren

Page 18: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

KI – Computergegner

• Der Computergegner gibt nur vor zu denken

• Im Prinzip werden nur Daten verarbeitet und dem entsprechende Anweisungen ausgeführt

• Der Computergegner hat eventuell mehr Informationen vorliegen als der menschliche Spieler

Page 19: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

KI - Computergegner

Beispiele im Buch:• Blac Jack• Tic Tac Toe• Take Away

Für uns relevant:• Elemente der KI aus Black Jack und Tic Tac Toe

Page 20: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

KI - Computergegner

Elemente aus Black Jack:• Zufälliger, endlicher Stapel von Elementen

- In unserem Fall mehrere Stapel. Einige mit verschiedenen zufälligen Elementen, einige mit einer bestimmten Anzahl gleicher Elemente

• Klare Festlegung was welche Wirkung eine Karte hat- Jede Karte bringt auf oberster Ebene entweder einen Vorteil oder einen Nachteil. Auf der darunter liegenden Ebene entweder Siegpunkte, Fortschrittspunkte, Handelspunkte, Stärkepunkte, Rohstoffe etc.

Page 21: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

KI - Computergegner

Elemente aus Tic Tac Toe:• Zugbasiertes Spiel, keine Flow

- Computer muss nicht in Echtzeit auf Gegner reagieren bzw. andersherum. Weniger Komplexität!

• Spielfeld als Grundlage- Fungiert als Schnittstelle

Page 22: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

KI – Computergegner

Erste Schritte:• Verschiedene Kartentypen klassifizieren und Wirkung

gewichten:- Siegpunkt: 5

- Fortschrittspunkt: 4

- Stärkepunkt/Handelspunkt: 3

- Geschicklichkeitspunkt: 2

- Rohstoff: 1

• Dabei auf Multiplikatoren achten!

Page 23: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

KI - Computergegner

Erste Schritte:• Stapel erzeugen und durchmischen

- Geht 1000 mal durch den Stapel und tauscht jedes mal die Position 2 zufälliger Karten

Page 24: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

KI - Computergegner

Computer ist am Zug:

• Timer Funktion simuliert den Prozess des Nachdenkens• Idealerweise benötigen wir nur eine Funktion, die alle

möglichen Züge bewertet• Bewertung wird durch einen Algorithmus durchgeführt

(z.B. Minimax-Verfahren)• Je nach gewähltem Schwierigkeitsgrad wird der

erstrebenswerteste Zug zu x% durchgeführt

Page 25: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

KI - Computergegner

Minimax-Verfahren:• Im Kern vom Spiel unabhängig (egal ob Schach oder

Dame)• Schnittstellen zum speziellen Spiel:

- Welche Züge sind in konkreter Spielsituation möglich?

- Wie wird eine Spielsituation numerisch bewertet?

• Vorschlag:- Siegpunkt: 5, Fortschrittspunkt: 4, Stärkepunkt/Handelspunkt: 3 usw.

Page 26: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

KI - Computergegner

Vorteile des Minmax-Verfahrens:• Kann durch traversieren durch den Spielbaum

optimierende bzw. minimierende Spielzüge ermitteln.

Nachteil des Minmax-Verfahrens:• Zugmöglichkeiten des Gegners müssen bekannt sein

- Durch Zufallskomponente(n) eventuell ungeeignet für unseren Zweck?

Page 27: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

KI - Computergegner

Der Spielbaum:

- Führt eine Bewertungsfunktion ein, die jeder Spielstellung einen Zahlenwert zuweist, der umso höher ist, je günstiger die Spielstellung für Spieler A ist, und umso niedriger, je günstiger die Spielstellung für Spieler B ist. Dann ist es möglich, durch Analyse des Spielbaums den optimalen Zug für Spieler A zu finden.

Page 28: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

KI - Computergegner

KI in Endlosspielen:

• Viel komplexere Berechnungen durch:- Antizipation

- Defensivverhalten

- Enorm viele mögliche „Reisewege“

- Rücksicht auf eventuell weitere vorhandene Gegner

Page 29: Game Programming mit Lua Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Referent: Jens Wangenheim

KI - Computergegner

• Vergleichen von Ergebnissen: Verloren ist zwar schlechter als unentschieden, aber unentschieden nicht besser als Verloren…

• Gibt es keine gültigen Züge mehr, spielt der Computergegner nicht weiter

Usw.

Deshalb gilt:• Gehe davon aus das alles falsch ist, bevor du nicht

geprüft hast ob es richtig ist!