Четверг, 28 Марта 2024, 17:20

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Общие обсуждения программистов » БОТЫ (С чем их едят, что это, как бороться)
БОТЫ
KPECTДата: Понедельник, 03 Сентября 2012, 13:53 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Привет форумчанам!
Собственно сабж, может кто поделиться линками и материалами на данную тему.

Интересует механизм создания и методы отлова оных. Создаю браузерную игру(в планах создать отдельным приложением).

Какие способы обычно используют ботоделы и что их может выдать?

Из найденного мной по только эмулятор кликов мышки и шаманство с POST и GET запросами, но знаю что ботоводы справляются и в ситуациях требующих решений(монстров больше чем надо или пришли не оттуда). Сам видел таких, в Рагнарок онлайн, ВоВ.
FirestorMДата: Понедельник, 03 Сентября 2012, 13:57 | Сообщение # 2
Блэк-программист
Сейчас нет на сайте
KPECT, молчание в чате. Они обычно не отвечают на обращения.

Все твои игры говно, ты ничего не умеешь и тебе незачем жить, пока ты не доказал обратного.
nilremДата: Понедельник, 03 Сентября 2012, 15:39 | Сообщение # 3
Просветленный разум
Сейчас нет на сайте
Где-то на kriconf.ru есть подкаст по разработке онлайн игр. Часть подкаста посвящена борьбе с ботами. Рассказывают, как вычислить бота, и что делать, чтобы поймать ботовода. К сожалению, названия записи не помню.

Windmill 2

WindMill 2D Game Engine
TimKruzДата: Понедельник, 03 Сентября 2012, 17:04 | Сообщение # 4
старожил
Сейчас нет на сайте
Quote (KPECT)
Из найденного мной по только эмулятор кликов мышки и шаманство с POST и GET запросами

В большинстве браузерных игр этого обычно достаточно, настолько примитивно управление там. В некоторых играх тем же способом - эмуляцией нажатий клавиш и мыши - можно упростить игровой процесс, и чаще выигрывать (например, быстрее реагировать, вместо комбинации клавиш нажимать одну и т.п.).

Если игрок играет сам, но с помощью таких приспособлений - вычислить его можно только по постоянным выигрышам, правда, можно обмануться, напав на просто очень опытного игрока. Впрочем, всё-таки отличия заметить можно. И, в конце концов, можно просто в разговоре выяснить правду - вдруг проговорится...
Quote (KPECT)
но знаю что ботоводы справляются и в ситуациях требующих решений(монстров больше чем надо или пришли не оттуда).

Любая онлайн игра что-то отправляет и что-то принимает, и вообще любая игра что-то хранит у себя в памяти. Так что есть два выхода: либо полностью заменить игровой клиент собственной программой - она будет вместо клиента принимать, анализировать и отправлять то, что ей нужно. Либо можно вылавливать "на лету" данные из памяти, предназначенной для клиента игры, анализировать их и эмулировать нажатия клавиш.
Первый способ требует тщательного анализа работы игры, чтобы не вызывать подозрений у сервера, для второго же способа нужно знать всего лишь то, где и как располагаются данные в памяти - тут тоже придётся искать и расшифровывать эти данные, но не нужно заботиться об их приёме и отправке.
Quote (FirestorM)
KPECT, молчание в чате. Они обычно не отвечают на обращения.

Теоретически - правильно, но множество игроков молчит почти всегда - то ли они от природы неразговорчивы, то ли печатать не любят, то ли приходят чисто поиграть, то ли не любят разговаривать с незнакомыми игроками, а друзей в данный момент онлайн нет. Поэтому это ненадёжный метод определения ботов.
К тому же, теоретически, достаточно продвинутый бот может анализировать сообщения чата и более-менее адекватно отвечать (например, выхватывать из сообщения ключевые слова и отвечать заготовленной короткой фразой, а на повторные запросы молчать; если ответ окажется неадекватным, спрашивающий скорей всего посчитает этого игрока слабоумным и не будет больше задавать вопросов), либо просто выходить из игры (или переходить в другую комнату/карту/бой), когда его пытаются "раскусить".
Quote (KPECT)
и что их может выдать?

Практически все игроки, использующие ботов, периодически играют в эту игру сами, иначе смысла держать бота нет (в большинстве случаев). Поэтому, наблюдая за игроком ходя бы иногда, можно заметить те изменения, которые происходят с его стилем игры или количеством побед (количество побед можно оценить по автоматической статистике, если она ведётся - это проще, чем наблюдать). Однако и тут можно ошибиться - вдруг какой-то игрок одно время играл/играет в игру "профессионально" (проявляет мастерство, стараясь всё время выигрывать и всё такое), а в другое время заходит в игру пообщаться с друзьями или что-нибудь вроде этого.
Quote (KPECT)
и методы отлова оных

Отлавливать можно по-разному, но лучше пытаться предотвратить появление ботов, или усложнить процесс создания бота.
Можно использовать сильную шифровку, как при передаче данных, так и при их хранении в памяти - это затруднит поиск требуемых "ниток", за которые нужно "дёргать", чтобы получить требуемый результат.
Можно использовать "ложные" данные, всякий мусор, который будет якобы с какой-то целью обрабатываться, отправляться и приниматься - это тоже затруднит поиск.
При разработке новых версий игры или раз в несколько дней, неплохо менять ключи/алгоритмы шифра, некоторые способы обработки и варианты хранения данных (положение в памяти отдельных переменных/массивов/структур) - это с определённой вероятностью гарантирует, что старые боты перестанут корректно работать (тут есть ещё один плюс - если сделать подмену этих вещей без предупреждения игроков - многие продолжат использовать старых ботов, и их можно будет поймать на неадекватном поведении персонажа или частом выбрасывании с сервера - старый бот будет отправлять неправильные данные, что может привести в том числе к автокику игрока сервером, ну и если бот будет перезаходить - получится куча подключений-отключений, которые невозможно объяснить чем-либо кроме как неверной работой бота).

Ну и, конечно же, не во всякой игре есть смысл создавать ботов. Обычно используют ботов для быстрого улучшения статистики и характеристик аккаунта/персонажа или получения редких вещей (или большого числа обычных вещей), так что есть вариант сделать статистику, параметры персонажа и вещи второстепенными, либо убрать/уменьшить до минимума. Тогда смысла создавать полностью автономных ботов не будет, останутся только те, которые упрощают сам игровой процесс.

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


KPECTДата: Вторник, 04 Сентября 2012, 19:35 | Сообщение # 5
почетный гость
Сейчас нет на сайте
TimKruz, Спасибо за столь развернутый ответ, есть над чем подумать) Сейчас сам пытаюсь реализовать простейший кликер на C++, а потом отловить его.

p.s. Прятно был удивлен что Visual 2010 теперь фришный ) Давно не имел дело с С++ если бы не форум даже бы и не знал )


Сообщение отредактировал KPECT - Вторник, 04 Сентября 2012, 20:03
TimKruzДата: Среда, 05 Сентября 2012, 19:26 | Сообщение # 6
старожил
Сейчас нет на сайте
Quote (KPECT)
Сейчас сам пытаюсь реализовать простейший кликер на C++, а потом отловить его.

Через WinAPI-функции отправлять сообщения с информацией о позиции курсора и положении кнопок мыши в требуемое окно...
Проще всего это сделать на AutoIt - для таких целей его удобнее всего использовать. Там для эмуляции мыши и клавиатуры специальные удобные функции есть (конечно, там ещё много чего интересного).

В одной Flash-игре я видел ещё одну такую фишку: если клики в игре происходят с интервалом менее какого-то числа (десятки миллисекунд) - сервер кикает за "слишком частые запросы". Это тоже кое-какая защита от ботов-кликеров, но обходится она всего лишь увеличением интервала между кликами/нажатиями клавиатуры. Хотя, может быть, они так защищаются от DoS-атаки или чего-то в этом роде - непонятно.


Форум игроделов » Программирование » Общие обсуждения программистов » БОТЫ (С чем их едят, что это, как бороться)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг