Game Loop & Update Method Robert Nystrom – Game Programming Patterns Universität zu Köln...

23
Game Loop & Update Game Loop & Update Method 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

Transcript of Game Loop & Update Method Robert Nystrom – Game Programming Patterns Universität zu Köln...

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

Game Loop & Update Game Loop & Update MethodMethod

Robert Nystrom – Game Programming Patterns

Universität  zu  KölnHistorisch-Kulturwissenschaftliche InformationsverarbeitungSS 2015Softwaretechnologie II (Teil 2): Simulation und 3D ProgrammierungReferent: Lukas Kley

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

GliederungGliederungDas Game Loop-Pattern

◦Entstehung◦Umgang mit der Zeit◦Fragestellungen

Das Update-Pattern◦Update-Methoden◦Hinzufügen/Entfernen von Objekten◦Beispielhafte Implementation des

Patterns

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

Entstehung von Game Entstehung von Game LoopsLoopsFrüher: batch mode programs Bedarf nach Feedback (Bug-

Suche etc.) erste interaktive Programme

(z.B. textbasierte Games)Einfache Event-Loops:

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

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

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

Das Game Loop-PatternDas Game Loop-PatternLäuft konstantVerarbeitet User-Input, ohne ihn

zu blocken oder darauf zu wartenAktualisiert den SpielstatusRendertKontrolliert die Game-

Geschwindigkeit

=> Wichtiger Teil jedes Spieles

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

1. Version: Fixe Zeit pro 1. Version: Fixe Zeit pro FrameFrame

• Hilft gegen zu schnelle Verarbeitung, aber nicht gegen zu langsame

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

2. Version: Variable Zeit pro 2. Version: Variable Zeit pro Frame Frame

• Aber: Rundungsfehler bei Kommazahlen sorgen bei unterschiedlicher Anzahl an Berechnungen für Ungenauigkeiten

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

3. Version: Flexibel 3. Version: Flexibel rendernrendern

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

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

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

FragestellungenFragestellungenLoop der Plattform/Game-Engine

verwenden oder selbst schreiben?

FPS-Limit zur Stromeinsparung?Welche Vorgehensweise zur

Kontrolle der Gameplay-Geschwindigkeit?

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

Update MethodsUpdate 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

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

Nicht in den Loop integriert:

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

Eingebettet in den Game Loop:

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

Das Update-PatternDas Update-PatternJede Entität sollte mitsamt ihrem

Verhalten eingekapselt seinDer 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

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

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)

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

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

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

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

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

Problem beim Entfernen von Objekten:

Objekt als tot markieren, in der Liste belassen und in einem zweiten Durchgang entfernen

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

Anwendung des PatternsAnwendung des PatternsSkelett-Klasse:

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

Spielwelt als Klasse:

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

Implementation des Patterns:

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

Umgang mit inaktiven Umgang mit inaktiven ObjektenObjektenBei 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

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

Vielen Dank für die Vielen Dank für die Aufmerksamkeit!Aufmerksamkeit!