Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II...
-
Upload
erich-lehmann -
Category
Documents
-
view
215 -
download
0
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/1.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/2.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/3.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/4.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/5.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/6.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/7.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/8.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/9.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/10.jpg)
Das Battlefield
![Page 11: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/11.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/12.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/13.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/14.jpg)
Charging Forward
![Page 15: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/15.jpg)
At Arm‘s Length
![Page 16: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/16.jpg)
At Arm‘s Length
![Page 17: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/17.jpg)
At Arm‘s Length
![Page 18: Spatial Partition Game Programming Patterns / Optimization Patterns AM3: Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Dozent: Prof.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/18.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/19.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/20.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/21.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062818/570491ca1a28ab14218dd69a/html5/thumbnails/22.jpg)
Quellen
http://gameprogrammingpatterns.com/spatial-partition.html