Боты для видеоигр? [закрыто]

Это связано с тем, что эти обработчики не сохраняют область видимости. Из документации для реагирования: реакция документации

Проверьте раздел «no autobinding». Вы должны написать обработчик: onClick = () => {}

30
задан Earlz 29 April 2010 в 22:24
поделиться

5 ответов

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

Распознать, что происходит в игре, как правило, сложнее. Вот несколько методов для этого:

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

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

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

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

49
ответ дан 27 November 2019 в 23:36
поделиться

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

0
ответ дан 27 November 2019 в 23:36
поделиться

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

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

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

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

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

12
ответ дан 27 November 2019 в 23:36
поделиться

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

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

0
ответ дан 27 November 2019 в 23:36
поделиться

Как отдельный человек живет каждый день?

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

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

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

5
ответ дан 27 November 2019 в 23:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: