Подтвердить что ты не робот

Игровые боты?

Что-то, о чем я всегда думал, тем более, что он вдохновил меня на программирование, когда я был ребенком, как работают боты видеоигр? Я уверен, что существует множество разных методов, но как насчет автоматизации для MMORPG? Или даже боты FPS-типа?

Я говорю об автоматизированных ботах, сделанных игроками.

4b9b3361

Ответ 1

Чтобы "ботить" игру, вы должны иметь возможность делать две вещи программно: определить, что происходит в игре, и предоставить вход в игру.

Обнаружение того, что происходит в игре, как правило, сложнее. Несколько способов сделать это:

  • Screen-Scraping Этот метод захватывает изображение на экране и анализирует его, ища такие вещи, как враги, статус игрока, бонусы, игровые сообщения, временные часы и т.д. Это, как правило, очень сложный метод. Методы OCR могут использоваться для обработки текста, но если текст написан поверх игрового мира (вместо элемента UI с твердым фон), постоянно меняющийся фон может затруднить получение точных и последовательных результатов. Поиск нетекстовых объектов на экране может быть еще сложнее, особенно в 3D-мирах, из-за множества разных позиций и ориентации, которые могут существовать в одном объекте.
  • Звуковые сигналы. В некоторых играх действия и события сопровождаются уникальными звуковыми эффектами. Эти события можно обнаружить, контролируя аудиовыход игры и сопоставляя ее с записью соответствующего звукового эффекта. Некоторые игры позволяют игроку предоставлять свои собственные звуковые эффекты для событий, что позволяет использовать звуковые эффекты, которые предназначены для легкого прослушивания и фильтрации.
  • Мониторинг памяти Если внутренняя работа игры хорошо понята, вы можете следить за состоянием игры, проверяя пространство игровой памяти. Некоторые методы чита для консольных систем (например, Game Genie) используют этот метод. Определив, какая память обновляется, можно определить, что делает игра. Некоторые игры рандомизируют ячейки памяти, которые они используют каждый раз, когда они запускаются, пытаясь предотвратить эту уязвимость.
  • Анализ пакетов. С соответствующими драйверами вы можете перехватывать пакеты данных игры, поскольку они отправляются на вашу сетевую карту или извлекаются с нее (для игр, играемых онлайн). Анализ этих пакетов может показать, что ваш игровой клиент общается с сервером, который обычно вращается вокруг действий игрока/врага.
  • Сценарии игр. В некоторых играх есть встроенный скриптовый интерфейс. Если это доступно, это, как правило, самый простой способ, потому что это то, что предназначено для игрового программного обеспечения (предыдущие методы обычно считались "хаками" ). Некоторые скрипты должны запускаться в игре (через консоль или через дополнительную систему), а некоторые могут запускаться внешними программами, которые общаются через игру через опубликованный API.

Генерирование входных событий в игру, как правило, является более простой задачей. Некоторые методы включают в себя:

  • Память "Poking" . Как и в предыдущем разделе мониторинга памяти, вымывание памяти - это акт записи данных непосредственно в пространство игровой памяти. Это метод, используемый Game Genie для применения его чит-кодов. Учитывая сложность современных игр, это очень сложная задача и потенциально может привести к краху всей игры.
  • Эмуляция входа "Поддельные" сигналы клавиатуры или мыши могут генерироваться вместо прямого взаимодействия с человеком. Это можно сделать с помощью таких инструментов, как AutoIt. Также могут использоваться аппаратные хаки, например устройства, которые подключаются к USB-порту USB или PS/2 компьютера и отображаются в системе как клавиатура, но вместо этого генерируют фальшивые события нажатия клавиш на основе сигналов, полученных от компьютера (например, Серийный порт). Эти методы могут быть сложнее обнаружить в играх.
  • Сценарии игр. Как уже упоминалось выше, некоторые игры предоставляют встроенные методы для управления программным обеспечением, и использование этих инструментов обычно является самым простым (но, возможно, самым мощным) методом.

Обратите внимание, что запуск "бота" в игре обычно является нарушением игры "Условия использования" и может быть заблокирован, запрещен или хуже. В некоторых юрисдикциях это может иметь уголовные санкции. Это еще один плюс для использования встроенных скриптовых возможностей игры; если он предназначен для участия в игровом программном обеспечении, то издатель игры, скорее всего, не собирается запрещать вам использовать его.

Ответ 2

Однажды я написал простую ботовую MMORPG. Я использовал AutoHotkey.

  • Он предоставляет множество методов для имитации пользовательского ввода - один будет работать. Очень утомительно запрограммировать рабочий на С++ самостоятельно (или посмотреть в источник AutoHotkey).
  • Он может напрямую искать экран для шаблонов пикселей, даже игровых экранов (DirectX)

Итак, я сделал поиск на экране для имени врага (хранился как изображение с игровым шрифтом), а script щелкнул несколько пикселов под ним, чтобы атаковать. Он также отслеживает полосу здоровья и горшки, если она слишком низкая.

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

Более продвинутые методы не захватывают экран, а непосредственно читают игру память. Чтобы сделать эту работу, вам нужно сделать много обратной инженерии. И он перестает работать, когда игра обновляется.

Ответ 3

Как каждый день происходит каждый день?

Это своего рода проблема, которую ИИ в играх решают.

Чего вы хотите, чтобы ваша организация сделала? Содержите свой объект для этого. Если вы хотите, чтобы ваш монстр преследовал аватара игрока, монстру просто нужно встретиться с аватаром, а затем двигаться к нему. Когда этот монстр попадает на подходящее расстояние, он может выбрать укусить аватар игрока, и этот выбор может быть таким же простым, как AmICloseEnough(monster, player); или более сложным или даже случайным.

Боты в FPS сложны, чтобы получить право, потому что легко сделать их идеальными, но не так просто сделать их забавными. Например. они всегда точно знают, где игрок (gPlayer.GetPosition()), поэтому он легко снимает игрока в голове каждый раз. Требуется немного "искусства", чтобы заставить бота двигаться как человек.

Ответ 4

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

Ответ 5

Для ботов в стиле FPS вы можете взглянуть на Unreal Development Kit. Насколько я понимаю, у этого есть много фактического исходного кода игры.

http://udn.epicgames.com/Three/DevelopmentKitHome.html

Ответ 6

bta дал очень хороший ответ. Я просто хотел сказать, что разные методы подозревают разные способы обнаружения игровой компанией. Взлом в игровой клиент с помощью мониторинга памяти или анализа пакетов, как правило, более легко обнаруживается. Я вообще не рекомендую его, так как вы можете легко попасться.

Скребок экрана, используемый с эмуляцией ввода, как правило, является самым безопасным способом для игры в бот и не попасться. Многие люди (включая меня) делали это в течение многих лет без проблем.

Кроме того, чтобы добавить дополнительный шаг между определением того, что происходит в игре, и обеспечением ввода, в некоторых играх требуется обширный расчет, прежде чем вы сможете решить, какой вклад внести в игру. Например, была игра, в которой мне приходилось подсчитывать количество кораблей, отправляемых при атаке врага, и это было основано на количестве кораблей, которые у меня были, типа кораблей, и кто и какой противник он был. Расчет, как правило, является "легкой" частью, поскольку вы можете делать это обычно почти на любом языке программирования.

Ответ 7

Как я вижу, боты - настоящий убийца в различных играх/азартных играх. Хакеры используют ботов, чтобы играть от их имени, и это создает серьезный фактор доверия для других людей, которые не попадают в халатность. Как сказал Райан, самые умные боты используют скрипит экрана, но я не согласен с его точкой зрения, что боты с экранированием не могут быть пойманы. Существует несколько служб предотвращения сбоев экрана, которые включают ShieldSquare.

Отказ от ответственности: я являюсь одним из соучредителей ShieldSquare