【问题标题】:How to prevent time-cheating on offline game based on Cocos2dx?基于 Cocos2dx 的离线游戏如何防止作弊?
【发布时间】:2017-04-20 22:39:18
【问题描述】:

最近在做一款基于Cocos2dx-lua的手机离线游戏。

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

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

【问题讨论】:

    标签: android lua cocos2d-x anti-cheat


    【解决方案1】:

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

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

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

    但通常你不能保护完全离线的游戏免受时间操纵。

    【讨论】:

    • 我同意你的意见。检查当前 fps 是解决此问题的一种可行但不完美的方法。谢谢。
    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 2022-10-15
    • 2016-08-22
    • 2010-10-31
    • 1970-01-01
    • 2012-01-06
    • 2010-12-17
    • 2012-08-20
    相关资源
    最近更新 更多