Для решения твоей проблемы достаточно использовать сферические системы координат. Коротко говоря это ответ на вопрос о том, как x y z перевести в угол по вертикали, угол по горизонтали. Гугли, там все просто. Вот как ни крути, а от синусов и косинусов избавиться не сможешь)
Я и не пытался, просто никогда не сталкивался с такой задачей. В движках я это делал через встроенные методы по типу WorldToScreen. А тут нет доступа к движку ) p.s. Спасибо за совет, обязательно чекну
@@lll11l1lll1l2-p, система 50% может лишь замедлить перелив рейтинга. То что есть в играх валв, это конечно бесит, но остановить рост/спад рейтинга полностью не получится. Ты можешь откровенно руинить и тебе будут закидывать мужиков, которые 4 в 5 будут раскатывать, но в таком случае для замедления падения рейтинга одного придётся жертвовать редакцией рейтинга более одного чела на чём и строится тот небольшой дисбаланс, поэтому обычно 50% придерживается смеси, где руинеры и тащеры наименьшим образом отрываются друг от друга в обеих командах, если разрыв большой, то суммарный рейтинг начнёт меняться.
Вроде как задача регрессии. Собрать попадания и расстояния промахов в табличку и уменьшать промахи классическим обучением, ну или нейронкой в "три слоя" (Теорема Цыбенко, Универсальная теорема аппроксимации), раз уж формат такой. Потом предиктить по модельке.
В игры не играю, но предположу, что зависимость угла от перемещения мыши не линейная. В таких случаях лучше построить график зависимости смещения мыши в экселе (или его аналоге), желательно точек 20-50 использовать. Потом на этом графике правой кнопкой построить линию тренда и ее уравнение. И вот перемещение мыши по этому уравнению будет более точным, чем линейная формула с пикселями.
Кстати можно сделать плавность движения за счёт интерполяции траектории + добавить парочку производных и 2ных производных и вуаля, античит сможет блокнуть только по детекту процесса захвата экрана, но это можно перебросить через какие нибудь стриминговые программы типа OBS
Можна сделать для прицеливания в игре: 1. Сделать сетку для бота, узнать сколько нужно поверуть мышку для преодаления 1 квадрата, считать квадраты, повторять цикл например по range() 2. Найти прицел, найти куда надо двигать прицел для попадания в цель, двигать прицел (например: по 5 пикселей) Заметка для Хауди Хо: есть модули Taichi, Numba или numpy, они для ускорения бота пойдут!
@@amidl нет, тогда он прав. Возьмём, например, для составления маршрута взвешенный полносвязный граф, если веса одинаковы, а они в таком случае одинаковы, то как бы мы его не обходили - путь всех маршрутов будет одинаков.
Судя по видео шары находятся на одной (или почти на одной, если обратить внимание на тени) плоскости. А значит мы можем рассчитать координаты из уравнения пересечения прямой с этой плоскостью. Прийдётся всё равно немного пошаманить методом тыка, но это может исправить ложные наведения. Отстреляв тогда цели с первого снимка надо делать новый для поиска целей в момент наведения на последнюю цель.
0:45 - Сплошные читеры Тот самый WhoIsAqua, потом сражающийся с ними реальным скиллом. Кстати это правда, у него есть канал кому интересно почекайте какие вещи он ставит рукой. И высказывание что обычный человек не может набить больше 100к очков, опровержима. Хотя, может он не обычный человек? Видос получился очень познавательным!
Человек способен набить на этой карте больше 100.000 очков)) У меня рекорд 115.000, хотя я не то чтобы часто её играю (но у меня в контре 12.000 часов, и в аим лабе 400). И я могу гораздо больше и лучше, нужно просто тренироваться В остальном топовый и интересный видос
След.этап - занять 1 место. Судя по стате, бот совершил 397 выстрелов за минуту (60/0.151мс). Я совсем далек от программирования, поэтому есть вопросы: 1. возможно ли сделать так, чтобы бот не тратил время на перемещение между целями, а каждый кадр находил цель? Как будто телепортировался на цель, а не передвигался между ними. Может как-то заранее прописывать карту (или трек, лог, координаты) перемещений. 2. Если первое не возможно, то может возможно перемещаться от крайней координаты цели к крейней координате другой цели. Условно, цель (Ц) весгда имеет форму круга. Возьмем шесть Ц, центры которых являются вершинами равностороннего шестиугольника (Ш1). Проведем из вершин прямые к цетру самого Ш1. Точка пересечения окружности Ц с этой прямой и будет крайней координатой Ц. Теперь если соединить крайние точки всех шести Ц, то получится шестиугольник (Ш2), вписанный в Ш1. А значит, Ш2 имеет меньший периметр, чем Ш1 и, соответственно, перемещение по периметру Ш2 быстрее, чем Ш1. Т.е. перемещение между Ц будет занимать меньшее время. 3. Может имеет смысл строить карту заранее между крайними точками целей. И перестраивать ее при появлении ближайшей новой цели. Если я запутал объяснениями, но заитересовал, то в тг @XopBoHuxoTbunycT0 могу прислать рисунок того, что имею ввиду
Скажу сразу я тоже не программист. Но вот моё мнение по вашему вопросу. 1 у хауди цель в том что бот играл вместо него имитирует движения мыши и нажатия на кнопку. А что вы предлагаете противоречит механики самой игры. 2 Даже в видео можно было увидеть что бот чистенко промахивался даже целям по центру шара. Это случается Иза того что в игре есть функция отдачи. И часто Иза это быстрых комбо бот промахивается. А целится по краям это уже усложняет и так сложную задачу. 3 И да я вашу идею не правильно понял. И зделал неправильные выводы.
Предлагаю определять x,y мишени и смешать курсор сначала в верх до достижения оси Х потом до Y, или посложнее делить расстояние до Х,Y мишени на "шаги" и перемещать курсор на них пока мишень не будет в прицеле. Подробно в клиенте ниже:
Тебе просто нужны пропорции шага для перемещения, к примеру x,y мишени = 4, 6, ты делишь их на 10 шагов и получаешь х=0.4 y=6 и смещаешь курсор пока мишень не окажется в прицеле.
Есть 1 прикольная идейка, которая будет универсальная для всех стрелялок сразу. Игрок нажимает кнопку на объекте когда он на прицеле, а ИИ отслеживает перемещение и наводит прицел на объект по цвету например. Как слежение по маркеру.
ну хотяб в этот раз без нейронных сетей обошлись. А насчёт корректного наведения, нужно учитывать не только позицию шарика на экране, а ещё угол поворота самой камеры. Т.к. все мишени появляются в одной плоскости, то спокойно можно вычислить всё, включая дистанцию до цели (в глубину), относительные повороты и т.п.
@@nekit-scyth, ну ты прям совсем в танке видно. Это обычный алгоритм, даже не обучающийся. А нейросеть, это конкретная топология обучаемых алгоритмов. Калибровка и адаптирование тоже далеко не всегда являются обучаемыми алгоритмами, т.е. вполне строго описанными.
@@ATtiny13a-PU нейросети это конкретные структуры эмулирующие биологические нейронные сети, нейросети не обязательно должны быть обучаема, если уже известны необходимые веса. И слово алгоритм не совсем подходит к нейронкам. И, насколько я знаю, учитывая специфику компьютерного зрения, нейросети справляются с такой задачей намного эффективней обычных алгоритмов, поэтому, я допускаю предположение, что сейчас компьютерное зрение основывается на нейронках, но если это не так, это не значит, что я в танке. Это просто говорит о том, что я не занимаюсь компьютерным зрением
Привет Хоуди. Я сейчас тружусь над проектом дронов с ИИ на борту, который бы мог во первых снимать видео и после само обучатся для полного беспилотного пилотирования. То есть На борту стоит ИИ с натренированной сеткой, а обучение происходит на риге с карт RX3070. И после обновляется через консоль обратно в дрон. Задач очень много, от распознавания деревьев, рощ, лесопосадок, одиночных кустарников и деревьев, ориентироваться в пространстве. Сохранять маршрут и распознавать где летал и как возвращаться. Также понимать что в зависимости от высоты, карта также меняется (так как те объекты что становятся за пределами карты или камер мы чисто физически не видим). Я думаю ты уже понял то за тематика.
Как вариант для улучшения результата, нужно сделать чтобы бот попадал не в центр шара, а в край шара, который ближе к прицелу. Тогда затратится еще меньше время на наведение)
РЕШЕНИЕ ПРОБЛЕМЫ. Если нужно передвинуть курсор с точки (0,0) в точку (x,y), то мышку нужно будет перенести в точку (45,54•arctg(x/720), 45.54•arctg(y/720)).
А я помню как то делал для CS 1.6 бота, ставил там скины с желтыми головами и точно так же маской отфильтровывал картинку с экрана, и каким то образом наводился на голову. Радиус поиска бошки был ограничен определенной область вокруг прицела, типа чтоб наводило только когда достаточно близко поднесешь. И я тогда вообще даже не думал про какие то там углы, взял навел и все. Вспомнить бы как. UPD: Короче проснулся в 4 утра и вспомнил. Я находил координаты этой головы на экране, и тупо мувал туда курсор, с помощью какого то там модуля. И это работало на все 100%, причем я даже не думая сразу пришел к этому и все, а щас вот в шоке что оказывается можно было углы какие то, матрицы. В общем находишь координаты шара и муваешь на них курсор. Залайкайте чтоб хауди увидел
А что бы разрабы не запалили в игрушке. Ставишь напротив монитора камеру и подключаешь её к второму компу с аим-ботом и делаешь usb имитатор мыши для основного пк. И ты самый быстрый и меткий ТОП игрок !!!
Хауди, есть простая идея сокращения времени отстрела мишеней: я заметил, что ии стреляет в центр красного шарика в бирюзовом шаре, но прохождение от края синего шара до центра красного хоть и мало, Но занимает карды/время, чтобы поразить цель достаточно попасть в минимальную границу синего шара, совпадающей с центром курсора, попробуй запрограммировать так: Создай красное кольцо, которое чуть чуть меньше диаметра синего шара, в результате при пересечении курсора этой границы происходит выстрел, не доводя до центра, после чего курсор перемещается к следующей цели. Следовательно, время перемещения до выстрела сократится. Если это глупо или невозможно или не дает результата, прокомментируй пж. Спасибо
Я так понимаю, судя по кадрам, даже поворот на 180° происходит мгновенно, поэтому это не должно сработать. Тут скорее сама проблема в скорости распознавания цвета самой программы, плюс, нужно убедиться второй раз, что под прицелом именно тот цвет. И если эту задержку сократить, то останется только скорость самого пистолета, насколько он может быстро стрелять. И ещё, можно сократить количество распознаваний до минимума, чтобы один раз сканировать, расстрелять имеющиеся шарики и заново сканировать. В общем, нужно найти скорость всех четырёх составляющих, количество сканирований в секунду, количество перемещений в секунду, выстрелов в секунду (самое важное) и сканирования цвета под прицелом в секунду, и тогда уже прорабатывать проблемную зону.
Используй функцию dot (произведение векторов) для того, чтобы узнать насколько вектор цвета в HSV или RGB похож на другой цветовой вектор, значения нормализуй заранее от 0 до 1 желательно, выходное будет от -1 до 1. Так можно сравнить вектора любой размерности с любым содержанием.
@@iforand, для HSV тоже норм, будут попадаться цвета с похожим оттенком, яркостью и насыщенностью, будет просто некоторое одно число релевантности. Можно конечно ещё и через матрицу поворота всё это провести, чтобы деформировать область пересечения, или просто находить расстояние до точки в цветовом пространстве, но тут и этого достаточно.
@@ATtiny13a-PU да у него проблема в том, что даже при непохожих насыщенности и яркости сферы не полностью маскируются, как я понял. :) Хотя, может действительно скалярное произведение в RGB пространстве может даст лучше результат, но не факт.
@@iforand, сейчас сгонял на шейдер той и проверил на практике, лучше всего работает расстояние от точки в HSV. У RGB проблема с перепадами яркости, но тоже работает. Тестил на блевотных камнях, в шейдер тое это самая первая по списку дефолд текстура, выискивал только бирюзовые, находит успешно.
Тут ВАЖНО то, что 0 и 360 градусы цвета (или 0 и 1 в нормализованном диапазоне) равны, т.е. расстояние нужно искать относительно зацикленного пространства. Достаточно лишь вычислить расстояние между 3-мя точками в текущем и двух +макс - макс отдельными компонентами и взять минимальные по модулю, а потом запихнуть в функцию вычисления расстояния. Это особенно важно для красного например, т.к. он находится прям на разделении.
Вопрос, если уменьшить зону сканирования, то получится ли попасть ещё больше очков? Например про горизонтали спокойно можно срезать 25%, по вертикали 10-20%. Самарканд площадь сканирования может снизится прилично.
Короче, смотри. Положение линии визирования (прицела) и его перемещение может определяться по разному от игре к игре. Т.е. в CS это простое "карусельное" управление, а в космосиме при управлении кораблём это уже полноценное свободное управление вне зависимости от текущего положения прицела. Но в любом случае придётся работать с искажениями координат. Так вот дело в том, что в космосиме управлять прицелом было бы проще, т.к. нет зависимости от его текущего положения. А в CS положение линии визирования задаётся простыми сферическими координатами: phi - азимут (по горизонту); theta - угол места (по вертикали). По сути здесь горизонтальное движение мыши влияет только на координату phi, а вертикальное перемещение мыши только на координату theta, а смещение мыши просто прибавляется к этим углам с некоторым коэффициентом "чувствительности". Потому, если задрать ствол вертикально вверх он, во-первых, не будет "подыматься" через верх за спину, а во-вторых, если в таком положении двинуть мышку вбок по горизонтали, то прицел не сдвинется на самом деле в бок, а останется на месте, но вместо этого начнёт вращаться сам персонаж вокруг своей вертикальной оси. Так вот, для правильного перевода прицела проблема заключается в том. что нужно знать текущий угол "задирания" ствола, т.е. угол theta. И есть два пути, как это обойти: это всегда принимать его равным нулю и ловить ошибки наведения тем большие, чем сильнее задран ствол; параллельно пытаться рассчитывать текущий угол места прицела последовательным складыванием сдвигов прицела по вертикали и ловить накопительные ошибки вычислений. Я сделал несколько расчётов и привёл в маткадовском файле (с сохранением в RTF и HTML) с примером расчёта. Если здесь используется та же схема представления угла прицела, то должно "получиться" с поправкой на то, что угол места прицела неизвестен (может натренировать нейросеть для определения этого угла? :) ). Вот ссылка на архив, если ютуб её не грохнет drive.google.com/file/d/1ofGOxX6sZlN7VzwAsjTnmP3aRYEqnLbS/view?usp=sharing
Если бы не было задачи передвинуть прицел за один кадр, то по мне логичнее было бы сделать простую следящую систему: просто "сдвигать" курсор мыши в сторону цели на каждом кадре пропорционально расстоянию до этой цели в пикселях. Если добавить ещё инерции (т.е. переменную скорости мыши), то тогда бы перемещение было бы похоже на человеческое. И проблем бы не было с определением угла theta.
Кстати, ещё, думаю, возможен вариант коррекции оценки угла theta, который высчитывается параллельно. Просто нужно измерять ошибку наведения и по неё оценить, на сколько мы ошибаемся в этом угле и корректировать его каждый раз. Тогда по идее всё должно работать отлично. Но нужно ещё немного подзаморочиться с выводом формулы, если решение "установить theta в ноль" не будет удовлетворительным.
Я смотрю ты запарился не хуже меня ) Спасибо, обязательно всё посмотрю! По поводу задачи сдвинуть за один кадр это да, один из путей решения проблемы - это постоянный сдвиг и проверка что цель под курсором. Но умение сдвигать за один кадр открывает много других преимуществ, не говоря уже об элементарной скорости.
Обалдеть ты сделал это , открыл новую страницу искусственного интеллекта . Даже не представляю что будет если такую машину посадить за реальный пулемет .
Можно сделать подобного бота в ксго.Нужно взять головы моделек сделать картинки с разных сторон и углов, и заставить ИИ считывать это.Можно также написать чтобы ИИ определяло головы противника через определение команды.(По спавну, по бомбе в команде, по никам через таб)
Хауди, кажись ты зря мучался с углами тд. Можно просто вести прицел в сторону мишени пока он не достигнет её. И тогда это просто можно считать уже как 2д сетку.
Ошибка как я понимаю происходит из-за того, что ты ищешь угол, исходя из того, что равное расстояние на экране имеет равный угол смещения, но это не так, это бы работало если бы проекция была на сфере, но движки так устроены, что проекцию на экран они считают как проекцию на плоскость(т.к. экраны плоские) и расстояние от тебя, до цели на этой проекции на самом деле увеличивается с увеличением углов. Углы нужно высчитывать из тригонометрических функций.
Мировой рекорд человеческий в аимлабе именно на этой карте тобишь гридшот 177к) к слову мой рекорд 136к, так что насчет полного топа ботов ты не прав) читеров там банят :)
И пока из самого банального до цели можно перемещаться за два шага. Причём после первого шага замеры проводить... Ёмаё дайте мне пейнт... И где скачать этот ваш аим лаб..)
Ну собственно для получения угла, нужно понять что изображение на мониторе на деле проекция на каком то расстоянии от камеры с шириной 1920px и высотой 1080px. Зная fov и размеры экрана мы можем посчитать условное расстояние xh = (HRes/2)/tg(fov/2), и так же посчитать для вертикали.потом при помощи этой величины и пикселей от центра экрана можно посчитать уже угол искомый.
При условии, что HRes = 1920, а fov у нас 106.26. Получается xh = 960/tan(53.13) = 720. При этом tan(53.13) выдает 1.33332... Что даёт нам это значение?
Слушай затея с развитием и понимаем ИИ это очень-очень круто! Мне очень сильно зашла такая тематика особенно на твоем канале! Круто делай по чаще видосики по такой теме Да понимаю трудно! Но буду ждать новых видосиков! Красиво и качественно делаешь
а теперь маски добавляем в ИИ и находим ими части цели в ГО на уже найденой позиции, и будет полный АИМ и тут наверное стоит строить граф и просчитывать плечи между точками
Хм а я думал, что нас ждёт уже частично готовый код ИИ для кс :)
Для того что бы ты себе его скопировал и апнул глобола)
сразу бан влетит
@@ovum_ordinarium так это не читы)
@@ovum_ordinariumа кто заметит?
@@mr_faild но твой то скилл не прокачается)
Для решения твоей проблемы достаточно использовать сферические системы координат. Коротко говоря это ответ на вопрос о том, как x y z перевести в угол по вертикали, угол по горизонтали. Гугли, там все просто. Вот как ни крути, а от синусов и косинусов избавиться не сможешь)
Я и не пытался, просто никогда не сталкивался с такой задачей.
В движках я это делал через встроенные методы по типу WorldToScreen.
А тут нет доступа к движку )
p.s. Спасибо за совет, обязательно чекну
научи меня своим знаниям
Открывал школьные учебники, делал через синусы и косинусы, плохая идея. В интернете есть решение смещения курсора по по относительным координатам.
аа как всё было просто
интересно насколько большими будут проблемы вызванные тем, что шары расположены не по сфере, а в одной плоскости...
Сделай мне тиммейтов пожалуйста 😫🙏🙏
На второй комп тимейта профессионала
помни, матч мейкинг закидывает людей рандомно. Будут попадаться сильные игроки в команде? значит и у врагов не будет зевак.
@@ATtiny13a-PU обычно у тебя зеваки а противники нет
@@lll11l1lll1l2-p, система 50% может лишь замедлить перелив рейтинга. То что есть в играх валв, это конечно бесит, но остановить рост/спад рейтинга полностью не получится. Ты можешь откровенно руинить и тебе будут закидывать мужиков, которые 4 в 5 будут раскатывать, но в таком случае для замедления падения рейтинга одного придётся жертвовать редакцией рейтинга более одного чела на чём и строится тот небольшой дисбаланс, поэтому обычно 50% придерживается смеси, где руинеры и тащеры наименьшим образом отрываются друг от друга в обеих командах, если разрыв большой, то суммарный рейтинг начнёт меняться.
Можешь попробовать сделать голосового ассистента, который произносит слова твоим голосом? Я смотрел предыдущие видосы )
он делал такого ассистента посмотри на канале хауди правда там не его голос но всё же
@@3_4a , да, я видел. Но голос криповый у них был
Бред
Так мы уже его слышим! Разве не похоже? 🤣
А потом он заменит его и будет пилить видосы
Вроде как задача регрессии. Собрать попадания и расстояния промахов в табличку и уменьшать промахи классическим обучением, ну или нейронкой в "три слоя" (Теорема Цыбенко, Универсальная теорема аппроксимации), раз уж формат такой. Потом предиктить по модельке.
В игры не играю, но предположу, что зависимость угла от перемещения мыши не линейная. В таких случаях лучше построить график зависимости смещения мыши в экселе (или его аналоге), желательно точек 20-50 использовать. Потом на этом графике правой кнопкой построить линию тренда и ее уравнение. И вот перемещение мыши по этому уравнению будет более точным, чем линейная формула с пикселями.
Это лучший сериал)) Пили следующую серию очень жду. Спасибо
Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
Вот это не легко делается, но я постараюсь )
Ты делаешь хорошие поучительные видео
Спасибо❤️
Кстати можно сделать плавность движения за счёт интерполяции траектории + добавить парочку производных и 2ных производных и вуаля, античит сможет блокнуть только по детекту процесса захвата экрана, но это можно перебросить через какие нибудь стриминговые программы типа OBS
Абрахам, сними видос про то, как ты изучал ML и начинал писать нейронки.
Твои фразы в конце - САМЫЕ ЛУЧШИЕ!!!
fake af
Я тебя много где вижу.Неужели у нас интересы почти все одинаковы? То тут вижу то у SJbody и т.д.
@@flimo_6768 Рад :)
Спасибо тебе огромное за урок информатики 😘😘😘
Можна сделать для прицеливания в игре:
1. Сделать сетку для бота, узнать сколько нужно поверуть мышку для преодаления 1 квадрата, считать квадраты, повторять цикл например по range()
2. Найти прицел, найти куда надо двигать прицел для попадания в цель, двигать прицел (например: по 5 пикселей)
Заметка для Хауди Хо: есть модули Taichi, Numba или numpy, они для ускорения бота пойдут!
Спасибо за видео очень ждал вышло очень интересно
Мне кажется ты мог бы сделать быстрее, если оптимизировал маршрут курсора. Реши задачу коммивояжера.
p. s. Согласен, глупость сказал.
Тем более точек немного, даже с лоб посчитается быстро
у него курсор мгновенно перемещается за 1 кадр, ему не нужно вычислять кротчайшее расстояние
@@ATtiny13a-PU Не кратчайшее расстояние, а кратчайший маршрут. Да и один кадр - тоже время
@@ATtiny13a-PU Аа, ну если так, то да, вы правы.
@@amidl нет, тогда он прав. Возьмём, например, для составления маршрута взвешенный полносвязный граф, если веса одинаковы, а они в таком случае одинаковы, то как бы мы его не обходили - путь всех маршрутов будет одинаков.
О, новый видос! Сразу лайк не глядя, потому что знаю, что годнота подъехала 😎🔥
Я начинаю писать на питоне, и с такими видео я офигиваю от его функционала
Если вы ничего не поняли, то не беспокойтесь, ведь я тоже ничего не понял, но главное, что поставил лайк
Судя по видео шары находятся на одной (или почти на одной, если обратить внимание на тени) плоскости. А значит мы можем рассчитать координаты из уравнения пересечения прямой с этой плоскостью. Прийдётся всё равно немного пошаманить методом тыка, но это может исправить ложные наведения. Отстреляв тогда цели с первого снимка надо делать новый для поиска целей в момент наведения на последнюю цель.
Юхууу!!!! Новый видосик)
0:45 - Сплошные читеры
Тот самый WhoIsAqua, потом сражающийся с ними реальным скиллом.
Кстати это правда, у него есть канал кому интересно почекайте какие вещи он ставит рукой.
И высказывание что обычный человек не может набить больше 100к очков, опровержима. Хотя, может он не обычный человек?
Видос получился очень познавательным!
Человек способен набить на этой карте больше 100.000 очков))
У меня рекорд 115.000, хотя я не то чтобы часто её играю (но у меня в контре 12.000 часов, и в аим лабе 400). И я могу гораздо больше и лучше, нужно просто тренироваться
В остальном топовый и интересный видос
Хауди: Правила? Хаха, не знаю что это, делаю что хочу.
Ты топ!)
На счёт перевода движения курсора в вращение в теории нужно делить движение на определенное значение, которое с бОльшим наклоном увеличивается
Мне нравится автор этого видео, по моему мнению он учится и выпускает видео, получает двойную выгоду сам обучается так еще и развивает бизнес в ютубе
Круто! Спасибо! Было интересно!
Ты реально с другой планеты))
След.этап - занять 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 градусов что было?
Теперь ждём видео с ботом который будет трекать мишени а не фликать в них!!!
3:04 ну так посмотри на максимальное значение. Самые популярные, это 100 180 и 360, есть ещё float 1.
Ждём "НЕЙРОСЕТЬ ИГРАЕТ В quake 3 arena И РАЗНОСИТ ВСЕХ!!!"
С Наступающим!
Вообще, для перевода перемещения мыши в углы можно воспользоваться переводом прямоугольных координат в полярные
Можно ещё попробовать сделать так:
Ты двигаешь курсор, а оружие само должно стрелять. Мне кажется это будет намного лучше. Думаю вы меня поняли
Предлагаю определять x,y мишени и смешать курсор сначала в верх до достижения оси Х потом до Y, или посложнее делить расстояние до Х,Y мишени на "шаги" и перемещать курсор на них пока мишень не будет в прицеле. Подробно в клиенте ниже:
Тебе просто нужны пропорции шага для перемещения, к примеру x,y мишени = 4, 6, ты делишь их на 10 шагов и получаешь х=0.4 y=6 и смещаешь курсор пока мишень не окажется в прицеле.
TenZ: "Подержите моё пиво..."
ты крутой разработчик 🔥
продолжай таким темпом
Есть 1 прикольная идейка, которая будет универсальная для всех стрелялок сразу.
Игрок нажимает кнопку на объекте когда он на прицеле, а ИИ отслеживает перемещение и наводит прицел на объект по цвету например. Как слежение по маркеру.
Читы...
Только читал различные про ИИ и думал когда у тебя новый ролик)
хауди ты топ, мне всегда интересно смотреть твои ролики, после рекламы я даже как то сам захотел стать программистом как ты xD
Ты лучший братан удачи !!!
Спасибо большое за видео! Ты лучший!
Сможешь сделать бота для доты? Будет интересно посмотреть
ну хотяб в этот раз без нейронных сетей обошлись. А насчёт корректного наведения, нужно учитывать не только позицию шарика на экране, а ещё угол поворота самой камеры. Т.к. все мишени появляются в одной плоскости, то спокойно можно вычислить всё, включая дистанцию до цели (в глубину), относительные повороты и т.п.
Ну так то распознавание мишеней это и есть нейронка
@@nekit-scyth, ну ты прям совсем в танке видно. Это обычный алгоритм, даже не обучающийся. А нейросеть, это конкретная топология обучаемых алгоритмов. Калибровка и адаптирование тоже далеко не всегда являются обучаемыми алгоритмами, т.е. вполне строго описанными.
@@ATtiny13a-PU нейросети это конкретные структуры эмулирующие биологические нейронные сети, нейросети не обязательно должны быть обучаема, если уже известны необходимые веса. И слово алгоритм не совсем подходит к нейронкам. И, насколько я знаю, учитывая специфику компьютерного зрения, нейросети справляются с такой задачей намного эффективней обычных алгоритмов, поэтому, я допускаю предположение, что сейчас компьютерное зрение основывается на нейронках, но если это не так, это не значит, что я в танке. Это просто говорит о том, что я не занимаюсь компьютерным зрением
Привет Хоуди. Я сейчас тружусь над проектом дронов с ИИ на борту, который бы мог во первых снимать видео и после само обучатся для полного беспилотного пилотирования. То есть На борту стоит ИИ с натренированной сеткой, а обучение происходит на риге с карт RX3070. И после обновляется через консоль обратно в дрон. Задач очень много, от распознавания деревьев, рощ, лесопосадок, одиночных кустарников и деревьев, ориентироваться в пространстве. Сохранять маршрут и распознавать где летал и как возвращаться. Также понимать что в зависимости от высоты, карта также меняется (так как те объекты что становятся за пределами карты или камер мы чисто физически не видим). Я думаю ты уже понял то за тематика.
Приветствую! Рой дронов на самообучающейся нейронной сетке, вот круто, наверное!
@@ДневникПрикамья Естественно это очень крутая штука, и тут уже не игры на компьютере.
Классный формат. Делай еще
Как вариант для улучшения результата, нужно сделать чтобы бот попадал не в центр шара, а в край шара, который ближе к прицелу. Тогда затратится еще меньше время на наведение)
Попробуй теперь написать бота для кибергринда в ultrakill
Хауди, ты просто красавчик, слов нет. Я года три как подписан на твой канал и безумно рад что узнал о твоём канале. Желаю успехов.
Жиза, самый лучший IT ютубер который умеет привлекать внимание интересным контентом )
РЕШЕНИЕ ПРОБЛЕМЫ.
Если нужно передвинуть курсор с точки (0,0) в точку (x,y), то мышку нужно будет перенести в точку (45,54•arctg(x/720), 45.54•arctg(y/720)).
Попробую, спасибо
хауди спасибо за такой интересный контент! снимай больше видео по машинному обучению!!
Как обычно топ видео
Охринеть ) у меня взорвался мозг , но блин видос крутой очень !
Ура-а-а хоуди начал делать видео чаще
Желаю удачи :)
Вау, просто супер!
А я помню как то делал для CS 1.6 бота, ставил там скины с желтыми головами и точно так же маской отфильтровывал картинку с экрана, и каким то образом наводился на голову. Радиус поиска бошки был ограничен определенной область вокруг прицела, типа чтоб наводило только когда достаточно близко поднесешь. И я тогда вообще даже не думал про какие то там углы, взял навел и все. Вспомнить бы как.
UPD: Короче проснулся в 4 утра и вспомнил. Я находил координаты этой головы на экране, и тупо мувал туда курсор, с помощью какого то там модуля. И это работало на все 100%, причем я даже не думая сразу пришел к этому и все, а щас вот в шоке что оказывается можно было углы какие то, матрицы. В общем находишь координаты шара и муваешь на них курсор. Залайкайте чтоб хауди увидел
Больше сотни в этом режиме делается, и, если натренироваться, то даже легко🙃
от программирования я далёк, но с радостью слушаю твои логические рассуждения)
Хей, сделай ИИ играющего в шахматы, будет интересно посмотреть как они работают. А сам видос классный.
Я всю жизнь думал что это бирюзовый цвет, а не синий. Ты у меня вылечил дальтонизм ))
Ты делаешь вещь )) ждём 4 часть
Сделай и для змейки, думаю это ооочень интересная тема :)
Сложно бот должен будет рассчитывать данные двигаться по времени тропе
Чувак это нереально круто но можешь сделать видео как использовать твой код. Я хотел бы тоже попробовать его но не знаю как.
Эх завариваю чаёк и смотрю видосик.
Спасибо за интересности:3
хабуди хабудай выпустил ролик🥵🥵🥵🥶🥶🥶🥶🔥🔥🔥🔥💯💯💯
Словил кринж
@@aler4354 пон
Лови комментарий, я хз че написать, но продвинуть видео хочу иииии, и видео крутое.
Ваай, люблю тебе)
А что бы разрабы не запалили в игрушке. Ставишь напротив монитора камеру и подключаешь её к второму компу с аим-ботом и делаешь usb имитатор мыши для основного пк.
И ты самый быстрый и меткий ТОП игрок !!!
Определять цель по одному уникальному пикселю и использовать системные переменные для определения положения курсора мыши в игре эффективнее.
Итерировать все пиксели долго.
Про передвижение курсора не понял :3
Хауди, есть простая идея сокращения времени отстрела мишеней: я заметил, что ии стреляет в центр красного шарика в бирюзовом шаре, но прохождение от края синего шара до центра красного хоть и мало, Но занимает карды/время, чтобы поразить цель достаточно попасть в минимальную границу синего шара, совпадающей с центром курсора, попробуй запрограммировать так:
Создай красное кольцо, которое чуть чуть меньше диаметра синего шара, в результате при пересечении курсора этой границы происходит выстрел, не доводя до центра, после чего курсор перемещается к следующей цели. Следовательно, время перемещения до выстрела сократится.
Если это глупо или невозможно или не дает результата, прокомментируй пж. Спасибо
Я так понимаю, судя по кадрам, даже поворот на 180° происходит мгновенно, поэтому это не должно сработать. Тут скорее сама проблема в скорости распознавания цвета самой программы, плюс, нужно убедиться второй раз, что под прицелом именно тот цвет. И если эту задержку сократить, то останется только скорость самого пистолета, насколько он может быстро стрелять.
И ещё, можно сократить количество распознаваний до минимума, чтобы один раз сканировать, расстрелять имеющиеся шарики и заново сканировать.
В общем, нужно найти скорость всех четырёх составляющих, количество сканирований в секунду, количество перемещений в секунду, выстрелов в секунду (самое важное) и сканирования цвета под прицелом в секунду, и тогда уже прорабатывать проблемную зону.
Используй функцию dot (произведение векторов) для того, чтобы узнать насколько вектор цвета в HSV или RGB похож на другой цветовой вектор, значения нормализуй заранее от 0 до 1 желательно, выходное будет от -1 до 1. Так можно сравнить вектора любой размерности с любым содержанием.
Нет смысла для HSV схемы. Для RGB да, можно.
@@iforand, для HSV тоже норм, будут попадаться цвета с похожим оттенком, яркостью и насыщенностью, будет просто некоторое одно число релевантности. Можно конечно ещё и через матрицу поворота всё это провести, чтобы деформировать область пересечения, или просто находить расстояние до точки в цветовом пространстве, но тут и этого достаточно.
@@ATtiny13a-PU да у него проблема в том, что даже при непохожих насыщенности и яркости сферы не полностью маскируются, как я понял. :) Хотя, может действительно скалярное произведение в RGB пространстве может даст лучше результат, но не факт.
@@iforand, сейчас сгонял на шейдер той и проверил на практике, лучше всего работает расстояние от точки в HSV. У RGB проблема с перепадами яркости, но тоже работает.
Тестил на блевотных камнях, в шейдер тое это самая первая по списку дефолд текстура, выискивал только бирюзовые, находит успешно.
Тут ВАЖНО то, что 0 и 360 градусы цвета (или 0 и 1 в нормализованном диапазоне) равны, т.е. расстояние нужно искать относительно зацикленного пространства. Достаточно лишь вычислить расстояние между 3-мя точками в текущем и двух +макс - макс отдельными компонентами и взять минимальные по модулю, а потом запихнуть в функцию вычисления расстояния. Это особенно важно для красного например, т.к. он находится прям на разделении.
Вопрос, если уменьшить зону сканирования, то получится ли попасть ещё больше очков?
Например про горизонтали спокойно можно срезать 25%, по вертикали 10-20%. Самарканд площадь сканирования может снизится прилично.
Можно просто передвигать мышь в сторону цели напрямую и стрелять при достижении голубого цвета, а затем повторять это в сторону ближайшего
Знаю, но это медленнее чем хотелось бы
Короче, смотри. Положение линии визирования (прицела) и его перемещение может определяться по разному от игре к игре. Т.е. в CS это простое "карусельное" управление, а в космосиме при управлении кораблём это уже полноценное свободное управление вне зависимости от текущего положения прицела. Но в любом случае придётся работать с искажениями координат. Так вот дело в том, что в космосиме управлять прицелом было бы проще, т.к. нет зависимости от его текущего положения. А в CS положение линии визирования задаётся простыми сферическими координатами: phi - азимут (по горизонту); theta - угол места (по вертикали). По сути здесь горизонтальное движение мыши влияет только на координату phi, а вертикальное перемещение мыши только на координату theta, а смещение мыши просто прибавляется к этим углам с некоторым коэффициентом "чувствительности". Потому, если задрать ствол вертикально вверх он, во-первых, не будет "подыматься" через верх за спину, а во-вторых, если в таком положении двинуть мышку вбок по горизонтали, то прицел не сдвинется на самом деле в бок, а останется на месте, но вместо этого начнёт вращаться сам персонаж вокруг своей вертикальной оси.
Так вот, для правильного перевода прицела проблема заключается в том. что нужно знать текущий угол "задирания" ствола, т.е. угол theta. И есть два пути, как это обойти: это всегда принимать его равным нулю и ловить ошибки наведения тем большие, чем сильнее задран ствол; параллельно пытаться рассчитывать текущий угол места прицела последовательным складыванием сдвигов прицела по вертикали и ловить накопительные ошибки вычислений. Я сделал несколько расчётов и привёл в маткадовском файле (с сохранением в RTF и HTML) с примером расчёта. Если здесь используется та же схема представления угла прицела, то должно "получиться" с поправкой на то, что угол места прицела неизвестен (может натренировать нейросеть для определения этого угла? :) ). Вот ссылка на архив, если ютуб её не грохнет
drive.google.com/file/d/1ofGOxX6sZlN7VzwAsjTnmP3aRYEqnLbS/view?usp=sharing
Если бы не было задачи передвинуть прицел за один кадр, то по мне логичнее было бы сделать простую следящую систему: просто "сдвигать" курсор мыши в сторону цели на каждом кадре пропорционально расстоянию до этой цели в пикселях. Если добавить ещё инерции (т.е. переменную скорости мыши), то тогда бы перемещение было бы похоже на человеческое. И проблем бы не было с определением угла theta.
Кстати, ещё, думаю, возможен вариант коррекции оценки угла theta, который высчитывается параллельно. Просто нужно измерять ошибку наведения и по неё оценить, на сколько мы ошибаемся в этом угле и корректировать его каждый раз. Тогда по идее всё должно работать отлично. Но нужно ещё немного подзаморочиться с выводом формулы, если решение "установить theta в ноль" не будет удовлетворительным.
Я смотрю ты запарился не хуже меня )
Спасибо, обязательно всё посмотрю!
По поводу задачи сдвинуть за один кадр это да, один из путей решения проблемы - это постоянный сдвиг и проверка что цель под курсором.
Но умение сдвигать за один кадр открывает много других преимуществ, не говоря уже об элементарной скорости.
Обалдеть ты сделал это , открыл новую страницу искусственного интеллекта . Даже не представляю что будет если такую машину посадить за реальный пулемет .
Её открыли задолго до меня )
Я просто показываю свои эксперименты.
Можно сделать подобного бота в ксго.Нужно взять головы моделек сделать картинки с разных сторон и углов, и заставить ИИ считывать это.Можно также написать чтобы ИИ определяло головы противника через определение команды.(По спавну, по бомбе в команде, по никам через таб)
И словить бан в стиме за создание читов
Хауди, кажись ты зря мучался с углами тд. Можно просто вести прицел в сторону мишени пока он не достигнет её. И тогда это просто можно считать уже как 2д сетку.
Я знаю про этот метод, но все равно хотелось углами )
Телепорт чтоб был.
Делаем ИИ для веселья ! мне понравилось видео, но жалко что ты про компьютерное зрение говорил и по сути это пример его использования :3
#RLM
будущее за искусственным интеллектом, нет робо рассизму
Выглядит круто!
Как насчёт ассистента для American truck simulator, удержание в полосе торможение перед встречным автомобилем?)
Это единственный гений планеты, который делает нейронам для игр, не доросли еще нейронки для замены игрока
Хауди! Попробуйте сделать бота в файтинг, guilty gear: strive например
Твои ролики очень крутые.
Жду новое видео "css за час" !
Ошибка как я понимаю происходит из-за того, что ты ищешь угол, исходя из того, что равное расстояние на экране имеет равный угол смещения, но это не так, это бы работало если бы проекция была на сфере, но движки так устроены, что проекцию на экран они считают как проекцию на плоскость(т.к. экраны плоские) и расстояние от тебя, до цели на этой проекции на самом деле увеличивается с увеличением углов. Углы нужно высчитывать из тригонометрических функций.
Я это тоже примерно понял уже, кажется это как-то связано со сферическими координатами.
Мировой рекорд человеческий в аимлабе именно на этой карте тобишь гридшот 177к) к слову мой рекорд 136к, так что насчет полного топа ботов ты не прав) читеров там банят :)
Вот-вот, тоже немного удивили эти слова. У самого тут тоже 120к рекорд, так что бот ещё не на всю мощь херачит.
И пока из самого банального до цели можно перемещаться за два шага.
Причём после первого шага замеры проводить... Ёмаё дайте мне пейнт... И где скачать этот ваш аим лаб..)
@@leprechauns5815в стиме
уже скачал) теперь пересматривать видос ибо не уверен в том откуда взялось 2420
А еще я вспомнил про десмос..
Ну собственно для получения угла, нужно понять что изображение на мониторе на деле проекция на каком то расстоянии от камеры с шириной 1920px и высотой 1080px. Зная fov и размеры экрана мы можем посчитать условное расстояние xh = (HRes/2)/tg(fov/2), и так же посчитать для вертикали.потом при помощи этой величины и пикселей от центра экрана можно посчитать уже угол искомый.
При условии, что HRes = 1920, а fov у нас 106.26.
Получается xh = 960/tan(53.13) = 720.
При этом tan(53.13) выдает 1.33332...
Что даёт нам это значение?
@@HowdyhoNet допустим цель находится на x пикселей правее прицела тогда угол по горизонтали будет atan(x/720), потом то же самое по вертикали.
А прикинь ещё автокликер подрубить сюда, вот так пара будет! :D
Хочу бота ,который играет в майнркафт и проходит его XD
Хауди, ты говорил что бот на кс не видит через дым, но люди умеют слышать:
Дай боту на кс уши с ними он узнает когда бомбу заплентили по звуку
Ну тут грех на пол пути останавливаться, давай Топ1!
Слушай затея с развитием и понимаем ИИ это очень-очень круто! Мне очень сильно зашла такая тематика особенно на твоем канале!
Круто делай по чаще видосики по такой теме
Да понимаю трудно! Но буду ждать новых видосиков!
Красиво и качественно делаешь
Я знал! Я чувствовал что видосу быть)
а теперь маски добавляем в ИИ и находим ими части цели в ГО на уже найденой позиции, и будет полный АИМ
и тут наверное стоит строить граф и просчитывать плечи между точками
Ну что, пора работать на пентагон?) делаем турели с автонаводкой) и запускаем дрона.
Попробуй создать отдельный код чтобы было сначала влево потом вверх или вправо потом вниз