Struttura dei dati (o algoritmo) per ricerche di entità basate sulla distanza veloce


8

Ad esempio, il tuo gioco ha 100 nemici (in diverse squadre) che corrono in giro e la loro IA vuole ispezionare le entità vicine per vedere quale dovrebbe attaccare. Qual è un modo rapido per organizzare quelle entità in modo che ogni nemico non debba calcolare la distanza tra se stesso e tutte le altre entità?

In breve, qual è un modo rapido per un'entità AI di rispondere alla domanda "Chi è vicino a me?"


prova a usare i quad tree
Ali1S232 il

Risposte:


8

Volete un indice spaziale come quadtree (2D) o octree (3D).


1
@FxIII Non sono sicuro di seguire tutto quello che stai facendo. Queste strutture spaziali di alberi spaziali sono specificamente progettate per rispondere alla domanda del poster e sono ben comprese e utilizzate.
Sarà il

5

La soluzione più semplice è una griglia . Posiziona una griglia 2D sul tuo livello. Ogni cella nella griglia mantiene una raccolta di quali entità la stanno attualmente occupando. Mentre le entità si muovono, estraile dalla cella che stanno lasciando e aggiungile a quella in cui entrano.

È quindi possibile trovare entità vicine semplicemente esaminando le celle vicine. Un quadrifoglio lo raffina suddividendo ricorsivamente la griglia, ma a volte una piatta è adeguata, specialmente se la dimensione del tuo livello è fissa e relativamente piccola.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.