Единственный надежный способ — заставить ваше приложение связываться с сервером вашей игры, чтобы гарантировать время. Многие игры для Android делают это. Одним из примеров является «Боевые кошки».
Скажем, вы можете проверить действительность времени, как только запустится приложение, а если нет доступного подключения, вы можете разрешить создание ресурсов на определенное время. Например, не более 1 часа с момента последнего подтвержденного времени.
Другой идеей может быть проверка текущего fps. Аппаратное обеспечение не может ускориться, поэтому кадр будет отображаться примерно в то же время, когда включена VSync. Если вы обнаружите, что рендеринг одного кадра занимает значительно больше времени, чем должно быть, и если это происходит для многих кадров, это может указывать на возможность мошенничества. Но это не стабильное решение, так как вы должны быть уверены, что ваш fps обычно не падает на слабых устройствах, и это ничего не говорит вам о времени, проведенном, пока игра не запущена.
Крайний случай может включать полное стирание состояния приложения, если вы обнаружите, что время перескочило назад с момента последнего сохраненного неподтвержденного времени более чем на 1 час (в случае, если пользователь настраивает летнее время и т. д.).
Но, как правило, вы не можете защитить полностью офлайн-игру от манипуляций со временем.
person
Vlad
schedule
06.12.2016