Невозможно защитить вашу игру, пока контроль находится на клиенте.Чем тупее клиент, тем больше у вас шансов на получение высоких результатов.
Мы начнем с самого простого подхода: клиент подает счет в конце игры.Вы можете использовать любой хитрый метод шифрования, но читер может просто настроить сохраненный счет в памяти.Ему даже не нужно знать, как вы шифруете данные.
Даже если вы делаете это периодически на протяжении всего игрового процесса, это не имеет большого значения.Сервер может попытаться оценить, что высокий балл не может быть действительным с учетом временных ограничений, но в какой-то момент вы получите достаточно близкий балл, чтобы его нельзя было сбросить.
Мошенники также могут изменить игру, чтобы получить несправедливое преимущество.Скажем, часть игры вращается вокруг возможности угадать, за какой дверью находится сокровище.Все, что им нужно сделать, это взломать игру, чтобы показать им эти данные.Им даже не нужно изменять код, генерирующий очки ... потому что они сделали игру проще.
Единственный способ безопасно обойти это на ненадежной платформе - это разгрузить важные частиигровой процесс на самом сервере.Клиент становится своего рода тупым терминалом, делающим все, что ему говорят.Сервер отслеживает высокий балл в режиме реального времени на основе действий клиента.Вы не можете обмануть в приведенном выше примере, если клиент не знает, какая дверь хранит сокровище.Однако это подразумевает, что сервер отслеживает данные каждого клиента, что увеличивает использование ресурсов с вашей стороны.В зависимости от типа игры, это может быть неосуществимо.
И снова, все это не является отказоустойчивым против всех хаков.Например, мошенник может написать бота с превосходными рефлексами, который в противном случае играет по всем правилам.
Отчасти это бесполезное беспокойство, если ваша игра достаточно мала, чтобы не привлекать много внимания.Это абсолютная безопасность: создайте игру, в которую никто не хочет играть, и поэтому никто не потрудится взломать.;)
Все, что сказано / в итоге, вот несколько вещей, которые вы можете сделать:
Сохранять высокий балл в нескольких переменных, шифруя фактическое содержимое в памяти.То есть попробуйте сбросить читер, который смотрит на память, пытаясь найти счет.
Используйте какое-либо шифрование при взаимодействии с сервером.Вы не хотите, чтобы мошенник мог просто перехватывать трафик и отправлять POST-запрос ... это слишком просто.
Подтвердите, что оценка имеет смысл, учитывая количество сыгранного времени.,Вы можете периодически сообщать счет на сервер каждые пять секунд и т. Д.
Сделать клиента настолько глупым, насколько это возможно ... сделать сервер авторитетным.
Если кто-то публикует абсолютно неверный счет, забаньте этот IP-адрес и / или учетную запись пользователя.
Молитесь, чтобы ваша игра не пользовалась большой популярностью среди хакеров.