Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Game Programming mit Lua

Ähnliche Präsentationen


Präsentation zum Thema: "Game Programming mit Lua"—  Präsentation transkript:

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

2 Gliederung 1. Game Programming mit LUA 1.1 Rundenbasiertes Spiel
1.2 Endlosspiel 2. KI definieren und kontrollieren

3 1. Game Programming mit LUA

4 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)

5 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?

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

7 Rundenbasiertes Spiel
Nötige Elemente: - 2 verschiedene „Spielfiguren“ um die Felder zu belegen X O

8 Rundenbasiertes Spiel
Mögliche Belegungen der Felder vorbereiten

9 Rundenbasiertes Spiel
EnableObject( EX + 1, 0, 0) Stelle: Position auf dem Feld Stelle: Objekt auf Spielfeld rendern? Stelle: Soll Objekt auf Benutzereingabe reagieren?

10 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.

11 Rundenbasiertes Spiel
Durchführung eines Zuges: Spieler wählt Feld Prüfe: Ist Feld belegt? Wenn nicht: MakeMove();

12 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

13 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.

14 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)

15 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();

16 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

17 2. KI definieren und kontrollieren

18 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

19 KI - Computergegner Beispiele im Buch: Für uns relevant: Blac Jack
Tic Tac Toe Take Away Für uns relevant: Elemente der KI aus Black Jack und Tic Tac Toe

20 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.

21 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

22 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!

23 KI - Computergegner Erste Schritte: Stapel erzeugen und durchmischen
- Geht 1000 mal durch den Stapel und tauscht jedes mal die Position 2 zufälliger Karten

24 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

25 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.

26 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?

27 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.

28 KI - Computergegner KI in Endlosspielen:
Viel komplexere Berechnungen durch: - Antizipation - Defensivverhalten - Enorm viele mögliche „Reisewege“ - Rücksicht auf eventuell weitere vorhandene Gegner

29 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!


Herunterladen ppt "Game Programming mit Lua"

Ähnliche Präsentationen


Google-Anzeigen