Ich arbeite derzeit an der Wegfindung für ein Spiel, in dem sich Einheiten bewegen, aber Trägheit haben. Die meisten typischen Pfadfindungsalgorithmen (A *, Djikastra usw.) dienen lediglich dazu, die Länge des Pfades zu minimieren.
Diese Techniken gelten jedoch meines Wissens nicht für Fälle, in denen die Einheit Trägheit aufweist. Wenn die Einheit Trägheit hat, gibt es einen signifikanten Unterschied in den Kosten, um eine Fliese in einer bestimmten Richtung zu belassen, basierend auf der Richtung, in die Sie gehen möchten.
Zum Beispiel sind die Kosten für das Verlassen eines Plättchens in Richtung Norden erheblich höher, wenn Sie das Plättchen aus dem Osten betreten haben, als wenn Sie aus dem Süden gekommen sind. (Im ersten Beispiel müssten Sie langsamer fahren, um die Ost-West-Geschwindigkeit zu stoppen, während Sie im zweiten Beispiel direkt durchfahren könnten.)
Die Tatsache, dass das System Trägheit hat, bedeutet, dass Sie, um eine Kurve zu fahren, möglicherweise lange vor der Kurve langsamer fahren müssen. Mein bisher bester Gedanke ist, dass Sie die zusätzliche Zeit berechnen, die zum Verlangsamen benötigt wird, und diese dann zu den heuristischen Umzugskosten addieren. Dies scheint jedoch zu implizieren, dass Sie der geschlossenen Liste niemals eine Kachel hinzufügen könnten, da die Eingabe aus einer anderen Richtung die Kosten für den Umzug grundlegend verändern könnte.
Darüber hinaus ist das Konzept der Verwendung eines Gitters ohnehin eine Abstraktion, da sowohl Position als auch Geschwindigkeit Gleitkommakonzepte sind. Gibt es einen Algorithmus, der die Pfadfindung auf einer offenen Ebene mit Trägheit besser als A * handhaben kann, oder welche Änderungen könnte ich an einem bereits vorhandenen Algorithmus vornehmen, um ihn für diese Art von Bewegung geeignet zu machen?