0

Каков наилучший способ реализовать таймер обратного отсчета для очков в игре для Android, например: пользователь теряет все очки & он получит 5 очков через 1 час. как реализовать это с учетом того, что приложение может быть уничтожено & оставшееся время для 5 баллов будет видно в приложении во время работы! примечание: игра простая, не использующая двигатель, просто андроид чистый.Таймер обратного отсчета в Android-игре для очков

ответ

0

Есть ли время «бегать», когда пользователь не находится в игре, или нет? Если он «запустится» в фоновом режиме, просто сохраните время начала игры и вычислите все, что от него().

В случае, если таймер останавливается в фоновом режиме, храните полную продолжительность с некоторой разумной точностью (может быть достаточно 1, если бонусы изменяются в час) и хранить session_start в onGameResume и пересчитывать продолжительность в onGameStop от duration += *now* - session_start.

Программист: всякий раз, когда вы работаете с «отметками времени», используйте время UTC [для хранения и расчетов] (не пользовательский часовой пояс, так как он может легко меняться, если пользователь перемещается/и т. Д.). Сроки и время, скорректированные по часовому поясу, представляют собой «форматирование вида», выполненное до отображения значения, а не часть хранения значений.

Такая простая реализация легко обмануть, изменив время устройства вручную перед запуском игры. В случае, если это несколько более сложная задача, вы можете подумать о том, чтобы добавить некоторые запутанные механизмы защиты, такие как сохранение, какие даты уже произошли, и использовать их для какой-либо эвристики для обнаружения манипуляций (но помните, что само устройство может легко перейти + - несколько минут в минуту в случае, если RTC является очень неточным, батарея была истощена в течение более длительного времени, или пользователь путешествует в странный часовой пояс (IIRC есть некоторые с смещением +30 минут), и опытный хакер также отключит ваши дополнительные проверки, поэтому не тратьте слишком много усилий на этом, кто-то обманет его).

Смежные вопросы