Samstag, 7. Januar 2012

Timer I - Zeitstress

Fortschrittskurs „Timer I - Zeitmessung“


Voraussetzung: "Forschrittskurs „Zone als Kreis“


In diesem Tutorial wollen wir unser Augenmerk auf das Thema Timer richten.
Mit Timern lassen sich viele nützliche Features im Cartrigde einbauen. So wollen wir zu Beginn den Spieler ein wenig sprinten lassen und die benötigte Zeit mittels Timer kontrollieren.
Der Spieler erreicht im Demospiel eine Bergstation und erhält dort die Nachricht, dass er zur Finalsuche einen Spoiler bei der Satellitenstation erhalten kann. Diese muss er aber in den nächsten 60 Sekunden erreichen, sonst ist der Satellit weitergeflogen und kann nicht mehr genutzt werden.
Die Grundidee unserer Implementierung zielt darauf ab, dass ein Timer gestartet wird, der – wenn nicht rechtzeitig gestoppt den Satellit verschwinden lässt. Sicherlich könnte man diese Aufgabe auch mit einer Start- und einer Endzeit lösen, in der späteren Erweiterung sehen wir aber wie praktisch Timer sein können.
Das erste Problem besteht im Zeitpunkt des Startes. Wenn wir den Countdown sofort starten, geht dem Spieler wertvolle Zeit während des Lesens verloren.
Wenn der Timer erst nach dem Bestätigen der Nachricht startet, kann der Spieler mogeln indem er bequem zur Satellitenstation schlendert und dann erst auf OK drückt.
Eine Möglichkeit wäre den Start mit dem „On leave“ Event der Zone zu verknüpfen. Da wir aber die Stationen als Punkte und nicht als Vieleck definieren (Siehe Tutorial „Zone als Kreis“) würde „On leave“ nie ausgelöst. Man kann das Problem zwar mit „On distant“ lösen, dies hat aber einige Nebenwirkungen, wie wir im Kreistutorial gesehen haben.
Wir wählen deshalb einen Lösungsansatz mit einer Zwischenstation namens Labor. Sie liegt auf dem Weg zur Satellitenstation und beim Annähern kündigt ein Bildschirm an, dass es nun losgeht.
Dies hat zudem den Vorteil, dass sich der Spieler in Ruhe auf die kommende „Stresssitualtion“ einstellen kann.
Abbildung 1: Ankündigung eines Spezialjokers wenn die sportliche Aufgabe erfüllt ist

Abb. 1 zeigt uns den Ablauf beim Annähern an die Bergstation.
Neben der Informationsmeldung an den Spieler, werden die beiden Zone Labor und Satellitenstation aktiv geschaltet. Ich setze diese Werte bewusst bereits jetzt, damit der Spieler genügend Zeit besitzt, sich ein Bild zu machen wo er hin laufen muss.
Abbildung 2: Beim Erreichen des Labors nimmt die Sache Fahrt auf


Sobald wir das Labor erreichen (Abb. 2), nimmt unser Spielablauf Fahrt auf, der Timer wird gestartet.
Was uns noch auffällt ist die Variable „SatelliteReached“, die hier auf „True“ gesetzt wird. Mit ihrer Hilfe können wir beim Erreichen der Satellitenstation feststellen, ob wir schnell genug waren oder nicht.
In Abb. 3 sehen wir, dass dieser Wert auf False gesetzt wird, wenn der Timer abgelaufen ist.
Ansonsten ist ein Timer nicht wirklich schwer zu verstehen. Neben dem Namen können wir den Modus (Countdown oder Intervall) wählen sowie die Laufzeit in Sekunden einstellen.
Wir haben drei verschiedene Ereignisse, die verarbeitet werden können. Neben dem Starten und dem Stoppen gibt es ein eigenes Ereignis für den Ablauf des Timers, das vom System aufgerufen wird wenn die eingestellte Zeit abgelaufen ist.

Abbildung 3: Wenn die 60 Sekunden abgelaufen sind, verfällt die Chance auf den Spoiler


Wenn wir völlig außer Puste das Ziel unseres Kurzstreckenlaufes erreicht haben, kommt die Stunde der Wahrheit. Als allererstes stoppen wir den Timer, denn nun soll er nicht mehr ablaufen bzw. den Wert von „SatelliteReached“ zu unserem Nachteil verändern. Wenn wir schnell genug waren, dann besitzt diese Variable immer noch den Wert „True“ und wir stellen dem Spieler den Spoiler zur Verfügung
Da wir die Satellitenstation nun nicht mehr brauchen, deaktiviert wir sie und der Spieler kann zum Final vorrücken

Abbildung 4: Beim Erreichen der Satellitenstation entscheidet sich, um man schnell genug war

Noch ein Tipp nebenbei: Da wir „SatelliteReached“ erst in der Laborstation von „False“ auf „True“ gesetzt wurde, haben wir uns auch gegen den Mogelversuch gewehrt, dass der Spieler direkt zur Satellitenstation läuft ohne vorher beim Labor vorbeizuschauen. Denn dann wird der Variablenwert nie auf „True“ gesetzt.


Man kann diesen Sicherheitscheck auch aufwändiger betreiben und eine Booleanvariable „LaborPassed“ einfügen, die beim Erreichen des Labors auf „True“ gesetzt wird. Diese Variante hätte den Vorteil, dass man dem User gezielt mit einer Message auf seinen Fehler hinweisen könnte.


Das urwigo Projekt zu diesem Tutorial als Download"

Keine Kommentare:

Kommentar veröffentlichen