Datenstruktur (oder Algorithmus) für schnelle entfernungsbasierte Entitätssuchen

8

In Ihrem Spiel laufen beispielsweise 100 Gegner (in verschiedenen Teams) herum und ihre KI möchte die in der Nähe befindlichen Einheiten untersuchen, um festzustellen, welche angegriffen werden sollen. Was ist ein schneller Weg, um diese Entitäten so zu organisieren, dass nicht jeder Feind die Entfernung zwischen sich und allen anderen Entitäten berechnen muss?

Kurz gesagt, was ist eine schnelle Möglichkeit für eine KI-Entität, die Frage "Wer ist in meiner Nähe?" Zu beantworten.

khayman218
quelle
versuchen Sie es mit Quad-Bäumen
Ali1S232

Antworten:

8

Sie möchten einen räumlichen Index wie Quadtree (2D) oder Octree (3D).

Wille
quelle
1
@FxIII Ich bin mir nicht sicher, ob ich überhaupt folge, worüber du gerade bist. Diese räumlichen Baumdatenstrukturen wurden speziell zur Beantwortung der Frage des Posters entwickelt und sind gut verstanden und werden verwendet.
Will
5

Die einfachste Lösung ist ein Raster . Lege ein 2D-Gitter über deine Ebene. Jede Zelle im Raster verwaltet eine Sammlung der Entitäten, die sie derzeit belegen. Wenn sich die Entitäten bewegen, nehmen Sie sie aus der Zelle, die sie verlassen, und fügen Sie sie der Zelle hinzu, die sie betreten.

Sie können dann Objekte in der Nähe finden, indem Sie die Zellen in der Nähe untersuchen. Ein Quadtree verfeinert dies, indem er das Raster rekursiv unterteilt. Manchmal ist jedoch ein flacher Raster ausreichend, insbesondere wenn Ihre Ebenengröße fest und relativ klein ist.

großartig
quelle