Wie bereits die Überschrift vermuten lässt, geht es heute um die Sinnigkeit Spielstände zu speichern.
Stellt euch vor, ihr spielt am Computer euer Lieblingsspiel und bevor ihr euren Spielstand speichern könnt, ist der Strom weg. Was passiert dann? Richtig, sofern ihr nicht ein Laptop habt, bei dem der Akku einspringen kann, ist euer erspielter Spielstand plötzlich weg und euer Frust groß. Ähnliches kann es auch bei den User Apps geben. Dies kann aber unterschiedliche Gründe haben, warum plötzlich der Spielstand verschwindet. Entweder eure Spieler haben den Channel ausversehen wegen einer getrennten Internetverbindung verlassen oder aber die App wird manuell neugestartet und eure Spieler sind ihrem Spiel nicht fertig. Dies sind einige Gründe, die ihr selbst nicht unbedingt beeinflussen könnt. Ihr könnt allerdings Sicherungen anlegen, bei denen die Spielstände gespeichert werden. Hierfür eigenen sich besonders die Methoden onPrepareShutdown und auch onUserLeft.
onPrepareShutdown
Diese Methode wird vom Chatserver automatisch ausgeführt, sobald die User App bemerkt: „Moment! Der Server möchte, das ich mich beende. Jetzt mache ich noch schnell das und das“. Sprich für euch und auch für die Verbesserung der Usererfahrung macht es Sinn in diesem Moment alle aktuellen Spielstände in der UserPersistence oder AppPersistence zu speichern um zu einem späteren Zeitpunkt wieder darauf zugreifen zu können. Spätere Zeitpunkte können dann entweder mit onAppStart oder onUserJoined festgelegt werden. In diesen Methoden, sollten dann natürlich die gespeicherten Spielstände wieder ausgelesen und verarbeitet werden.
onUserLeft
Ähnlich sieht es bei dieser Methode aus. Hier wird der User App plötzlich mitgeteilt: „Moment, der User hat den Channel verlassen… Was mach ich mit den Daten?“. Hier kann es ja zum Beispiel sein, das plötzlich die Internetverbindung unterbrochen wurde, der User versehentlich auf Schließen gekommen ist oder ähnliches. Auch hier kann es die Userzufriedenheit wesentlich verbessern, wenn die Spielstände gespeichert werden und der User nach einer (Zwangs)pause genau dort wieder weiterspielen kann, wo er aufgehört hat. Sinnvoll ist es, wenn dies entweder in der Methode onUserJoined passiert oder aber auch bei onAppStart berücksichtigt wird.
Es gibt aber bei der Sicherung von Spielständen leider keine Musterlösung, da fast alle Spiele unterschiedlich aufgebaut sind und eine einheitliche Struktur nicht gewährleistet werden kann. Außerdem muss jeder AppEntwickler selbst entscheiden ob es wirklich den Aufwand wert ist, die Spiele zu speichern. Fakt ist aber, dass gespeicherte Spielstände definitiv die Zufriedenheit der User nicht so rapide sinken lässt, als wären die Spielstände unwiederbringlich verloren.