我正在开展休闲游戏,随着时间的推移有所改善,就像TinyTower一样。
但TinyTower中最大的缺陷(以及所有尊重,这是一款可爱的游戏)是作弊太容易了。游戏依赖于设备时间,因此当它说“这是在8小时内完成”时,你只需要提前8小时设置你的时钟,然后把它转回来。
现在,我需要确保这不是人们在游戏中获胜的方式。我有一个想法,我可以用服务器时间交叉引用系统时间,但我不能依赖连接打开,因为离线播放是一种选择。
我还可以设置一个传感器,指示操作系统时间是否突然出现在最后一次播放时间之前,你会获得一个看不见的作弊怀疑计数器。其中三个,游戏将重置,并标记为骗子。
最后的选择是根本不在乎,让作弊者欺骗。但是,如果我要有一个竞争元素,有hoghscores等,我真的需要这个工作。
所以......问题是: 有没有人知道一种安全可靠的方法来检测自上次用户上次打开应用程序以来已经过了多少时间?
答案 0 :(得分:3)
一些想法:
1)让应用程序始终跟踪当前时间与上次关闭时间。当你看到它倒退时,在所有当前保存的游戏中增加一个计数器,并拒绝该计数器具有足够高值的游戏的高分。
2)提交高分时,请提交设备的当前时间。如果这远远超过服务器时间,则拒绝高分。
3)开始游戏时,请检查当前版本游戏发布时间。如果用户应该在游戏发布之前开始游戏,请抱怨。
答案 1 :(得分:2)
应用代表会收到重大时间变化的通知。您可以将这些呼叫捕捉到applicationSignificantTimeChange:并观察重要的前进或后退跳跃。
当然,这只会捕获应用运行时发生的变化。您还可以将上次运行的时间保存在NSUserDefaults中,并在下次启动时进行检查以进行重要的向后跳跃。
答案 2 :(得分:0)
关于所有这些解决方案,如果用户访问其他国家/地区并且时区发生变化并进入过去或将来会怎样?