Теория: «читерить» на консолях можно, если использовать нейронки и внешнее устройство для мыши

Всем привет, я уже несколько месяцев хожу с концепцией «аим-бота» для PS4 — хочется попробовать его собрать исключительно в рамках образовательного процесса, не для сетевой игры, а для того, чтобы доказать, что доступное машинное обучение изменит геймдев и игровой процесс довольно сильно, главное немного подождать.

Кстати, если вы пропустили, то вот классный пост на тему улучшения игровых текстур нейронкой — как раз на тему доступного машинного обучения и геймдева. А ещё я часто пишу про разные нейронки у себя в телеграм-канале, если хотите — вот он.

Так вот, почему я делаю пост с «теорией» проекта, а не сразу с результатами? Потому что нейронка в этом проекте — самая простая часть, а у меня есть ряд вопросов: надеюсь кто-то знающий сможет подсказать как быть.

Пример детекта объектов нейронкой в Rainbow Six Siege
Пример детекта объектов нейронкой в Rainbow Six Siege

Структура проекта

В качестве игры я выбрал Rainbow Six Siege — там есть тренировочные миссии, они как раз для offline-игры и без ограничения по времени. А ещё это довольно популярная игра.

Сам проект состоит из такой схемы:

Для солидного проекта — солидная схема
Для солидного проекта — солидная схема

Пройдемся по каждому пункту.

Нейронка для детекта террористов в режиме реального времени

В качестве нейронной сети я выбрал Yolo v3, работающую на фреймворке darknet (точнее, на форке, но это не так важно).

Yolo как раз заточена для того, чтобы работать с «визуальным» определением объектов в режиме реального времени.

Во-первых, у меня уже есть небольшой опыт работы с этой нейронной сетью.

Во-вторых, грамотно натренированные веса способны обрабатывать 30 FPS и больше, а для игры это довольно важно. Особенно учитывая, что R6 на PS4 выдает 60 FPS.

Даже на базовых стандартных весах нейронка способна узнавать что-то в видеопотоке. Вот видео с моим небольшим тестом без каких-либо настроек.

То, что вы видите в рамках, это координаты «классов», которые распознала нейронная сеть. Они шумные, теряют объекты или не так что-то детектят, но это не проблема, а лишь вопрос датасета.

Результат неплохой, учитывая, что террористы в игре одеты в какие-то странные одежды.

Чтобы улучшить результаты детекта, я планирую скормить нейронке датасет из террористов, что-то вроде такого.

Пример такого датасета, осталось добавить 2000 картинок и на каждой разметить террориста. Мелочь.
Пример такого датасета, осталось добавить 2000 картинок и на каждой разметить террориста. Мелочь.

В общем, после удачной тренировки нейронки я получу веса, которые будут возвращать мне координаты объектов в виде оси x и y. Дальше я уже смогу их обработать и попробовать навести прицел.

HDMI «ресивер»

Чтобы изображение с PS4 как-то попало в нейронку, его нужно перекинуть на компьютер. У меня MacBook, и я ума не приложу как это сделать, но думаю, что что-то должно быть простое, для того чтобы это сделать. Если ничего не получится, то придётся всё это собрать на Windows-компьютере — тут по идее должно быть всё просто.

❓Если у вас есть какие-то рекомендации, как лучше вывести изображение с PS4 на Mac или ПК, поделитесь, пожалуйста.

Venom X4 (мышь для PS4)

Существует целая категория устройств, которые позволяют вместо обычного геймпада подключить мышку. Я думаю остановиться на Venom X4: вы подключаете в него обычную USB-мышку, и он начинает работать, всё довольно просто. Также Venom поддерживает клавиатуру.

Эмулятор мыши

Собственно, идея такая — какое-то устройство, подключенное по USB к компьютеру, так же подключить по USB к Venom X4.

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

Если у вас есть какие-то рекомендации, как лучше реализовать этот пункт, подскажите пожалуйста, я почти час провел на stackoverflow и ничего дельного пока не нашел.

❓Если ничего не получится, то, думаю, придётся использовать что-то вроде Arduino для этих задач.

Огромный скрипт с шиткодом

Ну, тут все понятно, вот примерная структура скрипта – им я займусь в последнюю очередь.

Теория: «читерить» на консолях можно, если использовать нейронки и внешнее устройство для мыши

Итого

Скрипт будет работать как работает «aim-bot», вы берете джойстик и куда-то идете. Как только на экране появляется изображение модели террориста, то нейронка передает координаты скрипту, который передает координаты эмулятору мыши, а тот уже передает их Venom X4 – одновременно с указанием для нажатия R2 (для стрельбы).

На данном этапе, есть два вопроса которые я уже выше обозначил эмодзи:

1) Как передать на ПК/Mac HMDI картинку с PS4 Pro?

2) Встречал ли кто-то эмуляторы мышек?

P.S. Я не знаю, выйдет ли когда-нибудь вторая часть этого поста, учитывая что я не погромист, и какие-то вещи мне сложно ковырять (кроме нейронок), поэтому заранее спасибо всем кто попробует помочь, я буду стараться довести до конца

8989
109 комментариев

Ну вот, только вроде подумал, что Денис нормальный парень, а оно вона как повернулось все...

17
Ответить

"не для сетевой игры" выделено даже цветом!

24
Ответить
Комментарий удалён модератором

Может хоть тогда Sony решит что-то сделать с засилием мышек на консолях и закроют возможность подрубать левые манипуляторы.

Ответить

Возможно, примерно такая же статья на хабре сможет дать бОльший результат? Хотя я с хабра вышел пару-тройку лет назад и может там в атмосфере/модерировании что-то поменялось за это время.
А идея интересная и жалко, что ничем помочь не могу. Я сам тоже не кодер, но за развитием нейросетей интересно наблюдать и даже как-то удивился твои словам "я не кодер, но с нейросетями дружусь"... Если получится хоть какой-то результат и будешь делать статью, может сделай бОльший упор на нейросетях? Чтоб заодно может и развеять некоторые мнимые мифы о них.

7
Ответить

не уверен можно ли вставлять ссылки на хабр, но вот 2 отличные простые статьи про нейросети:
1)https://habr.com/post/143129/
2)https://habr.com/post/144881/

1
Ответить

Консольных клавомышей (даймондов) надо закрывать в отдельной резервации с такими же.

7
Ответить