In dem 2D-Spiel, mit dem ich arbeite, kann mir die Game Engine für jede Einheit die Liste der anderen Einheiten anzeigen, die sich in ihrem Sichtbereich befinden.
Ich würde gerne wissen, ob es einen etablierten Algorithmus gibt, um die Einheiten in Gruppen zu sortieren , wobei jede Gruppe durch alle Einheiten definiert wird, die miteinander "verbunden" sind (auch durch andere).
Ein Beispiel könnte helfen, die Frage besser zu verstehen (E = Feind, O = eigene Einheit). Zuerst die Daten, die ich von der Game Engine bekommen würde:
E1 can see E2, E3, O5
E2 can see E1
E3 can see E1
E4 can see O5
E5 can see O2
E6 can see E7, O9, O1
E7 can see E6
O1 can see E6
O2 can see O5, E5
O5 can see E1, E4, O2
O9 can see E6
Dann sollte ich die Gruppen wie folgt berechnen:
G1 = E1, E2, E3, E4, E5, O2, O5
G2 = O1, O9, E6, E7
Es kann mit Sicherheit angenommen werden, dass es eine kommutative Eigenschaft für das Sichtfeld gibt: [Wenn A B sieht, dann sieht B A].
Nur zur Verdeutlichung: Ich habe bereits eine naive Implementierung geschrieben, die sich in jeder Zeile der Game-Engine-Informationen wiederholt, aber es scheint ein allgemeines Problem zu sein, das eingehend untersucht wurde und über verschiedene etablierte Algorithmen verfügt (möglicherweise erfolgreich) durch eine baumartige Struktur?). Mein Problem ist, dass ich keinen Weg gefunden habe, mein Problem zu beschreiben, das nützliche Google-Treffer ergab.
Vielen Dank im Voraus für deine Hilfe!