Теория: «читерить» на консолях можно, если использовать нейронки и внешнее устройство для мыши
Всем привет, я уже несколько месяцев хожу с концепцией «аим-бота» для PS4 — хочется попробовать его собрать исключительно в рамках образовательного процесса, не для сетевой игры, а для того, чтобы доказать, что доступное машинное обучение изменит геймдев и игровой процесс довольно сильно, главное немного подождать.
Кстати, если вы пропустили, то вот классный пост на тему улучшения игровых текстур нейронкой — как раз на тему доступного машинного обучения и геймдева. А ещё я часто пишу про разные нейронки у себя в телеграм-канале, если хотите — вот он.
Так вот, почему я делаю пост с «теорией» проекта, а не сразу с результатами? Потому что нейронка в этом проекте — самая простая часть, а у меня есть ряд вопросов: надеюсь кто-то знающий сможет подсказать как быть.
Структура проекта
В качестве игры я выбрал Rainbow Six Siege — там есть тренировочные миссии, они как раз для offline-игры и без ограничения по времени. А ещё это довольно популярная игра.
Сам проект состоит из такой схемы:
Пройдемся по каждому пункту.
Нейронка для детекта террористов в режиме реального времени
В качестве нейронной сети я выбрал Yolo v3, работающую на фреймворке darknet (точнее, на форке, но это не так важно).
Yolo как раз заточена для того, чтобы работать с «визуальным» определением объектов в режиме реального времени.
Во-первых, у меня уже есть небольшой опыт работы с этой нейронной сетью.
Во-вторых, грамотно натренированные веса способны обрабатывать 30 FPS и больше, а для игры это довольно важно. Особенно учитывая, что R6 на PS4 выдает 60 FPS.
Даже на базовых стандартных весах нейронка способна узнавать что-то в видеопотоке. Вот видео с моим небольшим тестом без каких-либо настроек.
Результат неплохой, учитывая, что террористы в игре одеты в какие-то странные одежды.
Чтобы улучшить результаты детекта, я планирую скормить нейронке датасет из террористов, что-то вроде такого.
В общем, после удачной тренировки нейронки я получу веса, которые будут возвращать мне координаты объектов в виде оси 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. Я не знаю, выйдет ли когда-нибудь вторая часть этого поста, учитывая что я не погромист, и какие-то вещи мне сложно ковырять (кроме нейронок), поэтому заранее спасибо всем кто попробует помочь, я буду стараться довести до конца