Dienstag, 26. März 2013

Wherigo debuggen, auch ohne Simulator

Voraussetzung: Einen Wherigo debuggen

Abbildung 1: Beim Loggen wird sowohl die print-Ausgabe für den Simulator als auch das Logbuch für den GPSr-Betrieb befüllt.
Im ersten Teil des Debug-Tutorial ging es um die Ausgabe mittels print, die nur im Urwigo-Simulator sichtbar ist. Was aber, wenn bestimmte Fehler / zu untersuchende Situationen erst draußen auf dem Oregon vorzufinden sind. Abhilfe gibt es duch ein Item names Logbuch (! Sowohl Name als auch Identifier sollte "Logbuch" lauten).
Da jeder Logeintrag zwei Arbeitsschritte nach sich zieht, lohnt es sich hier eine Methode zu spendieren, die die Arbeit erledigt. Hat auch den Vorteil, dass Erweiterungen an einer einzigen Stelle vorgenommen werden müssen. So kann man kurz vor Veröffentlichung die Zeilen 2 bis 4 auskommentieren und es werden nirgens Logausgaben geschrieben.

Abbildung 2: Der Aufruf im Spiel geht ganz einfach mittels eines Lua User Code Blockes
Die beste Methoden nützt nichts, wenn sie nicht aufgerufen wird. Dies geht ganz einfach wie man in Abb. 2 erkennt. Man kann aber auch in bestehendem lua Code (bei komplexen Projekten besteht das Spiel fast nur noch aus Direktprogrammierung in lua) die log-Zeile einfügen.

Abbildung 3: So siehts aus: In der Abteilung "Gegenstände" ist unser Logbuch zu finden, indem es für jeden Eintrag eine neue Zeile gibt.
Im Spiel haben wir im Inventar bzw. bei den Gegenständen unser Logbuch. Für jedes Ereignis, dass wir mit einer log-Zeile versehen, wird eine neue Zeile einfügt. Dies bewirken die eckigen Klammern um den Zeilenbruch Zeile 3 nach 4. Anders zu der print Ausgabe wird hier aber leserlicher die neueste Zeile unten eingefügt. Wer es andersherum mag, schreibt value .. Logbuch.Description
!Vorsicht mit zu vielen Logausgaben: Das Oregon wird irgendwann ziemlich langsam, wenn zu vielen Zeilen im Logbuch enthalten sind. Da hift nur eins: Oben wieder wegnehmen. string.sub ist hier das Stichwort nach dem man suchen muss. So gibt string.sub(Logbuch.Description, -50) die letzten 50 Zeichen zurück. Wer es ganz genau haben möchte ermittelt mittels string.find die passende Stellen des Zeilenumbruches, aber dafür sollte man Grundkenntnisse in Pattern Matching besitzen.

Keine Kommentare:

Kommentar veröffentlichen