Hi, da bin ich mal wieder^^
Ich hab ein problem,
ich hab eine map (sicht von oben) in dieser map sind weg-rechtecke, die mit anderen weg-rechtecke verbunden sind (verbunden = ds_list_create() <- dort stecken die ids der verbundenen rechtecke)
So, der Bot sucht sich nun ein ziel rechteck aus und soll sich dann von den jetzigen weg-rechteck bis zum Ziel fortbewegen.
Also von ein rechteck zum anderen, bis er endlich am ziel ist, dabei soll er auch eine kleine abweichung haben (also nicht immer den directen weg nehmen).
Meine Frage ist nun: Wie mache ich das? XD
Momentan hab ich es so, das der Bot nachschaut welche partner der weg_rechteck hat auf dem der Bot gerade steht und die besten zwei zur auswahl nimmt die näher am Ziel-rechteck sind. Dann werden die nurnoch die zwei per random ausgesucht und dann wird dort hingelaufen. Leider ist dies dumm, da er sich öfters in einer sackgasse begiebt, er sollte daher schon vorraus den weg kennen und den entlang gehen.
Eine kleines Bild wie die fortbewegung sein soll hab ich auch noch angefertigt, und die aktuelle gm6 steht auch im anhang.
Kleine anmerkung: Die Idee hab ich von den Zbots // CSSBots Navigation.
Kleiner ausschnit aus aktuellen code:
Alles anzeigen
way_next: eine ds_map wo "distance zum Ziel-rechteck" der key ist und value = id des weg_rechteckes
way_nextid: dort wird der id gespeichert zu welchen rechteck er sich jetzt bewegen soll
way_colli: Das rechteck wo der Bot gerade steht
-----------------
Man siehe da, der code ist totale scheiße^^.
Daher soll erst ein path entstehen dann den ablaufen, am besten wers wenn man die ids der rechtecke die man entlangläuft
in einer ds_list abspeichert, aber wie man den path richtig erstellt hab ich keine ahnung^^.
so ich glaub das wars erstmal was ich zu sagen hab^^
Achja noch kleine Steuerung erklärung:
F2: way file speichern
F3: way file laden (ich hab schon eine drin die könnt ihr zum testen benutzen)
Linke Maustaste: ein rechteck erstellen
Rechte Maus: wieder löschen^^
Q: ein rechteck selektieren
W: eine Verbindung machen zwischen den selektierten und den rechteck wo die maus gerade ist
E: Ein dummen Bot erstellen!!!
Ich hoffe ihr habt meine frage verstanden -.-
Edit:
zum bild:
der der Bot soll so ähnlich ein path erstellen!
Auf mein Bild sind 2 Pathe zu sehen, also natürlich soll nur 1 genommen werden, aber der bot soll ebend nicht immer den "besten" weg nehmen, sondern auch mal kleinen umweg gehen.
Edit:
Bugfixes am text XD
Ich hab ein problem,
ich hab eine map (sicht von oben) in dieser map sind weg-rechtecke, die mit anderen weg-rechtecke verbunden sind (verbunden = ds_list_create() <- dort stecken die ids der verbundenen rechtecke)
So, der Bot sucht sich nun ein ziel rechteck aus und soll sich dann von den jetzigen weg-rechteck bis zum Ziel fortbewegen.
Also von ein rechteck zum anderen, bis er endlich am ziel ist, dabei soll er auch eine kleine abweichung haben (also nicht immer den directen weg nehmen).
Meine Frage ist nun: Wie mache ich das? XD
Momentan hab ich es so, das der Bot nachschaut welche partner der weg_rechteck hat auf dem der Bot gerade steht und die besten zwei zur auswahl nimmt die näher am Ziel-rechteck sind. Dann werden die nurnoch die zwei per random ausgesucht und dann wird dort hingelaufen. Leider ist dies dumm, da er sich öfters in einer sackgasse begiebt, er sollte daher schon vorraus den weg kennen und den entlang gehen.
Eine kleines Bild wie die fortbewegung sein soll hab ich auch noch angefertigt, und die aktuelle gm6 steht auch im anhang.
Kleine anmerkung: Die Idee hab ich von den Zbots // CSSBots Navigation.
Kleiner ausschnit aus aktuellen code:
GML-Quellcode
- best_next = ds_map_find_first(way_next)
- if best_next = way_colli
- best_next = ds_map_find_next(way_next,best_next)
- if random(2) = 1
- {
- way_nextid = ds_map_find_value(way_next,best_next)
- }
- else
- {
- way_nextid = ds_map_find_value(way_next,ds_map_find_next(way_next,best_next))
- if way_nextid = way_colli
- way_nextid = ds_map_find_next(way_next,way_nextid)
- }
way_next: eine ds_map wo "distance zum Ziel-rechteck" der key ist und value = id des weg_rechteckes
way_nextid: dort wird der id gespeichert zu welchen rechteck er sich jetzt bewegen soll
way_colli: Das rechteck wo der Bot gerade steht
-----------------
Man siehe da, der code ist totale scheiße^^.
Daher soll erst ein path entstehen dann den ablaufen, am besten wers wenn man die ids der rechtecke die man entlangläuft
in einer ds_list abspeichert, aber wie man den path richtig erstellt hab ich keine ahnung^^.
so ich glaub das wars erstmal was ich zu sagen hab^^
Achja noch kleine Steuerung erklärung:
F2: way file speichern
F3: way file laden (ich hab schon eine drin die könnt ihr zum testen benutzen)
Linke Maustaste: ein rechteck erstellen
Rechte Maus: wieder löschen^^
Q: ein rechteck selektieren
W: eine Verbindung machen zwischen den selektierten und den rechteck wo die maus gerade ist
E: Ein dummen Bot erstellen!!!
Ich hoffe ihr habt meine frage verstanden -.-
Edit:
zum bild:
der der Bot soll so ähnlich ein path erstellen!
Auf mein Bild sind 2 Pathe zu sehen, also natürlich soll nur 1 genommen werden, aber der bot soll ebend nicht immer den "besten" weg nehmen, sondern auch mal kleinen umweg gehen.
Edit:
Bugfixes am text XD
*gähn*
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von The_Shadow3 ()