Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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
Android 如何防止基于Cocos2dx的离线游戏中的时间欺骗?_Android_Lua_Cocos2d X_Anti Cheat - Fatal编程技术网

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

Android 如何防止基于Cocos2dx的离线游戏中的时间欺骗?,android,lua,cocos2d-x,anti-cheat,Android,Lua,Cocos2d X,Anti Cheat,最近我正在开发一款基于Cocos2dx-lua的手机离线游戏 我在Google Play上发现了一个名为GameGuardian的应用程序,可以设置时间速度。应用程序可能会在libc.so中修改方法gettimeofday()。我尝试过许多API,如os.time(),SystemClock.elapsedRealtime(),但都失败了 有人能告诉我一种避免应用程序影响的方法吗?唯一可靠的方法是让你的应用程序与游戏服务器联系以确保时间。许多安卓游戏都在这样做。“战猫”就是一个例子。比如,你可以

最近我正在开发一款基于Cocos2dx-lua的手机离线游戏

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


有人能告诉我一种避免应用程序影响的方法吗?

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

另一个想法可能是检查当前fps。硬件无法加速,所以启用VSync时,帧将在大致相同的时间渲染。如果您发现渲染单个帧所花费的时间明显多于它应该花费的时间,并且如果渲染多个帧,则可能表明存在欺骗的可能性。但这并不是一个稳定的解决方案,因为你们必须确保你们的fps在弱小的设备上不会下降,而且它不会告诉你们游戏不运行时所花费的时间

极端情况可能包括完全擦除应用程序的状态,如果您发现时间从上次保存的未确认时间向后跳了约1小时(以防用户调整DST等)


但一般来说,你不能完全保护离线游戏不受时间操纵。

我同意你的观点。检查当前fps是解决此问题的可行但并非完美的方法。非常感谢。