Ich habe eine große 2D-Tilemap mit einer Größe von Hunderten bis Tausenden. Die Karte besteht aus 8x8 Blöcken. Ich verwende derzeit A *, aber es ist nicht sehr effizient, da ich möglicherweise bis zu hundert Objekte gleichzeitig finden kann. Der Weg muss nicht unbedingt der kürzeste sein, es wird jedoch ein gewisses Maß an Kürze erwartet.
Ich habe hier nachgesehen und festgestellt, dass HPA * für mich möglicherweise funktioniert, da meine Karte in kleinere Teile unterteilt ist. Da die Karte jedoch sehr dynamisch ist (nehmen wir das zumindest an zwei Blöcke pro Sekunde geändert werden), scheint es bessere Alternativen zu geben.
Auch D * / Lite (im Link erwähnt) könnte funktionieren, aber wie kann es für ein Chunk-basiertes Raster optimiert werden?
Bei meiner Frage geht es nicht speziell um HPA * oder D *, sondern darum, einen optimalen Algorithmus für eine große und dynamische, auf Chunks basierende Tilemap zu finden.
BEARBEITEN: Die Chunks enthalten prozedural generierten Inhalt. Meistens bedeutet dies, dass der Block bis auf etwa 10 bis 20% seiner Kacheln leer ist. Manchmal kann diese Zahl jedoch bis zu 90% betragen (dh bei generierten "Blobs"). Die Chunks enthalten nahezu beliebige Daten, und zwei Chunks sind selten gleich.
Darüber hinaus verfügt jeder Agent über einen unabhängigen Pfad. Da die Karte jedoch dynamisch ist, kann sie künstliche Korridore und lange Durchgänge enthalten, die dazu führen können, dass sie häufig von vielen Agenten gemeinsam genutzt werden.
Die meisten Ziele werden willkürlich lokalisiert, es gibt jedoch auch einige vordefinierte Ziele (Standorte). Für diese vordefinierten Orte erwäge ich, ein Vektorfeld (ähnlich einer Wärmekarte) zu verwenden, mit dem man sich ihm nähern kann. Dies für jedes Ziel zu tun, wäre jedoch furchtbar ineffizient, zumal ich das generierte Feld nur einmal (oder in besseren Fällen vielleicht ein paar Mal) verwenden würde.