Game Loop & Update Method Robert Nystrom – Game Programming Patterns Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung SS.

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
Algorithmentheorie 08 – Dynamische Programmierung (1)
Seminar Experimentielle Evaluierung im Information Retrieval Aufgabenstellung, Ablauf, Probleme, Lösungen und Ergebnisse des Experiments Martin Jansson.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Garbage Collection Maik Theisen Betreuer: Guido Tack
Cassey - Common Answer Set Evaluation sYstem Jean Gressmann Benjamin Kaufmann Robert Lenk.
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Kapitel 12: „Variablen und Konstanten verwenden und Spiele.
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof.
Das Build-Tool ANT ETIS SS05. ETIS SS05 - Nadine FröhlichANT 2 Gliederung Motivation Build - Datei –Allgemeiner Aufbau –Project –Target –Task –Properties.
Software Design Patterns Extreme Programming (XP).
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
Reflexhafte Aufmerksamkeit verändert die Verarbeitung von visuellen Reizen im menschlichen visuellen Kortex von Joseph B. Hopfinger und George R. Mangun.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering WS 2006 / 2007Folie 1 Agile Vorgehensweisen Hintergrund –in den letzten Jahren hat.
Crystal Reports 2008.
INHALT INHALT Inhalt Delphi IDE ObjectPascal Hello World! Delphi IDE
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. Manfred Thaller AM 3 Übung: Softwaretechnologie.
Multiplayer & MMO Games
Performance-Optimierung in JAVA
Test-Checker: Lehrer Version Manual Programm von Martin Schügerl.
Einführung in die Programmierung
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil I): Simulation und 3D Programmierung Prof.
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 Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. M. Thaller AM1: Re-usable Content in 3D und Simulationssystemen.
Von der Planung bis zum Hauptmenü Seminar: Softwaretechnologie II Dozent: Prof. Manfred Thaller Referent: Jan Bigalke.
Java für Fortgeschrittene
Gruppe: Gewinnt Überblick 1.0 (Martin Kapfhammer)
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
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 Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Cs104 Programmieren II Präsentation Meilenstein 3 Frühjahrsemester 2010 Gruppenname (Gruppe Nr. x) Name 1 Name 2 Name 3 Name 4 Logo der Gruppe.
A. Gebert / A. Henke Ant colony simulation.
Vom Kontext zum Projekt V Carina Berning Sabrina Gursch Pierre Streicher Intelligente Dateisysteme.
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Objectives Verstehen was unterDelegate verstanden wird
Bericht der Gruppe Avatare Universität zu Köln BA Medienkulturwissenschaft/Medieninformatik Historisch-Kulturwissenschaftliche Informationsverarbeitung.
Die Idee hinter Copying Garbage Collection (1) Aufteilung des Heaps in zwei Teile: To-Space und From-Space Nutzung eines Teiles durch das Programm Ist.
Advanced Digital Design Übung 3. Aufgabe 1: Algorithmus für Phasen Inverter Plazierung Systematic approach: 1. Identify combinational logic and registers/memories.
ICT – Modul Textverarbeitung
PART V CONTACT PHYSICS Chapter Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof.
WIR LÖSEN DAS PROBLEM FÜR SIE
Unity 4.x Cookbook Softwaretechnologie II (Teil 2) - Maximilian Berndt.
Seminar: Virtuelle Forschungsumgebungen Dozent: Professor Manfred Thaller Referent: Peter Smits
ANIMATION II Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung SS 2013 Softwaretechnologie II (Teil II): Simulation und 3D.
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.
Installation und erste Schritte.  Unity  Download, Installation und Ausführung  Erster Einblick  Quellen WS 14/15 - HKI - Softwaretechnologie II (Teil.
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil I): Simulation und 3D Programmierung Prof.
1 Bauhaus-Universität Weimar ArchitekturProgrammierung Generative Entwurfsmethoden Processing Grundlagen Professur Informatik in der Architektur.
Random & Probability Universität zu Köln Institut für Medienkultur und Theater AM3: Visuelle Programmierung II WS 2013/2014 Dozent: Prof. Manfred Thaller.
PhysX auf der GPU in Batman: Arkham Asylum & bei Fluid Simulations Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie.
Test-Driven Development
Tutorium zur Datenanalyse mit SPSS
Das Build-Tool ANT ETIS SS04. ant 2 Gliederung Motivation Build-Datei build.xml Bestandteile build.xml –Properties Zusammenfassung.
Rules of Play - Game Design Fundamentals by Katie Salen and Eric Zimmerman Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung.
Minecraft Universität zu Köln Historisch-kulturwissenschaftliche Informationsverarbeitung Re-usable Content in 3D und Simulationssystemen SS 2015 Prof.
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil I): Simulation und 3D Programmierung Prof.
ROBERT NYSTROM GAME PROGRAMMING PATTERNS III.8 Thema: Sequencing Patterns Seminar: Softwaretechnologie II (Teil 2) Dozent: Prof. Dr. Manfred Thaller Referent:
Objektorientierte (OO) Programmierung
Preisfindung Verwalten von Preislisten
Programmieren mit Variablen
Arten von Hacker und Virenangriffen
GAME PROGRAMMING PATTERNS – FLYWEIGHT & OBSERVER Robert Nystrom Softwaretechnologie II Teil 2 Anike Schulz.
Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.
Christoph Wirtz | Seminarvortrag EBC | Lehrstuhl für Gebäude- und Raumklimatechnik Ein Tool zum automatisierten Erstellen von Conversion Scripts.
Ein Spiel mit der SDL - Teil I. Ein Spiel mit der SDL  kostenlose Bibliothek – Simple DirectMedia Layer Grafik darstellen Benutzereingaben abfragen Sounds.
Ein Spiel mit der SDL – Teil 2. Ein Spiel mit der SDL TSingleton CTimerCFramework CGame CPlayer CShot CAsteroids CSprite.
© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework Von: Simon Lubberich Erstbetreuer:
 Präsentation transkript:

Game Loop & Update Method Robert Nystrom – Game Programming Patterns Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung SS 2015 Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Referent: Lukas Kley

Gliederung Das Game Loop-Pattern ◦ Entstehung ◦ Umgang mit der Zeit ◦ Fragestellungen Das Update-Pattern ◦ Update-Methoden ◦ Hinzufügen/Entfernen von Objekten ◦ Beispielhafte Implementation des Patterns

Entstehung von Game Loops Früher: batch mode programs  Bedarf nach Feedback (Bug-Suche etc.)  erste interaktive Programme (z.B. textbasierte Games)  Einfache Event-Loops:

Echter Game-Loop (Basis): Durchlaufzeit für einen Durchgang bestimmt die Frame-Rate Durchlaufzeit abhängig vom Arbeitsaufwand und Hardware => sorgt für Probleme auf verschiedenen PCs Game-Loop muss für konstante Geschw. sorgen

Das Game Loop-Pattern Läuft konstant Verarbeitet User-Input, ohne ihn zu blocken oder darauf zu warten Aktualisiert den Spielstatus Rendert Kontrolliert die Game-Geschwindigkeit => Wichtiger Teil jedes Spieles

1. Version: Fixe Zeit pro Frame Hilft gegen zu schnelle Verarbeitung, aber nicht gegen zu langsame

2. Version: Variable Zeit pro Frame Aber: Rundungsfehler bei Kommazahlen sorgen bei unterschiedlicher Anzahl an Berechnungen für Ungenauigkeiten

3. Version: Flexibel rendern

render(lag / MS_PER_UPDATE); zur Eliminierung von ruckartigen Bewegungen

Fragestellungen Loop der Plattform/Game-Engine verwenden oder selbst schreiben? FPS-Limit zur Stromeinsparung? Welche Vorgehensweise zur Kontrolle der Gameplay-Geschwindigkeit?

Update Methods “Simulate a collection of independent objects by telling each to process one frame of behavior at a time.” => Simulationsschritte müssen in den Game Loop integriert werden

Nicht in den Loop integriert:

Eingebettet in den Game Loop:

Das Update-Pattern Jede Entität sollte mitsamt ihrem Verhalten eingekapselt sein Der Game Loop enthält nur die Kollektion an Objekten und ruft pro Frame einmal die update()-Methode jedes Objektes auf => Erleichtert das Addieren und Löschen von Objekten

Dieses Pattern ist gut geeignet wenn ◦ Das Spiel viele verschiedene Objekte enthält ◦ Die Objekte voneinander unabhängig sind ◦ Die Objekte im Verlauf der Spielzeit simuliert werden müssen (sich bewegen/verändern)

Code wird durch Auslagerung in den Game Loop etwas komplexer Durch die Frame-by-Frame Vorgehensweise müssen Objekt-Zustände zwischengespeichert werden (s. bool patrollingLeft ) Die update()-Reihenfolge ist entscheidend

Hinzufügen von Objekten während des Updatens ist problematisch

Problem beim Entfernen von Objekten: Objekt als tot markieren, in der Liste belassen und in einem zweiten Durchgang entfernen

Anwendung des Patterns Skelett-Klasse:

Spielwelt als Klasse:

Implementation des Patterns:

Umgang mit inaktiven Objekten Bei jedem Frame die update()-Methode von Objekten aufzurufen, bei denen sich nichts ändert, ist ineffektiv Möglicher Lösungsweg: Separate Kollektion, die nur die aktiven Objekte enthält, erstellen

Vielen Dank für die Aufmerksamkeit!