AStar Pathfinding Lab

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
Travis
Beiträge: 35
Registriert: 09.03.2010 19:21

AStar Pathfinding Lab

Beitrag von Travis »

Dank eines guten Tutorials über den A* Algorithmus und der Hilfe einiger User bezüglich der PB-Syntax kann ich hier nun mein erstes kleines Tool vorstellen. Es handelt sich um einen Experimentierkasten zum Thema Pathfinding. Es beinhaltet eine editierbare Testumgebung und bietet die Möglichkeit verschiedene Berechnungsmethoden und mögliche Wegrichtungen 'on-the-fly' auszuprobieren. :)

Screenshot, Executable und Source gibt's hier ---> http://travis.bplaced.net/Tools.html <----
Man kann alles sagen, man muss es nur vernünftig begründen können.
Ich hasse WASD-Steuerung | Ohne Pix saug ich nix | www.travis.bplaced.net
Benutzeravatar
dige
Beiträge: 1239
Registriert: 08.09.2004 08:53

Re: AStar Pathfinding Lab

Beitrag von dige »

Stark :allright: scheint auch gut zu funktionieren.
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: AStar Pathfinding Lab

Beitrag von STARGÅTE »

Nette sache :allright: , nur wird man ihn wahrscheinlich nicht in Strategiespielen einsetzen können,
weil deine Procedure FindPath(), was ja vermutlich der Kern der sache ist, bei großen Karten (200+ Felder) und "unglückliche" Wegen zu langsam wird und schon mal 200ms dauert.
Hängt natürlich von der Methode ab, die man wählt, manche schaffens auch dort unter 10ms zu bleiben.

Was ich damit sagen will ist:
Wenn du wirklich nur ein Tool erstellen wolltest, zum darstellen der verschiedenen Methoden die es gibt einen Weg zu berechnen, dann ist dir das sehr gut gelungen :allright:
Unter Belastung wird man jedoch die Prozedur nicht nutzen können.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Travis
Beiträge: 35
Registriert: 09.03.2010 19:21

Re: AStar Pathfinding Lab

Beitrag von Travis »

thx. :) Ja, das mit der Performance wird sicherlich noch interessant. Es muss halt an die Bedürfnisse angepasst werden. Man muss die Pfade auch nicht ständig neu berechnen. Evtl nur wenn sich Pfade kreuzen, oder Hindernisse auftauchen. Meine Testumgebung schluckt aber auch viel Zeit, wenn viel gezeichnet wird. Aber das wird schon.. 8)
Man kann alles sagen, man muss es nur vernünftig begründen können.
Ich hasse WASD-Steuerung | Ohne Pix saug ich nix | www.travis.bplaced.net
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: AStar Pathfinding Lab

Beitrag von STARGÅTE »

jo das zeichnen habe ich ja herausgenommen, habe wirklich nur die Zeit um deine FindPath() gemessen.

Für Einsatzzwecke würde ich noch folgendes vorschlagen:
  • Threads benutzen, sodass der Weg "in ruhe" im Hintergrund berechnet wird, und das Hauptprogramm nicht gestört wird, und wenn der Weg gefunden ist, kann ihn das Hauptprogramm nutzen.
    Stichworte: ThreadSafe, und Thread-Feste Prozeduren, Mutex, usw.
  • Die Weg-Bäume von beiden Seiten (Start und Ziel) wachsen lassen. Zur zeit wächst dein Baum (egal welche Methode) ja immer vom Start zum Ziel. Würde nun aber auch vom Ziel ein Baum wachsen und der Weg dann der erste kontackt beider Bäume sein, wäre die Berechung vorallem bei großen Karten schneller.
Wo ich immer Probleme bei meinen Projekten hatte, war, wie ich bewegliche Hindernisse (Einheiten) dort einfließen lassen soll.
Wie du ja richtig sagtest, muss man eigentlich nur ein mal den Weg berechnen lassen. Das funktioniert aber nur solange wie die Karte statisch ist. Klar sind einheiten nicht so groß, als dass sie die Weg so unglaublich doll ändern würden.
Aber es gibt ja auch u.u. so eine Art Eingänge, und wenn dann dort mehrere Einheiten hinfahren, während ich meinen Weg ablaufe, dann kommts zur Kollision, und die Einheiten drängeln sich "dumm" aneinander vorbei.

Bin auf weitere Ergebnisse sehr gespannt :lurk:
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten