如何在基于Cocos2dx的离线游戏中防止作弊?时间作弊的方法该如何预防?

4

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

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

请问有人能给我一个避免该应用程序影响的方法吗?

1个回答

2
唯一可靠的方法是让您的应用程序与游戏服务器联系以确保时间的准确性。许多安卓游戏都在这样做,例如“战斗猫”。例如,您可以在应用程序启动时检查时间有效性,如果没有可用连接,则可以允许资源生成一段允许的时间。例如,不超过上次确认时间的1小时。
另一个想法可能是检查当前的fps。硬件无法加速,因此当启用VSync时,帧将以大致相同的时间呈现。如果您发现渲染单个帧花费的时间明显超过预期,并且如果许多帧都存在此问题,则可能表明存在作弊可能性。但这不是稳定的解决方案,因为您必须确保fps在弱设备上通常不会下降,并且它不会告诉您游戏未运行时所花费的时间。
极端情况可能包括完全删除应用程序状态,如果您发现自上次保存未经确认时间后时间跳回超过约1小时(例如用户调整DST等)。
但总的来说,您无法完全保护离线游戏免受时间篡改。

我同意你的观点。检查当前帧率是解决这个问题可行但不完美的方法。谢谢。 - Eric Wang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接