Verfasst: 26.08.2008 09:19
Hm, sehr theoretisch, leider hab ich von Mathe echt wenig Ahnung.
Ich hab mir mal nen eigenen Pathfinding-Algo ausgedacht. Hatte aber eine große Schwäche. Der war gedacht für Tileengines nur leider war eine Gewichtung der Tiles dann sehr schwierig zu implementieren, was den Algo dann für meine damaligen Zwecke nutzlos gemacht hat.
Der Algo funktioniert grundlegend anders als A*, er schaut sich nicht jedes Tile einzeln an. Die Idee war es einen Algo zu machen, der mehr wie ein menschliches Gehirn vorgeht, also mehr aufs Ziel fixiert. Also man hat einen Startpunkt und einen Endpunkt, der Algo ermittelt dann alle Knotenpunkte des Pfades indem er eine direkte Linie vom Startpunkt zum Endpunkt zeichnet. Befindet sich ein Hindernis auf der Linie wird am Hindernis ein temporärer Knoten erzeugt und Linien entlang dem Hindernis gezeichnet. Der Pfad also aufgesplittet, bis zum Ende des Hindernises. Da wird geprüft ob eine direkte Linie zwischen dem vorherigen Knoten (Startpunkt in diesem Fall) und dem neuen Knoten besteht, wenn ja wird der temporäre Knoten entfernt. Und da beginnt es dann wieder von vorne, Line zum Endpunkt, etc. Am Ende wird der Pfad mit dem kürzesten Weg rausgesucht.
Leider hab ich die Konzeptzeichnungen nicht mehr. Hatte mir Teilmaps zum Test auf Papier gezeichnet, damals in der Schule, und dann manuell die Pfade ermittelt. Hat immer funktioniert. Der Vorteil zu A* ist, das der Algo Wasserdicht ist, der findet den Weg immer und das sollte auch ziemlich performant gehen. Nachteil ist halt das Gewichtung der Tiles sehr umständlich zu implementieren ist.
Ich hab mir mal nen eigenen Pathfinding-Algo ausgedacht. Hatte aber eine große Schwäche. Der war gedacht für Tileengines nur leider war eine Gewichtung der Tiles dann sehr schwierig zu implementieren, was den Algo dann für meine damaligen Zwecke nutzlos gemacht hat.
Der Algo funktioniert grundlegend anders als A*, er schaut sich nicht jedes Tile einzeln an. Die Idee war es einen Algo zu machen, der mehr wie ein menschliches Gehirn vorgeht, also mehr aufs Ziel fixiert. Also man hat einen Startpunkt und einen Endpunkt, der Algo ermittelt dann alle Knotenpunkte des Pfades indem er eine direkte Linie vom Startpunkt zum Endpunkt zeichnet. Befindet sich ein Hindernis auf der Linie wird am Hindernis ein temporärer Knoten erzeugt und Linien entlang dem Hindernis gezeichnet. Der Pfad also aufgesplittet, bis zum Ende des Hindernises. Da wird geprüft ob eine direkte Linie zwischen dem vorherigen Knoten (Startpunkt in diesem Fall) und dem neuen Knoten besteht, wenn ja wird der temporäre Knoten entfernt. Und da beginnt es dann wieder von vorne, Line zum Endpunkt, etc. Am Ende wird der Pfad mit dem kürzesten Weg rausgesucht.
Leider hab ich die Konzeptzeichnungen nicht mehr. Hatte mir Teilmaps zum Test auf Papier gezeichnet, damals in der Schule, und dann manuell die Pfade ermittelt. Hat immer funktioniert. Der Vorteil zu A* ist, das der Algo Wasserdicht ist, der findet den Weg immer und das sollte auch ziemlich performant gehen. Nachteil ist halt das Gewichtung der Tiles sehr umständlich zu implementieren ist.