Kürzlich habe ich begonnen, einen Spielprototyp zu entwickeln, mit dem prozedural generierte Dungeons unter Verwendung einer Sammlung von Raumtypen erstellt werden können. Um sicherzustellen, dass die Flurwege zwischen diesen Räumen immer verbunden sind, habe ich einen A * -Pfad-Suchalgorithmus implementiert, der der Kachelkarte zufällig platzierter Räume folgt.
Das Problem dabei ist jedoch, dass ich nicht unbedingt versucht habe, den kürzesten Weg zwischen Räumen zu finden, der in den meisten Fällen eine Diagonale wäre. Da sie thematisch ein "Dungeon" sind, wollte ich, dass sie sich in einem Winkel von 90 Grad drehen und drehen. Durch die Verwendung einer Manhattan-Distanz für die Heuristik habe ich es geschafft, die beabsichtigte Form zu erhalten, aber ich habe ein letztes Problem, bei dem ich zu euch freundlichen Leuten komme, um mir zu helfen :).
Obwohl jetzt 90-Grad-Winkel zum Verschieben des Pfads verwendet werden, wird der Lauf bis zum Ende des Pfads gespeichert (siehe Abbildung unten). Dadurch fühlt sich das Ganze in einiger Entfernung an einigen Stellen eng an, anstatt den gesamten Raum effektiv zu nutzen. Angesichts der Tatsache, dass das einfache Ändern der Heuristik von Entfernung zu Entfernung in Manhattan einen Unterschied gemacht hat, ist meine Frage: Gibt es eine Kostenfunktion, die ich implementieren könnte, um die gewünschten Ergebnisse dieses nicht konventionellen Pfades zu erzielen? Alle Antworten wäre dankbar, danke.
Hinweis: Der Algorithmus hat auch Zugriff auf die normale Richtung der Start- und Endziele.