Absender: Timo Sandmann
Datum: Mi, 27.08.2008 21:06:12
In-reply-to:
<000801c9086c$4bf9ebd0$0200a8c0@mexpnew>
References:
<000801c9086c$4bf9ebd0$0200a8c0@mexpnew>
Hallo Frank, Am 27.08.2008 um 19:42 schrieb Frank Menzel:
Hallo Timo, Lotteriespiel ist es eigentlich nicht: Der Bot kann ja auch sowieso nicht einen Punkt sofort hinter einem Hindernis anfahren, da muss auchimmer noch genügend Abstand dazwischen sein. Und im Sim klappt dies auchrecht gut.
ja, aber das meinte ich nicht.Mal angenommen kurz bevor die Wartezeit für das Observer-Verhalten abgelaufen ist, beginnt gerade ein Map-Update, weil der Bot seit dem letzten Map-Update die nötige Strecke zurückgelegt hat. Also fängt der Map-Update-Thread jetzt mit seiner Arbeit an, die sagen wir mal 300 ms dauert. Nach 10 ms wird er unterbrochen, weil die anderen Bot- Verhalten usw. wieder drankommen sollen, hier stellt jetzt das Observer-Verhalten fest, dass seine Wartezeit um ist und wird aktiv, greift also auf die Map zu. Da die gerade aktualisiert wird, ist sie gesperrt, d.h. alle Bot-Verhalten werden für 290 ms blockiert, bis das Map-Update (s.o.) fertig ist. Fährt der Bot in dieser Zeit auf einen Abgrund zu, reagiert das Notfallverhalten nicht (ist ja blockiert) und der Bot stürzt vermutlich ab. Dadurch, dass das Verhalten seltener ausgeführt wird (z.B. alle 700 ms), ist es aber noch lange nicht synchronisiert mit den anderen Map- Aktivitäten. Darum der Vorschlag in der andere Mail.
Was Du hier meinst, ist mir nicht recht klar:" Was mir beim Testen im Sim aufgefallen ist: Wenn der Bot bis zur Wandrechts (oder links) vorgedrungen ist (die aber noch nicht als Hindernis in der Map steht), crasht er irgendwann seitlich in die Wand und hängt dort fest. Das ist eigentlich bei allen Welten im Sim so. Dadurch kommt es leider nie zu dem Fall, dass das Verhalten den Bot zur anderen Seite der schon abgefahrenen Fläche schickt, was aber ja eigentlich einer der interessantesten Fälle ist." Der Bot muss Hindernisse in der Map aktualisieren, sonst geht's nicht. Mit Hindernis-Aktualisierung und dem Standardparcours klappt dies bei mir sehr gut. Er fährt erst hoch bis zur Lampe, nach rechts und wieder runter. Nach ein paar Bahnen kommt er an der Mittelwand an und fährt dann zur Bahn links neben der ersten (die hochgefahren wurde zur Lampe)...
Ja und jetzt lass es mal weiterlaufen, dann bleibt der Bot in der Ecke oben links (von der unteren Welt-Hälfte) stehen und tut nichts mehr. Oder beim Parcours "testbots_home.xml", da passieren ganz komische Sachen, erst fährt er Bot recht oft über dieselbe Bahn und anschließend bleibt er einfach stehen. Probiere mal den Parcours "angle-word-lamps.xml" und warte, bis der Bot an der rechten Außenwand angekommen ist, dann wird vielleicht klar, was ich meine. Ich habe mal einen Screenshot des Crashs und die dazugehörige Map an die Mail angehängt (falls die Liste Grafiken zulässt? Mal schauen...).
Also der echte Bot macht bei mir recht komische Sachen, die ich noch nicht so genau einordnen kann. Ich denke aber, dass das Ganze so auch nicht richtig funktionieren kann aus dem im ersten Absatz angesprochenem Grund. Ob das Verhalten jetzt aber (nur) daran liegt, weiß ich noch nicht.
Gruß Timo