2010-04-29 4 views
28

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

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

+2

Там большая разница между этими двумя типами. У меня тоже нет опыта, но я уверен, что MMORPG имитируют пользовательский ввод (фактически нажимают на части экрана или имитируют нажатия клавиш), где FPS, которые входят в игру, написаны программистами игры и, вероятно, имеют доступ к дополнительной информации (например, где стены, так что им не нужно скринировать экран, чтобы понять, попадают ли они в стену) –

+8

'Предупреждение!' Этот вопрос, по-видимому, отправлен ботом! Они осматривают нас, чтобы понять, понимаем ли мы их. ;-) Шутка обособленно, этот вопрос довольно «широк и неглубокий», в отличие от некоторых вещей, которые мы получаем от ботов ... – mjv

ответ

41

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

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

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

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

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

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

0

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

+0

Мне интересно, какие методы получить фактические координаты тела вашего плеера и т. Д. я понимаю, как я «подключу» свою программу к другой программе, если она не предоставит мне ничего для «подключения». – cam

+0

@cam - в случае игр первого или третьего лица (консоли или ПК) ИИ встроен в игровой код, поэтому он имеет доступ ко всей необходимой игровой информации. Я не уверен в MMORPG, но я подозреваю, что код AI находится в движке игрового сервера. – ChrisF

+0

Проверка или иное вмешательство в работу другой программы - это не то, как управляются объекты в видеоиграх. Как правило, есть одна программа, которая выполняет всю логику на своих внутренних структурах данных. Конечно, программа может состоять из множества потоков и процессов, но для каждого из них требуемые данные являются внутренними. –

10

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

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

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

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

More advanced techniques не фиксировать экран, а непосредственно read the game's memory. Чтобы сделать эту работу, вам нужно сделать много обратной инженерии. И он перестает работать, когда игра обновляется.

4

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

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

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

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

+0

Я не знаю, почему это получило понижение. +1. –

+0

Я не уменьшил его, но думал, что слишком трудно понять. – Earlz

+0

Извините, если было неясно - я не уверен, как сделать это более ясным, хотя; вашей организации нужна цель, тогда код должен выяснить, как достичь этой цели.Учитывая вопрос (в то время), на самом деле нет лучшего ответа. (Я могу принимать downvotes, но это отстой, когда они появляются после того, как вопрос был отредактирован, а downvote - потому, что ответ был для предыдущей версии вопроса.) –

0

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

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

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

-1

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

Отказ от ответственности: Я один из соучредителя ShieldSquare

Смежные вопросы