Показать сообщение отдельно
Старый 20.11.2011, 23:36
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 5  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Один из вариантов защиты на передачу данных серверу Тетриса:
- перед стартом забираем у сервера список фигур выпадающих в игре (альтернатива - забираем зерно _детерменированного_ рандом-генератора, на котором будем получать "детерменированно-случайные" значения)
- как только пользователь положил фигуру - записываем ее конечное положение
- достаем следующую фигуру из списка
- повторяем пока игрок не проиграет
- отправляем нашу запись с ходами на сервер + передаем время
- сервер "проигрывает" у себя тетрис, проверяет что игрок вприципе мог поставить сюда фигуру и возвращает количество очков
Все.
Т.е. зависимость очков от того, сколько линий игрок собрал защищена очень даже хорошо

С зависимостью от времени сложнее - можно подменить время в момент отправки запроса.
Один из вариантов борьбы - подписать это время последовательностью ходов. Если сервер на каждую игру будет отдавать неповторяющуюся последовательность фигур - то последовательность ходов повторяться не будет точно, а значит "злодей" не сможет послать ту же последовательность с другим временем.

Однако, если будут баловаться не подменами запросов, а соберут "свою" версию игры, то смогут подставить любое время.
Если игра доживет до таких хакеров, то можно побаловаться отсылкой не просто конечных положений фигур, а еще и действий пользователя за "квантованные" промежутки времени, которые тоже будут обсчитываться на сервере.
В этом случае хакеру придется писать искусственный интелект, который быстро-быстро соображает куда поставить фигуру. Не сказал бы, что это мегасложная задача, но если игра доживет до времени, когда в сети появятся "боты для тетриса" - это будет успех и можно будет на полученные деньги начинать писать новую .


Последний раз редактировалось expl; 20.11.2011 в 23:47.