Ich habe einen wegweisenden Boss-Feind, der den Spieler mit dem A * -Algorithmus sucht. Es ist eine ziemlich komplexe Umgebung, und ich mache es in Flash, so dass die Suche etwas langsam werden kann, wenn über große Entfernungen gesucht wird. Wenn der Player stationär wäre, könnte ich nur einmal suchen, aber im Moment suche ich jeden Frame. Das dauert lange genug, dass meine Framerate leidet.
Was ist die übliche Lösung dafür? Gibt es eine Möglichkeit, A * neu zu "planen", ohne die gesamte Suche zu wiederholen? Sollte ich nur etwas seltener suchen (jede halbe Sekunde oder Sekunde) und akzeptieren, dass der Pfad etwas ungenau ist?
quelle
Sie können die Näherungserkennung verwenden, um den Algorithmus alle paar Frames auszuführen, wenn die Entfernung sehr groß ist (da sich der Zielpfad in den meisten Fällen bei großen Entfernungen nicht drastisch von Frame zu Frame ändert). Zum Beispiel:
Dies setzt voraus, dass es einen Abstand gibt, in dem A * für jeden Frame eine Leistung aufweist, die noch akzeptabel ist. Kurz gesagt, ich würde mich für Ihre zweite Option entscheiden. Besonders wenn das, was Sie haben, funktioniert, würde ich es vermeiden, etwas anderes erneut zu implementieren, wenn ich nur reduzieren kann, was gut funktioniert. Das Fazit ist, dass Sie es ausprobieren müssen, um zu sehen, ob es für Ihr Spiel funktioniert.
quelle
Sie beantworten Ihre genaue Frage nicht wirklich, aber ... wenn Sie bereit sind zu "betrügen", können Sie den Spieler dazu bringen, "Brotkrumen" zu verlassen und den Chef ihnen folgen zu lassen. Wenn sich der Breadcrumbs-Pfad kreuzt, folgen Sie dem neuesten (dies vermeidet, dass der Boss Schleifen und andere Pfade vermeidet, die möglicherweise zu lang sind, ganz zu schweigen davon, dass er nicht dem genauen Pfad des Spielers folgt).
Dies würde gut funktionieren, wenn der Chef eine Art Tier mit einem guten Geruchssinn ist. Dies würde sehr ähnlich funktionieren, als würde man dem Geruch des Spielers folgen :)
quelle
Ihr Fall ist so ziemlich das, wofür HPA * erfunden wurde. Wenn es jedoch wie ein Overkill erscheint, würde ich eher denken, dass die Wegfindung jede halbe Sekunde oder so ziemlich gut funktionieren sollte.
quelle
Wenn es sich um eine statische Umgebung handelt, können Sie den kürzesten Pfad aller Paare vorberechnen.
quelle
Ich habe ein Spiel für einen 48-Spiele-Wettbewerb erstellt, bei dem ein A * -Zeichen dem Spieler um ein Level folgt. Da meine A * -Implementierung langsam war (sie konnte nicht jeden Frame ausführen), habe ich das Intervall auf drei Sekunden verzögert. Dies hatte das unbeabsichtigte Ergebnis, dass der Spieler die KI für einige Momente "austricksen" konnte. Es hat das Spiel tatsächlich mehr Spaß gemacht.
Später habe ich die Leistung der A * -Implementierung verbessert und versucht, sie auf jedem Frame auszuführen. Das Spiel machte keinen Spaß mehr, weil der Feind den Spieler immer perfekt suchte.
Das war unerwartet und eine gute Lernerfahrung.
quelle
Wenn Sie A * nicht unbedingt verwenden möchten (oder müssen), können Sie auch einen Blick auf das Lenkverhalten werfen . Da es keine vollständige Pfadplanung pro Frame gibt, sollte die Verarbeitung wesentlich einfacher sein.
quelle