Я сделал ИИ для Aim Lab и она его уничтожила :3
Вставка
- Опубліковано 31 тра 2024
- Делаем ИИ бота для игры Aim Lab.
Компьютерное зрение в деле :3
clck.ru/32uWca - выберете для себя подходящую программу курса «Специалист по Data Science» в Яндекс Практикум. Промокод "ХАУДИ" на скидку 5% до 24 декабря 2022 года.
🆇 Исходный код бота 🆇
github.com/Priler/aimlabbot
🆇 Главы 🆇
0:00 - Идея
0:25 - Что такое Aim Lab и зачем бот?
0:55 - Начинаем писать код (захват экрана)
1:35 - Первая задача (определение целей)
1:55 - Варианты решения задачи
2:29 - Цветовые маски
2:55 - Совет про скейлинг HSV
3:30 - Проверяем код (маску)
4:03 - NMS и объединение по пересечениям
4:32 - Мой рекорд в аим лабе
4:50 - Вторая задача
5:20 - Как работает мышь на уровне ОС и в играх
6:42 - Как играет смещает прицел
7:10 - Проблема перемещения мыши
7:48 - Разбор проблемы
8:37 - Следим за руками (считаем углы)
10:25 - Про машинное обучение
12:27 - Конвертируем координаты из 2D в 3D (пытаемся)
13:35 - ПАМАГИТЕ
13:57 - Костыли наше всё!
14:49 - Первый боевой тест
15:28 - Второй боевой тест
15:57 - Итоги
🔵 Наш TELEGRAM: t.me/howdyho_official
Наш ВК: howdyho_net
Сотрудничество topic-84392011_33285530
💗 Музыка предоставлена UA-cam Audio Library. - Наука та технологія
Сделай мне тиммейтов пожалуйста 😫🙏🙏
На второй комп тимейта профессионала
помни, матч мейкинг закидывает людей рандомно. Будут попадаться сильные игроки в команде? значит и у врагов не будет зевак.
@@ATtiny13a-PU обычно у тебя зеваки а противники нет
@@1337lu, система 50% может лишь замедлить перелив рейтинга. То что есть в играх валв, это конечно бесит, но остановить рост/спад рейтинга полностью не получится. Ты можешь откровенно руинить и тебе будут закидывать мужиков, которые 4 в 5 будут раскатывать, но в таком случае для замедления падения рейтинга одного придётся жертвовать редакцией рейтинга более одного чела на чём и строится тот небольшой дисбаланс, поэтому обычно 50% придерживается смеси, где руинеры и тащеры наименьшим образом отрываются друг от друга в обеих командах, если разрыв большой, то суммарный рейтинг начнёт меняться.
Хм а я думал, что нас ждёт уже частично готовый код ИИ для кс :)
Для того что бы ты себе его скопировал и апнул глобола)
сразу бан влетит
@@ovum_ordinarium так это не читы)
@@ovum_ordinariumа кто заметит?
@@mr_faild но твой то скилл не прокачается)
Можешь попробовать сделать голосового ассистента, который произносит слова твоим голосом? Я смотрел предыдущие видосы )
он делал такого ассистента посмотри на канале хауди правда там не его голос но всё же
@@3_4a , да, я видел. Но голос криповый у них был
Бред
Так мы уже его слышим! Разве не похоже? 🤣
А потом он заменит его и будет пилить видосы
Это лучший сериал)) Пили следующую серию очень жду. Спасибо
Для решения твоей проблемы достаточно использовать сферические системы координат. Коротко говоря это ответ на вопрос о том, как x y z перевести в угол по вертикали, угол по горизонтали. Гугли, там все просто. Вот как ни крути, а от синусов и косинусов избавиться не сможешь)
Я и не пытался, просто никогда не сталкивался с такой задачей.
В движках я это делал через встроенные методы по типу WorldToScreen.
А тут нет доступа к движку )
p.s. Спасибо за совет, обязательно чекну
научи меня своим знаниям
Открывал школьные учебники, делал через синусы и косинусы, плохая идея. В интернете есть решение смещения курсора по по относительным координатам.
аа как всё было просто
интересно насколько большими будут проблемы вызванные тем, что шары расположены не по сфере, а в одной плоскости...
Спасибо за видео очень ждал вышло очень интересно
Ты делаешь хорошие поучительные видео
Спасибо❤️
хауди спасибо за такой интересный контент! снимай больше видео по машинному обучению!!
Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
Вот это не легко делается, но я постараюсь )
Круто! Спасибо! Было интересно!
В игры не играю, но предположу, что зависимость угла от перемещения мыши не линейная. В таких случаях лучше построить график зависимости смещения мыши в экселе (или его аналоге), желательно точек 20-50 использовать. Потом на этом графике правой кнопкой построить линию тренда и ее уравнение. И вот перемещение мыши по этому уравнению будет более точным, чем линейная формула с пикселями.
Вроде как задача регрессии. Собрать попадания и расстояния промахов в табличку и уменьшать промахи классическим обучением, ну или нейронкой в "три слоя" (Теорема Цыбенко, Универсальная теорема аппроксимации), раз уж формат такой. Потом предиктить по модельке.
Ты делаешь вещь )) ждём 4 часть
Только читал различные про ИИ и думал когда у тебя новый ролик)
Спасибо тебе огромное за урок информатики 😘😘😘
Кстати можно сделать плавность движения за счёт интерполяции траектории + добавить парочку производных и 2ных производных и вуаля, античит сможет блокнуть только по детекту процесса захвата экрана, но это можно перебросить через какие нибудь стриминговые программы типа OBS
Твои фразы в конце - САМЫЕ ЛУЧШИЕ!!!
fake af
Я тебя много где вижу.Неужели у нас интересы почти все одинаковы? То тут вижу то у SJbody и т.д.
@@flimo_6768 Рад :)
хауди ты топ, мне всегда интересно смотреть твои ролики, после рекламы я даже как то сам захотел стать программистом как ты xD
Желаю удачи :)
Слушай затея с развитием и понимаем ИИ это очень-очень круто! Мне очень сильно зашла такая тематика особенно на твоем канале!
Круто делай по чаще видосики по такой теме
Да понимаю трудно! Но буду ждать новых видосиков!
Красиво и качественно делаешь
На счёт перевода движения курсора в вращение в теории нужно делить движение на определенное значение, которое с бОльшим наклоном увеличивается
ты крутой разработчик 🔥
продолжай таким темпом
Классный формат. Делай еще
Мне кажется ты мог бы сделать быстрее, если оптимизировал маршрут курсора. Реши задачу коммивояжера.
p. s. Согласен, глупость сказал.
Тем более точек немного, даже с лоб посчитается быстро
у него курсор мгновенно перемещается за 1 кадр, ему не нужно вычислять кротчайшее расстояние
@@ATtiny13a-PU Не кратчайшее расстояние, а кратчайший маршрут. Да и один кадр - тоже время
@@ATtiny13a-PU Аа, ну если так, то да, вы правы.
@@amidl нет, тогда он прав. Возьмём, например, для составления маршрута взвешенный полносвязный граф, если веса одинаковы, а они в таком случае одинаковы, то как бы мы его не обходили - путь всех маршрутов будет одинаков.
Спасибо за интересности:3
Юхууу!!!! Новый видосик)
Можна сделать для прицеливания в игре:
1. Сделать сетку для бота, узнать сколько нужно поверуть мышку для преодаления 1 квадрата, считать квадраты, повторять цикл например по range()
2. Найти прицел, найти куда надо двигать прицел для попадания в цель, двигать прицел (например: по 5 пикселей)
Заметка для Хауди Хо: есть модули Taichi, Numba или numpy, они для ускорения бота пойдут!
Хауди, ты просто красавчик, слов нет. Я года три как подписан на твой канал и безумно рад что узнал о твоём канале. Желаю успехов.
Жиза, самый лучший IT ютубер который умеет привлекать внимание интересным контентом )
Хауди, привет! Насчет проблемы думаю поможет основы линейной алгебры. Предлагаю прочитать RayCasting, там только на один FOV, но думаю принцип станет яснее. Успехов✊
Ты лучший братан удачи !!!
Абрахам, сними видос про то, как ты изучал ML и начинал писать нейронки.
от программирования я далёк, но с радостью слушаю твои логические рассуждения)
Как обычно топ видео
Вау, просто супер!
хабуди хабудай выпустил ролик🥵🥵🥵🥶🥶🥶🥶🔥🔥🔥🔥💯💯💯
Словил кринж
@@aler4354 пон
Ура-а-а хоуди начал делать видео чаще
Хауди: Правила? Хаха, не знаю что это, делаю что хочу.
Ты топ!)
Попробуй методом подбора поперемещать мышь на центры целей, запиши значения где нибудь, а рядом их координаты в 2д пространстве, так будет проще заметить закономерность
Если вы ничего не поняли, то не беспокойтесь, ведь я тоже ничего не понял, но главное, что поставил лайк
топ!!!! спасибо за видео!!!!!!
Видео как всегда топ
В этом режиме не так уж и сложно набить больше 115к + не мало типов которые сами набивают 140+
С Наступающим!
Теперь ждём видео с ботом который будет трекать мишени а не фликать в них!!!
Судя по видео шары находятся на одной (или почти на одной, если обратить внимание на тени) плоскости. А значит мы можем рассчитать координаты из уравнения пересечения прямой с этой плоскостью. Прийдётся всё равно немного пошаманить методом тыка, но это может исправить ложные наведения. Отстреляв тогда цели с первого снимка надо делать новый для поиска целей в момент наведения на последнюю цель.
Хей, сделай ИИ играющего в шахматы, будет интересно посмотреть как они работают. А сам видос классный.
Твои ролики очень крутые.
Ваай, люблю тебе)
0:45 - Сплошные читеры
Тот самый WhoIsAqua, потом сражающийся с ними реальным скиллом.
Кстати это правда, у него есть канал кому интересно почекайте какие вещи он ставит рукой.
И высказывание что обычный человек не может набить больше 100к очков, опровержима. Хотя, может он не обычный человек?
Видос получился очень познавательным!
Ну тут грех на пол пути останавливаться, давай Топ1!
Топ благодаря тебе я учу языки программирования
Красавчик!
О, новый видос! Сразу лайк не глядя, потому что знаю, что годнота подъехала 😎🔥
Ждём "НЕЙРОСЕТЬ ИГРАЕТ В quake 3 arena И РАЗНОСИТ ВСЕХ!!!"
Охринеть ) у меня взорвался мозг , но блин видос крутой очень !
Я начинаю писать на питоне, и с такими видео я офигиваю от его функционала
Можно сделать подобного бота в ксго.Нужно взять головы моделек сделать картинки с разных сторон и углов, и заставить ИИ считывать это.Можно также написать чтобы ИИ определяло головы противника через определение команды.(По спавну, по бомбе в команде, по никам через таб)
И словить бан в стиме за создание читов
ну хотяб в этот раз без нейронных сетей обошлись. А насчёт корректного наведения, нужно учитывать не только позицию шарика на экране, а ещё угол поворота самой камеры. Т.к. все мишени появляются в одной плоскости, то спокойно можно вычислить всё, включая дистанцию до цели (в глубину), относительные повороты и т.п.
Ну так то распознавание мишеней это и есть нейронка
@@nekit-scyth, ну ты прям совсем в танке видно. Это обычный алгоритм, даже не обучающийся. А нейросеть, это конкретная топология обучаемых алгоритмов. Калибровка и адаптирование тоже далеко не всегда являются обучаемыми алгоритмами, т.е. вполне строго описанными.
@@ATtiny13a-PU нейросети это конкретные структуры эмулирующие биологические нейронные сети, нейросети не обязательно должны быть обучаема, если уже известны необходимые веса. И слово алгоритм не совсем подходит к нейронкам. И, насколько я знаю, учитывая специфику компьютерного зрения, нейросети справляются с такой задачей намного эффективней обычных алгоритмов, поэтому, я допускаю предположение, что сейчас компьютерное зрение основывается на нейронках, но если это не так, это не значит, что я в танке. Это просто говорит о том, что я не занимаюсь компьютерным зрением
3:04 ну так посмотри на максимальное значение. Самые популярные, это 100 180 и 360, есть ещё float 1.
Молодец)))) Вот бы мне так научиться программировать)
Начинай учиться, это не сложно 🙂
Хауди здарова. Классный видос. У меня есть вопрос по поводу управления персонажем в игре. У меня проблема что при запуске собственного скрипта игра просто зависает и ничего не происходит, в особенности если в скрипте удерживается какая либо из кнопок. Как это можно пофиксить? Заранее спасибо.
Привет Хоуди. Я сейчас тружусь над проектом дронов с ИИ на борту, который бы мог во первых снимать видео и после само обучатся для полного беспилотного пилотирования. То есть На борту стоит ИИ с натренированной сеткой, а обучение происходит на риге с карт RX3070. И после обновляется через консоль обратно в дрон. Задач очень много, от распознавания деревьев, рощ, лесопосадок, одиночных кустарников и деревьев, ориентироваться в пространстве. Сохранять маршрут и распознавать где летал и как возвращаться. Также понимать что в зависимости от высоты, карта также меняется (так как те объекты что становятся за пределами карты или камер мы чисто физически не видим). Я думаю ты уже понял то за тематика.
Приветствую! Рой дронов на самообучающейся нейронной сетке, вот круто, наверное!
@@user-iq8cp6pw4r Естественно это очень крутая штука, и тут уже не игры на компьютере.
Ты реально с другой планеты))
Сделай и для змейки, думаю это ооочень интересная тема :)
Сложно бот должен будет рассчитывать данные двигаться по времени тропе
Делаем ИИ для веселья ! мне понравилось видео, но жалко что ты про компьютерное зрение говорил и по сути это пример его использования :3
сделайте бот, с Нейро - сетью, которая сама будет заводиться на шарики. И попробуйте ее обучить, интересно какое место займете в этом случае). Т.е. замените сетки Ваши сетки координат и куча углов на нейро сеть
След.этап - занять 1 место.
Судя по стате, бот совершил 397 выстрелов за минуту (60/0.151мс). Я совсем далек от программирования, поэтому есть вопросы:
1. возможно ли сделать так, чтобы бот не тратил время на перемещение между целями, а каждый кадр находил цель? Как будто телепортировался на цель, а не передвигался между ними. Может как-то заранее прописывать карту (или трек, лог, координаты) перемещений.
2. Если первое не возможно, то может возможно перемещаться от крайней координаты цели к крейней координате другой цели. Условно, цель (Ц) весгда имеет форму круга. Возьмем шесть Ц, центры которых являются вершинами равностороннего шестиугольника (Ш1). Проведем из вершин прямые к цетру самого Ш1. Точка пересечения окружности Ц с этой прямой и будет крайней координатой Ц. Теперь если соединить крайние точки всех шести Ц, то получится шестиугольник (Ш2), вписанный в Ш1. А значит, Ш2 имеет меньший периметр, чем Ш1 и, соответственно, перемещение по периметру Ш2 быстрее, чем Ш1. Т.е. перемещение между Ц будет занимать меньшее время.
3. Может имеет смысл строить карту заранее между крайними точками целей. И перестраивать ее при появлении ближайшей новой цели.
Если я запутал объяснениями, но заитересовал, то в тг @XopBoHuxoTbunycT0 могу прислать рисунок того, что имею ввиду
Скажу сразу я тоже не программист. Но вот моё мнение по вашему вопросу.
1 у хауди цель в том что бот играл вместо него имитирует движения мыши и нажатия на кнопку. А что вы предлагаете противоречит механики самой игры.
2 Даже в видео можно было увидеть что бот чистенко промахивался даже целям по центру шара. Это случается Иза того что в игре есть функция отдачи. И часто Иза это быстрых комбо бот промахивается. А целится по краям это уже усложняет и так сложную задачу.
3 И да я вашу идею не правильно понял. И зделал неправильные выводы.
Хауди говорит же что Аим Лаб блокирует любое перемещение(телепотрирование) мыши.
@@opp_587 понятно. Пропустил этот момент
@@opp_587 так... А вот тот разворот на 180 градусов что было?
в это время я как раз смотрел твой видос
Топ 10 - красава!
Можно ли рассчитать расстояние от центра экрана до середины шара также как ты рассчитал расстояние от края до края и сделать перемещение?
Больше сотни в этом режиме делается, и, если натренироваться, то даже легко🙃
Как вариант для улучшения результата, нужно сделать чтобы бот попадал не в центр шара, а в край шара, который ближе к прицелу. Тогда затратится еще меньше время на наведение)
А я помню как то делал для CS 1.6 бота, ставил там скины с желтыми головами и точно так же маской отфильтровывал картинку с экрана, и каким то образом наводился на голову. Радиус поиска бошки был ограничен определенной область вокруг прицела, типа чтоб наводило только когда достаточно близко поднесешь. И я тогда вообще даже не думал про какие то там углы, взял навел и все. Вспомнить бы как.
UPD: Короче проснулся в 4 утра и вспомнил. Я находил координаты этой головы на экране, и тупо мувал туда курсор, с помощью какого то там модуля. И это работало на все 100%, причем я даже не думая сразу пришел к этому и все, а щас вот в шоке что оказывается можно было углы какие то, матрицы. В общем находишь координаты шара и муваешь на них курсор. Залайкайте чтоб хауди увидел
Есть 1 прикольная идейка, которая будет универсальная для всех стрелялок сразу.
Игрок нажимает кнопку на объекте когда он на прицеле, а ИИ отслеживает перемещение и наводит прицел на объект по цвету например. Как слежение по маркеру.
Читы...
круто
!!!
А если ты сделаешь несколько слоев целей, это первые от 3 до скажем 10 целей и как только достигает меньше какого-то числа целей - сканируем новую картинку, это добавить несколько микро а может и мили секунд к обнаружению и так же к поражению целей.
Мировой рекорд человеческий в аимлабе именно на этой карте тобишь гридшот 177к) к слову мой рекорд 136к, так что насчет полного топа ботов ты не прав) читеров там банят :)
Вот-вот, тоже немного удивили эти слова. У самого тут тоже 120к рекорд, так что бот ещё не на всю мощь херачит.
Вопрос, у тебя сколько раз в секунду обновляется изображение бота? Просто если он работает 60 раз в 1 секунду а игра рисует 1 фпс, но принимает значения 60 раз в секунду то бот может переместить прицел 60 раз в одном направлении тогда как нужно всего один раз.
привет, unity necode - как сделать перемещение, я двигаюсь на клиенте и сервер тоже двигается?
Используй функцию dot (произведение векторов) для того, чтобы узнать насколько вектор цвета в HSV или RGB похож на другой цветовой вектор, значения нормализуй заранее от 0 до 1 желательно, выходное будет от -1 до 1. Так можно сравнить вектора любой размерности с любым содержанием.
Нет смысла для HSV схемы. Для RGB да, можно.
@@iforand, для HSV тоже норм, будут попадаться цвета с похожим оттенком, яркостью и насыщенностью, будет просто некоторое одно число релевантности. Можно конечно ещё и через матрицу поворота всё это провести, чтобы деформировать область пересечения, или просто находить расстояние до точки в цветовом пространстве, но тут и этого достаточно.
@@ATtiny13a-PU да у него проблема в том, что даже при непохожих насыщенности и яркости сферы не полностью маскируются, как я понял. :) Хотя, может действительно скалярное произведение в RGB пространстве может даст лучше результат, но не факт.
@@iforand, сейчас сгонял на шейдер той и проверил на практике, лучше всего работает расстояние от точки в HSV. У RGB проблема с перепадами яркости, но тоже работает.
Тестил на блевотных камнях, в шейдер тое это самая первая по списку дефолд текстура, выискивал только бирюзовые, находит успешно.
Тут ВАЖНО то, что 0 и 360 градусы цвета (или 0 и 1 в нормализованном диапазоне) равны, т.е. расстояние нужно искать относительно зацикленного пространства. Достаточно лишь вычислить расстояние между 3-мя точками в текущем и двух +макс - макс отдельными компонентами и взять минимальные по модулю, а потом запихнуть в функцию вычисления расстояния. Это особенно важно для красного например, т.к. он находится прям на разделении.
Мне нравится автор этого видео, по моему мнению он учится и выпускает видео, получает двойную выгоду сам обучается так еще и развивает бизнес в ютубе
TenZ: "Подержите моё пиво..."
Эх завариваю чаёк и смотрю видосик.
Я знал! Я чувствовал что видосу быть)
Ты чёртов гений!
Спасибо большое за видео! Ты лучший!
Человек способен набить на этой карте больше 100.000 очков))
У меня рекорд 115.000, хотя я не то чтобы часто её играю (но у меня в контре 12.000 часов, и в аим лабе 400). И я могу гораздо больше и лучше, нужно просто тренироваться
В остальном топовый и интересный видос
И пока из самого банального до цели можно перемещаться за два шага.
Причём после первого шага замеры проводить... Ёмаё дайте мне пейнт... И где скачать этот ваш аим лаб..)
@@leprechauns5815в стиме
уже скачал) теперь пересматривать видос ибо не уверен в том откуда взялось 2420
А еще я вспомнил про десмос..
Класс!!
Хочу бота ,который играет в майнркафт и проходит его XD
Определять цель по одному уникальному пикселю и использовать системные переменные для определения положения курсора мыши в игре эффективнее.
Итерировать все пиксели долго.
Про передвижение курсора не понял :3
Этот прицел просто имба!
Хорошее видео. Жду следующий ролик про нейросеть в ксго.)
фух, отпустило, я то думал это люди там такое выдают. думал, что я вообще тормоз полный
Привет! Я так понимаю, что шары генерятся на невидемой плоскости причем по определенной сетке. Четко вычислять углы получится если знать координаты на этой плоскости до следующего шара и углы под которыми прицел смотрит на эту плоскость сейчас. Углы плывут от того что центральные шары находятся ближе к камере-игроку чем те которые появляются дальше от центра "плоскости". Если мы не знаем хотя бы углов плоскости шаров к плоскости экрана, то ни как. Можешь накидать в Unity сценку и посмотреть на углы и пиксели.
Предлагаю определять x,y мишени и смешать курсор сначала в верх до достижения оси Х потом до Y, или посложнее делить расстояние до Х,Y мишени на "шаги" и перемещать курсор на них пока мишень не будет в прицеле. Подробно в клиенте ниже:
Тебе просто нужны пропорции шага для перемещения, к примеру x,y мишени = 4, 6, ты делишь их на 10 шагов и получаешь х=0.4 y=6 и смещаешь курсор пока мишень не окажется в прицеле.
Вообще, для перевода перемещения мыши в углы можно воспользоваться переводом прямоугольных координат в полярные
Попробуй теперь написать бота для кибергринда в ultrakill
РЕШЕНИЕ ПРОБЛЕМЫ.
Если нужно передвинуть курсор с точки (0,0) в точку (x,y), то мышку нужно будет перенести в точку (45,54•arctg(x/720), 45.54•arctg(y/720)).
Попробую, спасибо
Ты крут, чувак.