Android 游戏中的倒计时积分

Countdown timer in Android game for points

在 android 游戏中实现积分倒计时的最佳方法是什么,例如:用户失去所有积分,他将在 1 小时后获得 5 分。 考虑到应用程序可能会被破坏以及 5 点的剩余时间将在应用程序中可见,同时 运行! 注意:游戏很简单,不使用引擎只是 android pure.

用户不在游戏中的时间 "run" 是吗?如果它也在后台执行 "run",只需存储游戏的开始时间,并从中计算所有内容 (duration = *now* - start_time;)。

万一计时器在后台停止,以合理的精度存储总持续时间(如果奖金发生变化,1 秒可能就足够 per-hour),并将 session_start 存储在 onGameResume 中,并在 onGameStop 中重新计算持续时间来自 duration += *now* - session_start.

程序员提示:无论何时使用 "timestamps",都使用 UTC 时间[用于存储和计算](不是用户时区,因为如果用户 travels/etc,它可以很容易地更改)。时区调整日期和时间是 "view formatting",在显示值之前完成,不是值存储的一部分。

这种简单的实现很容易通过在 运行 游戏前手动更改设备时间来作弊。如果这是更具竞争力的挑战,您可以考虑添加一些混淆的保护机制,例如存储哪些日期已经发生并将它们用于一些启发式检测操作(但请注意设备本身可能很容易跳转 +-几分钟如果它的 RTC 非常不准确,电池耗尽时间更长,或者用户正在进入奇怪的时区(IIRC 有一些具有 +-30 分钟的偏移量),并且经验丰富的黑客无论如何也会禁用您的额外检查,所以不要花钱太努力了,有人会作弊。