Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II...

22
Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof. Dr. Thaller SS 2015 Referent: Tim Höfer

Transcript of Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II...

Page 1: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Spatial PartitionGame Programming Patterns / Optimization Patterns

AM3: Softwaretechnologie II (Teil 2): Simulation und 3D ProgrammierungDozent: Prof. Dr. ThallerSS 2015Referent: Tim Höfer

Page 2: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Absicht und Motivation

Effizient Objekte zu lokalisieren, indem Sie sie in einer Datenstruktur durch ihre Positionen organisiert.

Page 3: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Einheiten auf dem Spielfeld

Funktion „Nahkampf“ Wenn Unit A auf Position von Unit B KAMPF

Page 4: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Battle Lines

Vorschlag: Statt Units im Array zu speichern nimmt man Battle Lines

Page 5: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Das Muster

Jedes Objekt hat seinen Platz im Raum (Spielfeld) Objekte werden in räumlichen Datenstrukturen gespeichert Räumliche Datenstruktur lässt Objekte einfacher vergleichen

Page 6: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Sample Code

Aufteilung in Zellen

Page 7: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Ein Netz verlinkter Einheiten

2D: Jede Unit besitzt Position & Pointer zum Grid

Page 8: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Ein Netz verlinkter Einheiten

Jede Zelle = Pointer zur Unit

Page 9: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Ein Netz verlinkter Einheiten

Resultat: Doppelte verlinkte Listen statt Arrays!

Page 10: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Das Battlefield

Page 11: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

A Clash of Swords

Units in Zellen KAMPF

Page 12: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

A Clash of Swords Nur noch Einheiten pro Zelle werden

verglichen

Page 13: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Charging Forward

Performance Problem wurde beseitigt Was passiert, wenn die Zelle verlassen wird?

Bewegung:

Page 14: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Charging Forward

Page 15: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

At Arm‘s Length

Page 16: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

At Arm‘s Length

Page 17: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

At Arm‘s Length

Page 18: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Design Decisions

Flat partition: Ist einfacher Der Speicherverbrauch ist konstant Aktualisiert schneller bei Positionsveränderung der Objekte

Hierarchical partition Behandelt leeren Raum effizienter Behandelt dicht besiedelten Raum effizienter

Page 19: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Ist Partitionierung abhängig von der Menge der Objekte? Ziel: Ausgewogene Partitionierung

Wenn die Partitionierung objektunabhängig ist Objekte können inkrementell hinzugefügt werden Objekte können schnell bewegt werden Partitionen können unausgeglichen sein

Wenn sich Partitionierung objektabhängig ist BSP / k-d trees teilen die Welt rekursiv Partitionen sind dadurch ausgeglichen Es ist effizienter mehrere Objekte auf einmal zu partitionieren

Page 20: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Ist Partitionierung abhängig von der Menge der Objekte? Wenn die Partitionierung objektunabhängig ist, aber die

Hierarchie die Objekte berücksichtigt

Page 21: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Werden Objekte nur in Partitionen gespeichert? Wenn die Objekte nur in der Partition gespeichert werden:

Es vermeidet Speicher-Overhead und die Komplexität zweier Sammlungen

Wenn es eine zusätzliche Sammlung für die Objekte gibt: Objekt-Anfragen werden schneller durchlaufen

Page 22: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.

Quellen

http://gameprogrammingpatterns.com/spatial-partition.html