GAME PROGRAMMING PATTERNS – FLYWEIGHT & OBSERVER Robert Nystrom Softwaretechnologie II Teil 2 Anike Schulz.

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

der Universität Oldenburg
Konzepte objektorientierter Systeme
Kritische Betrachtung
Kapselung , toString , equals , Java API
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Datenstrukturen Look-Up Tabellen, Zufallszahlen, Listen, Speichermanagement und Dateiverwaltung.
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Klassenvariable (auch Klassendaten bzw. statische Attribute genannt) und statische Methoden.
Konstruktoren.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
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 Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Abstrakter Datentyp in C++ I - Klasse -
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Einfach verkettete Listen (OOP)
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
XNA 3D Tutorial Anzeigen eines Objektes. Inhalt Lernen Sie, wie Sie Modelle implementieren. Initializing Lernen Sie, wie Sie Modelle aus der Content Directory.
Einführung in die Programmierung
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Performance-Optimierung in JAVA
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Zum verständlich machen, wozu die Trigger-Funktion geeignet ist,
Einführung in die Programmierung
Übungsaufgaben für Microsoft Excel
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.
Vorstellung des Projektergebnisses. Agenda I. Bla II. Änderungen beim Design III. Zeitliche Aufwände IV. Komplexität V. Produktpräsentation VI. Mögliche.
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 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.
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 Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Informatik 1 Letzte Übung.
Dynamische Datentypen
Referenztypen (II) und Const- Referenzen Temporäre Objekte, Const- Referenzen, was genau ist konstant?
Wo könnte das sein? Mann, ist das schwer!. Jetzt sieht man schon mehr oder? Ja find ich auc h!
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Unity 4.x Cookbook Softwaretechnologie II (Teil 2) - Maximilian Berndt.
Management, Führung & Kommunikation
Programmiervorkurs WS 2014/15 Instanzmethoden
Music by Enya · Titel: „A day without rain“ (Instrumental)
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Universität zu Köln WS 2014/15 HKI – Softwaretechnologie 2 (Teil 1) Von Tilo Kochs.
Per Mausklick in die Kirche
A Workshop About this chapter General description Units Time Schedule
Die Präsentation des Lehrers der 21- allgemeinbildenden Schule des Bezirks Peschkö in Gebiet Buchara von Alijor Jahjojev.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
ROBERT NYSTROM GAME PROGRAMMING PATTERNS III.8 Thema: Sequencing Patterns Seminar: Softwaretechnologie II (Teil 2) Dozent: Prof. Dr. Manfred Thaller Referent:
Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.
Game Loop & Update Method Robert Nystrom – Game Programming Patterns Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung SS.
Neukonzeptionierung des SVNCheckers > Malte Legenhausen > DLR > Folie 1 Observer - Pattern Malte Legenhausen, Robert Werschnitzke Asea Brown.
Tutorium Software-Engineering SS14 Florian Manghofer.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
THOMAS HANNEFORTH C++ IN DER CL II. GRUNDLEGENDE THEMEN Objektkonstruktion/ Objektdestruktion/ Zuweisung Objekte, Zeiger und Referenzen Wert und Referenzaufruf.
Wir reden uns selber ein, dass das Leben besser wird, wenn wir verheiratet sind, ein Baby haben und danach noch ein zweites. Dann sind wir frustriert,
Grundkurs Informatik 11-13
So einfach geht Smarthome
 Präsentation transkript:

GAME PROGRAMMING PATTERNS – FLYWEIGHT & OBSERVER Robert Nystrom Softwaretechnologie II Teil 2 Anike Schulz

FLYWEIGHT class Tree { private: Mesh mesh_; Texture bark_; Texture leaves_; Vector position_; double height_; double thickness_; Color barkTint_; Color leafTint_; };

FLYWEIGHT

class TreeModel { private: Mesh mesh_; Texture bark_; Texture leaves_; }; class Tree { private: TreeModel* model_; Vector position_; double height_; double thickness_; Color barkTint_; Color leafTint_; }; Extrinsic state Intrinsic state

FLYWEIGHT Wird benötigt wenn viele Objekte „leichter“ gemacht werden müssen Fliesenhaftes Terrain: enum Terrain { TERRAIN_GRASS, TERRAIN_HILL, TERRAIN_RIVER // Other terrains... }; class World { private: Terrain tiles_[WIDTH][HEIGHT]; };

FLYWEIGHT

Anstatt ein Netz aus enums besser ein Netz aus Zeigern: class World { private: Terrain* tiles_[WIDTH][HEIGHT]; // Other stuff... };

FLYWEIGHT Direkt in der Welt speichern:

FLYWEIGHT

const Terrain& World::getTile(int x, int y) const { return *tiles_[x][y]; } int cost = world.getTile(2, 3).getMovementCost();

FLYWEIGHT Vergleich von Zeiger zum enum: „indirect lookup“ Durch längeren Weg kann es cache misses geben Wichtig: vorher profilieren! Ist Flyweight das Richtige?

OBSERVER Model-View-Controller:

OBSERVER Spielbeispiel: Achievement System Ziel: Achievements durch unterschiedliche Sachen ausführen lassen aber zentral an einer Stelle im Code haben Observer: Teilt mit, dass etwas passiert, es ist aber egal an wen die Nachricht geht

OBSERVER

Der Observer:

OBSERVER Das Subject: Das Subject hat eine Liste mit Observern, nicht nur einen einzelnen

OBSERVER Aufgabe des Subjects: Benachrichtigungen senden

OBSERVER

Häufige Kritiken am Observer: Er ist zu langsam Er ist zu schnell Es gibt zuviele dynamische Zuteilungen => dafür gibt es Lösungen

OBSERVER

Benachrichtigungen senden:

OBSERVER Jetzt können Observer aber nur ein Subject haben Lösung: selbstständige Knotenobjekte die auf die Observer zeigen

OBSERVER Zwei Probleme: 1. Was passiert wenn man einen Observer/ ein Subject löscht? Lösung: Selbstverwaltende Observer Lösung: Subject schickt Benachrichtigung vor dem Löschen 2. Wie finde ich einfach Fehler im Code? Lösung: Observer sind unpassend für das Spiel

OBSERVER Observer heute: Nicht gut angesehen, starr und schwer, zu viele Klassen Moderne Anwendung: Referenz zu Methode/ Funktion Die Zukunft der Observer: Viele Versuche das immer gleiche Verhalten der Observer zu verbessern

VIELEN DANK FÜR EURE AUFMERKSAMKEIT!