Grundbegriffe der 3D-Spiele-Programmierung

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

Anwendungen mit dem PC Schreibprogramme
Objektorientierte Programmierung
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung versteht Java Programmcode versteht Java Programmcode Für die Entwicklung eigener Software.
FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Sprache
Ein Beispiel in Java.
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
XINDICE The Apache XML Project Name: Jacqueline Langhorst
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Einführung in die Programmierung mit Java
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Zusammenfassung Vorwoche
Introducing the .NET Framework
Batch-Programmierung Grundlagen
Einführung in Visual C++
DVG Klassen und Objekte
Erstellen von WebServices mit Visual FoxPro 9.0
Wizards & Builders GmbH Schulung Visual SourceSafe für Visual FoxPro Norbert Abb W&B.
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
ODBC (Open Database Connectivity)
Delphi II - OOP IFB Fortbildung
Java ohne Kara. Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.
Einführung in die Programmiersprache Java
Steuerung externer Komponenten über ein USB-Interface.
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. Manfred Thaller AM 3 Übung: Softwaretechnologie.
JavaScript.
PHP und MYSQL am Organisatorisches Der komplette Kurs im Schnelldurchgang Bewertung von wichtig und unwichtig Historisch Kulturwissenschaftliche.
Typo3 Templates und TypoScript
Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen.
Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.
Von der Planung bis zum Hauptmenü Seminar: Softwaretechnologie II Dozent: Prof. Manfred Thaller Referent: Jan Bigalke.
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Einführung in die Programmiersprache C 4
1. Entwicklungsumgebung 2. Kontextmenü 3. Compile 4. Objekt 5. Attribut 6. Klasse 7. Deklaration 8. Intialisierung.
CGI (Common Gateway Interface)
1 Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Einführung Lernmodul Nutzungsbedingungen:
Camera, Lights, Action… Dirk Primbs Developer Evangelist
Oliver Spritzendorfer Thomas Fekete
Java Programmierung.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Multimedia in Java Thomas Witschel, Kerstin Steinert & Erik Reinhard.
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung WS 2013/14.
Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken.
Grundbegriffe der 3D-Spiele-Programmierung nach David Scherfgen
1. Charakteranimation 2. PlugIns schreiben und laden Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/2011.
Webserver Apache & Xampp Referenten: Elena, Luziano und Sükran
Historisch-Kulturwissenschaftliche Informationsverarbeitung Übung: Softwaretechnologie II / Visuelle Programmierung Dozent: Prof. Dr. Manfred Thaller WS.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
 Einführung  Szenengraphen  Bestandteile  Eingabe  JOGL  LWJGL  Beispiele  ARDOR3D Games 04/23/12Ardor 3D – Holzwarth/Kau 2.
Lösung komplexer Problemstellungen Susanne Längle & Lukas Matt.
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Wien Fotos, Audio und Video Multimedia in Android.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Implementieren von Klassen
 Präsentation transkript:

Grundbegriffe der 3D-Spiele-Programmierung Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 11/12 Referent: Jens Wangenheim

Gliederung Die ungarische Notation Spiel vs. Programm DOS vs. Windows Das Problem mit der Zeit DirectX und seine Komponenten Makros COM Prüfmakros Die Engine Logbuchdatei Speichermanager Virtuelle Dateien

Die ungarische Notation Beim Programmieren häufig verwendete Namenskonvention: class = Präfix C (z.B. class CTree) struct = Präfix S (z.B. struct SEnemyInfo) - Durchaus umstritten, wird im Buch bzw. den Beispielen aber verwendet.

Spiel vs. Programm Spaß und Langzeitmotivation vs. Übersichtlichkeit und Funktionalität. Ein Programm wartet hauptsächlich auf Eingaben. Das Spiel ist ständig beschäftigt mit Berechnungen.

DOS vs. Windows In DOS konnte linear programmiert werden:

DOS vs. Windows In Windows muss die Nachrichtenschleife durchlaufen werden: - Nachrichten an alle Fenster einer Anwendung durchlaufen diese Schleife - Es gibt in der Regel nur eine Nachrichtenschleife

DOS vs. Windows - Render/Move in Nachrichtenschleife integriert:

Das Problem mit der Zeit Bei 233 Mhz: Position.x = 250 Bei 600 Mhz: Position.x = 450 - Render- und Move-Funktion werden immer hintereinander aufgerufen!

Das Problem mit der Zeit Lösung: timeGetTime(); aus WINMM.LIB - Liefert seit Systemstart vergangene Zeit in Millisekunden

Das Problem mit der Zeit - Move Funktion hat einen zusätzlichen Parameter bekommen, der das Problem löst:

DirectX und seine Komponenten DirectX Graphics DirectX Audio DirectInput DirectPlay DirectShow DirectSetup

DirecX Graphics Im Buch als Direct3D bezeichnet Für Darstellung anspruchsvoller 3D Grafik Hardware muss 3D Beschleunigung unterstützen Bietet auch grundlegende 2D-Funktionen

DirectX Audio Sowohl für Soundeffekt als auch Hintergrundmusik zuständig Komponenten: DirectSound + DirectMusic Auch 3D-Sound und DolbyDigital möglich Sprachkommandos / Unterhaltungen

DirectInput Zuständig für diverse Eingabegeräte Steuert auch ForceFeedback

DirectPlay Stellt Multiplayer-Funktion zu Verfügung Eingebaute VoiceChat-Funktion Unterscheidet nicht zwischen Netzwerk/Internetspiel: komfortabel

DirectShow Spielt Multimedia-Daten ab Mittlerweile zwischenzeitlich in Platform SDK integriert

Makros Unterschied Funktion / Makro: Eine Folge von Anweisungen und Deklarationen, die unter einer Bezeichnung zusammengefasst werden Unterschied Funktion / Makro: Makros werden vom Präprozessor ausgewertet Funktion wird aufgerufen und ausgeführt Ein Makro wird immer wieder neu in den Quelltext kopiert Vorteil: Makros sind schneller ! Nachteil: Debugging funktioniert nicht !

Makro erstellen Es gibt vorgefertigte Systemmakros Man kann Makros auch selber erstellen: Später mehr zu Makros…

COM = Component Objekt Model Von Microsoft entwickeltes Plattformmodell Eignet sich zur übersichtlichen Organisation von großen Funktionsmengen DirectX baut auf dem COM Modell auf Plattform-, versions- und sprachunabhängig

COM / Schnittstellen Fordert die Aufteilung in Schnittstellen (Interfaces) Interface wird durch eine Funktion erzeugt Interface besitzt Referenzzähler Zähler muss auf 0 stehen im Interface zu löschen

IUnknown Basisschnittstelle, stellt die zur Verwaltung notwendigen 3 Methoden zur Verfügung: AddRef: Referenzzähler um 1 erhöhen Release: Schnittstelle freigeben, Referenzzähler um 1 verringern und Abbau der Schnittstelle beim Wert 0 QueryInterface: Anfordern eines anderen Schnittstellentyps Einmalige ID für jeden Schnittstelle: IID_ als Präfix

Prüfmakros / Rückgabewerte Fast alle Methoden von COM Schnittstellen sind vom Typ HRESULT Liefern einen Prüfwert zurück, mit dem sich das Ergebnis der Methode feststellen lässt: - Begegnet uns in sehr ähnlicher Form bei der Engine wieder

Die Engine Der sprichwörtliche Motor eines Spiels Automatisiert Programmabläufe Spezialisierte Engine: Auf bestimmte Spiele spezialisiert bzw optimiert (zB Egoshooter) Universelle Engine: Kann theoretisch alles. Eher Hilfestellungen als konkrete Lösungen.

Die Verpackung Engine „Verpackung“ = Art der Präsentation der Funktionen und Klassen. Statische Engine: Alle Funktionen in einer statischen LIB Datei Dynamische Engine: Alles landet in einer dynamischen DLL (Dynamic Link Library)

Was sollte die Engine können? schnelle, optimierte Klasse, für Vektoren, Matrizen, Ebenen und Farben Funktionen zum Laden einer Textur Einfache/schnelle Darstellung von 3D Objekten Komplexe Effekte darstellen (Wasser, Feuer, Nebel usw) Textausgabe Einfacher Zugriff auf Eingabegeräte Einfaches Abspielen von Multimediadaten Laden von Dateien aus größeren Datenpaketen Diverse Helferfunktionen Speichermanagement

Namensgebung Alle öffentlichen Funktionen, Strukturen, Klassen bekommen das Präfix tb (tbInit, tbDoMessageLoop) Variablen bekommen das Präfig tb_g_ Mit #define definierte Makros bekommen das Präfix TB_

Rückgabewerte Wie bringt man Funktionen dazu Daten zurück zu liefern? Auf Prüfmakros verzichten und Daten direkt zurückliefern? Statusrückgabewert beibehalten und als Parameter einen Zeiger auf einen Speicherbereich (mit den gewünschten Daten) zurückgeben lassen? 3. Mal so (1.), mal so (2.)! Widerspricht der angestrebten Einheitlichkeit, ist aber die beste Lösung.

Projekt einrichten / Engine kompilieren http://www.hki.uni-koeln.de/node/11329 besucht? DirectX SDK installiert? - Updatepaket heruntergeladen und entpackt? Beigefügte Anleitung durchgegangen? Gab es Probleme beim Kompilieren oder Konfigurieren? Inkl. Download & Installation ca. 60 min. Arbeitsaufwand! http://www.hki.uni-koeln.de/node/11329 besucht? DirectX SDK installiert? - Updatepaket heruntergeladen und entpackt? Beigefügte Anleitung durchgegangen? Gab es Probleme beim Kompilieren oder Konfigurieren? Inkl. Download & Installation ca. 60 min. Arbeitsaufwand!

TriBase Engine

Logbuchfunktion Die Funktion tbWriteToLog ist mit printf oder sprintf vergleichbar. Erwartet Formatstring sowie Platzhalter „%...“ %f für float-Wert, %s für einen String usw. TriBase-Logbuch unterstützt sogar HTML Aufruf tbInit() setzt Logbuchdatei automatisch zurück

Speichermanager TriBase Engine besitzt Speichermanager: Speicher reservieren tbMemAlloc(); Speicherbereiche verändern tbMemReAlloc(); Freigabe von Speicher tbMemFree(); Speicherbereiche abfragen tbMemGetSize();

Virtuelle Dateien = Speicherbereich der wie eine Datei behandelt wird Durch Klasse tbVFile repräsentiert: Aus echter Datei erzeugen Aus Speicherbereich mit bekannter Größe erzeugen Aus Windows Ressource erzeugen Wozu? - Verallgemeinerung von Funktionen

Hilfsmakros Um Abstürze und Fehlermeldungen zu vermeiden Um nicht jedes mal wieder Prüfen zu müssen ob z.B. Interface = NULL ist

Fehlermakros TriBase Engine besitzt vordefinierte Fehelrmakros Wandeln DirectX Fehlercodes in lesbaren Text um Einfache Fehlersuche durch Angaben von fehlerhafter Codezeile und Funktionen im Logbuch