Pathfinding
Übersicht

girglBetreff: Pathfinding |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Servus,kann mir bitte jemand kurz mit eigenen Worten erklären wie das so mit Pathfinding is.
Man braucht dafür irgendwelche Knoten an denen sich die Figur orientiert oder so ![]() |
||
![]() |
sidolin |
![]() Antworten mit Zitat ![]() |
---|---|---|
-> nimm ein objekt und lasse es auf eine xyz koordinate schauen und lass es losbewegen
-> wenn es da angekommen ist schaut es wieder auf ne andere xyz koordinate und wieder losbewegen lassen -> und so weiter und so weiter ... |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
das ist mehr oder weniger blödsinn, was sidolin gesagt hat...
blitzbase-tutorial ist eigentlich das einfachste was es gibt... |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
girgl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja,aber den code will ich mir net unbedingt durchschaun,weil ich ihn auch nich wirklich versteh.
Kann vielleicht jemand sagen,wie die einzelnen schritte aussehen,also was ich zuerst berechnen muss usw. ? |
||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also, A* funktioniert soviel ich weiß in etwa so:
Du fängst an einem Punkt (Startpunkt) an. Für jedes Nachbarfeld (ob diagonal auch kannst du dir aussuchen), das begehbar ist, berechnest du: 1. Die Kosten vom Startfeld an, d.h. diese Kosten vom Feld dessen Nachbarn du grade berechnest + Kosten dieses Feldes (normal 1). Also z.B. wenn du grad beim Startfeld bist dessen Kosten vom Startfeld an sind natürlich 0, da es das Startfeld ist. Dazu addierst du dann z.B. 1 und speicherst es für das Feld. 2. Die Kosten von diesem Feld bis zum Ziel. Da du die natürlich noch nicht wissen kannst, musst du eine Schätz - Funktion schreiben. Das kann z.B. einfach die Anzahl der Felder zwischen diesem Feld und dem Zielfeld sein, das erzielt schon ganz gute Ergebnisse. 3. Für alle Felder addierst du diese beiden Werte, und schaust dann nach, welches (noch nicht getestete) Feld den kleinsten Wert besitzt. Nun machst du die gleiche Prozedur (Nachbarfelder checken) für dieses Feld, usw. Ausserdem musst du für jedes Feld speichern, von wo du dieses Feld gecheckt hast. Wenn du ein Feld checkst, das schon von einer anderen Seite gecheckt wurde, schaust du nach, ob die Kosten vom Startfeld bis hierhin damit kleiner sind als da schon steht, wenn ja, überschreibst du den Wert woher du auf das Feld kamst. Sobald du das Zielfeld erreicht hast, brichst du ab. Damit wirst du nicht unbedingt den kürzesten Weg gefunden haben, aber einen Weg. Das kommt ganz auf die Schätzfunktion an. Wenn ich einen Fehler gemacht habe, berichtigt mich bitte. Ich weiß dass ich das nicht sonderlich gut erkärt habe ![]() PS.: Das funktioniert natürlich nur mit Feldern so richtig, bei 3d musst du dir die Umgebung dann irgendwie einteilen. |
||
girgl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
schon mal danke für die antwort aber was meinst du mit "Kosten" ? | ||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ähm, ich habs ein bisschen ungenau beschrieben, es gibt
1. Die Bewegungskosten für ein Feld. Die legst du schon im voraus fest, meistens werden sie 1 oder so sein. Damit kannst du kontrollieren, welche Felder eher begangen werden. 2. Die Kosten vom Startfeld bis zum jeweiligen Feld. Die sind einfach (Kosten vom Startfeld bis zum vorherigen Feld) + Bewegungskosten des Feldes. und 3. Die Kosten vom jeweiligen Feld bis zum Zielfeld. Da du sie natürlich nicht kennst, musst du sie schätzen. |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: ja,aber den code will ich mir net unbedingt durchschaun,weil ich ihn auch nich wirklich versteh.
Kann vielleicht jemand sagen,wie die einzelnen schritte aussehen,also was ich zuerst berechnen muss usw. ? Du hast dir das Tutorial nicht durchgelesen - es hat gar KEINEN code - ist somit universell - ein BB-Beispiel am Ende ist nur Bonus - der Pathfinding-Kern hat nur 100 Zeilen Übrigens ist Tutorial eher sowas wie Schritt-für-schritt-anleitung - sogar mit Bildern... |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi!
Ich stand vor ca. 1 Jahr vor diesem Problem. Ich habe mir damals auch einige Tutorials angeschaut. Es gibt darüber einige Tutorials, aber kein einziges davon ist wirklich ausreichend hilfreich für jemanden, der damit erst anfängt. Man muß schon 2-3 Tutorials sehr genau durchlesen und aus allen die Stellen verinnerlichen, die darin besonders gut erklärt werden. Ich habe nachdem ich es mit ziemlich viel Mühe gut verstanden habe wie das A* Pathfinding funktioniert selber einen guten A* Pathfinding Code geschrieben. Zeile für Zeile alleine. Das ist der einzig richtige Weg den du auch gehen solltest. Es ist nachhinein gar nicht so kompliziert, aber einfach ist es auch nicht. Die Grundlagen zu verstehen geht schnell, aber um das alles vernünftig zu programmieren kostet schon einige Tage oder gar eine Woche. Das schaffst du nur, wenn du bereit bist dafür die nötige Zeit und Mühe zu nehmen. Da ich das schon vor längerer Zeit gemacht habe erinnere ich mich jetzt nicht mehr gut daran. Ich müßte mich da wieder hinenfinden und die Zeit (und Lust) dazu habe ich nicht. Hier sind paar Links: http://www.ccg.leeds.ac.uk/james/aStar http://www.policyalmanac.org/g...torial.htm http://www-cs-students.stanfor...html#paths http://www.geocities.com/jheyesjones/astar.html http://ai-depot.com/GameAI/Design.html http://www.iicm.edu/greif/images/node1.html |
||
girgl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@TheShadow
Das Tutorial mit den Bildern hab ich bis dato noch garnet gesehen gehabt,nur das was es dazu zum download gab @omenaton heissen dank,werd mir das mal genauer anschaun |
||
![]() |
adba |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Ich hab eine Pathfinding rutiene in BB geschrieben ist allerdings schon gut 2 jahre her. dementsprechen chaotisch habe ich damals auch programmiert ![]() du kannst dir das programm jedoch mal runterladen und anschauen aber es zu verstehen ist wohl nicht möglich.. (ich selbst verstehe nicht mehr alles ![]() Link: http://mypage.bluewin.ch/Baade...rldv01.zip |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group