Samstag, 15. Dezember 2012

I18n - Einen Wherigo in verschiedenen Sprachen anbieten

This is the german version of the article. It is also available in english

Voraussetzung: "Der Einstieg in lua“
"Internationalisierung bedeutet in der Informatik beziehungsweise in der Softwareentwicklung, ein Programm so zu gestalten, dass es leicht (ohne den Quellcode ändern zu müssen) an andere Sprachen und Kulturen angepasst werden kann."
So startet der aktuelle Wikipedia-Artikel das Thema Internationalisierung.
In diesem Tutorial erfährst du wie man unter Nutzung des ResourceStrings-Ansatzes dein Cartrigde in mehreren Sprachen anbieten und dabei deinen eigentlichen Code vom Sprachproblem abkoppeln kannst.

Abbildung 1: Definition der Textausgaben in allen drei Sprachen
Wir beginnen mit der Definition einer Variablen language, die wir auch gleich als persistente Variable so ans Cartrigde anheften, dass es einen Save/Reload Vorgang übersteht.
Anschließend wird ein Array messages erzeugt indem die unterschiedlichen Textausgaben, sortiert nach Sprachen festgehalten werden.
Jetzt wird sich so mancher Entwickler fragen, warum speichert das messages-Array seine eingestellte Sprache nicht selbst sondern nutzt eine extra Variable. Der Grund hierzu liegt einzig in der Persistenzproblematik. Wir wollen ja auf keinen Fall das gesamte Array persistieren, denn an diesen Werten ändert sich zur Laufzeit nichts. Der einzig dynamische Teil ist die eingestellte Sprache, die nach dem Start z.B per Multiple-Choice ausgewählt werden kann. Um ein aufwendiges OnSave / OnRestore Prozedere zu verhindern, nutzen wir lieber den Workaround über die zweite Variable.
Für jede Sprache (in unserem Beispiel Deutsch, Englisch und Französich) wird ein Subarray wie in Zeile 5-7 definiert. Danach beginnt die eigentliche Stringdefinition.
Die Idee dabei ist, dass im Cartrigde an der Stelle wo für die Begrüßung des Spieler ein übersetzter String ausgegeben werden soll, der key hello verwendet wird und je nachdem welche Sprache eingestellt ist "Herzlich Willkommen", "Welcome" oder "Bienvenue" ausgegeben wird.
Bevor wir jedoch zum Auswerten des passenden String kommen, möchte ich noch auf ein paar Besonderheiten hinweisen. Aufmerksame Codestudenten werden bereits festgestellt haben, dass es für den key hi kein Wert für die englische Version definiert wurde. Wäre die Sprache auf en gesetzt, würde hier der Wert der defaultLanguage (siehe Zeile 4) gezogen. Wie man so etwas auflöst folgt weiter unten. In Zeile 13-18 stehen Beispiele für Verwendung von Platzhaltern, wenn z.B der Name des Spieler in den übersetzten String eingebaut werden soll.

Die Sprache ist aktuell auf Deutsch gestellt. Man kann aber bei Start des Cartrigdes durch eine einfache Multiple-Choice-Abfrage die Sprache wählbar machen und dann language auf en oder fr setzen.

Abbildung 2: Abfrage eines übersetzten Keys
Nach der Definition geht es zur Verwendung der ResourceStrings. Zeile 20 wählt aus dem messages-Array zunächst das für die Sprache passende Subarray (hier messages.de und daraus der Eintrag für unseren key. Wird diese Funktion mit dem key hello aufgerufen, so besitzt value den Wert von messages.de.hello also Herzlich Willkommen zum i18n Wherigo.
Was aber passiert, wenn die Sprache auf en eingestellt ist und der key hi ausgewählt wird. message.en.hi ist nämlich nicht definiert. Dieser Fall ist in Zeile 22-24 behandelt. Dort wird auf die defaultLanguage zurückgegriffen. Man sollte also darauf achten, dass für die defaultLanguage immer ein Wert definiert ist.
Im Idealfall definiert man immer alle Sprachen direkt, in der Praxis kann es aber vorkommen, dass man Erweiterungen (im Wherigo kommt eine Station hinzu und damit neue Sprachelemente) für Deutsch und Englisch direkt eintragen kann, für die spanische Version aber noch warten muss bis der passende Übersetzer (Der Austauschcacher aus Barcelona) Zeit hat die Strings zu vervollständigen.

Abbildung 3: Textausgabe mit Parametern
Bleibt noch die Sache mit den Parametern, z.B der Name des Cachers. Im definierten key können Platzhalter mit einer Zeichenkombi codiert werden. Es sollte eine Kombi sein, die man sonst nicht verwenden muss. Ich habe mich deswegen für #1# entschieden. Bei der Auflösung des ResourceStrings wird dieser Platzhalter mittels string.gsub durch den betreffenenden Wert ersetzt. Abb. 3 zeigt die überarbeitete getMessage Methode in der wir Platzhalter ersetzen können.
getMessage("helloWithName","Krolock") liefert für die deutsche Version "Hallo Krolock, wie geht es dir?"
Um die Anzahl der Parameter im String flexible zu halten, bedienen wir uns des variablen vararg Argumentes "...". Man kann die Funktion getMessage neben dem key mit keinen, einem oder mehreren weiteren Parametern aufrufen.
Beipspielaufrufe:
getMessage("hello")
getMessage("helloWithName","Krolock")
getMessage("openDoor","XYZ","A15N")

Mittels #arg werden die Anzahl der Argumente ermittelt, auf die dann mit arg[1], arg[2] usw zugegriffen wird

Abbildung 4: Aufrufbeispiel der Übersetzung
Bei mehreren Parametern muss aber auf die Reihenfolge achten, wie man an Zeile 16-18 erkennen kann. Für den key openDoor gibt es unterschiedliche Reihenfolgen in der deutschen und englischen Version
Abb. 4 zeigt uns wie man die Übersetzungen im Wherigo aufrufen und benutzen kann. Jeweils ein Beispiel für keinen, einen oder zwei Platzhalter.
Wie sich heute (10.03.14) erst gezeigt hat, zeigt der WhereYouGo-Player bei dem vararg Parameter ein etwas anderes Verhalten. Wenn die Methode getMessage ohne zweiten Parameter aufgerufen wird (also nur mit key) so ist arg kein leeres Array sondern nil. Um dem vorzubeugen fügen wir in Zeile 25 if arg ~= nil then ein, was wir in Zeile 29 mit end wieder schließen.

Eine Kleinigkeit fehlt noch, nämlich die strikte Trennung von Code und Übersetzung. Im Konzept der ResourceBundles trennt man diese Aspekte insofern, als dass für jede Sprache eine eigene Datei angelegt wird.
Man könnte also eine Datei messages_de.lua, messages_en.lua und messages_fr.lua erzeugen und diese dann mit require "messages_de" usw. einbetten. Software-Entwicklungsumgebungen wie eclipse oder Intellij IDEA bieten hier viel Unterstützung bei der Pflege der Übersetzungen.
Diese Trennung ist aber optional. Ihr könnt auch alles im lua-Teil des Urwigos direkt eingeben, wenn es nicht zu unübesichtlich wird.

Update 20.04.14: Da auch der PiGo-Player Probleme mit vararg zu haben scheint, schaut euch auch den Folgeartikel Sprachausgaben übersetzten ohne vararg an.

Donnerstag, 25. Oktober 2012

7 Zonen und das Oregon unmöglich! ... Oder doch?

Voraussetzung: "Mit lua alle Zonen des Wherigos erfassen“

Als Oregon Nutzer aber auch als Wherigo-Programmierer ist man bestimmt schon des Öfteren über das Problem gestolpert, dass die Garmin-Hardware einfach nicht mehr auf Höhe der Zeit und somit viel zu langsam ist. Recht deutlich wird dies, wenn in einem WIG recht viele Zonen gleichzeitig aktiv sein sollen. Im Geoclub liest man von maximal sieben Zonen, die das Oregon gerade noch so vertragen soll. Meine 300er Version funktionierte zwar auch noch mit 9 gleichzeitig aktiven Zonen, doch die Reaktionsfähigkeit inkrementierte in den Minutenbereich. Auf deutsch: Will man ne Zone, eine Person auswählen oder einfach nur den Bildschirmtext mit "OK" bestätigen muss man darauf gefasst sein, dass das Gerät erst nach 30 bis 60 Sekunden reagiert. Von Spielvergnügen ist da schon lange keine Rede mehr und die Gefahr eines Absturtzes steigt ebenso an.

Abbildung 1: Die Zonen nach Entfernung sortieren
Es muss also Abhilfe her. Die einfache Lösung lautet daher: Nie so viele Zonen gleichzeitig aktiv schalten.
Das ist natürlich meistens nicht so einfach möglich. Besonders bei dynamischen Spielen, wo der User selbst entscheiden kann, wo er hingehen möchte scheint dies erstmal unmöglich. Was aber möglich ist, dass nur die nächsten n (z.B 5) Zonen angezeigt werden. Die Idee dabei ist, dass man die Zonen nach Entfernung zum Spieler sortiert und die ersten n Zonen angezeigt werden. Ein Timer kann alle paar Sekunden überprüfen, welche Zonen am Nähesten liegen und entsprechend den Active-Status umsetzen. Einfach gesprochen, doch wie wird es umgesetzt.
Als Voraussetzung muss man auf alle Zonen zugreifen können. "Mit lua alle Zonen des Wherigos erfassen“ zeigt wie man automatisch alle Zonen erfasst und in ein Array namens zones steckt.
Haben wir alle Zonen greifbar, so messen wir unsere eigene Position mit Player.ObjectLocation. Anschließend iterieren wir über alle Zonen und messen die Entfernung des Spielers zur Zone (also zum Mittelpunkt zone.OriginalPoint).
Diese Entfernung wird in der neu geschaffene Eigenschaft DistanceToPlayer gespeichert (Lua ist hier sehr großzügig und erlaubt eine Erweiterung der Objekte um neue Attribute zur Laufzeit, da Objekte intern auf Tabellen umgesetzt werden) bevor wir die Zone in die distTable einfügen. Zeile 18 bis 20 definiert einen Komparator, der in Zeile 21 der Tabelle zum Sortieren mitgegeben wird.
Für die technisch versierten Leser sei erläutert, dass bei jedem table.insert das neue Element mit dem ersten Element der bestehenden Tabelle verglichen wird. Dazu wird die Vergleichsoperation aufgerufen, die wir oben definiert haben. Ist der Vergleich positiv (hier die Entfernung zum Spieler ist kleiner), so wird das neue Element an die aktuelle Stelle eingefügt und die nachfolgenden Elemente eins weiter nach hinten geschoben. Resultiert aus dem Boolean-Vergleich false, so wird das neue Element mit dem zweiten Element der Tabelle verglichen, u.s.w. bis entweder eine Stelle im Vergleich true liefert oder das Ende der Tabelle erreicht ist.
Beim Verlassen der Methode buildSortedActiveZoneMap() wird die nach Entfernung sortierte Tabelle der Zonen zurückgeliefert.
Bleibt noch die Frage warum in Zeile 11 zone.Active2 und nicht zone.Active verwendet wird. Die Antwort darauf ist relativ simple. Active2 signalisiert nicht, dass die Zone gerade aktiv ist, sondern dass sie zu den Zonen gehört, die aktiv sein dürfen. (Manche Zonen werden ja erst im Laufe des Spieles freigeschaltet). Auch Active2 gehört zu den Attributen, die wir zur Laufzeit einfach an das lua-Objekt Zone anhängen.

Abbildung 2: Die nähesten Zonen werden aktiviert
Nachdem die Zonen nach Entfernung sortiert sind, werden alle Zonen deaktiviert und anschließend die n nähesten Zone aktiviert. Damit aber nachher im Spiel nicht der Effekt auftritt, dass nacheinander die aktiven Zonen verschwinden um dann langsam wieder aufzutauchen, erweitern wir das Zonenobjekt um ein weiteres Attribute Active3. Dadurch bleibt für bereits aktive Zonen, die immer noch nahe genug sind der Status erhalten und wecheselt nicht von zone.Active = true auf false und wieder zurück auf true. Sieht nicht sehr schön aus im Oregon.
Zeile 30 bis 32 stellt sicher, dass es zu keinem Fehler kommt wenn mehr Zonen erlaubt sind als Zonen im Spiel freigeschaltet sind (beim Start darf der Spieler nur zwei Zonen sehen, das Oregon würde aber 5 verkraften)

Abbildung 3: Bei Initialisierung und Aktivierung darf Active2 nicht vergessen werden
Um die Sortierfunktion aufrufen zu können, bedarf es ein wenig Vorbereitung und Pflege der Zonen. So muss man beim Start des Spieles für alle Zonen den Wert Active2 initialisieren, da sonst der Vergleich in Zeile 11 fehlschlagen würde.
Außerdem darf beim Freischalten einer Zone dieses Attribute nicht vergessen werden, sonst wird dises bei dem timergesteuerten Nähecheck nie einbezogen.
Zum Schluss noch ein paar Worte zur Performance: Gerade die table.sort Funktion ist sehr rechenintensiv und kostet viel CPU. Man sollte auf Geräten wie Oregon also vorsichtig damit sein. Je weiter die Zonen voneinander entfernt sind, desto seltener muss der Timer den Vergleich auslösen. Wenn ich mindestens ne Minute brauche um die nächste Zone zu erreichen, so reicht es aus, alle 30 Sekunden zu aktualisieren. Sind dagegen meine Zonen nur 20 Meter entfernt, ist es besser das Interval auf 2 oder 3 Sekunden zu stellen.

Abbildung 2: Der Timer wird nur für die Garmin Geräte aktiviert.
Jetzt ist dieses Problem ja hauptsächlich ein Garmin Problem, da die meisten Nicht-Oregon-Cacher mit dem Smartphone unterwegs sind und da das Hardwareproblem nicht so entscheidend ist. Es wäre folglich schön, wenn man diesen Workaround auf die Garminserie einschränken können. Dies kann über die Abfrage des Environments geschehen. Dort sind viele nützliche Infos enthalten, u.a. die Geräteplatform. Diese lässt sich mit Env.Platform abfragen und lautet bei Garmin Geräte "Vendor 1 ARM9". Diese Abfrage lässt sich nutzen um zu entscheiden, ob man den ZoneChecker-Timer startet und nicht. Wird er nicht gestartet, so werden keine Zonen deaktiviert und es kommt wieder zum alten Verhalten. Ob das sinnvoll und übersichtlich ist, hängt natürlich von der Spielidee ab.
Weitere Infos zum Thema herstellerspezifische Spielsituationen findet ihr im Geoclub Thread Spielverlauf durch Geräteabfrage bestimmen und im WherigoBuilder-Wiki.

Dienstag, 16. Oktober 2012

Mit lua alle Zonen des Wherigos erfassen

Voraussetzung: "Einstieg in Lua“

Abbildung 1: Definition und Aufruf des lua Codes
Wenn man viel mit lua arbeitet kommt man auch desöfteren an den Punkt, an den man alle Zonen oder alle Character usw. durchiterieren möchte. (Demnächst folgt bereits das erste Anwendungsgebiet beim 7-Zonen-Problem). Um alle Zonen auf einmal zu erfassen, muss man sich ein wenig mit der von Wherigo aufgebauten Datenstruktur auskennen und die Kompatibilität mit allen WIG-Playern im Auge behalten.

Abb. 1 zeigt uns wie es gehen kann: Der Trick dabei ist, dass man über das Cartrigde (angesprochen über den Identifier auf das Feld AllZObjects zugreifen kann. Dort sind alle Objekte (Zonen, Character, Item, Media, Inputs ...) gespeichert, über die man mit einer for Schleife iterieren kann. Nachdem der erste Ansatz über den Klassennamen nicht auf allen Geräten funktioniert, habe ich den Ansatz aus der grünen Hölle umgesetzt und entscheide mittels der tostring Methode ob das Objekt eine Zone ist oder etwas anderes. Der Sicherheit halber wird beim String-Vergleich nicht nach Groß- und Kleinschreibung unterschieden.

Vergesst nicht die -per default nicht persistierete- Variable 'zones' den ZVariables (siehe Zeile 3) hinzu zu fügen, damit das Zonenarray auch nach einem Save/Restore noch zur Verfügung steht.

Der Aufruf der Methode getAllZones muss mit dem Identifier des Cartridges (nicht dem Namen) geschehen.

Noch eine Anmerkung zum Schluss: Das Cartrigde-Objekt besitzt zwar eine komfortable Methode GetAllOfType('ZZone'), diese funktioniert aber nicht auf allen Playern, weswegen der händische Weg, wie oben beschrieben empfehlenswerter ist.

Montag, 15. Oktober 2012

Automatisches Speichern: Wie und Wann?

Voraussetzung: "Einsteigerkurs“

Abbildung 1: Beim Erreichen der Zone 'Rathaus' wird automatisch gespeichert.
Eine der entscheidenen Fragen, ob der Spielablauf vom Cacher als angenehm empfunden wurde, oder ob er sich schwarz ärgert und damit seinem Frust in den Logs Luft lässt ist der automatische Speichervorgang und wann er ausgeführt wird.
Es geht dabei nicht um das expliziete Speichern, dass der Spieler veranlassen kann, wenn er das Cartrigde verlässt, sondern darum, dass während des Spieles immer wieder automatisch gespeichert wird, ohne dass der WIG-Läufer davon Wind bekommt.
Abb. 1 zeigt eine einfache Möglichkeit wie dies geschehen kann: Wir gehen zum 'Actions' Bereich und ziehen den Baustein 'Save game' an die entsprechende Stelle im Flussdiagramm. Das war es schon.

Abbildung 2: Egal welche Zone wir verlassen, es wird immer gespeichert.
Nachdem wir gesehen haben, WIE es geht, stellen wir uns die Frage WANN wir speichern. Dabei ist entscheidend was nach dem Fortsetzen geschieht. Speichern wir beim Zoneneintritt, so muss der Spieler beim Wiederherstellen des Cartrigdes die Aufgabe der Zone (z.B: "Tippe den langen lateinischen Satz ab") nochmals lösen. Das kann schonmal schwierig werden, wenn ihr 800 Meter weiter kurz vor der nächsten Station seid und das Cartridge abstürzt. Dieses Problem können wir damit umgehen, dass wir beim Verlassen der Zone speichern. Tritt dann unterwegs ein Problem auf, so ist die Aufgabe beim Wiederherstellen das Erreichen der nächsten Zone. Und auf dem Weg dahin, sind wir ohnehin.
Abb. 2 zeigt uns aber nicht das Speichern beim Verlassen einer Zone (das müssten wir ja bei jeder Zone einstellen) sondern wir nutzen das Global Zone Event 'On zone exit'. Dieses wird beim Verlassen jeder Zone ausgeführt und zwar bevor der inidivuelle Teil einer bestimmten OnExit Implementierung ausgeführt wird.

Die Variante mit dem Speichern beim Verlassen soll aber nicht der Weisheit letzter Schluss sein. Mich interessiert eure Meinung: Wann lasst ihr eure Cartridges automatisch speichern und was sind die Bewegründe, Vor- und Nachteile. Lasst es mich und die restliche WherIBlog-Communiction durch einen Kommantar wissen.

Freitag, 20. Juli 2012

Geomusics knackt MegaEvent-Marke

Das Event Geomusics 2012 hat seit kurzem die 500er Marke bei den Anmeldungen geknackt und somit den Status des MegaEvents bekommen.
Bei dem Event wird neben zahlreichem Musikprogramm eine ganze Menge mehr angeboten. So ist Zweibrücken mit 14 Wherigos eine sehr WIGdichte Gegend, außerdem kommen Statistikfreunde mit 9 Icons im 25 km Radius voll auf ihre Kosten.
Für die Workshopfreunde unter euch gibt es gleich mehrere Angebote: einen Geocaching-Workshop für Einsteiger, einen Kletterworkshop für Anfänger sowie einen Geocaching kreativ Workshop. Vielleicht folgt auch noch ein Wherigo-Workshop für Anfänger.
Wer noch nicht zu den 500 gehört und sich für dieses Festival interessiert, für den gibts den Pressetext des Events:
Herzlich willkommen bei dem Geomusics Event 2012. Am dritten Augustwochenende erwarten euch im idyllischen Zweibrücker Umland drei Tage Spaß, Musik, Caches und viele alte und neue bekannte Cacher aus der Region, Deutschland, Frankreich und Luxemburg. In einer gemütlichen Atmosphäre werden ausgelesene Weine, Cocktails und leckere Speisen und Getränke angeboten. Ein besonderes Highlight ist das große Livekonzert mit bekannten Geocacher Bands und ihren selbst komponierten Songs in den Abendstunden. Neben vielen ausgefallenen Caches wird eine Reihe von speziellen Workshops angeboten. Um den Geldbeutel zu schonen besteht die Möglichkeit kostenlos auf dem Gelände zu zelten. Der Eintritt kostet im Vorverkauf 7 € für Erwachsene und 4 € für Kinder bis 14 Jahre.

Mittwoch, 18. Juli 2012

Tagescode

Voraussetzung: "Einstieg in Lua“
Wer kennt das nicht, man erstellt einen aufwendigen Cache, überlegt sich aufwendige Fragen und knifflige Aufgaben. Der FTF dauert auch einige Zeit, da es ja ein sehr aufwendiger Cache ist.
Cachefund Nr. 2 und 3 drudeln dann schon schneller ein und spätestens wenn Person X den Cache gefunden hat, steigt die Anzahl der Funde exponentiell an. Person X gehört nämlich zur lokalen Mystery-Tausch-Szene, die über eMail-Verteilerlisten Finalkoors von aufwändig gestalteten Döschen weiterverbreiten.
Wer diesen Misbrauch bei einem Wherigo verhindern oder besser gesagt erschweren möchte, der kann eine Art Checkcode einbauen, den man am Ende des Spiels erhält und in den Log schreiben bzw. per eMail senden muss. Es geht in diesem Beitrag nicht darum zu klären, ob dies bei einem WIG zulässig ist, bzw. ob man den Misbrauch kontrollieren sollte oder die Spielverderber einfach sich selber bescheißen lassen sollte. Diese Fragen kann man gerne in bekannten Foren diskutieren.

Abbildung 1: Generierung eines Tagescodes
Hier geht es lediglich um die technische Umsetzung eines Tagescodes. D.h ein Code, der nur für einen Tag lang gültig ist, der (relativ) eindeutig ist und was ganz wichtig ist, den man nicht zurückrechnen kann, um den Code für den nächsten Tag zu berechnen.
Man nennt so einen Vorgang eine Einwegfunktion. "Leicht" zu berechnen aber "schwer" umzukehren. (Siehe http://de.wikipedia.org/wiki/Einwegfunktion).
Abb. 1 zeigt die Erstellung einer Einwegfunktion mittels Multiplikation und ganz wichtig einer Modulo Division. Heute kommt als Ergebnis 5919, morgen 6466 und übermorgen 476. Wer kann daraus den Code für nächste Woche Montag berechnen? (Streng genommen wäre es möglich, wenn man nicht nur drei sondern hunderte Werte hätte, aber der zu betreibende Aufwand stände in keinem Verhältnis zum Nutzen)
Nachtrag vom 20.07: Leider hat sax (siehe Kommentar) völlig recht. Man kann relativ leicht a und b berechnen. Es muss nur die Formel bekannt sein. D.h. um die Sache etwas sicherer zu machen, darf die Formel nicht bekannt sein. Addiert z.B nach dieser Rechnung einen Wert c auf das Ergebnis multipliziert es mit d und rechnet anschließend wieder Modulo e. Das ist zwar immer noch nicht wasserdicht, aber wenn ihr nicht zwei Moduloschritte sondern 3, 4 oder 5 Mal den Rest nehmt, wird es immer schwieriger auf die Formel zu kommen. Ich werde demnächst ne Lösung mittels Hashfunktion, MD5 oder Public-Key als asymmetrisches Verschlüsselungsverfahren untersuchen und vorstellen. Immer vorausgesetzt, dass auch das langsame Oregon die Daten schnell genung berechnen kann.

Wenn man sich die Abbildung genauer betrachtet, wird man feststellen, dass auch Daten wie 31. April oder 30. Februar erfasst wird, aber das stört uns nicht. Wichtig ist nur, dass jeder Tag dabei ist und dass der Code eindeutig ist. Das mit der Eindeutigkeit stimmt nicht ganz hundertprozentig, aber je größer die beiden Zahlen für die Division und die Modulo Rechnung sind, desto unwahrscheinlicher ist es, dass im Log zweimal der gleiche Code auftaucht.

Abbildung 2: In drei Schleifen wird für jeden Tag, Monat und Jahr der Tagescode erzeugt und ausgegeben
Man sollte die beiden Zahlen auf jeden Zahlen aus dem Tutorial abändern, denn sonst kann jeder den Code berechnen.
Da wir eine Einwegfunktion benutzen, können wir natürlich anhand des vom User eingegebenen Codes nicht zurückrechnen, ob das Datum und damit der Code korrekt ist. Abhilfe schafft hier eine Tabelle, die wir uns erzeugen, damit können wir für den entsprechenden Tag nachschauen, ob der Code korrekt ist.
Abb. 2 zeigt drei ineinander geschachtelte Schleifen, die für die Jahre 2012, 2013 und 2014 für jede Kombination aus 31 Tagen und 12 Monaten den Code ausrechnen und mittels print ausgeben. Natürlich kann man die Funktion noch verfeinern, dass der 31. April nicht mit ausgegeben wird, es würde unsere Funktion aber unverhältnismäßig komplex werden lassen.
Da wir die print Ausgabe im WIG-Player nicht sehen können, bedienen wir uns des Urwigo-Simulator um die Tabelle anzuschauen. Einfach das Projekt CodeGenerator mit F5 starten und auf den Reiter "Lua Debug" klicken, um die Werte zu betrachten, zu markieren und in eine Textdatei zu sichern.

Abbildung 3: So gelangt man zur Print-Ausgabe im Simulator.
Wem das noch nicht genug Kontrolle ist -schließlich könnten so immer noch Rudelteilnehmer loggen, wenn nur einer die Aufgabe erfüllt hat- kann man noch den Username (Zugriff in lua mittels Player.Name) mit in den Code einkodieren. Dazu nutzen wir die string.byte(myString, position) Funktionalität, die die einzelnen Buchstaben in ihren ASCII-Code umwandeln. string.byte("ABCDE",1) liefert z.B 65, da dies der Code für das erste Zeichen im String, nämlich A ist. Um den Usernamen komplett zu erfassen, kann man über alle Buchstaben iterieren und die Summe der ASCII-Werte der Variablen days aus Abb. 1 hinzufügen. Doch Vorsicht: Hierdurch steigt der Testaufwand um ein Vielfaches, denn nicht nur Groß- und Kleinbuchstaben ("klein a" besitzt den ASCII-Code 97) müssen abgedeckt werden, auch Leerzeichen Umlaute, Zahlen und alle anderen Zeichen, die Groundspeak als Usernamen erlaubt, müssen durch die Funktion erfasst werden. Ebenso steigt der Wartungsaufwand für den Cache, da man bei jedem Log, manuell den Namen in den Codegenerator eingeben muss.
Wer sich hierfür interessiert, kann mir ne Mail zukommen lassen, damit er ein kleines Java-Progrämmchen erhält, mit dem Eingabe und Codeausgabe schneller gehandelt werden können. Zu bedenken ist auch, dass man die Cachesuche erheblich erschwert: Jeder WIG-Spieler muss sich das Cartridge selbst herunterladen und dabei auf wherigo.com mit dem Usernamen eingeloggt sein, mit dem er auf geocaching.com loggen möchte. Außerdem schließt man so auch alle Cacher aus, die keine WIG-fähiges Gerät besitzen und so nicht an den Code kommen.
Mir persönlich wäre es definitiv zu viel Kontrolle, aber das muss jeder selbst entscheiden. Ich möchte lediglich auf die technische Möglichkeit hinweisen.

Sonntag, 1. Juli 2012

Evakuierung: Auf MEGA-Event folgte "MEGA"-Nacht

So sehr ich beim letzten Mal über die Zeltplatzlösung geschimpft habe, so sehr muss ich das Megaevent Geogames in den Himmel loben. Es war nämlich ein perfektes Event.
Das Wetter stimmte, das Programm war klasse, die Vorbereitung bis ins Details durchdacht und die Teilnehmer einfach Spitze.
Der krönende Abschluss war das Konzert der Dosenfischer, die ich vorher nie live gesehen hatte. Aber der richtige Knaller sollte erst noch kommen:
Während wir zum Ende des Konzertes ein wenig übers Gelände streiften um Luft zu schnappen, sahen wir ständig Trauben von Cachern, denen wir bereitwillig folgten. Es hat schon seinen eigenen Scharm, wenn man mit 40 Cachern an ner Dose steht und keiner weiß, wie der Cache heißt. Ja wir haben gefuddelt und haben auch den ein oder anderen Multi / WIG eingesammelt ohne wirklich was dafür getan zu haben. Aber gerade diese Situation, dass man länger am Cachenamen bzw. GCCode rätselt als am Versteck zu knappern, hatte so ihren Reiz.
Auf dem Rückweg sahen wir schon die immer näher kommenden Blitze sowie Lautsprecherdurchsagen vom Event "Bla bla bla... Unwetterwarnung ... Zur eigenen Sicherheit ... Bitte alle Teilnehmer in Halle 2". Als ein Blitz direkt über uns den Himmel zeriss, war uns auch klar warum evakuiert wurde.
Als wir in der Messehalle 2 ankamen, bat sich uns ein merkwürdiges Bild. Von überall kamen Cache-T-Shirts mit Träger angerannt, die nicht nur ihr T-Shirt sondern auch direkt Luftmatraze, Schlafsack, ISO-Matte und Kopfkissen unterm Arm trugen. Oder Bierkisten, je nach Gusto. Da wurden Euro-Palletten und Zelte angeschleppt um Notunterkünfte einzurichten (in der Halle) und die besten Schlafplätze reserviert.
So stelle ich mir Prag 89 vor. Nach Hans-Dietrich Genscher habe ich aber vergebens Ausschau gehalten: Wir sind zu Ihnen gekommen, um Ihnen mitzuteilen, dass heute Ihre Übernachtung..."

Samstag, 30. Juni 2012

"Zeltplatz"-Abzocke bei den Geogames

Ein "Zelterlebnis" der besonderen Art darf ich gerade bei den Geogames erleben. Auf dem Messeparkplatz, Marke Autokino versuchten gestern hunderte Cacher ihre Zelte mit Heringen gegen den aufkommenden Wind zu sichern, bei 36° C im Schatten. Dummerweise besteht der Boden aus einer kleiner Schotterschicht unter der sich eine "gefühlte" Bodenschicht verbirgt. Mit herkömmlichen Heringen ist da nichts zu machen. Zum Glück hatte ich zufällig einen Zimmermannshammer im Auto mit dem ich auch nur 4 Heringe brauche bevor sich einer wenigstens um einige Zentimeter im Boden versenken lässt. Vom Veranstalter gibt es zwar Stahlnägel, aber nur 2 pro Person und das Problem wird dann auf den Zeltabbau verschoben.
Der Hammer kam dann bei morgendlichen Duschen. Über einem Miniwaschbecken befindet sich ein Duschkopf. Fertig. Dafür ist die Kabine aber so klein und die Anzahl der Hacken auf einen kleinen beschränkt. So ist garantiert, dass auch alle Klamotten samt Kulturbeutel klitschnass werden.
Und das ganze Vergnügen gibt es schon ab 15 €. Pro Übernachtung, pro Person.
Es ist klar, dass man mitten in Leipzip keinen Waldzeltplatz erwarten kann. Das improviserte Angebot ist anfürsich kein schlechtes. Wenn nur das Preis-Leistungs-Verhältnis nicht so extrem verschoben wäre...
Das Frühstück ist mit 5 € relativ günstig, aber dafür auch sehr dürftig und die Brötchen erinnern mehr an Pappe als an Backwaren. Aber das dürfte diejenigen, die jetzt gerade in der Schlange stehen wenig interessieren. Die ist nämlich auf über 50 Meter angewachsen.
Am gestrigen Abend traf ich befreundete Cacher, die sehr glücklich über ihre Campingsituation waren. Sie sind mit ihrem Wohnmobil auf dem Parkplatz nebenan, kostenlos, und schleichen sich nachts zum Duschen auf den Autokinoparkplatz. Ich lasse diese Idee mal unkommentiert.
Der Fairness halber sei erwähnt, dass Zelten und Frühstück nicht direkt von von Eventveranstalter angeboten wird sondern durch die Messe Leipzig.
Eine Herausforderung bleibt es trotzdem

Freitag, 15. Juni 2012

Wie man einen PlayAnywhere Wherigo schreibt

Voraussetzung: "Einstieg in Lua“

Abbildung 1. Aus zwei gemessenen Punkten lässt sich Abstand und Winkel bestimmen.
In diesem Tutorial wollen wir uns mit der PlayAnywhere (kurz PA) Variante der WIGs befassen. PlayAnywhere heißt hier, dass der Spieler festlegt, wo er das Cartridge spielen möchte.
Da wir die Zonen folglich nicht vorher bestimmen können, muss dies der Spieler tun.
Das Zauberwort lautet Player.ObjectLocation. Diese Funktion liefert uns ein ZonePoint Objekt, dass die Koors des aktuellen Spielstandortes Preis gibt.
Wir stecken uns folgendes Ziel: Der Spieler soll zwei Punkte festlegen, anhand deren wir dann ein Quadrat berechnen. Die Seitelänge des Quadrates ist der Abstand der beiden Koordinaten und die Verbindung zwischen Ihnen eine Seite des Vierecks.

Abbildung 2: Die erste Position wird gemessen
Wir geben eine MessageBox aus mit der Bitte zur ersten Position zu gehen. Sobald der OK-Button der MessageBox gedrückt wird, halten wir die aktuelle Spielerposition in der Variable position1 fest
So weit zu gut, eine Ecke des Quadrates ist bestimmt. Um die zweite Ecke zu bestimmen fügen wir, ebenfalls im "On clicked" Bereich der MessageBox eine zweite Nachricht ein und wiederholen so die Prozedur der Aufforderung und Messung.

Abbildung 3: Nachdem die zweite Position bestimmt wurde, werden die Ecken 3 und 4 errechent.
Nachdem die zweite Position in position2 gespeichert wurde beginnt die eigentliche Arbeit. Die vorgefertigte Funktion VectorToPoint, enthalten in der eingebundenen Wherigo-Bibliothek erwartet als Parameter zwei ZonePoint Objekte und berechnet Abstand und Winkel der beiden Positionen. Der Winkel wird in einem 360° Kreis gemessen (Osten 90°, Süden 180°, Westen 270° usw) und sollte uns von Peilungsaufgaben bekannt vorkommen. In Abb. 1 würde der Winkel bei etwa 340° liegen sollte.
Um es genau zu wissen, geben wir Abstand und Winkel in einer print Nachricht aus, die nur im Urwigo-Simulator, nicht auf dem WherigoPlayer (Oregon, WhereYouGo...) angezeigt wird. Da das Distance-Objekt d nicht automatisch in Meter angegeben wird, bestimmen wir den Wert mit d:GetValue"m".
Vorsicht: d:GetValue("m") ist zwar syntaktisch auch korrekt, funktioniert aber nicht auf allen WIG-Playern. Bei unserem Beispiel sieht die Ausgabe folgendermaßen aus:
Winkel 338.97394387323 Grad
Entfernung 49.227289103145 m
    
Als kleine Zwischenaufgabe wollen wir einen Wegpunkt bestimmen, der 5 Meter Richtung Osten von Position 1 entfernt ist. Dazu erzeugen wir mit Wherigo.Distance(5,'m') ein entsprechendes Distance-Object und mit Wherigo.TranslatePoint einen neuen ZonePoint, ausgehend von Position 1, 5 Meter in Richtung 90 ° gehend. Die Vektorrechnung aus der Schulzeit lässt grüßen.

Nun aber genug getestet, wir benötigen die dritte Ecke (oben rechts, siehe Abb. 4) unseres Quadrates. Was wir über diese Ecke wissen, ist, dass ihr Abstand zu Position 2 der gleiche ist, wie der zwischen 1 und 2. Beim Quadrat sind ja allen Seiten gleich lang. Für Wherigo.TranslatePoint haben wir also schon den Ausgangspunkt position2 und den Abstand d. Wie aber kommen wir zum Winkel b2 ? Diese Frage lässt sich recht schnell beantworten, wenn wir bedenken, dass die Innenwinkel eines Quadrates 90° sind. Winkel b2 ist also Winkel b zuzüglich 90°. Für den Fall, dass der Winkel größer als 360 wird, nehmen wir mittels Modulo den Wert zwischen 0 und 360. Mit dem so errechneten Winkel können wir Position 3 und von dort ausgehend wieder 90° weiter Position 4 errechnen. An der Zeile b3 = b2 + 90 sehen wir, dass wir die Modulo-Operation auch weglassen können, da die in lua genutzen Sinusfunktionen auch Winkel größer 360° vertragen.
Zuletzt setzen wir mit myZone.Points die vier bestimmten bzw. errechneten Position für unsere Zone myZone. Damit die Zonendarstellung im Wherigo-Player aktualisiert wird sollten wir die Sichtbarkeit der Zone mit myZone.Visible zuerst auf false und anschließend wieder auf true setzen.
!!! Damit ihr eure Zone mit myZone ansprechen könnt, müsst ihr bei der Definition der Zone in Urwigo nicht nur den Namen sondern auch den Identifier auf myZone setzen.

Abbildung 4: Unser Quadrat ist fertig und kann als Zone im PlayAnywhere-Cartridge genutzt werden.
Wir haben somit die Koordinaten der Zone auf den Standort gesetzt in dem der Spieler das Cartridge spielen möchte.
Das Handling mit Quadraten als Zone ist aber nicht zwingend erforderlich um einen PA zu erzeugen. Wenn die Zone ein Viereck sein soll, kann man auch die ersten 3 Ecken bestimmen lassen. Somit hat der Spieler auch eher eine Vorstellung wo sich das Spielfeld befindet und kann auch auf nicht rechtwinkligen Spielfeldern (wer weiß noch was ein Parallelogramm ist ?) die Zone definieren.

Abbildung 5: Bei der PA-Variante von Cachopoly werden alle 4 Ecken bestimmt und die Zwischenstationen ausgerechnet.
Ebenso denkbar ist, dass bei einem Spielfeld wie Cachopoly alle 4 Ecken gemessen werden. Hier werden die 4 Eckfelder (Homezone, Hochsitz, Parkplatz und Jäger) als Kreiszonen bestimmt und die Zwischenstationen (Muggelhausen, Filmdosenverleih, Stammtisch, Enigma...) berechnet, indem man den Winkel Homezone -> Hochsitz nimmt und von der Homezone aus 1/5, 2/5, 3/5 bzw. 4/5 der Entfernung für die Peilung mit Wherigo.TranslatePoint heranzieht. Grundgedanke ist aber immer, dass der Spieler genügend ZonePoints setzen muss, um das Spielfeld eindeutig aufzuziehen. Wer sich Spielfrust ersparen möchte, sollte im Cachelisting genau beschreiben was der Spieler gerade ausmisst. ("Setze mit Punkt A und B eine Gerade. Das Spielquadrat befindet sich anschließend rechts von dieser")

Donnerstag, 14. Juni 2012

Koordinateneingabe im Minutenformat

Voraussetzung: "Einsteigerkurs“

Abbildung 1: Koordinaten können auch im gewohnten Minutenformat eingegeben werden
Bis vor kurzem akzeptierte der Urwigo-Builder die Koordinaten nur im Dezimalformat hddd.ddddd eingegeben werden. (erste Zeile in Abb. 1).
Seit der Version 1.10 können die Koors auch im gewohnten Minutenformat DDD MM.MMM eingegeben werden (zweite Zeile), wobei man darauf achten muss die N und E weiterhin hinter der Koordinate stehen. (z.B 50 39.536N 7 27.280E).

Abbildung 2: Die eingegeben Koors werden automatisch ins Dezimalformat umgewandelt.
Sobald man jedoch das Koordinaten-Eingabefeld verlässt, werden die Werte automatisch ins Dezimalformat umgewandelt. Eine Kontrolle wird also schwierig. Vielleicht kann man in zukünftigen Versionen des Builders das angezeigte Format einstellen.
Eine Eingabe im Sekundenformat (z.B 50 39 32.148N 7 27 16.812E) wäre ebenfalls möglich.
Hier der Auszug aus dem ChangeLog des UrwigoBuilders:

*** Version 1.10
- it is now possible to enter coordinates in the 'deg min.min' and 'deg min sec.sec' format. 
  E.g. "N 51 17.575 E005 31.168",  "51 17 10.2N 5 31 2.3E" and variants

Sonntag, 10. Juni 2012

1:0 für die Natur

An diesem Wochenende hat nicht nur Fussballdeutschland gewonnen, auch die Natur ist gut weggekommen.
Nachdem am gestrigen Hauptkampftag auf der Geocaching-Konferenz viele Workshops zum Thema Geocaching und Natur angeboten und auch gut besucht waren, habe ich zum ersten Mal den Eindruck, dass sich Geocacher, Naturschützer, Jäger und Waldbesitzer aufeinander zu bewegen. Es ist jedenfalls ein Anfang gemacht.
Man kann eine solche Konferenz natürlich nicht in drei Sätzen zusammen fassen. Hauptresumee für mich war "Nehmt Rücksicht auf den Gegenüber (Natur, Jäger und Eigentümer) und sucht den Dialog mit den Betroffenen".
Als persönliche Konsequenz habe ich soeben zwei N@chtcaches von mir geschlossen, da ich mir hier überhaupt keine Gedanken über Natur- und Wildverträglichkeit gemacht hatte und den dadurch entstehenden Konflikten vorbeugen möchte.
Ich möchte hier auf keinen Fall den N@chtcache oder das Cachen im Wald an den Pranger stellen. Aber vielleicht schaffen wir es (oder zumindest immer mehr von uns) in Zukunft mehr auf Genehmigung, Naturschutzgebiete, Analyse der örtlichen Gegenheiten zu achten, anstatt nur das Veröffentlichen des nächsten eigenen Caches im Auge zu behalten.

Freitag, 1. Juni 2012

Noch schleppende Anmeldung bei der GecKo

Am übernächsten Wochenende (Fronleichnam) findet die GecKo in Schwerte statt. Trotz zahlreicher Angebote (Kletterkurs, Wherigo-Workshops, Bogenschießen, PublicViewing und vieles mehr) sehe ich erst 210 WillAttends auf der GC-Seite.
Da ich weiß, wie viel Arbeit und Aufwand das Orga-Team betreibt finde ich die Zahl ein wenig entäuschend. Klar werden noch einige Cacher unangemeldet erscheinen, aber ich hätte im Januar als ich von dem Event erfuhr deutlich über 500 Anmeldungen erwartet.

Liegt es daran, dass vor Kurzem bereits ein Ruhrpott-Mega stattgefunden hat oder ist bereits Sommerloch und Urlaubszeit?
Ich werde auf jeden Fall trotzdem das gesamte lange Wochenende dort verbringen und freue mich auf die LostPlaceDo Serie und viele weitere Cache- und Eventhighlights.

Für alle, die mehr über das Event wissen wollen folgt hier der offizielle Pressetext der Veranstalter:

GecKo – Multi Event der besonderen Art!


(GC3A99E)


In Schwerte findet vom 08.-10.06.2012 eine bundesweite Geocaching Konferenz (GecKo) statt und setzt sich mit einer ganzen Reihe an Veranstaltungen, Workshops und Vorträgen für umsichtiges und nachhaltiges Geocachen in der Natur ein. GecKo soll Info-Börse, Diskussionsforum und Event sein. Es wird interessante Diskussionsrunden geben, aber auch die Praxis soll nicht zu kurz kommen.


Geplant wird eine spannende Podiumsdiskussion mit hochkarätigen Gästen: Jäger, Umweltschützer, erfahrene Cacher und Reviewer werden ihre Argumente darlegen und erklären, wo es beim Geocaching zu Spannungen mit der Umwelt kommen kann, und wie es möglich ist zusammenzukommen, um an Lösungen für etwaige Konflikte zu arbeiten.


Auch die neue Plattform umweltcacher.de unterstützt die Konferenz mit einem Powerpoint-Vortrag und anschließender Fragerunde! Kai, der Pionier der neuen ‚Umweltcacher-Bewegung‘, wird von der Entstehung seiner Idee berichten. Er präsentiert live den wirklich spannend aufgebauten und klug durchdachten Internetauftritt dieses Projektes.
Angemeldet haben sich außerdem Geocacher aus dem Rheinland, welche diese Möglichkeit bereits jetzt eifrig nutzen, um gemeinsam CITOs auf die Beine zu stellen und weitere Ideen in Sachen Umweltschutz zu planen.


Ebenfalls auf der Agenda der Konferenz stehen einige Workshops, die sich sehen lassen können: Angefangen bei der Erstellung attraktiver Listings und einer Anleitung zum Wherigo programmieren, über naturkundliche Führungen, der ‚Live-Besichtigung‘ des Earthcaches GC1GJ1R und baumschonende Kletterworkshops, bis hin zur Hilfestellung beim Abspeichern von Kartenmaterial auf GPS-Geräte - um nur eine Auswahl zu nennen!


Eingebettet wird all das in ein unterhaltsames Rahmenprogramm. So soll es neben einem eigenen Kinderprogramm und einer Tombola auch ein ‚Cacher-Bingo‘ sowie am Abend ein Lagerfeuer mit ‚Logbrot‘ geben. Natürlich auch einen Markt der Möglichkeiten, wo Aussteller und Sponsoren alles anbieten, was das Cacherherz begehrt.


Spannend wird sicher auch das geplante Treffen für Blogger und Cacher, die Foren betreiben oder moderieren. Sie sollen hier die Möglichkeit bekommen sich kennenzulernen, Kontakte auszutauschen und ihre Netzwerke zu vertiefen. Klingt gut und wird erfolgreich, je mehr sich dazu anmelden!


Dies gilt auch für das krönende Finale des Wochenendes: Mit allen bundesweit angereisten Gästen sowie der Community aus der Region soll es ein extra CITO (GC3BYF8) mit bis dato unerreichter Beteiligung geben: an drei bis vier verschiedenen Standorten in Schwerte und Dortmund sollen die Waldgebiete von Müll befreit werden.


Das GecKo-Team arbeitet auf Hochtouren und entwickelt das Programm ständig weiter. Zu sehen ist dies auf der Konferenz-Homepage www.gecko-event.de, die nach fünf Tagen online bereits mehr als 700 Besucher (nicht Klicks) zählen konnte. Hier sei in jedem Fall das Abo des Newsletters empfohlen!



Montag, 21. Mai 2012

Cachopoly bei den GeoGames

Bei den GeoGames in Leipzip wird es neben vielen weiteren Spielen und Attraktionen auch eine angepasste Form von Cachopoly geben.

Auch auf den Geogames könnt ihr Straßen kaufen, Häuser bauen und Miete kassieren.

Wie bereits beim Original in Asbach, am Bodensee oder auf "Potthoffs Wiese" könnt ihr auch beim MegaEvent als menschliche Spielfigur ("Ich nehm das heiße Eisen") um das Spielbrett ziehen, Straßen kaufen, Häuser und Hotels bauen und Miete kassieren. Aber gebt acht vor dem "Jäger", wenn er euch erwischt müsst ihr eine Runde im Hochsitz aussetzen bevor es weitergeht.
In wieweit die Straßennamen und Ereigniskarten noch angepasst werden, bleibt eine Überraschung. Nehmt euch also ne Stunde Zeit und gute Wanderschuhe mit, dass ihr am Ende auch sagen könnt: "Ja ich hab die 100.000 EUR geknackt und kann als zweifacher Hotelbesitzer zum Final vorrücken".

Samstag, 12. Mai 2012

CSI Koblenz


In Koblenz muss die Lösegeldübergabe abgewickelt werden und du bist mitten drin
Samstagabend in einem Koblenzer Bus der gerade losfahren möchte. Die Tür wird nochmals aufgerissen und in letzter Sekunden stürmen fünf merkwürdige Gestalten herein. Mit Outdoorklamotten bekleidet, leicht verschwitzt und völlig außer Puste, Rucksäcke auf dem Rücken und Stirnlampen auf dem Kopf.
Dann greift einer zum Telefon und stellt merkwürdige Fragen: "Geschafft, wo müssen wir aussteigen?". Dann erfolgt der plötzliche Ruf "Koordinaten" und auf einmal stecken alle fünf die Köpfe zusammen. Der mit dem Telefon wiederholt merkwürdige Zahlen, die anderen strecken ihre klobigen zu großen Handys in die Mitte auf denen sie wie wild drauf rumhacken. "22 ... 5, 4, 3 ... 35 ... 6, 2, 1. Was müssen wir dort machen? ... Ja, ein Schild ... mit QR-Code, danach ein Chirp. Alles klar wir melden uns!"
Einer von Ihnen schreibt den ganzen Irrsinn auch noch mit.
So ungefähr muss es für Passanten ausgesehen haben, als wir die Lösegeldübergabe im Auftrag der CSI Koblenz (GC2YE76) angegangen sind. Aber der Reihe nach.

Der Echtzeitcache aus Sicht der Zentrale. Auch beim Online-Part wurde sehr viel Wert auf Details gelegt. Hinter dem virtuellen Rechner verbirgt sich eine PHP-Anwendung, welche die Antworten der Zentrale verarbeitet und Aufgaben steuert.
Pünktlich um 17 Uhr finden wir uns am Koblenzer Hauptbahnhof ein um nach Anleitung aus dem Listing unser Minigruppenticket zu ziehen. Bis jetzt gestaltet sich der Cache sehr komfortabel, da an alles gedacht und bisher sogar für uns mitgedacht wurde.
Gegen viertel vor sechs kommt der Kontrollanruf aus der Zentrale, der auch wichtig war, denn bei Team 2 gab es Probleme mit der Ruftonlautstärke. Diese war für den Bahnhofslärm zu leise und so wurde deren Kontrollanruf nicht wahrgenommen.
Gut dass wir das gemerkt haben, bevor es los geht.

Der Sekunden- sowie der Minutenzeiger passieren die 12, der Stundenzeiger steht auf der 6. Die Spannung steigt. Wann wird sich die Zentrale melden und was müssen wir tun?

Drei quälende Minuten später ist es endlich so weit. Der erste Anruf, es geht los!
Nach erfolgreich gefundener Zahl (wo und welche müsst ihr schon selbst herausfinden) geht es ab zum Busbahnhof. Dann der erste beunruhigende Anruf: "Die Bahn von Team 2 hat Verspätung, die ihr gleich rausholen müsst!".
Wir zurren die Rücksäcke fester und stellen uns auf eine hektische Suche ein.
Nach ca. 60 Minuten laufen, suchen, spurten, wieder suchen, rätseln, noch schneller laufen sind wir fast wieder da, wo wir angefangen haben.
Um den Stressfaktor zu erhöhen erreichen uns regelmäßig Anrufen aus der Zentrale: "Ihr müsst (noch) schneller laufen", "Ihr müsst Gas geben", "Ihr hängt mächtig hinterher" usw.

Schnell ein Gruppenfoto im Bus. Draußen zieht gerade die Station vorbei, an der wir hätten aussteigen müssen.
Die Koblenzer Busfahrer scheinen von diesem Cache aber noch nichts gehört zu haben. Denn obwohl wir durch Outfit, Konditionszustand (keusch, hechel, prust) und Stirnlampe eindeutig als nicht von dieser (Buisness-Feierabend-)Welt gekennzeichnet sind, müssen wir immer vorne einsteigen und werden jedes Mal nach unserem Minigruppenticket gefragt. Befreundete Cacher erzählten aber von einem Busfahrerexemplar der wohl entfernt ahnte worum es hier wohl geht. Jedenfalls tat er dies an einer Haltestelle durch die Aussage "Die anderen sind immer hier ausgestiegen" kund.

Während einer solchen Busfahrt kommen wir auf glorreiche Idee ein Teamfoto für diesen Bericht zu erstellen. Gesagt getan und flux einen Passanten angesprochen, stellen wir uns auf und grinsen um die Wette. Dass im Moment der Aufnahme unsere Ausstiegshaltestelle draußen vorbeizieht, merken wir erst wie der Bus bei der nächsten Station wieder anfahren möchte.
Unser Geschrei ist wohl laut genug, sodass der Wagenführer ein Einsehen mit uns hat und die Tür nochmals öffnet. (Oder ist er einfach nur froh uns los zu werden?).
Durch die verpasste Haltestelle sind wir ca. 600 Meter zu weit gefahren. da gibt's nur eins: Rucksack runter vom Rücken, dem Nebenmann zuwerfen und sich auf einen 800 Meter Sprint einstellen um die Telefonzelle noch rechtzeitig zu erreichen.
Dort in letzter Sekunden angekommen wird man von der Zentrale mit den Worten begrüßt: "Mann, das war knapp. Jetzt schnell weiter zur den nächsten Koors. Du musst dich beeilen!"

Aber diese gemeine Hetzerei soll nicht ohne Folgen bleiben. Bei den nachfolgenden Anrufen sorgen wir für erhöhten Adrenalinspiegel in der Zentrale, indem wir uns mal mit "Stadtwerke Koblenz", "Krematorium Leipzig Ost" melden, auf die Nachricht „Ihr müsst gleich Bus Nr. 5 nehmen“ mit „Oh, der ist gerade weg“ antworten bzw. nach dem Hint für einen Tradi fragen, für den wir angeblich unterwegs angehalten haben, anstatt zügig zur Bushaltestelle zu laufen. Antworten wie "..... [5 Sekunden Pause] ... WAAAAS ??? Wo seit ihr ??? Ihr müsst sofort zur Haltestelle ! ! !" geben uns Recht, dass der Fake funktioniert hat.

Bei allem Stress kann man doch diesen Tradi nicht so einfach liegen lassen. Von Beifang sollte man bei dieser Jagd generell verzichten. Bei diesem war das Zeitfenster aber so groß, dass wir ausnahmsweise zugreifen konnten.
Bei all den Verschwörungstheorien, denen man sich bei so einem Cache hingibt, finden wir es schon auffällig, dass bis dato die Busse gut gefüllt sind, aber immer die gleichen Plätze frei bleiben. Die Einzelsitze vor der letzten Reihe. Ob das wohl Zufall ist?

Raus aus dem Bus und schnell den nächsten Hinweis finden. Denn die Uhr tickt gnadenlos!
Ebenfalls im Verdacht unter Einfluss fremder Kräfte zu stehen, ist die Situation wie ich vergeblich versuche die Zentrale zu erreichen, sich aber eine andere auch irgendwie vertraute Stimme meldet und was noch viel mysteriöser ist, der Partner gegenüber sowohl mit den gleichen Hintergrundgeräuschen zu kämpfen hat wie ich und diese aus dem Fließgeräusch des Rheins sowie meiner eigenen Stimme bestehen.
War dies noch nicht merkwürdig genug, so telefoniert plötzlich auch eine Mitstreiterin direkt neben mir, die mit den gleichen Problemen kämpft wie ich. Auch sie hat keine Ahnung mit wem sie da gerade telefoniert. Und das ganze unter Zeitdruck, höchst mysteriös ! ! !

Nach weiteren Sprint- und Sucheinlagen mit sehr verwundert dreinschauenden Schängelmuggel geht es dann zur wohlverdienten Pause zum Amerikaner, wo wir Owner und Cachekollegen treffen.

Nach der Pause geht es dann weniger mysteriös und etwas entspannter, bzw. nicht mehr ganz so stressig weiter, was wohl daran liegt, dass sich die drei Team mittlerweile eingespielt und mit dieser Cacheart vertraut gemacht haben.
So können wir unterwegs tatsächlich noch einen Tradi als Beifang verbuchen und die Zentrale braucht auch gar nicht mehr so lange um sich wieder zu fassen, nachdem wir per Handy nach dem Logdatum fragen.

Kurz vor Schluss wird es dann noch einmal fies, als wir unter Zeitdruck gefühlte 500 Steine zählen müssen. Die neugierigen Muggelanfragen kann man dabei nicht als hilfreich ansehen.

- „einhunderfünfundsiebig … einhundersechsundsiebzig … „
- „Was macht ihr da?“
- „ .. einhundersiebenundsiebzig … wir zählen … einhundert ... äh … achtundsiebzig ...“
- „Und warum?“
- „ … einhundertneunundsiebzig … gehört zu einem Spiel … einhundertneun … äh wo war ich?“




Wahrscheinlich hat dieses Plakat absolut gar nichts mit dem Cache zu tun. Als wir nach der Suche in der Kneipe bei einem Bierchen zusammensaßen fanden wir es aber mehr als passend.
Und schon hat man sich verzählt, weiß nicht bei welchem Stein man gerade ist bzw. ob man den ersten schon mitgezählt hat. Also auf von vorne. Von der Zentrale wird unsere Antwort, die gleich viermal überprüft wurde, mit einem lachenden „Stimmt, das hatte ich beim Betatest auch raus.“ kommentiert.
So ist das, wenn Cacher im Betatest das Außenteam markieren und sich später „die Sache von innen anschauen wollen“. Um es mit den Worten von Al Bundy zu sagen: „Wenn die Welt nur eine Kehle hätte ... „
Aber kurz darauf ist die Welt wieder in Ordnung. Gerade als wir die nächste Aufgabe erwarten kommt von der Zentrale die Anweisung „Geht jetzt zu N 50° […]“ Merkwürdigerweise höre ich im Hintergrund die gleiche Anweisung nochmals, jedoch mit einer anderen Stimme und an eine andere Person gerichtet. Wieder ein Mysterium? Nein, diesmal nicht. Es handelt sich lediglich um ein Telefonat mit dem zweiten Team, das mit dem Satz „ ... dort treffen wir uns dann alle beim Final“ endet.
Erleichterung macht sich breit, die aber nicht lange hält. Vor Ort ist die Suche nicht gerade einfach. „Ah die Zentrale kann uns einen Spoiler schicken.“ Die ist aber bereits unterwegs zu uns. Irgendwann entdecken wir die Dose dann aber auch ohne Spoiler und dürfen uns glücklich ins Logbuch eintragen.
Zum Schluss muss ich noch ein großes Lob an meine Mitstreiter loswerden sowie an die Owner des Caches. Nicht nur dass sie vier Monate lang recherchiert, getüftelt und programmiert haben, sie haben es auch zur Perfektion getrieben, die Zeitfenster bis zum nächsten Ergebnis so zu setzen, dass es nie langweilig wird und man permanent unter Dampf steht, der Cache aber trotzdem lösbar bleibt. Kein Wunder, dass der Cache bis heute eine 100% Rate bei den Favoriten vorweisen kann. Auf jeden Fall verdient, wie ich meine.

Dieses Plakat drückt es wohl am Besten aus: Danke für einen tollen Cacheabend mit einer genialen Idee und einer perfekten Umsetzung

Echtzeit-Cache

Bei der Koblenzer Lösegeldübergabe handelt es sich um einen Echtzeit-Cache. D.h jedes der beiden Außenteams muss innerhalb einer bestimmten Zeit Koordinaten und Zahlen finden, Barcodes auslesen, bzw. Chirpnachrichten empfangen. Diese Informationen werden an die Zentrale weitergegeben, die damit wiederum Aufgaben auf einer Website lösen muss um dann wieder neue Informationen und Aufgaben an die Außenteams übermittelt. Auch dies muss innerhalb eines vorgegebenen Zeitfensters geschehen. Und, um dem Ganzen noch die Krone aufzusehen, ist Team 1 von Team 2 sind abhängig und umgekehrt. Sobald einer der drei Teams seine Aufgaben nicht in der vorgeschriebenen Zeit erledigt, ist der Cacheabend beendet und man muss bis zum nächsten Termin warten um nochmals von vorne anzufangen.

Mittwoch, 9. Mai 2012

Wherigos auf dem IPhone. Fluch oder Segen?

Wenn ich mir die Entwicklung in der Wherigoscene so anschaue, merke ich, dass es immer mehr Owner gibt, die sich vom Standard-Stadtrundführungsmodell verabschieden und sich immer mehr Gedanken machen, welches Potential wirklich im Wherigo-Cartrigde steckt.
Gott sei Dank möge man meinen, außer man gehört zu den Appeljüngern und muss sich immer öfter mit Cartrigde Problemen und Fehlern herumgeschlagen. Aber sind es wirklich Cartrigde Probleme, oder liegt es einfach nur am Wherigo-Player fürs iPhone?


Abbildung 1: Eine immer häufiger vorkommende Situation: Wenig aussagende Fehlermeldungen, die auch nicht per LogFile weiter analysiert werden können.

Abbildung 2: Selbst einfache lua Befehle wie print sind in PiGo nicht implementiert
Eine bekannte Situation ist die von Abb. 1 und 3. Während Oregon und Android Player beim Zugriff auf einen nicht definierten Arrayindex den Rückgabewert nil liefern, erscheint beim IPhone eine Fehlermeldung.
Zeile 5 aus Abb.3 beschreibt eine solche Situation. Wenn das Array lückenlos gefüllt ist (Index 1 und 2 sind hier vergeben), kann man das Problem noch mit der vorgeschalteten Abfrage der Arraylänge (#names) umschiffen, eleganter wäre allerdings wenn es keine Sondernlocken für die Apfelsoftware geben müsste.

Ein weiteres Dauerproblem sind Timer, die in bestimmten Konstellation zu Problemen auf dem IPhone führen. Welche Situation hier genau verantwortlich sind, konnten wir noch nicht analysieren, im Geoclub versuchen wir aber solche Konstellationen zu erfassen.


Abbildung 3: Hier eine der Fehlersituationen: Zugriff auf ein nichtdefinierten Arraywert
Das neueste Problem, was sich abzuzeichnen scheint ist das Einbinden von externen lua Files um Lua im externen Editor zu bearbeiten. Dabei wird zur Laufzeit Scriptcode als Returnvalue einer Methode eingebunden. Ein in lua durchaus legitimes Verfahren. Für PiGo wahrscheinlich zu viel.

Auch beim Verschieben von Gegenständen zu Personen/Zonen gibt es desöfteren Problem bzgl. der Sichtbarkeit.

Da es (zum Glück) immer mehr Owner gibt, die ihre WIGs aufpeppen und nicht nur 08/15-Brei anbieten wollen, bleibt die Frage weiter spannend, ob die PiGo Entwickler es schaffen die Probleme ihres WIG-Player zu beheben.

Die meistens Probleme traten beim IPhone 3G auf. Ob das 4er Modell besser mit den Cartrigdes klar kommt, kann ich an dieser Stelle noch nicht bewerten.

Über Feedback zu weiteren Problemen oder gar einer Mitarbeit als IPhonetester würden wir uns sehr freuen.

Dienstag, 8. Mai 2012

13. Flammersfelder Event

Am Freitag abend 25.05.2012 ist es wieder soweit:
In Flammersfeld im Westerwald findet wieder das "improvisierte" Event statt.
Neben "normalen" Eventabläufen wie Quatschen und Fachsimplen, geht es wie immer um die "SissiChallenge" und die Weiterentwicklung des Cola-Mentos-PETLing-Antrieb.
13. Flammersfelder Event
GC-Stammtisch
Mai 2012
Wer also einen Stammtisch, der etwas anderen Art kennen lernt ist bei 13. Flammersfelder Event recht herzlich willkommen.

Sonntag, 6. Mai 2012

WherIGo Tutorials als LiveDemos

Wer nicht so auf lesen, sondern auf gucken steht, der kann den Einsteiger- und Fortschrittskurs zum Thema Wherigo programmieren live an folgenden Terminen besuchen:

Bis jetzt sind bei allen Veranstaltungen noch Termine frei. (Wenn auch nicht mehr viele)

Freitag, 4. Mai 2012

Kreta 2011

Dosensuche unter den Augen von Zeus

Cachen zwischen Pauschaltourismus, traumhaften Landschaften und Lost Places

Als bei der Planung des Familienurlaubs Kreta auf der Liste stand, genügte ein kurzer Blick auf die Cachekarte und die damit verbundenen potentiellen Dosen um den Flug zu buchen. Es waren zwar mit 334 Caches nicht allzu viele, aber die zugehörigen Bilder und Logeinträge versprachen tolle Locations. Und ich sollte nicht enttäuscht werden...

Abbildung 1: Morgens aufwachen und diesen Ausblick genießen, das ist Urlaub wie man sich ihn wünscht

Gut im Hotel angekommen, war die erste Dose mit der Länderkategorie Griechenland längst überfällig. Hatte ich doch am gestrigen Transfertag das Flughafen TB-Hotel schon links liegen lassen müssen. Warum musste auch der Bustransfer zum Hotel so reibungslos funktionieren. Aus dem Flugzeug direkt in den Bus, Türen zu und los ging's. Keine Verspätung, keine Wartezeit, an uns Cacher denkt mal wieder niemand. Aber das war gestern. Heute brennt es unter den Nägeln. Ein Hindernis gibt es aber noch: Tausend Meter Luftlinie am steilen Berg mit Serpentinenstraßen, kein Auto.
Also hilft nur eins. Laufschuhe und Joggingklamotten an und auf zum ersten Cache.

Abbildung 2: Die Bucht zum Cache 'Romanica Beach' wartet mit traumhafter Aussicht und hält was der Cachename verspricht
Da der Hinweg bergab führt, hält sich die Belastung in Grenzen, die Dose ist schnell gefunden und die Location ist grandios, GC15MJC „Romantica Beach“, der Name ist Programm. Wann sitzt man beim Loggen schon mal auf Felsklippen und sieht unter sich die Brandung des Mittelmeeres gegen dieselben rollen?
Der erste Cache in Griechenland, wieder ein Land mehr rot auf der Statistikkarte.
Da ich es zu Beginn mit der Sportlichkeit nicht übertreiben möchte liegt das Lauftempo des Rückweges meist im Fußgängerbereich, sodass von „Laufen“ eher selten gesprochen werden kann. Aber es geht ja auch steil den Berg hinauf.
Der nächste Tag. So gut und zahlreich das Essen im Hotel ist, so schlecht ist das Sportprogramm der Animation. Das ist, abgesehen von der Kinderdisco mit Töchterlein, nämlich komplett ausgefallen. Mal fehlt der Volleyball, mal ist das Tischtennisnetz kaputt. Wer konnte auch ahnen, dass im Sommer Gäste kommen?
Um der All-In-Völlerei zu entgehen, knipse ich das Oregon an. Nächster Cache: 1,9 Kilometer. Das klingt doch gut.
Ich laufe also wieder los. Unterwegs mache ich den Fehler und stelle die Navigation von „Luftlinie“ auf „Schnellste Strecke“ um. Aus den 1,9 Kilometer werden schlagartig 3,2. Dazu der nächste Schock: Der Weg führt über eine Schnellstraße ohne Bürgersteig oder Radweg, dafür voll gestopft mit Autos, deren griechische Fahrer ihrem Ruf der lockeren Auslegung von Tempolimits vollständig nachkommen.


Abbildung 3: Endlich oben um die Aussicht auf Malia Bay zu genießen
Aber ich habe Glück, parallel zur Schnellstraße gibt es eine kleine Nebenstraße, die hauptsächlich von Fußgängern, Rollern und Quads benutzt wird. Es stellt sich heraus, dass sie mich bis auf hundert Meter an meine zweite Dose GC1DKH2 „Malia Bay“ heranbringen wird. Diese liegt oberhalb der Bucht von Malia und bietet als Belohnung für die Kletterei eine herrliche Aussicht über den gesamten Küstenbereich. Malia ist eine ehemalige Palastanlage, die etwas 1900 v. Chr. errichtet worden ist. Heute sieht man leider aber fast nur noch die Produkte des Pauschaltourismus. Interessant am Listing ist noch, dass zum Schluss angegeben wird, bei Problemen möge man seine Maintenance Wünsche nicht an den Owner, sondern direkt an Team OMILOS senden, die diesen Cache freundlicherweise betreuen würden. Ein Hinweis, den ich nicht zum letzten Male sehen werden.

Abbildung 4: Ein Blick zurück zeigt nicht nur den Weg, den ich gerade gelaufen bin, sondern auch die Strecke, die es zurückzulaufen gilt.
Nach einer halbstündigen Log- und Fotopause (die Kilometer des Rückweges verhindern irgendwie, dass ich aufstehe und die Dose wieder verstecke) geht es zurück Richtung Hotel. Nach dem Abstieg melden meine Knie, dass sie es gar nicht lustig finden, nach Monaten der Ruhe jetzt diese Mörderstrecke auf sich zu nehmen. Aber die Aussicht auf eine kalte Dusche, Magnesium gegen Muskelkrämpfe und ein eisgekühltes Bierchen lassen die Schmerzen nach und nach verschwinden. Außerdem schließt das Restaurant in einer knappen Stunde, weswegen dieses Mal sogar der Killerberg zum Hotel hoch im Lauftempo genommen wird.

Nach ein paar Tagen mit mittlerweile zaghaft stattfindender Sportanimation ist es endlich soweit: Heute bekommen wir unseren Mietwagen. GPSr, Fotoapparat, TBs und Reservebatterien liegen seit Tagen bereit, sodass es nach einem deftigen Frühstück losgehen kann.
Als erstes steht ein Lost Place auf dem Programm. GC2QGRR „Nikithianos Windmills“, einer der größten Windmühlenkomplexe der Insel.


Abbildung 5: „Nikithianos Windmills“ ist einer der größten Windmühlenkomplex der Insel
Die ersten Kilometer auf griechischen Straßen bringen die Erkenntnis, dass das Wort „Standstreifen“ in der hiesigen Sprache wohl nicht existiert. Der rechts durch ein dicke durchgezogene Linie abgetrennte Bereich erhält seine Daseinsberechtigung dadurch, dass Autofahrer, die sich so einigermaßen an die vielen 70er, 50er oder 30er Schilder halten wollen, sich möglichst nah am Straßengraben aufhalten damit Nicht-Touristen in der Mitte bequem überholen können. Dabei ist dieses Verhalten nicht auf Autofahrer eingeschränkt, wie ich am letzten Urlaubstag feststellen durfte, als unser Busfahrer sich nicht durch die Tatsache stören ließ, dass er gerade 50 Touristen mit sich führte und munter ein Auto nach dem anderen überholte.
Aber zurück zum Cache. Dieser besitzt zwar einen eigenen Waypoint „Parking“, zwischen Erkennen der zwei Meter breiten Lücke in der Sträucherhecke am Straßenrand und dem „Ups, das war er wohl“ lagen gefühlte hundert Millisekunden. Der Begriff „Ausfahrt“ ist hier wohl ebenso ein Fremdwort. Als ich bei der nächsten Gelegenheit wende und versuche den Parkplatz durch ambitioniertes Linksabbiegen zu erreichen, werde ich direkt durch intensives Hupen darauf aufmerksam gemacht, dass der Mittelstreifen nur zum Überholen und nicht zum Abbiegen erfunden wurde.
Nach erfolgreichem Parkvorgang und 15 minütiger erfolgloser Suche an einer gut erhaltener Windmühle entdecke ich warum mein GPSr immer noch 30 Meter Entfernung anzeigt. Auf der anderen Straßenseite gibt es oben auf dem Berg noch halb eingefallene Ruinen älterer Modelle.

Abbildung 6: So schön der Ausblick auch ist, so anstrengend war der Aufstieg
Die Überquerung der gut und vor allem schnell befahrenen Nationalstraße erhöht sowohl die T-Wertung, als auch den Abenteuerfaktor, da der Highway, wie ihn die Einwohner liebevoll nennen, hier eine unübersichtliche Kurve bildet.
Nach einer kurzen Kraxelei den Felsen hinauf genieße ich oben einen sehenswerten Lost Place mit fair versteckter Dose und tollem Ausblick. Kurze Pause, einmal loggen und dann geht es zurück zum Parkplatz, der wie ich nun sehe auch durch eine Unterführung ohne lebensgefährlicher Straßenüberquerung erreichbar ist. „Na Prima“, denke ich und überfliege im Auto dann doch mal das Listing. „... Achtung bei Einparken … Parkplatz nur in Richtung Agios Nikolaos erreichbar … benutze die Unterführung und klettere auf den Berg“.
Besser als jeder Hint, man sollte das Listing halt vor dem Heben lesen, auch beim papierlosen Einsammeln von Tradis.


Abbildung 7: Das ehemalige Fischerdorf Agios Nikolaos hat sich heute schön herausgeputzt
Weiter geht’s Richtung Agios Nikolaos, vorbei an der bereits bekannten Mischung aus Tempolimits und Ankündigungen von Radarfallen. Die Griechen scheint dies beim Gasgeben aber nicht zu stören.

Abbildung 8: Die Aussicht auf die Bucht ist einfach traumhaft
Der Cache GC208QE „Lake“ verspricht eine wunderschöne Aussicht über den See des Städtchens. Dieses ist ein ehemaliges verträumtes Fischerdörfchen, dass sich in den letzten Jahren Dank Luxustourismus beachtlich herausgeputzt hat. Und richig, es wurde nicht zuviel versprochen: Die Aussicht ist grandios und die Vorfreude auf das Städtchen wächst.


Abbildung 9: "Ja ist denn hier schon Venedig?"
Im Yachthafen ist alles sauber und geordnet und für einen Moment komme ich mir vor, als wären wir im italienischen Venedig. Ein wohltuender Eindruck, wenn man bisher nur T-Shirt-Verkäufer, Minisupermärkte und Autovermieter in den Siedlungen gesehen hat.

Abbildung 10: Der Jachthafen ist auf jeden Fall ein Ausflug wert
Nachdem wir durch die Fußgängerzone gebummelt sind und auf dem Parkplatz unsere Lunchpaket dran glauben mussten, zieht es den nichtcachenden Teil der Familie auf einen angrenzenden Spielplatz während ich mich entscheide den Aufstieg zum Cache durch die engen Gässchen zu nehmen.


Abbildung 11: Abseits der Touristraße zeigt Agios Nikolaos seine verträumte Seite
Eine gute Entscheidung, denn der Weg führt über zahlreiche verträumte malerisch schöne Treppen und bietet ein Bild wie Nikolaos außerhalb der Tourizonen gebaut ist. Der Cache selbst besteht zwar nur aus einer Ü-Ei-Verpackung und ist in eine Steinmauer gelegt, das Panorama mit See und anschließendem Yachthafen zeigt aber, dass die Dose hier nur zweitrangig ist.
Auch wenn die Kreter noch in langer Hose und Pulli durch die Straßen ziehen, ist es für uns definitiv zu warm und so geht es zurück ins Hotel, denn der Lockruf der kalten Dusche ist kilometerweit zu hören.
So erfrischt geht es anschließend zum ersten kretischen Geocaching Event.
Neben einigen netten Plaudereien mit anderen Urlaubscachern lerne ich hier mit drei Teams direkt 60 Prozent der Cachinggemeinde dieser Insel kennen. Unter ihnen ist auch das Team OMILOS, die wie ich von ihnen erfahre neben ihren eigenen 93 Dosen auch unzählige weitere Caches betreuen, die von Urlaubern gelegt wurden. Ich habe fast das Gefühl dass sie mehr Dosen pflegen als selber gefunden zu haben. Da bekommt der Begriff Passivcacher eine ganz neue Bedeutung.
Bei weiteren Gesprächen mit lokalen Aktivisten erfahre ich, dass die Einwohner auf Kreta stets freundlich sind (was ich aus eigener Erfahrung bestätigen kann) und dass das geflügelte Wort „Kein Problem“ hier Lebensmotto ist. Und wenn es doch etwas zu lösen gibt, dann stets mit einer „griechischen Lösung“. Wie in vielen Gegenden Südeuropas wird auch hier die Lebensqualität groß geschrieben und die Vokabel „Stress“ ist wahrscheinlich genauso bekannt wie „Standstreifen“.

Abbildung 12: Auch wenn nur eine der beiden Radarschüsseln ausgefüllt ist, erinnert das Gebilde doch start an Walt Disney
Als wir auf die Radarschilder zu sprechen kommen, erklärt sich auch warum sich nur Fremde an Tempolimits halten. Da die Einwohner keine Radarfallen mögen, würden die Starenkästen einfach so lange kaputt geschossen, bis den Behörden Zeit und Geld ausgeht um neue aufzustellen.
Nach dem obligatorischen Eventtradi geht es auf zum frisch empfohlenen „Mickey Mouse Mountain“ GC2DJPW. Hierbei handelt es sich um eine ehemalige amerikanische Radarstation, deren Schüsseln von weitem wie zwei Micky Maus Ohren ausschauen. Der Name ist genauso treffend wie die Aussicht wieder überragend ist. Aber diese Cacheeigenschaft erwähne ich ja nicht zum ersten Mal.


Abbildung 13: Gott sei Dank hab den Leihwagen mit Vollkasko ohne SB genommen.
Beim Blick auf die Zufahrtsstraße wird mir schnell bewusst, warum es die richtige Entscheidung war, beim Mietwagen auf Vollkasko ohne Selbstbeteiligung zu setzen. Die mit tiefen Rillen durchzogene Betonstraße lässt jeden DDR-Gedächtnis-Plattenweg als Luxusautobahn erscheinen. Selbst bei Tempo 20 mache ich mir ernsthaft Sorgen, Radaufhängung und Stoßdämpfer würden nur noch mit angehangener TB Marke zurück zum Verleih finden.

Abbildung 14: Zum Abschluss gibt es wieder Lost-Place Feeling bei einer weiteren Windmühle
Praktischerweise können sich Mietwagen und Fahrer bereits nach wenigen Metern eine Pause gönnen um weitere Windmühlen zu begutachten. GC2DP00 „Venetien Windmills“ erscheint zunächst nur eine weitere Ruine zu sein, entpuppt sich aber als echtes Lost Place Schmuckstück mit Steinturm und Wendeltreppe, die man ersteigen muss um zur Dose zu gelangen. Ein Ort, der geradezu danach schreit, bedost zu werden. Zum Glück wurde er erhört.


Abbildung 15: 3 x darfst du raten, wo die Dose liegt... Richtig, genau da wo sie hingehört
Als ich wenige Tag später im Flugzeug sitze (nein, es war wieder keine Zeit fürs TB-Hotel) lässt sich Geocaching auf Kreta mit einer Eigenschaft zusammenfassen: Sehr qualitativ. Hier gilt noch Klasse statt Masse. Alle Dosen waren fair versteckt, die Aussicht war stets grandios und es wurde jedes Mal auf etwas Besonderes hingewiesen, wofür es sich lohnte hinzufahren (oder auch manchmal zu joggen). Es war Cachen auf hohem Niveau.
Ich werde zu Hause eine Menge Statistiktradis einsammeln müssen um genügend Favoritenpunkte für die kretischen Dosen zu sammeln.