boah, um die uhrzeit hab ich keinen nerv mir das jetzt alles durchzulesen, vorallem nach deinem umleitungsschild wollte ich eigentlich den thread wieder zu machen, aber was solls, schreibe ich mal eine methode, die evntl noch nich genannt wurde.
an für sich ist es ja kein problem die terrain ID auszulesen, aber was machen, wenn das hinderniss im UPPER LAYER steckt?
dieser frage habe ich mich kürzlich mal gewidmet, und kam zu dem entschluss alle bode tiles auch als nicht passierbar und mit entsprechender ID nochmals auf dem chipset zu platzieren und sie unter den nicht passierbaren dingen zu positionieren. gut, das ging ja so weit auch recht gut, nur umständlich.
da kam mir eine zweite idee, ich setze alle hindernisse im upper layer als events, sprich der upper layer wäre damit hindernis los.
so, jetzt sag man natürlich, das ist doch genau das gleiche, aber weit gefehlt.
WARNUNG: bei dieser methode werden seeeehr viele variabeln drauf gehen.
so, was habe ich eigentlich vor?
ich versuche alle meine hinderniss events in varis zu speichern. d.h. wenn die vari auf 1 steht = hinderniss, wenn auf 0 = passierbar.
dazu erstelle ich mir ein event auf autostart, das bei map betreten aufgerufen wird und mir alle events bis zu einem abbruch event callt
(ich erkläre nicht wie man das macht, sondern nur die methode. ich setze einen gewisse erfahrung einfach mal vorraus)
das abbruch event soll verhindern, das der maker ins leere greift und ein
nicht vorhandenes event aufrfen will, das endet sonst in einem bösen fehler.
jedes event auf der karte muss nun also die seite 1 zum setzen frei haben. gecallt gibt es dann die koords an, und die werden dann für die formel benutz,
die mir berechnet, in welcher vari ID ich speichern möchte.
v = s + ( y * xmax + x)
v = die vari ID
s= der startwert, also die niedrigeste vari ID in der ich speichern möchte
y = y koord des events
xmax = die maximale mapbreite, die ich mit dieser formel berechnen möchte
x = x koord des events
so, nun haben wir also praktisch alle hinderniss events in einer rekonstruirbaren formel gespeichert, und können nun jederzeit wieder darauf zugreifen.
zum pathfinding im allgemeinen kann ich nur den A* algorythmus empfehlen
http://de.wikipedia.org/wiki/A*-Algorithmus
ich wollte euch nur eine andere methode zur feststellung der hindernisse auf der map bieten. ich denke das ist so ziemlich die einfachste methode, und mit dem 500000 vari patch von iwem is das auch sicherlich kein problem xD
ich werde mich auch demnächst nochmal intensiver mit dem A* befassen müssen, dann kann ich genaueres sagen, das was ich bis jetzt beschrieben habe ist graue theorie, also nichts handfestes was ich ausprobiert hätte.
ich gebe keine garantie darauf, das der A* aufm maker umsetzbar ist xD
mfg
EDIT:
ich weiß, ich habe jetzt nicht direkt zu pathfinding beigetragen, aber ich finde das auch ein wichtiges thema.
was mir auch eingefallen ist, das es ja auch bewegliche hindernisse gibt. da würde die "ich blocke im down layer" - methode auch nicht funktionieren, von daher könnte man auch noch eine kleinere liste für die beweglichen events erstellen, und die dann vor jedem pathfinding erneuern lassen. nur eine idee xD