Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何在基于时间的模拟游戏中防止基于时间的欺骗?_Algorithm - Fatal编程技术网

Algorithm 如何在基于时间的模拟游戏中防止基于时间的欺骗?

Algorithm 如何在基于时间的模拟游戏中防止基于时间的欺骗?,algorithm,Algorithm,在iphone游戏“Tiny Tower”中,我猜它使用了某种基于上一次玩到当前时间之间所花费时间的模拟,因为你可以将当前时间设置为向前,你将从假时间跨度中获益 有没有一种算法可以用来防止这种事情?(或者至少让普通用户很难成功!) 编辑:谢谢,我明白,尽管我用了这样的措辞,但没有办法阻止你在客户端存储东西,但我想让它至少比“改变时间”更难破解 防止这种情况的一种方法是通过检查他们在数据库中登录的时间戳来监视时间的流逝。不管客户的iPhone是否关机;您端的数据库仍将知道上次登录后的时间。拨打网络

在iphone游戏“Tiny Tower”中,我猜它使用了某种基于上一次玩到当前时间之间所花费时间的模拟,因为你可以将当前时间设置为向前,你将从假时间跨度中获益

有没有一种算法可以用来防止这种事情?(或者至少让普通用户很难成功!)


编辑:谢谢,我明白,尽管我用了这样的措辞,但没有办法阻止你在客户端存储东西,但我想让它至少比“改变时间”更难破解

防止这种情况的一种方法是通过检查他们在数据库中登录的时间戳来监视时间的流逝。不管客户的iPhone是否关机;您端的数据库仍将知道上次登录后的时间。

拨打网络服务获取时间,而不是依赖电话。你可以从几个地方获得时间,我相信谷歌是你的朋友,或者自己创建一个,并使用服务运行机器的本地时间


您还可以使用来获得一致的时间

gamecube有办法做到这一点,因此它必须是可能的

设置iphone时间时是否会触发事件?在这种情况下,你可以做出反应

另一个解决方案是在游戏启动时要求在线,这样你可以在远程服务器上检查时间

您可以很好地检查手机登录时是否有事件,或者唤醒时是否有反应,从而节省数据库中当时的时间。您将拥有最后一次未修改的时间

最后一个可能的技巧是在时间更改之前(例如登录)检查您知道要修改的文件,并检查“上次修改”日期

您也可以沿GPS方向进行调查。GPS需要与它所接触的卫星同步,所以它必须以某种方式跟踪时间,也许有一个API可以做到这一点

不幸的是,你使用的是iphone,这意味着你的可能性有限,因为应用程序获得的权限很少,而且是沙盒

编辑:

尽管如此,你能在iphone日历中创建活动吗?检查它是否被触发了?因为你可以为每天安排一个假会议或其他什么的。不干净,但有创意


编辑2:您能否将计时器设置为IOS在60分钟内执行的代码?如果可以,请设置此计时器,传递此代码运行时的预期时间,然后在代码运行时,比较并通知您的程序。

我认为如果您可以访问internet,您可以从服务器获取时间

第二种解决方案:您可以记录“datetime”,每当您看到记录的datetime和运行的datetime之间存在“很大”差异时,您就知道可能存在问题。 但我知道这并不优雅

您还可以记录应用程序启动的少量日期时间,并检查与运行日期时间的差异

此外,您还可以使用“活动”->“日期时间”,这样“更新”(级别等)就不会被重新捕获


因为系统日期时间可以由用户更改,因此存在“黑客攻击”的可能性。

任何时候,正确性依赖于用户可以更改的变量,都有可能发生损坏。是的,我不知道是否有至少让事情变得更难的方法的文献。是的,我不太担心游戏本身被黑客攻击。。有动力的用户会这样做。。只是想让它至少对大多数休闲用户来说足够难!对大多数普通用户来说足够难吗?通过使用上述方法,我认为这已经够难了。(第二个解决方案)