Ich arbeite daran, die Wegfindung für die Feinde meines Spiels zu verbessern. Im Moment bewegen sie sich einfach ständig auf die exakte Position des Spielers zu, indem sie den Winkel zwischen sich und den Spielern berechnen und sich in diese Richtung bewegen. Ich habe auch einen Flock-Algorithmus, der verhindert, dass sich die Feinde übereinander stapeln, sodass sie sich zu Gruppen zusammenschließen, anstatt sich gegenseitig zu durchschneiden.
Jetzt, da ich eine kachelbasierte Karte hinzugefügt habe, müssen die Feinde jedoch auch in der Lage sein, beispielsweise um Hindernisse und Mauern herumzulaufen. Anfangs habe ich versucht, "nicht begehbaren" Kacheln einen Trennungswert hinzuzufügen, damit der Beflockungsalgorithmus die Wände und Hindernisse als Objekte ansieht, von denen man sich entfernen kann. Ich muss noch herausfinden, ob dies machbar ist oder nicht, da mein erster Test zeigte, dass die Feinde auf eine unsichtbare "Wand" treffen, an der es keine nicht begehbaren Kacheln gibt.
Ich habe mich gefragt, ob es möglicherweise zu leistungsintensiv ist, einen Pfad zum Spieler mit A * zu berechnen und dann den Flock-Algorithmus zu verwenden, um ein Verklumpen zu verhindern. Ursprünglich sollte mein Spiel ein wellenbasierter Shooter sein, aber ich habe mich dafür entschieden, es in Anlehnung an die Hotline Miami levelbasiert zu machen. Daher werde ich wahrscheinlich weniger Feinde haben, mit einer gelegentlichen Horde, und einfach machen sie stärker.
Ist das eine praktikable Lösung? Ich benutze Java mit Slick2D als meine Spiel-Engine. Oder gibt es eine bessere Lösung / einen besseren Algorithmus, der beide Probleme angeht?