0

Was ist der beste Weg, Countdown-Timer für Punkte in Android-Spiel zu implementieren, zB: der Benutzer verliert alle Punkte & er erhält 5 Punkte nach 1 Stunde. wie dies zu implementieren, unter Berücksichtigung, dass die App zerstört werden könnte & die verbleibende Zeit für die 5 Punkte wird in der App während des Betriebs sichtbar sein! hinweis: das spiel ist einfach nicht mit motor nur android rein.Countdown-Timer in Android-Spiel für Punkte

Antwort

0

Läuft die Zeit "rennt", während der Benutzer nicht im Spiel ist oder nicht? Wenn es auch im Hintergrund "läuft", speichern Sie einfach die Startzeit des Spiels und berechnen Sie alles daraus (duration = *now* - start_time;).

Wenn der Timer im Hintergrund stoppt, speichern Sie die Gesamtdauer mit einiger angemessener Genauigkeit (1s kann ausreichen, wenn Boni sich pro Stunde ändern) und session_start in onGameResume speichern und die Dauer in onGameStop neu berechnen von duration += *now* - session_start.

Programmierhinweis: Immer wenn Sie mit "Zeitstempel" arbeiten, verwenden Sie die UTC-Zeit [für Speicher und Berechnungen] (keine Benutzerzeitzone, da sie sich leicht ändern kann, wenn der Benutzer/etc reist). Die Zeitzonen-angepassten Daten und Zeiten sind "Ansichtsformatierung", die vor der Anzeige des Wertes durchgeführt werden, nicht Teil des Wertspeichers.

Eine solche einfache Implementierung ist leicht zu betrügen, indem die Gerätezeit manuell geändert wird, bevor das Spiel ausgeführt wird. Für den Fall, dass es eine etwas kompetitivere Herausforderung ist, können Sie einige verschleierte Schutzmechanismen hinzufügen, wie das Speichern von Daten, die bereits geschehen sind, und sie für einige Heuristiken verwenden, um Manipulationen zu erkennen (aber beachten Sie, dass das Gerät leicht + mehrere Minuten pro Sprung gehen kann) falls es RTC ist sehr ungenau, Batterie wurde für längere Zeit aufgebraucht, oder Benutzer in seltsame Zeitzone reisen (IIRC gibt es einige mit + -30min Offset), und erfahrene Hacker wird auch deaktivieren Sie Ihre zusätzlichen Schecks sowieso, also nicht ausgeben zu viel Mühe darauf, jemand wird es betrügen).