Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Manfred Thaller SS 2013 Scripting Gems 6 Linda Scholz.

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

Imperative Programmierung
Objektorientierte Datenbanken
Unter- und Oberklassen: Beispiel
Objektorientierter Entwurf (OOD) Übersicht
FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Polymorphie (Vielgestaltigkeit)
Scripting Gems 7 Von Marcel Schotten Kurs: Softwaretechnologie II SS2013 Dozent: Prof. Dr. Thaller.
Open Database Connectivity (ODBC). © Prof. T. Kudraß, HTWK Leipzig Open Database Connectivity (ODBC) Idee: – API für eine DBMS, das ein Call-Level-Interface.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
Vortrag III Hier in der Vorlesungszeit! Anwesenheitspflicht Jede Gruppe hat 6 Minuten! Stellt eure GUI vor –was ihr besonderes gemacht habt –Spektakuläre.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Wizards & Builders GmbH Einführung in die objektorientierte Programmierung Norbert Abb.
Der VFP Debugger - Coverage und Profiling. © 1999 TMN-Systemberatung GmbH Der VFP Debugger n Neues Aussehen, eigene Task n Erweiterte Möglichkeiten n.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Einführung in die Programmierung
Einführung in das Programmieren mit JavaScript Mag. Andreas Starzer weloveIT – EDV Dienstleistungen.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Projektarbeit PHP 5.3 / MySQL & Content Management Systems
Java Garbage Collection Angelika Kusel, Überblick Was ist Garbage Collection? Vor- und Nachteile von GC GC-Algorithmen/Verfahren Java Garbage.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
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.
Von der Planung bis zum Hauptmenü Seminar: Softwaretechnologie II Dozent: Prof. Manfred Thaller Referent: Jan Bigalke.
Informatik 1 Letzte Übung.
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Welchen Problemen ist man bei heterogener, verteilter Programmierung ausgesetzt? Hardware: nicht einheitliche, inkompatible Systeme, verschiedene Leistungsfähigkeit.
Dynamische Datentypen
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Objectives Verstehen was unterDelegate verstanden wird
EPROG Tutorium #3 Philipp Effenberger
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Aufzeichnung von Usability-Daten im www. Client-Side Log : automatisch (maschinell) generiertes Protokoll Client : Rechner mit dem Browser des Users Server:
Objektorientierung.
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Parallele Programmierung im.NET Framework Darmstadt, Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
COLLADA II Digital Asset Schema Release Anike Schulz Reusable Content in 3D und Simulationssystemen Prof. Thaller.
Microsoft Student Partner
Objektorientierte (OO) Programmierung
Game Loop & Update Method Robert Nystrom – Game Programming Patterns Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung SS.
Vererbung. Klassen - Vererbung  Eine Klasse kann von einer Basisklasse abgeleitet werden  Die abgeleitete Klasse erbt die Eigenschaften und Methoden.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
© Raphael Volz 2001 Slide 1 Zope Grundlagen Seminar – Praktikum Knowledge Portals Raphael Volz.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
DTrace Mathias Velten Sun Campus Ambassador
Implementieren von Klassen
 Präsentation transkript:

Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Manfred Thaller SS 2013 Scripting Gems 6 Linda Scholz

Scripting Language Survey Beliebte Tools zur Spieleprogrammierung Steuerung animierter Sequenzen Merkmale der NPC´s Verhalten der AI-kontrollierten Helfer Ermöglicht frühe Prototypen des Spiels Vereinfacht die Teamarbeit

Scripting Language Survey Python Lua GameMonkey AngelScript

Language Coding Universal Features Ähnliche Charakteristiken Flexibilität – Möglichkeit den Code während des laufenden Spiels zu verändern Automatisiertes Memory Management Einfache Bedienung

Language Coding Unterschiede AngelScript – fixed typed language Variablen werden für ihren Nutzen benötigt Lua/Pyhton/GameMonkey – dynamic typed language Werte verschiedener Typen können verarbeitet werden Werte werden bei der Zuweisung erzeugt Lokale und globale Variablen müssen deklariert werden

Language Coding Unterschiede Python Größte Auswahl dynamischer Strukturen Lua / GameMonkey Nutzen Tables, um Container und Objekte zu implementieren oder Klassen zu simulieren AngelScript Nutzt dynamische Arrays

Python Daten- und Funktionalitätsaustausch möglich Python-Funktionen können die Werte in C++ erstellen und C++ callbacks registrieren Standard Phyton mit C++ zu verbinden ist kompliziert und führt oft zu Fehlern AngelScript Teilt die Abruf-Konventionen mit C++ Es werden keine zusätzlichen Funktionen / Modifikationen benötigt Integration with C/C++

Lua Infomationsaustausch zwischen Lua und C++ ist durch einen virtual stack geregelt Für jede Funktionsabfrage wird ein neuer stack angelegt GameMonkey Einfache Integration mit C++ Beschränkte objektorientierte Programmierung – keine Funktionsüberladungen, Klassen-Vererbung oder Polymorphismus

Integration with C/C++ Kompletter Zugriff auf globale Variablen ist möglich in Lua, AngelScript und GameMonkey Lua / GameMonkey nutzen globale tables AngelScript nutzt Funktionen um pointer zu einer globalen Variable abzufragen In Python können globale Konstanten von C++ aufgerufen werden

Integration with C/C++ Durch C++ ist es möglich Script Funktionen abzurufen Python Alle Parameter müssen zu Python Objekten konvertiert und in ein tuple gruppiert werden Ein Wert wird zurückgegeben, aber es kann ein tuple sein, der verschiedene Werte enthält

Integration with C/C++ Lua Parameter werden in einem stack gelagert Mehrere Werte können in einem stack zurückgegeben werden AngelScript / GameMonkey Parameter werden zu Helfer-Klassen hinzugefügt und mit dem Namen der Funktion initialisiert Ein Wert wird der Helfer-Klasse zurückgeliefert

Integration with C/C++ Binding tools werden benötigt, um Klassen zu C++ zu exportieren AngelScript Einfacher Export durch Aufruf der API GameMonkey Binding tool ist noch in der Entwicklung

Integration with C/C++ Python – Swig Interface file – beschreibt alle C++ Features Output source files in C++ und Python Generiert Schatten Klassen in Python aus C++ Klassen Vererbungshierarchie und Überladen von Funktionen ist möglich

Integration with C/C++ Python – Boost.Python C++ Klassen werden mit Python ähnlicher Syntax geschrieben Konstruktoren mit Parametern werden als Eigenschaften exportiert, die Python als public data members sieht Die Boost.Python Bibliothek hilft bei der Integration von Klassen- und Vererbungsstrukturen, Funktionsüberladung und –operatoren, Iteratoren und Objekt Interface von C++ zu Python

Integration with C/C++ Lua – ToLua++ Enthält input header files und outputs die das Einbinden implementieren Header files können dem input package zugefügt werden Klassen können einfach exportiert werden Die Klassen können in Lua mit Vererbung und Polymorphismus genutzt werden Überladene Funktionen und Operatoren werden als Teil der Klasse unterstützt

Integration with C/C++ Lua – LuaPlus Durch Modifikation kann C++ integriert werden Unterstützt keine cross-language Vererbung oder Funktionsüberladung C++ Programmierer können Lua vereinfacht initialisieren, mit dem stack operieren und globale Variablen abrufen (LuaState) C++ Programmierer können Objekte unabhängig vom stack nutzen (LuaObject)

Performance Features Memory Management Speicher verteilen, Speicher freigeben, Lücken schließen Reference Counting Prüft ob Objekte noch gebraucht werden durch Referenzen zu anderen Objekten Solange Objekte zu anderen Referenzen haben werden sie nicht freigegeben (Reference Cycles)

Performance Features Garbage Collection Objekte werden durch Hierarchien festgelegt Root Elemente lagern Referenzen zu anderen Objekten, die markiert werden Nicht mehr benötigte Objekte werden aus der Hierarchie gelöscht Unmarkierte Objekte werden entsorgt (mark and sweep) Garbage Collection Durchläufe brauchen viel Zeit Incremental Garbage Collection führt die Operation über mehrere Frames aus

Performance Features Custom Memory Manager Belegt und befreit geschützten Speicher unabhängig vom System Profiling Profile(Python): Erlaubt Lagerung von Profildaten über die Ausführung einer laufenden Funktion LuaProfiler(Lua): Man erhält ein Protokoll über Funktionsaufrufe und verbrauchter Zeit

Development Support Features Multithreading Durch Klassen wird ein Multithread-System simuliert Generators in Python – nicht komplett thread-safe Coroutines in Lua GameMonkey hat ein umfangreichen thread support – Ausführungen können geblockt oder angehalten werden bis sie ein Event wieder aktiviert

Development Support Features Debugging Facilities Wichtiges Tool zur Fehlersuche im Script Python: Logging package – hilft bei debugging Problemen Pdb module: Unterstützt das Setzen von Breakpoints, Wechseln zwischen Code & Untersuchen von stack frames Lua Keine built-in debugging tools Helfer-Funktionen für Informationen über die Laufzeit, Verhalten von Funktionen und Funktionsaufrufe

Development Support Features Debugging Facilities GameMonkey: Funktion um Breakpoints zu setzen und Prüfen ob Bedingungen wahr sind Zusätzlich können Rückruffunktionen unter bestimmten Bedingungen aufgerufen werden AngelScript Für jede Ausführung kann eine Rückruffunktion aufgerufen werden Untersuchen von Variablenwerten wird in Zukunft möglich sein

Conclusion Verschiedene Scripting Languages bieten verschiedene Funktionen Spielentwickler können sich eine passende Sprache aussuchen Möglichkeit verschiedene Sprachen zu kombinieren und Features zu integrieren steht hierbei im Mittelpunkt

Exposing Actor Propeties Using Nonintrusive Proxies Actor Objekte in der Spielwelt egal ob statisch oder dynamisch ActorProxy Datenorientierte Klasse, die jede Actor-Klasse umhüllt und die Eigenschaften kennt Enthält allgemeine Tools, die Level-Editor oder Game-Manager aufrufen und manipulieren können ActorProperty Informationen über einzelne Eigenschaften

Nonintrusive and Dynamic Architecture ActorProxies werden benötigt um praktische Arbeit zwischen verschiedenen Teammitgliedern zu gewährleisten Proxies bieten eine nicht berührungsfreie Architektur, die die Funktionen des Grundobjekts nicht verändern Gefahr existierenden Code zu zerstören ist gebannt

Nonintrusive and Dynamic Architecture ActorProperty ist dynamisch und beeinflusst nicht die Laufzeit Man kann Objekte verändern ohne die Basis zu zerstören

ActorProperty Functors Getter Methode zum Wiederherstellen von Daten Setter Methode zum Zuweisen von Daten Functors (function objects) sind ein C++ Mechanismus um den call-back function pointer zu erreichen getter und setter Functors müssen in die Basisklasse integriert werden Unterklassen können so die Typen SetType und GetType definieren

Property Design GenericActorProperty Klasse dient als Basis und enthält die Metadaten Unterklassen für jeden Eigenschaftstyp werden benötigt, um die verschieden Typen wie integers, floats, textures oder sounds zu unterstützen

ActorProxies Jedes Proxy konstruiert eine Liste der Eigenschaften der Klasse mit jeweiliger getter und setter Methode Jedes Proxy hat eine Referenz zum zugrunde liegenden Objekt, wodurch tools direkt das Proxy nutzen können

ActorProxies Initialisierte Proxies liefern eine einheitliche Schicht des Objektverhaltens, die universell genutzt werden kann - bspw. zur Objekterzeugung Man hat komplette Kontrolle über die Objekteigenschaften

Conclusion Teamarbeit ist gewährleistet und verschiedene Teammitglieder mit verschiedenen Aufgaben können Objekte für sich bearbeiten ohne das Grundobjekt zu zerstören Zugrundeliegende Objekte können wiederverwendet werden