Game Development with Lua Kapitel 1-5

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Forschungszentrum caesar
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten KMP, BM.
Zusammenfassung der Vorwoche
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
10. Grundlagen imperativer Programmiersprachen
Der Einstieg in das Programmieren
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Indirekte Adressierung
ARRAY oder FELD oder VEKTOR
Polymorphie (Vielgestaltigkeit)
Algorithmentheorie 04 –Hashing
Die Skriptsprache Lua Softwaretechnologie II.
Dynamische Webseiten mit PHP
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Ablaufsteuerung
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Einführung in die Programmierung Datensammlung
Einführung MySQL mit PHP
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
© Gabriele Sowada © Gabriele Sowada 2 Manuell Beispiel 1 demonstriert die Vorgehensweise bei der manuellen Programm- Eingabe am.
Einführung in das Programmieren mit JavaScript Mag. Andreas Starzer weloveIT – EDV Dienstleistungen.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Präsentation C Tutorium von Daniel J. Nowak Folie 1 C Tutorium.
Polynome und schnelle Fourier-Transformation
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Einführung in die Programmiersprache C 4
Analyse von Ablaufdiagrammen
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Dynamische Datentypen
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Grundkonzepte des Programmierens (mit ActionScript)
Variablenkonzept Klassisch, in Java Basistyp
Unterprogramme in JAVA
Dynamische Webseiten-Generierung
Einführung in PHP.
Einführung in PHP 5.
Analyseprodukte numerischer Modelle
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
Variablen. var meineZahl:Number = 7; meineZahl 7 Name TypWert = Zuweisung von Variablen.
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Übung 2 - MdMT Methoden der Medizintechnik Übung zur Vorlesung Folge 2 – Basics Vom ersten Befehl zum Plot.
1 Tagesüberblick 4 Lösung Hausaufgabe/Fragen Mustervergleiche.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
SAP Seminar 2007 Organisationsobjekte anlegen
(Syntax, Strings/Zahlen, Variablen, Arrays)
 Präsentation transkript:

Game Development with Lua Kapitel 1-5 Seminar: Re-usable Content in 3D und Simulationssystemen Dozent: Prof. Dr. Manfred Thaller Referentin: Nadya Steinert

Zunahme an Komplexität Heutzutage arbeiten ganze spezialisierte Teams für Monate an einem einfachen Spiel Die Komplexität der Spiele nimmt zu und gleichzeitig die Abhängigkeit zwischen Spielsysteme Ein Designer z.B. müsste seine Ideen dem Programmierer erklären, nachdem er sie implementiert hat, musste alles von neu anfangen

Eine bessere Idee Eine Scriptsprache ist eine gute Lösung Scriptsprachen werden normalerweise in Laufzeit ausgeführt und erlauben leichte Operationen mit den Daten Scriptsprachen erlauben, dass auch Personen an der Entwicklung teilnehmen, die mit dem Programmieren nicht vertraut sind

Warum Lua? Lua ist kostenlos, klein, schnell und kann leicht mitgenommen werden; Die Ausführungszeit ist sehr kurz Die Kombination von einer Scriptsprache und eine Hohe Programmiersprache wie C und C++ gibt die Möglichkeit Sachen wie Speicherverwaltung und Objektrendering dem Programmierer zu übergeben und gleichzeitig an Design und Interface zu arbeiten

Einführung zu Lua Lua ist eine „glue“- Sprache, sie „klebt“ zusammen Funktionen von anderen Sprachen Es können neue Funktionen gebildet werden „Hello World!“ in Lua:

Mit Lua kann das Ganze GUI für ein Spiel ohne Programmiererhilfe gemeistert werden Lua wurde entworfen als kleine , effiziente Scriptsprache, die sehr gut mit C und C++ arbeitet; sie ist eine von der schnellsten dieser Art

Scriptsprachen und Spiele C++ Funktionen können speziell geschrieben werden, so dass man die Möglichkeiten von Lua benutzt, diese aufzurufen und zu verbinden Z.B. Lua kann ein 3D Objekt in die Spielwelt platzieren, sie fordert C++ auf, ein Objekt von einem bestimmten Typ zu erzeugen und indiziert sein Platz; sie fordert die Transformation des Objektes ohne mit der komplizierten Mathematik zu tun zu haben

Lua kann benutzt werden um folgende Aufgaben zu erfüllen: Erstellen von UI für ein Spiel Definieren, lagern und verwalten von Spieldaten Real-Time Game Events verwalten Erstellen von KI-System und s. w.

UI: schnelles Anlegen und Platzieren aller wichtigen Interface Elemente, Benutzer-Input verwalten, Spieldaten ausgeben Spieldaten verwalten: Daten können in Lua-Files ausgelagert werden und später in runtime geladen werden Event Handling: Event-System in C++ gestalten und Lua für bekommen und abarbeiten der Events benutzen

Speichern und laden von Game State: Daten von GameState als Lua-File speichern und ausführen KI: basiert auf Parameter und limitierte Daten; wenn World State und Event Handling Lua benutzen, gibt es auch größeres Spielfeld für KI in Lua

Benutzen der Lua -Konsole Ein Lua Script ist ein Textfile.lua mit Lua-Befehle Lua‘s Syntax ist einfach, es sind nur Leerstellen zwischen den Befehlen nötig Lua Script Files statt einfache Befehle

Befehl dofile() gibt alle Lua Scripts wieder ausser die Glue Funktionen geschrieben in C++

Semantic Variablen und Funktionsnamen dürfen nicht mit einer Ziffer anfangen Keine Großbuchstaben nach einem Unterstrich -- Das ist ein Komentar --[[ hier stehen mehrere Zeilen --]] Lua‘s reservierte Wörter:

Variable: müssen nicht deklariert werden, haben keinen Variablentyp; Die Variable ist von dem Typ von dem die nachfolgende Daten sind Die Funktion type() zeigt den Typ der Variable Variablentypen: nil, boolean, string, table Nil zeigt Variable ohne Wert String kann von ein Paar bis Millionen Character haben

Number können in solcher Art representiert werden:

Table ist wie ein Array

Globale und lokale Variable: die Variable sind normallerweise global; lokale Variable können in einer Funktion oder Kontrollstruktur deklariert werden; sie werden gelöscht mit ende der Funktion bzw. die Kontrollstruktur Arithmetische Operatoren: + - * / Relationsoperatoren: a==b, a~=b(nicht gleich), a<b, a>b, a<=b, a>=b Bei Table hat man nicht direkt mit den einzelnen Werten zu tun, sie müssen separat wie bei Arrays verglichen werden und nicht die Tables selbst

Logische Operatoren: and ,or, not And vergleicht zwei Werte, wenn der erste falsch ist wird er zurückgegeben, wenn nicht, der zweite Or gibt den ersten Wert zurück wenn er true ist Not gibt immer true oder false zurück

Kontrollstrukturen: enden alle mit end If else Struktur identisch wie in c++ While indx=1 while indx<10 do Print(„loop pass: „,indx) indx=indx+1 end Repeat repeat print(„loop pass: „,indx) indx=indx+1 until indx>10

For for indx = 1,10 do print(indx) end(die Zahlen von 1 bis zehn) for indx =10,1, -1(von 10 bis 1) for indx = 1,100,2 (von 1 bis 100 nur die ungeraden) Break unterbricht eine Schleife

Weiter in Lua Funktionen: eine Funktion kann ein Prozess durchführen oder einen Wert zurückgeben Geladene Funktionen werden nicht sofort ausgeführt, sondern nach Aufruf

Funktionen können einen, mehrere oder unbekannte Anzahl an Argumeneten haben Sie können mehrere Werte ,getrennt durch Komma zurückgeben

Standardbibliotheken assert(myValue)() : man gibt eine Variable an,die auf einen kompilierten Lua-Script zeigt und er wird sofort ausgeführt dofile(filename): lädt lua script Files und führt sie aus, oder Funktionen die später aufgerufen werden können, oder Data Files

Mathematische Funktionen: Lua ermöglicht Zugang zu den C++ Mathe-Funktionen durch Gluefunktions math.floor() rundet eine Flieskommazahl zu einer ganzen Zahl math.random() erzeugt ein zufälliger Wert normalerweise zwischen 0 und 1; man kann aber minimalen und maximalen Wert angeben math.min() und max: können Parameter bekommen und den minimalen bzw. maximalen Wert ausgeben

Strings Typkonvertierung: eine Zahl kann in ein String konvertiert werden ( tostring()) und umgekehr t( tonumber())

String.len(myString) gibt die Länge des Strings an String.sub(myString,start,end) gibt einen Teil des Strings zurück, der bei start anfängt und bei end endet String.format() fügt einem String einen anderen hinzu

Bildet komplexere Strings von kleineren %s steht für string , %d für Zahlen String.find(sourceString, findString) sucht in dem sourcestring nach dem findstring und gibt die start und endposition an Strings und Modelle

String.gsub(sourceString,pattern,replacementString): ersetzt im Sourcestring den Patternstring mit dem replacementstring

Mehr über Tables Table.getn(myTable) gibt die Anzahl der enthaltenen Perameter an Table.insert(myTable,position,value): fügt einen neuen Wert hinzu, entweder am Ende oder an der angegebenen Stelle und reindext die Liste Table.remove(myTable,position): entfernt einen Wert von dem Table, wenn keine Position angegeben den letzten und reindext Tables können auch andere Werte als numerische annehmen

Multidimensionale Tables: Pairs() : gibt den Index und den Wert von einer Multidimensionalen Tbelle

Basic I/O Um in eine Datei zu schreiben, muss erst eine aufgemacht werden: myFile=io.open(„test_data.lua“, „w“) Der erste Argument ist die Datei in die geschrieben wird, der zweite Parameter zeigt dass nur geschrieben werden kann: