Ich entwickle ein Echtzeit-RTS auf Kachelbasis. Dies ist eine Beispielkarte:
Diese Karte besteht aus 4 Regionen mit jeweils 256 Kacheln. Blaue Kacheln stehen für Hindernisse. Einheiten können sich in die üblichen acht Richtungen bewegen. Einheiten sind an Kacheln gebunden; Eine Kachel kann eine Einheit aufnehmen.
Dies sind einige Beispiele für die idealen Wege, die ich suche. Typisches A * Zeug:
Meine Frage ist: Ist ein Navigationsnetz auf ein kachelbasiertes RTS anwendbar? Ich habe nur Navigationskarten gesehen, die in Spielen verwendet wurden, in denen sich Einheiten frei bewegen und nicht an ein Raster von Kacheln gebunden sind. Wie würde das Navigationsnetz auf dieser bestimmten Karte aussehen? Ein Beispielbild wäre ausgezeichnet.
path-finding
rts
navmesh
mario_sunny
quelle
quelle
Antworten:
Ja, Navigationsnetze gelten weiterhin für kachelbasierte Spiele. Sie würden jedoch hauptsächlich als Optimierung verwendet. Zum Beispiel habe ich unten links in Ihrem Bild ein Navigationsnetz konvertiert:
In diesem Fall wäre jedes grüne Quadrat ein Navigationsknoten. Wie Sie sehen, reduziert dies die Anzahl der Knoten, die A * verarbeiten muss, drastisch. Einheiten können dann einfach zur Mitte jedes dieser Knoten wechseln.
Die Erzeugung dieser Knoten ist ein anderes Problem. Die Entscheidung, wie die Knoten gebildet werden sollen, kann komplex sein. Auf der Website gibt es einige Fragen, auf denen Sie einige Ideen finden, wie Sie dies implementieren möchten:
Unterteilen eines Polygons in Felder unterschiedlicher Größe
Identifizieren von Quad-Mustern in einem zweidimensionalen Array
/programming/20220215/minimum-number-of-rectangles-in-shape-made-from-rectangles
Dieses Navigationsnetz kann im Wesentlichen auch als "First Pass" -Pfadfindung verwendet werden. Wenn ein Pfad durch das Navigationsnetz gefunden wird, wissen Sie, dass ein Pfad vorhanden ist. Dies ist ein schnellerer Test, um festzustellen, ob zwei Punkte verbunden sind.
quelle