如何防止基于Cocos2dx的离线游戏时间欺骗?

时间:2016-12-06 10:16:04

标签: android lua cocos2d-x anti-cheat

最近,我正在开发基于Cocos2dx-lua的移动离线游戏。

我在Google Play上发现了一款​​名为GameGuardian的应用,它可以设置时间速度。该应用可能会修改gettimeofday()中的方法libc.so。我尝试了许多API,例如os.time()SystemClock.elapsedRealtime(),但都失败了。

有人可以给我一个方法来避免应用程序的影响吗?

1 个答案:

答案 0 :(得分:2)

唯一可靠的方法是让您的应用与您的游戏服务器联系以确保时间。很多安卓游戏都在这样做。 "战猫"就是一个例子。
说,你可以在应用程序启动时立即检查时间有效性,如果没有可用的连接,你可以允许在一段时间内生成资源。例如,自上次确认时间以来,价值不超过1小时。

其他想法可能是检查当前的fps。硬件无法加速,因此在启用VSync时,帧将在大致相同的时间内呈现。如果您发现渲染单帧所需的时间明显多于应有的时间,并且如果它出现在许多帧中,那么它可能表示作弊的可能性。但这不是一个稳定的解决方案,因为你必须确保你的fps通常不会落在弱设备上,并且它并没有告诉你任何关于游戏时间没有花费的时间。运行

极端情况可能包括完全删除应用程序的状态,如果您发现自上次保存未经确认的时间超过约1小时后跳回来(如果用户调整DST等)。

但通常你无法完全保护离线游戏免受时间操纵。