Филипп уже дал большой обзор того, как работает большинство ботов, но я просто хотел рассказать о нем немного подробнее, так как у меня есть немного личного опыта разработки для всех типов ботов, которые он охватывал.
В Runescape существовал большой проект (RSBot), который копировал бы содержимое памяти из клиента Runescape в его локальную память, где он мог затем просматривать все состояние игры без риска того, что клиент зацепится. Потребовалось немного реинжиниринга, чтобы определить, где искать в памяти, чтобы найти указатели на данные, но как только они это сделали, они предоставили API, чтобы воспользоваться информацией. Он точно знал бы, что было в мире, получив координаты объекта, а затем преобразовав их с помощью матрицы преобразования камеры, чтобы получить положение на экране. Маски попаданий также были читабельными, поэтому было легко определить, в какой именно диапазон перемещать мышь, чтобы получить желаемый результат.
Бот предоставил кучу отладочной информации, такой как аннотации, которые сообщают разработчику, где находятся координаты плитки, какой идентификатор у этого объекта, какой идентификатор принадлежит данному элементу и т. Д. Эта информация может затем использоваться для создания ботов. Фактический процесс создания скриптов для ботов был довольно простым. Среда предоставила много полезных функций, таких как move_to(world_coordinates)
или mouse_move(x,y)
которые могли бы выполнять определенные действия в некоторой степени правдоподобно (перемещение мыши вдоль случайного сплайна, многократное перемещение через миникарту и экран и т. Д.)
Также в Runescape у вас есть возможность резко снизить качество графики. На самом деле было довольно легко делать определенные виды ботов, снимая экран и применяя некоторые базовые концепции компьютерного зрения, чтобы построить модель мира. Используя эту технику, я сделал и проклятого бота, и плавильного бота, оба из которых работали довольно хорошо. Он просто взял бы кадр, увеличил бы насыщенность настолько, насколько мог, и затем попытался бы извлечь из него шаблоны, которые он мог бы затем сгенерировать карту вероятности для зон щелчка.
В случае с проклятым ботом целью был меньший демон, который просто огромная красная вещь, которую тривиально найти. В случае плавильного бота он будет искать маленькую оранжевую трапецию, окруженную серым, и это будет печь. Он также попытался бы найти большую, светло-серую «L» форму, которая была бы банковским столом. Это было сделано только с помощью даунскейлинга и базовой эвристики. Он также мог ориентироваться с помощью удобного компаса рядом с миникартой, поэтому он мог ориентировать камеру в более надежном положении, чтобы найти целевые объекты.
В различных играх Nexon серверы очень доверяют клиентам. Я использовал эту кучу тонны в Maplestory, изменив карты, чтобы убрать опасности или добавить перекосы, чтобы бот не был настолько сложным. Я бы также следил за трафиком к серверу и обратно, чтобы построить модель мира, которую затем можно было бы использовать для быстрого поиска и убийства монстров.
Когда я понял, что больше не играю в ММО, а просто автоматизировал их, я решил вообще прекратить играть. Если бы я не беспокоился о том, чтобы разоблачить себя на законных основаниях, я мог бы, вероятно, совершить убийство, продавая MMO-ботов, но я действительно не хотел, чтобы меня судили. Вот почему я трачу свое время на настоящее программирование!