Wenn Ihre Welt bereits aus diskreten Blöcken besteht, ist es sinnvoll, diese als Grundlage für Ihre Navigation zu verwenden.
Pfadfinder sind einfache, schnelle Pfadfinder, die etwas schwieriger sind. Der Weg zu folgen und auf die Veränderungen in der Welt zu reagieren, ist die wahre Bosheit.
Es gibt einige Fragen, die Ihnen helfen können, die mögliche Lösung einzugrenzen: - Welche Art von NPCs versuchen Sie zu simulieren? - Wie lange suchen Sie? - Wie genau brauchen Sie?
Wenn Sie kurze Wege haben und die Qualität "besser als lenken" in Ordnung ist, sind lokale Netze [1] eine gute Wahl. Sie sind super schnell, Sie können es sowohl 2D als auch 3D arbeiten lassen. Sie können lokale Rasterdaten direkt aus Ihren Volumendaten abrufen, sodass das Navigationsdiagramm problemlos mit den dynamischen Änderungen synchron bleiben sollte.
Das Problem mit lokalen Gittern besteht darin, dass der Agent möglicherweise stecken bleibt, wenn Sie lokale Minima in Ihrer Welt haben, die größer als Ihr lokales Gitter sind. Es ist möglich, Tricks wie das Hinzufügen von Brotkrumen an Orten auszuführen, an denen Sie lokale Minima erkennen, und diese Orte bei der Suche zu vermeiden.
Wenn Sie lange Wege benötigen, schlage ich eine Art hierarchisches Schema vor. HPA * sollte Ihnen gute Ideen geben, wie Sie spärliche Knoten im Raster einer Welt erstellen können. Lokale Gitter können die Pfadfindung zwischen den Knoten auf hoher Ebene lösen. Wenn Sie Änderungen an der Welt vornehmen, müssen Sie auch die groben Knoten lokal ändern. Sie können die Knoten auch verwenden, um dynamische Änderungen in der Spielwelt zu erkennen und den Pfad neu zu planen.
Wenn Sie eine dynamische Welt haben, wird die Pfadfindung zu einer Statistik. Es gibt keine Garantie mehr, ob der Agent seinen Weg findet. Es ist sehr schwierig, die Veränderungen in der Welt im Auge zu behalten, und die Neuplanung, wenn etwas schief geht, ist träge.
Eskil fährt mit dieser Idee in Love MMO, und sein Pfadfinder ist nur eine Zufallsstichprobe mit Utility-Funktion (ebenso wie seine Aktionsauswahl :)). Ich würde empfehlen, dies zuerst zu tun, wenn es zu Ihrem Spielstil passt.
[1] http://digestingduck.blogspot.com/2010/03/local-navigation-grids.html