По сути, я создал помощника aim для игры, используя машинное обучение, которое позже я назову Aimbot. Исключительно с помощью визуального ввода скриншота NAIMbot способен обнаружить врага на экране и рассчитать расстояние от центра экрана до врага и точно прицелиться в цель.
▬ ▬ ▬ ▬ Начало ▬ ▬ ▬ ▬ Моим первым препятствием было то, как перемещать игрока и мышь извне. После долгих исследований выяснилось, что приложения DirectX нуждаются в специальном вводе, и было важно правильно выполнить этот шаг, поскольку все построено на этом. Следующим шагом была попытка сделать вычисляемый ввод похожим на человеческий. Для этого мне нужно было создать функцию для восстановления парабол, чтобы начало движения мыши было медленнее, чем середина, так как человеку нужно ускорить физическую мышь.
После совершенствования этого я продолжил создавать компенсацию отдачи для каждого оружия, используя компьютерное зрение и GIF, содержащий все местоположения пуль. Это приводит к первой интересной части проекта.
▬ ▬ ▬ ▬ Компьютерное зрение ▬ ▬ ▬ ▬/| Чтобы распознать текущее оружие или ту сторону, на которой оно находится в данный момент, Наймботу нужно прочитать его где-то на экране, как это сделал бы человек. Я использовал cv2 для решения этой проблемы. cv2-это библиотека Python, ориентированная на компьютерное зрение. С его помощью я смог автоматизировать сбор и обработку данных.
▬ ▬ ▬ ▬ Сбор данных ▬ ▬ ▬ ▬//Хотя обычно данные должны быть помечены вручную, я нашел много способов автоматизировать сбор данных. Я, к сожалению, не могу раскрыть слишком много деталей, так как это мое конкурентное преимущество, но в случае этого проекта я использовал смесь внутриигровых данных и данных внешней памяти для сбора данных. Конечно, эти данные нуждались в обработке, которая была выполнена с использованием cv2 и знаний нейронных сетей.
▬ ▬ ▬ ▬ Машинное обучение ▬ ▬ ▬ ▬/| Часть машинного обучения сводится к части классификации и части локализации. Для локализации я использовал сверточную нейронную сеть региона. Поскольку я не был доволен точностью и скоростью, я переключился на обнаружение объектов Google, поскольку за ним стоят целые исследовательские группы. Скорость и точность были, наконец, разумными. Но чтобы улучшить его еще больше, я настроил гиперпараметры и изменил размер входного изображения. Трудной частью было сбалансировать скорость и точность, так как это очень зависит от используемого оборудования.
Есть еще несколько аспектов этого проекта, поскольку мой первоначальный план состоял в том, чтобы сделать NAIMbot коммерчески доступным, например, подключение базы данных к веб-сайту и запись на него при каждой покупке (чтобы избежать проблем с использованием лицензий на программное обеспечение) или создание графического пользовательского интерфейса. Эти вещи были более простыми, так что нет необходимости погружаться глубже, но если вы хотите узнать больше о чем-либо, не стесняйтесь спрашивать!
В заключение: Это означает, что я создал ненавязчивый помощник по прицеливанию, чего никогда раньше не было. Это открывает много дверей для конкурентной сцены, где помощь aim очень популярна. Вот почему я остановил проект. Я не хочу нести ответственность за то, что расстроил всю соревновательную сцену, которая мне нравится. Вместо этого я хотел бы использовать этот проект в качестве опыта. Тот факт, что я получил неизмеримое количество знаний от этого проекта, будет использован для того, чтобы помочь другим с их проблемами и идеями.