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...
Spatial PartitionGame Programming Patterns / Optimization Patterns
AM3: Softwaretechnologie II (Teil 2): Simulation und 3D ProgrammierungDozent: Prof. Dr. ThallerSS 2015Referent: Tim Höfer
Absicht und Motivation
Effizient Objekte zu lokalisieren, indem Sie sie in einer Datenstruktur durch ihre Positionen organisiert.
Einheiten auf dem Spielfeld
Funktion „Nahkampf“ Wenn Unit A auf Position von Unit B KAMPF
Battle Lines
Vorschlag: Statt Units im Array zu speichern nimmt man Battle Lines
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
Sample Code
Aufteilung in Zellen
Ein Netz verlinkter Einheiten
2D: Jede Unit besitzt Position & Pointer zum Grid
Ein Netz verlinkter Einheiten
Jede Zelle = Pointer zur Unit
Ein Netz verlinkter Einheiten
Resultat: Doppelte verlinkte Listen statt Arrays!
Das Battlefield
A Clash of Swords
Units in Zellen KAMPF
A Clash of Swords Nur noch Einheiten pro Zelle werden
verglichen
Charging Forward
Performance Problem wurde beseitigt Was passiert, wenn die Zelle verlassen wird?
Bewegung:
Charging Forward
At Arm‘s Length
At Arm‘s Length
At Arm‘s Length
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
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
Ist Partitionierung abhängig von der Menge der Objekte? Wenn die Partitionierung objektunabhängig ist, aber die
Hierarchie die Objekte berücksichtigt
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
Quellen
http://gameprogrammingpatterns.com/spatial-partition.html