![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Приведу пример из моей игры:
Если топлива меньше 49,то каждую минуту прибавляется +1. Но с помощью Cheat Engine удается ускорить процесс получения топлива... Что делать? |
|
|||||
|
Если игра браузерная, то можно воспользоваться каким-нибудь онлайн сервисом по выдаче времени и сверять время по нему, а не по внутреннему таймеру. Или написать свой "сервис" (делов там на одну строчку php) для выдачи времени
|
|
|||||
|
Здесь только один надежный вариант - считать все это на сервере
Можно еще конечно прятать значения чисел, от прямого выдергивания из оперативки, используя какой-нибудь класс типа вот этих (от форумчанина gloomyBrain), или других, коих в инете можно найти с десяток Но сервер - самый лучший вариант |
|
|||||
|
.
|
Цитата:
Добавлено через 1 минуту Цитата:
Добавлено через 8 минут Фигня все это. Даже если вы все перенесете на сервер... Там тоже должно быть полно дыр. Я говорю о серверной логике, которая пропустит один шанс из некоторого количества. Серверную логику часто пускают без тестов или тесты покрывают не все случаи. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Cheat Engine ускоряет таймер, поэтому Date в помощь. Можно попробовать проверку на расхождение времени прикрутить какую-нибудь.
|
|
|||||
|
Вообще делается обычным веб сервисом. Нафик вводить какие-то новые понятия? Всё давно изобретено.
|
|
|||||
|
Цитата:
Итак, web-сервис возвращает нам время. И тогда клиент говорит: "ну раз уже прошло 20 минут, начислю-ка я золота-кристаллов-энергии". А что будет, если я, например подделаю ответ сервера (да-да, банально через прокси)? Тогда игрок начислит энергию раньше времени, ведь так? И более того, нам придется на сервере проверять: "а почему игрок купил себе товар N?" - потому что у него было золото "а откуда у игрока золото?" - оно начислилось в пол-второго позавчера "а почему оно начислилось?" - потому что гладиолусы! И вот таких причинно-следственных взаимосвязей будет тем больше, чем больше у нас данных в игре. И как только мы делаем что-то вроде (Боже упаси) фермы, то получаем огромное количество причин, по которым мы можем или не можем что-то делать (с привязкой ко времени). Проверять все на клиенте и на сервере ужасно сложно, потому что приходится писать 2 одинаковых набора команд на 2 языках (например, AS3 и Java) Решение: Составляем схему всех-всех данных игрока в игре (json) Разбиваем все действия в игре на команды (функции, меняющие наши данные) Пишем команды на кросс-компилируемом языка (например Haxe) ... профит! Важною деталью тут является то, что - каждая команда отправляется на сервер с приписочкой, когда именно она была исполнена - перед тем ка исполнить команду, сервер проверяет, что а) команда выполнена после создания пользователя б) команда выполнена после предыдущей команды в) команда выполнена раньше текущего времени на сервере Все, обмануть сервер нельзя никак. Вот такие пироги. Удачи с web-сервисами =)
__________________
...вселенская грусть |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|