4

我正在开发一款随着时间的推移而有所改进的休闲游戏,就像 TinyTower 一样。

但 TinyTower 的最大缺陷(恕我直言,它是一款可爱的游戏)是作弊太容易了。游戏依赖于设备时间,所以当它说“这是在八小时内完成”时,你只需将时钟提前八小时,拿到东西,然后把它调回来。

现在,我需要确保这不是人们可以在我的游戏中获胜的方式。我有一个想法,我可以将系统时间与服务器时间交叉引用,但我不能依赖打开的连接,因为可以选择离线播放。

我还可以设置一个传感器,指示操作系统时间是否突然早于上次播放时间,您将获得一个隐形的作弊怀疑计数器。其中三个,游戏将重置,并将您标记为作弊者。

最后的选择是根本不在乎,让骗子成为骗子。但是,如果我要具有竞争元素,例如 hoghscores 等,我真的需要它来工作。

所以......问题是这样的:有没有人知道一种安全可靠的方法来检测自用户上次打开应用程序以来已经过去了多少时间?

4

3 回答 3

3

一些想法:

1) 让应用程序始终跟踪当前时间与上次关闭时间。当你看到它倒退时,在所有当前保存的游戏中增加一个计数器,并拒绝来自该计数器具有足够高值的游戏的高分。

2)提交高分时,提交设备当前时间。如果这比服务器时间早得多,则拒绝高分。

3) 开始游戏时,检查当前版本游戏发布的时间。如果用户应该在游戏发布之前开始游戏,请投诉。

于 2011-07-15T22:27:35.150 回答
2

应用程序委托会收到重大时间更改的通知。您可以捕获这些对applicationSignificantTimeChange:的调用,并观察显着的向前或向后时间跳跃。

当然,这只捕获应用程序运行时发生的变化。您还可以在 NSUserDefaults 中保存上次运行的时间,并在下次启动时检查它是否有明显的向后时间跳跃。

于 2011-07-15T22:23:43.307 回答
0

关于所有这些解决方案,如果用户去了另一个国家并且时区发生变化并进入过去或未来怎么办?

于 2015-06-30T09:54:37.727 回答