Tutorial: Wherigo-Caches mit Urwigo erstellen

Teil 7 „Optimierungen 2 – Intervall-Timer und Logging“

Teil 1: Grundlagen und Drehbuch
Teil 2: Die Landschaft im Ausgangszustand
Teil 3: Die ersten Interaktionen
Teil 4: Timer und Zufallsereignisse
Teil 5: Nutzereingaben, Variablen
Teil 6: Optimierungen
Teil 7: Optimierungen 2 – Intervall-Timer und Logging

Nachdem die Cartridge ihren ersten Monat in freier Wildbahn verbracht hat und von den ersten Spielern eine Menge Hinweise und Anregungen gekommen sind, nochmal ein Update, nämlich:

  • mehr und besserer Text (das überspringen wir hier im Tutorial)
  • ein verbesserter Sauerstoff-Timer
  • die Möglichkeit, per Unlock-Code bzw. Spielstand-Upload zu loggen

Intervall-Timer

Die Sauerstoffuhr hatte bis jetzt einen entscheidenden Nachteil – sie wurde nicht in Echtzeit aktualisiert. Wenn der Spieler den Gegenstand aufrief, wurde die verbleibende Zeit angezeigt und verändert sich nicht mehr, obwohl der Timer im Hintergrund natürlich weiterlief.

Das geht besser, und zwar mit einem Intervall-Timer. Ein Intervall-Timer läuft erstmal endlos und erzeugt in bestimmten Intervallen das Ereignis „Bei Ablauf“. Wir ändern also die Art unseres Timers „Sauerstoff“ auf „Intervall“ und setzen die „Dauer“ auf 1. Damit steht uns jede Sekunde das Ereignis „Bei Ablauf“ zur Verfügung, und wir können es nutzen, um jede Sekunde die Suaerstoffuhr zu aktualisieren. Da der Timer jetzt aber nicht mehr von sich aus die 45 Sekunden (nach einem Test im Gelände wurde die Timer-Zeit von 60 auf 45 Sekunden heruntergesetzt) herunterzählt, die dem Spieler zur Verfügung stehen, müssen wir den Ablauf der Zeit über eine Hilfsvariable protokollieren und prüfen. Wir legen also eine Variable „Sauerstoff“ an und weisen ihr den Wert 45 zu.

Alle anderen Änderung nehmen wir an „Bei Ablauf“ des Timers „Sauerstoff“ vor. Als erstes müssen wir die Zeit 1 Sekunde herunterzählen, indem wir mit dem Befehl „Erhöhen/Verringern“ die Variable „Sauerstoff“ um 1 vermindern. Danach prüfen wir mittels „Wenn/Sonst“, ob dem Spieler noch Zeit zur Verfügung steht (sprich ob die Variable „Sauerstoff“ größer/gleich Null ist). Falls die Zeit abgelaufen ist, geben wir eine Meldung aus, rufen die Funktion „Ende“auf und – wichtig – stoppen den Timer (tun wir das nicht, läuft das Spiel in eine Endlosschleife – ein Intervall-Timer läuft, bis er ausdrücklich gestoppt wird).

Ergibt die Prüfung, dass dem Spieler noch Zeit zur Verfügung steht, so müssen wir die Sauerstoffuhr aktualisieren. Der besseren Spielbarkeit wegen soll die Zeit außerdem noch im Namen der Gipfelzone angezeigt werden – dann sieht der Spieler beim Navigieren den Countdown und muss nicht ständig im Inventory nachschauen. Die Namen ändern wir wie gewohnt mit „Festlegen“. Da der Name jetzt jedoch einen variablen Teil enthält (die Zeit), muss die vollständige Zeichenkette mit dem Befehl „Verketten“ erzeugt werden, indem wir in den Befehl „Verketten“ erstens den Ausdruck „Wert“ ziehen und mit „Sauerstoffuhr: “ bzw. „Gipfel: “ belegen und zweitens dahinter die Variable „Sauerstoff“ ablegen.

Eine Kleinigkeit noch: „Beim Betreten“ des Gipfel wollen wir die Uhr aus dem Namen der Zone entfernen. Wir nutzen also „Festlegen“, um die Zone wieder „Gipfel“ zu nennen. Die Sauerstoffuhr können wir ignorieren, da sie am Gipfel unsichtbar wird.

Logging

Bisher war lediglich vorgesehen, per Log-Buch zu loggen, wie bei einem „normalen“ Geocache. Der Spieler erhielt am Ende einen Koordinatensatz, der ihn zur Dose führte. Wherigos kann man allerdings auch virtuell loggen, indem man auf wherigo.com entweder einen Unlock-Code eintippt oder aber den End-Spielstand hochlädt. Diese Möglichkeiten wollen wir den Spielern jetzt einräumen. Da das physische Log-Buch aber erhalten bleiben soll, wird das virtuelle Loggen mit einer PIN geschützt – und die steht auf der Deckseite des physischen Logbuches.

Nachdem der Spieler erfolgreich mit der Queen telefoniert hat, werden im Inventory ein Gegenstand namens „Loggen“ und im Gelände eine Zone namens „Logbuch“ sichtbar. Der Gegenstand enthält einen Befehl „PIN eingeben“, der völlig analog zur Eingabe der der Telefonnummer gebaut ist. Er startet die Eingabe „Pin“, und gibt der Spieler die richtige PIN ein, wollen wir einen Unlock-Code und einen Schluss-Spielstand erzeugen.

Als erstes müssen wir die Cartridge als erfolgreich beendet kennzeichnen, indem wir mit „Festlegen“ die Cartridge-Eigenschaft „Durchgespielt“ auf „Wahr“ setzen.

Den Unlock-Code können wir nicht selber wählen, er wird stattdessen jedesmal neu von der Cartridge generiert und – wichtig – ist spielerabhängig. Er ist deswegen unter den Spieler-Eigenschaften zu finden und lässt sich jetzt ganz einfach per „Meldung“ auf den Bildschirm bringen. Auch hier benutzen wir wieder „Verketten“, um den variablen Code in ein bisschen Text einzubinden.

Zu guter Letzt rufen wir noch den Befehl „Speichern und Beenden des Spiels“ auf. Der erzeugte Spielstand enthält jetzt die Information, dass die Cartridge erfolgreich durchgespielt wurde und kann deswegen per Upload auf wherigo.com ebenfalls zum Loggen benutzt werden.

Die Cartridge bis hierher

everest53-6.zip

PS: die echte Log-Zone ist natürlich woanders – an der Koordinate aus dem Tutorial findet man vielleicht Pilze, aber kein Logbuch. Und die echte PIN ist natürlich nicht 111.

zurück zu Teil 6