Філіп вже дав чудовий огляд того, як працює більшість ботів, але я просто хотів висвітлити речі дещо детальніше, оскільки у мене є трохи особистого досвіду, що розвивається на або для всіх типів ботів, які він охоплював.
У Runescape був великий проект (RSBot), який би скопіював вміст пам’яті з клієнта Runescape у свою локальну пам’ять, де він міг переглядати весь стан гри, не маючи ризику, щоб клієнт зачепився. Це вимагало трохи зворотної інженерії, щоб визначити, де в пам'яті шукати, щоб знайти вказівники на дані, але як тільки вони це зробили, вони відкрили API, щоб скористатися цією інформацією. Він би точно знав, що було де у світі, отримуючи координати об'єкта, а потім перетворюючи їх матрицею перетворення камери, щоб отримати положення на екрані. Ударні маски також були читабельні, тому було неважливо точно визначити, в який діапазон рухати мишу, щоб отримати бажаний результат.
Бот надав купу налагоджувальної інформації, наприклад, примітки, які вказували розробнику, які координати плитки знаходяться, де, який ідентифікатор має цей об’єкт, який ідентифікатор належить даному елементу тощо. Потім ця інформація може бути використана для створення ботів. Фактичний процес створення скриптів бота був насправді досить простим. Рамка передбачала безліч функцій утиліти, таких як move_to(world_coordinates)
або mouse_move(x,y)
які могли б виконати зазначені дії дещо правдоподібно (переміщення миші по випадковому сплайну, багаторазове переміщення як мінімапи, так і екрану тощо)
Також у Runescape у вас є можливість різко знизити якість графіки. Створювати певні види ботів було насправді досить просто, знімаючи екран і застосовуючи основні концепції комп'ютерного зору, щоб побудувати модель світу. Я зробив як проклятий бот, так і плавильний бот, використовуючи цю техніку, обидва вони працювали досить добре. Він просто візьме кадр, збільшить насиченість наскільки це можливо, а потім спробує витягти з нього шаблони, які потім могли б створити карту ймовірностей для зон клацання.
У випадку з проклятим ботом, ціль була меншим демоном, що є просто величезною червоною річчю, яку тривіально знайти. Що стосується плавильного бота, то він шукав би маленьку помаранчеву трапецію, оточену сірим кольором, і це була б піч. Він також намагатиметься знайти велику світло-сіру форму L, яка була б банківським столом. Це було щойно зроблено із зменшенням шкали та базової евристики. Він також міг зорієнтуватися за допомогою зручного компаса поруч із мініматою, тому міг орієнтувати камеру у більш надійному положенні для пошуку цільових об’єктів.
У різних іграх Nexon сервери дуже довіряють своїм клієнтам. Я зловживав цією тоною в Maplestory, змінюючи карти, щоб усунути небезпеки або додати основи, щоб бот не повинен бути майже таким же складним. Я також контролював би трафік на сервер і з нього, щоб побудувати модель світу, яку потім можна було б використовувати для швидкого пошуку та вбивства монстрів.
Як тільки я зрозумів, що насправді більше не граю в MMO, а просто автоматизував їх, я вирішив припинити гру. Якби я не так переживав, щоб викрити себе на законних підставах, я, певно, міг би вчинити вбивство, продаючи боти MMO, але я справді не хотів подавати до суду. Ось чому я витрачаю свій час на справжнє програмування!