2016-12-06 2 views
3

Недавно я работаю над мобильной автономной игрой на базе Cocos2dx-lua.Как предотвратить мошенничество в автономном режиме на основе Cocos2dx?

Я нашел приложение в Google Play под названием GameGuardian, которое может установить временную скорость. Приложение может изменить способ gettimeofday() в libc.so. Я пробовал много API, таких как os.time(), SystemClock.elapsedRealtime(), но все не удалось.

Может ли кто-нибудь, пожалуйста, дать мне способ избежать эффекта приложения?

ответ

2

Единственный верный способ - сделать ваше приложение связанным с сервером вашей игры, чтобы обеспечить время. Многие игры для Android делают это. «Боевые коты» - один из примеров.
Скажите, вы можете проверить правильность времени, как только начнется приложение, и если соединение недоступно, вы можете разрешить ресурсы, созданные за определенное время. Например, не более 1 часа с момента последнего подтвержденного времени.

Другой идеей может быть проверка текущих кадров в секунду. Аппаратное обеспечение не ускоряется, поэтому кадр будет отображаться примерно в то же время, когда VSync включен. Если вы обнаружите, что рендеринг одного кадра занимает значительно больше времени, чем должен быть, и если это происходит для многих кадров, это может указывать на возможность обмана. Но это нестабильное решение, так как вы должны быть уверены, что ваш fps обычно не падает на слабые устройства, и он ничего не говорит о времени, проведенном во время игры.

Экстремальный кейс может включать полное удаление состояния приложения, если вы находите время, отскакивающее от последнего сохраненного неподтвержденного времени более чем на 1 час (в случае, если пользователь настраивает DST и т. Д.).

Но в целом вы не можете защитить полностью автономную игру от временных манипуляций.

+0

Я согласен с Вашим мнением. Проверка текущего fps является допустимым, но не идеальным способом решения этой проблемы. Спасибо. –

Смежные вопросы