Для решения твоей проблемы достаточно использовать сферические системы координат. Коротко говоря это ответ на вопрос о том, как x y z перевести в угол по вертикали, угол по горизонтали. Гугли, там все просто. Вот как ни крути, а от синусов и косинусов избавиться не сможешь)
Я и не пытался, просто никогда не сталкивался с такой задачей. В движках я это делал через встроенные методы по типу WorldToScreen. А тут нет доступа к движку ) p.s. Спасибо за совет, обязательно чекну
@@lll11l1lll1l2-p, система 50% может лишь замедлить перелив рейтинга. То что есть в играх валв, это конечно бесит, но остановить рост/спад рейтинга полностью не получится. Ты можешь откровенно руинить и тебе будут закидывать мужиков, которые 4 в 5 будут раскатывать, но в таком случае для замедления падения рейтинга одного придётся жертвовать редакцией рейтинга более одного чела на чём и строится тот небольшой дисбаланс, поэтому обычно 50% придерживается смеси, где руинеры и тащеры наименьшим образом отрываются друг от друга в обеих командах, если разрыв большой, то суммарный рейтинг начнёт меняться.
Вроде как задача регрессии. Собрать попадания и расстояния промахов в табличку и уменьшать промахи классическим обучением, ну или нейронкой в "три слоя" (Теорема Цыбенко, Универсальная теорема аппроксимации), раз уж формат такой. Потом предиктить по модельке.
В игры не играю, но предположу, что зависимость угла от перемещения мыши не линейная. В таких случаях лучше построить график зависимости смещения мыши в экселе (или его аналоге), желательно точек 20-50 использовать. Потом на этом графике правой кнопкой построить линию тренда и ее уравнение. И вот перемещение мыши по этому уравнению будет более точным, чем линейная формула с пикселями.
Кстати можно сделать плавность движения за счёт интерполяции траектории + добавить парочку производных и 2ных производных и вуаля, античит сможет блокнуть только по детекту процесса захвата экрана, но это можно перебросить через какие нибудь стриминговые программы типа OBS
@@amidl нет, тогда он прав. Возьмём, например, для составления маршрута взвешенный полносвязный граф, если веса одинаковы, а они в таком случае одинаковы, то как бы мы его не обходили - путь всех маршрутов будет одинаков.
0:45 - Сплошные читеры Тот самый WhoIsAqua, потом сражающийся с ними реальным скиллом. Кстати это правда, у него есть канал кому интересно почекайте какие вещи он ставит рукой. И высказывание что обычный человек не может набить больше 100к очков, опровержима. Хотя, может он не обычный человек? Видос получился очень познавательным!
Человек способен набить на этой карте больше 100.000 очков)) У меня рекорд 115.000, хотя я не то чтобы часто её играю (но у меня в контре 12.000 часов, и в аим лабе 400). И я могу гораздо больше и лучше, нужно просто тренироваться В остальном топовый и интересный видос
Можна сделать для прицеливания в игре: 1. Сделать сетку для бота, узнать сколько нужно поверуть мышку для преодаления 1 квадрата, считать квадраты, повторять цикл например по range() 2. Найти прицел, найти куда надо двигать прицел для попадания в цель, двигать прицел (например: по 5 пикселей) Заметка для Хауди Хо: есть модули Taichi, Numba или numpy, они для ускорения бота пойдут!
Привет Хоуди. Я сейчас тружусь над проектом дронов с ИИ на борту, который бы мог во первых снимать видео и после само обучатся для полного беспилотного пилотирования. То есть На борту стоит ИИ с натренированной сеткой, а обучение происходит на риге с карт RX3070. И после обновляется через консоль обратно в дрон. Задач очень много, от распознавания деревьев, рощ, лесопосадок, одиночных кустарников и деревьев, ориентироваться в пространстве. Сохранять маршрут и распознавать где летал и как возвращаться. Также понимать что в зависимости от высоты, карта также меняется (так как те объекты что становятся за пределами карты или камер мы чисто физически не видим). Я думаю ты уже понял то за тематика.
Судя по видео шары находятся на одной (или почти на одной, если обратить внимание на тени) плоскости. А значит мы можем рассчитать координаты из уравнения пересечения прямой с этой плоскостью. Прийдётся всё равно немного пошаманить методом тыка, но это может исправить ложные наведения. Отстреляв тогда цели с первого снимка надо делать новый для поиска целей в момент наведения на последнюю цель.
А я помню как то делал для CS 1.6 бота, ставил там скины с желтыми головами и точно так же маской отфильтровывал картинку с экрана, и каким то образом наводился на голову. Радиус поиска бошки был ограничен определенной область вокруг прицела, типа чтоб наводило только когда достаточно близко поднесешь. И я тогда вообще даже не думал про какие то там углы, взял навел и все. Вспомнить бы как. UPD: Короче проснулся в 4 утра и вспомнил. Я находил координаты этой головы на экране, и тупо мувал туда курсор, с помощью какого то там модуля. И это работало на все 100%, причем я даже не думая сразу пришел к этому и все, а щас вот в шоке что оказывается можно было углы какие то, матрицы. В общем находишь координаты шара и муваешь на них курсор. Залайкайте чтоб хауди увидел
Блин начал изучать Пайтон после всех твои аргументов в его пользу, но насмотревшись роликов где говорят, что Пайтон хорош для вспомогательных задач но не годится для основы проекта, это побуждало меня перепрыгнуть с Пайтона на с++ или другой язык, но смотрю, что реально можно сделать, что то полезное и годное и на Пайтоне используя его исключительно как основу в проекте, в любом случае я думаю что Пайтон пригодится в будущем + даст лёгкий старт для понимания структуры и скелета кода, думаю разные языки строят одинаковый скелет для решения задач, но детали(команды) для вывода нужного результата разные. Твой формат подачи информации живой и "простолюдинский" по сравнению с другими влогерами есть одна годная идея, можно вести стрим как ты пишешь простенький проект игры или приложухи с разъяснениями деталей например, что делает и для чего нужна это команда, и т.п, а чтобы это не было благотворительностью, можно создать донат сбор ВК или в другом месте, когда нужная сумма накопиться начать заниматься этим проектом. *Изучая пайтон я уже придумал парочку интересных проектов для мобилы, это ещё сильнее мотивирует узнать как же все таки их реализовать.
След.этап - занять 1 место. Судя по стате, бот совершил 397 выстрелов за минуту (60/0.151мс). Я совсем далек от программирования, поэтому есть вопросы: 1. возможно ли сделать так, чтобы бот не тратил время на перемещение между целями, а каждый кадр находил цель? Как будто телепортировался на цель, а не передвигался между ними. Может как-то заранее прописывать карту (или трек, лог, координаты) перемещений. 2. Если первое не возможно, то может возможно перемещаться от крайней координаты цели к крейней координате другой цели. Условно, цель (Ц) весгда имеет форму круга. Возьмем шесть Ц, центры которых являются вершинами равностороннего шестиугольника (Ш1). Проведем из вершин прямые к цетру самого Ш1. Точка пересечения окружности Ц с этой прямой и будет крайней координатой Ц. Теперь если соединить крайние точки всех шести Ц, то получится шестиугольник (Ш2), вписанный в Ш1. А значит, Ш2 имеет меньший периметр, чем Ш1 и, соответственно, перемещение по периметру Ш2 быстрее, чем Ш1. Т.е. перемещение между Ц будет занимать меньшее время. 3. Может имеет смысл строить карту заранее между крайними точками целей. И перестраивать ее при появлении ближайшей новой цели. Если я запутал объяснениями, но заитересовал, то в тг @XopBoHuxoTbunycT0 могу прислать рисунок того, что имею ввиду
Скажу сразу я тоже не программист. Но вот моё мнение по вашему вопросу. 1 у хауди цель в том что бот играл вместо него имитирует движения мыши и нажатия на кнопку. А что вы предлагаете противоречит механики самой игры. 2 Даже в видео можно было увидеть что бот чистенко промахивался даже целям по центру шара. Это случается Иза того что в игре есть функция отдачи. И часто Иза это быстрых комбо бот промахивается. А целится по краям это уже усложняет и так сложную задачу. 3 И да я вашу идею не правильно понял. И зделал неправильные выводы.
ну хотяб в этот раз без нейронных сетей обошлись. А насчёт корректного наведения, нужно учитывать не только позицию шарика на экране, а ещё угол поворота самой камеры. Т.к. все мишени появляются в одной плоскости, то спокойно можно вычислить всё, включая дистанцию до цели (в глубину), относительные повороты и т.п.
@@nekit-scyth, ну ты прям совсем в танке видно. Это обычный алгоритм, даже не обучающийся. А нейросеть, это конкретная топология обучаемых алгоритмов. Калибровка и адаптирование тоже далеко не всегда являются обучаемыми алгоритмами, т.е. вполне строго описанными.
@@ATtiny13a-PU нейросети это конкретные структуры эмулирующие биологические нейронные сети, нейросети не обязательно должны быть обучаема, если уже известны необходимые веса. И слово алгоритм не совсем подходит к нейронкам. И, насколько я знаю, учитывая специфику компьютерного зрения, нейросети справляются с такой задачей намного эффективней обычных алгоритмов, поэтому, я допускаю предположение, что сейчас компьютерное зрение основывается на нейронках, но если это не так, это не значит, что я в танке. Это просто говорит о том, что я не занимаюсь компьютерным зрением
РЕШЕНИЕ ПРОБЛЕМЫ. Если нужно передвинуть курсор с точки (0,0) в точку (x,y), то мышку нужно будет перенести в точку (45,54•arctg(x/720), 45.54•arctg(y/720)).
HelloWorld Хауди! Контент крутой, но когда начнешь коменты писать по коду? ))) кстати спасибо за открытую репу, интересно повторить, увидемся в топе ))
Есть 1 прикольная идейка, которая будет универсальная для всех стрелялок сразу. Игрок нажимает кнопку на объекте когда он на прицеле, а ИИ отслеживает перемещение и наводит прицел на объект по цвету например. Как слежение по маркеру.
Предлагаю определять x,y мишени и смешать курсор сначала в верх до достижения оси Х потом до Y, или посложнее делить расстояние до Х,Y мишени на "шаги" и перемещать курсор на них пока мишень не будет в прицеле. Подробно в клиенте ниже:
Тебе просто нужны пропорции шага для перемещения, к примеру x,y мишени = 4, 6, ты делишь их на 10 шагов и получаешь х=0.4 y=6 и смещаешь курсор пока мишень не окажется в прицеле.
Короче, смотри. Положение линии визирования (прицела) и его перемещение может определяться по разному от игре к игре. Т.е. в CS это простое "карусельное" управление, а в космосиме при управлении кораблём это уже полноценное свободное управление вне зависимости от текущего положения прицела. Но в любом случае придётся работать с искажениями координат. Так вот дело в том, что в космосиме управлять прицелом было бы проще, т.к. нет зависимости от его текущего положения. А в CS положение линии визирования задаётся простыми сферическими координатами: phi - азимут (по горизонту); theta - угол места (по вертикали). По сути здесь горизонтальное движение мыши влияет только на координату phi, а вертикальное перемещение мыши только на координату theta, а смещение мыши просто прибавляется к этим углам с некоторым коэффициентом "чувствительности". Потому, если задрать ствол вертикально вверх он, во-первых, не будет "подыматься" через верх за спину, а во-вторых, если в таком положении двинуть мышку вбок по горизонтали, то прицел не сдвинется на самом деле в бок, а останется на месте, но вместо этого начнёт вращаться сам персонаж вокруг своей вертикальной оси. Так вот, для правильного перевода прицела проблема заключается в том. что нужно знать текущий угол "задирания" ствола, т.е. угол theta. И есть два пути, как это обойти: это всегда принимать его равным нулю и ловить ошибки наведения тем большие, чем сильнее задран ствол; параллельно пытаться рассчитывать текущий угол места прицела последовательным складыванием сдвигов прицела по вертикали и ловить накопительные ошибки вычислений. Я сделал несколько расчётов и привёл в маткадовском файле (с сохранением в RTF и HTML) с примером расчёта. Если здесь используется та же схема представления угла прицела, то должно "получиться" с поправкой на то, что угол места прицела неизвестен (может натренировать нейросеть для определения этого угла? :) ). Вот ссылка на архив, если ютуб её не грохнет drive.google.com/file/d/1ofGOxX6sZlN7VzwAsjTnmP3aRYEqnLbS/view?usp=sharing
Если бы не было задачи передвинуть прицел за один кадр, то по мне логичнее было бы сделать простую следящую систему: просто "сдвигать" курсор мыши в сторону цели на каждом кадре пропорционально расстоянию до этой цели в пикселях. Если добавить ещё инерции (т.е. переменную скорости мыши), то тогда бы перемещение было бы похоже на человеческое. И проблем бы не было с определением угла theta.
Кстати, ещё, думаю, возможен вариант коррекции оценки угла theta, который высчитывается параллельно. Просто нужно измерять ошибку наведения и по неё оценить, на сколько мы ошибаемся в этом угле и корректировать его каждый раз. Тогда по идее всё должно работать отлично. Но нужно ещё немного подзаморочиться с выводом формулы, если решение "установить theta в ноль" не будет удовлетворительным.
Я смотрю ты запарился не хуже меня ) Спасибо, обязательно всё посмотрю! По поводу задачи сдвинуть за один кадр это да, один из путей решения проблемы - это постоянный сдвиг и проверка что цель под курсором. Но умение сдвигать за один кадр открывает много других преимуществ, не говоря уже об элементарной скорости.
Как вариант для улучшения результата, нужно сделать чтобы бот попадал не в центр шара, а в край шара, который ближе к прицелу. Тогда затратится еще меньше время на наведение)
Хауди, есть простая идея сокращения времени отстрела мишеней: я заметил, что ии стреляет в центр красного шарика в бирюзовом шаре, но прохождение от края синего шара до центра красного хоть и мало, Но занимает карды/время, чтобы поразить цель достаточно попасть в минимальную границу синего шара, совпадающей с центром курсора, попробуй запрограммировать так: Создай красное кольцо, которое чуть чуть меньше диаметра синего шара, в результате при пересечении курсора этой границы происходит выстрел, не доводя до центра, после чего курсор перемещается к следующей цели. Следовательно, время перемещения до выстрела сократится. Если это глупо или невозможно или не дает результата, прокомментируй пж. Спасибо
Я так понимаю, судя по кадрам, даже поворот на 180° происходит мгновенно, поэтому это не должно сработать. Тут скорее сама проблема в скорости распознавания цвета самой программы, плюс, нужно убедиться второй раз, что под прицелом именно тот цвет. И если эту задержку сократить, то останется только скорость самого пистолета, насколько он может быстро стрелять. И ещё, можно сократить количество распознаваний до минимума, чтобы один раз сканировать, расстрелять имеющиеся шарики и заново сканировать. В общем, нужно найти скорость всех четырёх составляющих, количество сканирований в секунду, количество перемещений в секунду, выстрелов в секунду (самое важное) и сканирования цвета под прицелом в секунду, и тогда уже прорабатывать проблемную зону.
Используй функцию dot (произведение векторов) для того, чтобы узнать насколько вектор цвета в HSV или RGB похож на другой цветовой вектор, значения нормализуй заранее от 0 до 1 желательно, выходное будет от -1 до 1. Так можно сравнить вектора любой размерности с любым содержанием.
@@iforand, для HSV тоже норм, будут попадаться цвета с похожим оттенком, яркостью и насыщенностью, будет просто некоторое одно число релевантности. Можно конечно ещё и через матрицу поворота всё это провести, чтобы деформировать область пересечения, или просто находить расстояние до точки в цветовом пространстве, но тут и этого достаточно.
@@ATtiny13a-PU да у него проблема в том, что даже при непохожих насыщенности и яркости сферы не полностью маскируются, как я понял. :) Хотя, может действительно скалярное произведение в RGB пространстве может даст лучше результат, но не факт.
@@iforand, сейчас сгонял на шейдер той и проверил на практике, лучше всего работает расстояние от точки в HSV. У RGB проблема с перепадами яркости, но тоже работает. Тестил на блевотных камнях, в шейдер тое это самая первая по списку дефолд текстура, выискивал только бирюзовые, находит успешно.
Тут ВАЖНО то, что 0 и 360 градусы цвета (или 0 и 1 в нормализованном диапазоне) равны, т.е. расстояние нужно искать относительно зацикленного пространства. Достаточно лишь вычислить расстояние между 3-мя точками в текущем и двух +макс - макс отдельными компонентами и взять минимальные по модулю, а потом запихнуть в функцию вычисления расстояния. Это особенно важно для красного например, т.к. он находится прям на разделении.
Слушай затея с развитием и понимаем ИИ это очень-очень круто! Мне очень сильно зашла такая тематика особенно на твоем канале! Круто делай по чаще видосики по такой теме Да понимаю трудно! Но буду ждать новых видосиков! Красиво и качественно делаешь
И пока из самого банального до цели можно перемещаться за два шага. Причём после первого шага замеры проводить... Ёмаё дайте мне пейнт... И где скачать этот ваш аим лаб..)
Обалдеть ты сделал это , открыл новую страницу искусственного интеллекта . Даже не представляю что будет если такую машину посадить за реальный пулемет .
Можно сделать подобного бота в ксго.Нужно взять головы моделек сделать картинки с разных сторон и углов, и заставить ИИ считывать это.Можно также написать чтобы ИИ определяло головы противника через определение команды.(По спавну, по бомбе в команде, по никам через таб)
4:23 не будет ли мешать оружие находить цели? оно же перекрывает пол экрана 14:05 почему не match case ? и кстати попробуй научить нейронку ходить в игре (любой хоть в кс) было бы интересно посмотреть как это будет работать)
1) Очень редко оружие перекрывает цель, если она всего 1 на карте. В других случаях детект постоянный, и цель определяется даже если частично перекрыта оружием. 2) Хз, у меня тот же вопрос xD Ходить в игре нейронку я попытаюсь научить, сейчас в процессе осознания как это вообще сделать. Смотрю в сторону Q-Learning.
Вопрос, если уменьшить зону сканирования, то получится ли попасть ещё больше очков? Например про горизонтали спокойно можно срезать 25%, по вертикали 10-20%. Самарканд площадь сканирования может снизится прилично.
Мировой рекорд человеческий в аимлабе именно на этой карте тобишь гридшот 177к) к слову мой рекорд 136к, так что насчет полного топа ботов ты не прав) читеров там банят :)
5:51 если 3.8px это около 2 то мне жаль 1) 0.1mm (мм) = 0.3779575176px Далее 2) Линейный размер изображения будет зависеть от выводящего устройства, точнее, от его разрешения. Скажем, одну и ту же картинку можно распечатать на 300 DPI, а можно на 600 DPI. При прочих равных условиях во втором случае картинка буде вдвое меньше. Теперь минимум теории. Уже встретившееся DPI = dots per inch, точек на дюйм. 1" (дюйм) = 25,4 мм. Собственно, все. Попробуем прикинуть. Пусть имеем 17"-монитор с видимой областью 15,5". Это диагональ. Учитывая, что ширина и высота монитора относятся как 4:3, применим теорему дедушки Пифагора. (3x)^2 + (4x)^2 = (15,5")^2, 25x^2 = 240,25 кв. дюймов, x = 3,1 " и стороны равны 12,4" и 9,3". В режиме 1024х768 получим разрешение примерно в 83 DPI. Если возьмем картинку 300x200 пикселей и отобразим ее без масштабирования, размер картинки на экране будет (300/83)" х (200/83)", или 3,6" х 2,4", или 9,1 см x 6,1 см.
15:36 ты не прав, рекорд в гридшоте 174.4к, у бота отсутсвует плавность движения, а также он не учитывает последовательность появления шаров, он моментально наводится на цели с продолжительной остановочной силой из-за этого такой эффект "нечеловеческой скорости". Можешь посмотреть ролики WhoIsAqua чтобы точно понять что я имею ввиду. Если возможно, то мог бы попробовать создать нейросеть которая будет обучаться по реплеям рекордсмена WhoIsAqua, чтобы она смогла передавать человеческие движения
15:35 чел............. Ты бы хотя бы поинтересовался что ты собирался высирать. В киберспортсмены в среднем тут бьют от 110к, а люди которые просто хорошо играют в шутеры если постараются могут брать 110+120к если просто будут тренироваться, я сам набивал 105к еще два+- года назад и люди с которыми я знаком имеют рекорд в 120-125к и причем спокойно могут это подтвердить
Хауди, привет! Насчет проблемы думаю поможет основы линейной алгебры. Предлагаю прочитать RayCasting, там только на один FOV, но думаю принцип станет яснее. Успехов✊
а теперь ждём ии для CS2D (именно CS2D), ведь там *ОМЕГААБСОЛЮТНОЕ* передвижение мыши))) да и плюсом, скорее всего, ии для неё легче объяснить и понять, а значит что это будет чем-то типо обучалки)))
Хм а я думал, что нас ждёт уже частично готовый код ИИ для кс :)
Для того что бы ты себе его скопировал и апнул глобола)
сразу бан влетит
@@ovum_ordinarium так это не читы)
@@ovum_ordinariumа кто заметит?
@@mr_faild но твой то скилл не прокачается)
Можешь попробовать сделать голосового ассистента, который произносит слова твоим голосом? Я смотрел предыдущие видосы )
он делал такого ассистента посмотри на канале хауди правда там не его голос но всё же
@@3_4a , да, я видел. Но голос криповый у них был
Бред
Так мы уже его слышим! Разве не похоже? 🤣
А потом он заменит его и будет пилить видосы
Для решения твоей проблемы достаточно использовать сферические системы координат. Коротко говоря это ответ на вопрос о том, как x y z перевести в угол по вертикали, угол по горизонтали. Гугли, там все просто. Вот как ни крути, а от синусов и косинусов избавиться не сможешь)
Я и не пытался, просто никогда не сталкивался с такой задачей.
В движках я это делал через встроенные методы по типу WorldToScreen.
А тут нет доступа к движку )
p.s. Спасибо за совет, обязательно чекну
научи меня своим знаниям
Открывал школьные учебники, делал через синусы и косинусы, плохая идея. В интернете есть решение смещения курсора по по относительным координатам.
аа как всё было просто
интересно насколько большими будут проблемы вызванные тем, что шары расположены не по сфере, а в одной плоскости...
Сделай мне тиммейтов пожалуйста 😫🙏🙏
На второй комп тимейта профессионала
помни, матч мейкинг закидывает людей рандомно. Будут попадаться сильные игроки в команде? значит и у врагов не будет зевак.
@@ATtiny13a-PU обычно у тебя зеваки а противники нет
@@lll11l1lll1l2-p, система 50% может лишь замедлить перелив рейтинга. То что есть в играх валв, это конечно бесит, но остановить рост/спад рейтинга полностью не получится. Ты можешь откровенно руинить и тебе будут закидывать мужиков, которые 4 в 5 будут раскатывать, но в таком случае для замедления падения рейтинга одного придётся жертвовать редакцией рейтинга более одного чела на чём и строится тот небольшой дисбаланс, поэтому обычно 50% придерживается смеси, где руинеры и тащеры наименьшим образом отрываются друг от друга в обеих командах, если разрыв большой, то суммарный рейтинг начнёт меняться.
Это лучший сериал)) Пили следующую серию очень жду. Спасибо
Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
Вот это не легко делается, но я постараюсь )
Вроде как задача регрессии. Собрать попадания и расстояния промахов в табличку и уменьшать промахи классическим обучением, ну или нейронкой в "три слоя" (Теорема Цыбенко, Универсальная теорема аппроксимации), раз уж формат такой. Потом предиктить по модельке.
В игры не играю, но предположу, что зависимость угла от перемещения мыши не линейная. В таких случаях лучше построить график зависимости смещения мыши в экселе (или его аналоге), желательно точек 20-50 использовать. Потом на этом графике правой кнопкой построить линию тренда и ее уравнение. И вот перемещение мыши по этому уравнению будет более точным, чем линейная формула с пикселями.
Кстати можно сделать плавность движения за счёт интерполяции траектории + добавить парочку производных и 2ных производных и вуаля, античит сможет блокнуть только по детекту процесса захвата экрана, но это можно перебросить через какие нибудь стриминговые программы типа OBS
Твои фразы в конце - САМЫЕ ЛУЧШИЕ!!!
fake af
Я тебя много где вижу.Неужели у нас интересы почти все одинаковы? То тут вижу то у SJbody и т.д.
@@flimo_6768 Рад :)
Ты делаешь хорошие поучительные видео
Спасибо❤️
Хауди: Правила? Хаха, не знаю что это, делаю что хочу.
Ты топ!)
Спасибо за видео очень ждал вышло очень интересно
Мне кажется ты мог бы сделать быстрее, если оптимизировал маршрут курсора. Реши задачу коммивояжера.
p. s. Согласен, глупость сказал.
Тем более точек немного, даже с лоб посчитается быстро
у него курсор мгновенно перемещается за 1 кадр, ему не нужно вычислять кротчайшее расстояние
@@ATtiny13a-PU Не кратчайшее расстояние, а кратчайший маршрут. Да и один кадр - тоже время
@@ATtiny13a-PU Аа, ну если так, то да, вы правы.
@@amidl нет, тогда он прав. Возьмём, например, для составления маршрута взвешенный полносвязный граф, если веса одинаковы, а они в таком случае одинаковы, то как бы мы его не обходили - путь всех маршрутов будет одинаков.
О, новый видос! Сразу лайк не глядя, потому что знаю, что годнота подъехала 😎🔥
Абрахам, сними видос про то, как ты изучал ML и начинал писать нейронки.
Спасибо тебе огромное за урок информатики 😘😘😘
0:45 - Сплошные читеры
Тот самый WhoIsAqua, потом сражающийся с ними реальным скиллом.
Кстати это правда, у него есть канал кому интересно почекайте какие вещи он ставит рукой.
И высказывание что обычный человек не может набить больше 100к очков, опровержима. Хотя, может он не обычный человек?
Видос получился очень познавательным!
Круто! Спасибо! Было интересно!
Юхууу!!!! Новый видосик)
На счёт перевода движения курсора в вращение в теории нужно делить движение на определенное значение, которое с бОльшим наклоном увеличивается
ты крутой разработчик 🔥
продолжай таким темпом
Человек способен набить на этой карте больше 100.000 очков))
У меня рекорд 115.000, хотя я не то чтобы часто её играю (но у меня в контре 12.000 часов, и в аим лабе 400). И я могу гораздо больше и лучше, нужно просто тренироваться
В остальном топовый и интересный видос
Ты реально с другой планеты))
хауди ты топ, мне всегда интересно смотреть твои ролики, после рекламы я даже как то сам захотел стать программистом как ты xD
Можна сделать для прицеливания в игре:
1. Сделать сетку для бота, узнать сколько нужно поверуть мышку для преодаления 1 квадрата, считать квадраты, повторять цикл например по range()
2. Найти прицел, найти куда надо двигать прицел для попадания в цель, двигать прицел (например: по 5 пикселей)
Заметка для Хауди Хо: есть модули Taichi, Numba или numpy, они для ускорения бота пойдут!
Привет Хоуди. Я сейчас тружусь над проектом дронов с ИИ на борту, который бы мог во первых снимать видео и после само обучатся для полного беспилотного пилотирования. То есть На борту стоит ИИ с натренированной сеткой, а обучение происходит на риге с карт RX3070. И после обновляется через консоль обратно в дрон. Задач очень много, от распознавания деревьев, рощ, лесопосадок, одиночных кустарников и деревьев, ориентироваться в пространстве. Сохранять маршрут и распознавать где летал и как возвращаться. Также понимать что в зависимости от высоты, карта также меняется (так как те объекты что становятся за пределами карты или камер мы чисто физически не видим). Я думаю ты уже понял то за тематика.
Приветствую! Рой дронов на самообучающейся нейронной сетке, вот круто, наверное!
@@ДневникПрикамья Естественно это очень крутая штука, и тут уже не игры на компьютере.
3:04 ну так посмотри на максимальное значение. Самые популярные, это 100 180 и 360, есть ещё float 1.
Судя по видео шары находятся на одной (или почти на одной, если обратить внимание на тени) плоскости. А значит мы можем рассчитать координаты из уравнения пересечения прямой с этой плоскостью. Прийдётся всё равно немного пошаманить методом тыка, но это может исправить ложные наведения. Отстреляв тогда цели с первого снимка надо делать новый для поиска целей в момент наведения на последнюю цель.
С Наступающим!
Только читал различные про ИИ и думал когда у тебя новый ролик)
Спасибо большое за видео! Ты лучший!
Классный формат. Делай еще
Ты лучший братан удачи !!!
Ура-а-а хоуди начал делать видео чаще
А я помню как то делал для CS 1.6 бота, ставил там скины с желтыми головами и точно так же маской отфильтровывал картинку с экрана, и каким то образом наводился на голову. Радиус поиска бошки был ограничен определенной область вокруг прицела, типа чтоб наводило только когда достаточно близко поднесешь. И я тогда вообще даже не думал про какие то там углы, взял навел и все. Вспомнить бы как.
UPD: Короче проснулся в 4 утра и вспомнил. Я находил координаты этой головы на экране, и тупо мувал туда курсор, с помощью какого то там модуля. И это работало на все 100%, причем я даже не думая сразу пришел к этому и все, а щас вот в шоке что оказывается можно было углы какие то, матрицы. В общем находишь координаты шара и муваешь на них курсор. Залайкайте чтоб хауди увидел
Хауди, ты просто красавчик, слов нет. Я года три как подписан на твой канал и безумно рад что узнал о твоём канале. Желаю успехов.
Жиза, самый лучший IT ютубер который умеет привлекать внимание интересным контентом )
Мне нравится автор этого видео, по моему мнению он учится и выпускает видео, получает двойную выгоду сам обучается так еще и развивает бизнес в ютубе
хауди спасибо за такой интересный контент! снимай больше видео по машинному обучению!!
Ты делаешь вещь )) ждём 4 часть
Блин начал изучать Пайтон после всех твои аргументов в его пользу, но насмотревшись роликов где говорят, что Пайтон хорош для вспомогательных задач но не годится для основы проекта, это побуждало меня перепрыгнуть с Пайтона на с++ или другой язык, но смотрю, что реально можно сделать, что то полезное и годное и на Пайтоне используя его исключительно как основу в проекте, в любом случае я думаю что Пайтон пригодится в будущем + даст лёгкий старт для понимания структуры и скелета кода, думаю разные языки строят одинаковый скелет для решения задач, но детали(команды) для вывода нужного результата разные.
Твой формат подачи информации живой и "простолюдинский" по сравнению с другими влогерами есть одна годная идея, можно вести стрим как ты пишешь простенький проект игры или приложухи с разъяснениями деталей например, что делает и для чего нужна это команда, и т.п, а чтобы это не было благотворительностью, можно создать донат сбор ВК или в другом месте, когда нужная сумма накопиться начать заниматься этим проектом.
*Изучая пайтон я уже придумал парочку интересных проектов для мобилы, это ещё сильнее мотивирует узнать как же все таки их реализовать.
Лови комментарий, я хз че написать, но продвинуть видео хочу иииии, и видео крутое.
Вау, просто супер!
След.этап - занять 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 градусов что было?
ну хотяб в этот раз без нейронных сетей обошлись. А насчёт корректного наведения, нужно учитывать не только позицию шарика на экране, а ещё угол поворота самой камеры. Т.к. все мишени появляются в одной плоскости, то спокойно можно вычислить всё, включая дистанцию до цели (в глубину), относительные повороты и т.п.
Ну так то распознавание мишеней это и есть нейронка
@@nekit-scyth, ну ты прям совсем в танке видно. Это обычный алгоритм, даже не обучающийся. А нейросеть, это конкретная топология обучаемых алгоритмов. Калибровка и адаптирование тоже далеко не всегда являются обучаемыми алгоритмами, т.е. вполне строго описанными.
@@ATtiny13a-PU нейросети это конкретные структуры эмулирующие биологические нейронные сети, нейросети не обязательно должны быть обучаема, если уже известны необходимые веса. И слово алгоритм не совсем подходит к нейронкам. И, насколько я знаю, учитывая специфику компьютерного зрения, нейросети справляются с такой задачей намного эффективней обычных алгоритмов, поэтому, я допускаю предположение, что сейчас компьютерное зрение основывается на нейронках, но если это не так, это не значит, что я в танке. Это просто говорит о том, что я не занимаюсь компьютерным зрением
Сможешь сделать бота для доты? Будет интересно посмотреть
Желаю удачи :)
Спасибо за интересности:3
РЕШЕНИЕ ПРОБЛЕМЫ.
Если нужно передвинуть курсор с точки (0,0) в точку (x,y), то мышку нужно будет перенести в точку (45,54•arctg(x/720), 45.54•arctg(y/720)).
Попробую, спасибо
Как обычно топ видео
HelloWorld Хауди! Контент крутой, но когда начнешь коменты писать по коду? ))) кстати спасибо за открытую репу, интересно повторить, увидемся в топе ))
Та там вроде итак всё максимально понятно )
@@HowdyhoNet Согласен! )) Спасибо за интересные проекты, так держать!
Все круто, путь правильный и интересный!
Есть 1 прикольная идейка, которая будет универсальная для всех стрелялок сразу.
Игрок нажимает кнопку на объекте когда он на прицеле, а ИИ отслеживает перемещение и наводит прицел на объект по цвету например. Как слежение по маркеру.
Читы...
Предлагаю определять x,y мишени и смешать курсор сначала в верх до достижения оси Х потом до Y, или посложнее делить расстояние до Х,Y мишени на "шаги" и перемещать курсор на них пока мишень не будет в прицеле. Подробно в клиенте ниже:
Тебе просто нужны пропорции шага для перемещения, к примеру x,y мишени = 4, 6, ты делишь их на 10 шагов и получаешь х=0.4 y=6 и смещаешь курсор пока мишень не окажется в прицеле.
Сделай и для змейки, думаю это ооочень интересная тема :)
Сложно бот должен будет рассчитывать данные двигаться по времени тропе
Ваай, люблю тебе)
от программирования я далёк, но с радостью слушаю твои логические рассуждения)
Ждём "НЕЙРОСЕТЬ ИГРАЕТ В quake 3 arena И РАЗНОСИТ ВСЕХ!!!"
Короче, смотри. Положение линии визирования (прицела) и его перемещение может определяться по разному от игре к игре. Т.е. в CS это простое "карусельное" управление, а в космосиме при управлении кораблём это уже полноценное свободное управление вне зависимости от текущего положения прицела. Но в любом случае придётся работать с искажениями координат. Так вот дело в том, что в космосиме управлять прицелом было бы проще, т.к. нет зависимости от его текущего положения. А в CS положение линии визирования задаётся простыми сферическими координатами: phi - азимут (по горизонту); theta - угол места (по вертикали). По сути здесь горизонтальное движение мыши влияет только на координату phi, а вертикальное перемещение мыши только на координату theta, а смещение мыши просто прибавляется к этим углам с некоторым коэффициентом "чувствительности". Потому, если задрать ствол вертикально вверх он, во-первых, не будет "подыматься" через верх за спину, а во-вторых, если в таком положении двинуть мышку вбок по горизонтали, то прицел не сдвинется на самом деле в бок, а останется на месте, но вместо этого начнёт вращаться сам персонаж вокруг своей вертикальной оси.
Так вот, для правильного перевода прицела проблема заключается в том. что нужно знать текущий угол "задирания" ствола, т.е. угол theta. И есть два пути, как это обойти: это всегда принимать его равным нулю и ловить ошибки наведения тем большие, чем сильнее задран ствол; параллельно пытаться рассчитывать текущий угол места прицела последовательным складыванием сдвигов прицела по вертикали и ловить накопительные ошибки вычислений. Я сделал несколько расчётов и привёл в маткадовском файле (с сохранением в RTF и HTML) с примером расчёта. Если здесь используется та же схема представления угла прицела, то должно "получиться" с поправкой на то, что угол места прицела неизвестен (может натренировать нейросеть для определения этого угла? :) ). Вот ссылка на архив, если ютуб её не грохнет
drive.google.com/file/d/1ofGOxX6sZlN7VzwAsjTnmP3aRYEqnLbS/view?usp=sharing
Если бы не было задачи передвинуть прицел за один кадр, то по мне логичнее было бы сделать простую следящую систему: просто "сдвигать" курсор мыши в сторону цели на каждом кадре пропорционально расстоянию до этой цели в пикселях. Если добавить ещё инерции (т.е. переменную скорости мыши), то тогда бы перемещение было бы похоже на человеческое. И проблем бы не было с определением угла theta.
Кстати, ещё, думаю, возможен вариант коррекции оценки угла theta, который высчитывается параллельно. Просто нужно измерять ошибку наведения и по неё оценить, на сколько мы ошибаемся в этом угле и корректировать его каждый раз. Тогда по идее всё должно работать отлично. Но нужно ещё немного подзаморочиться с выводом формулы, если решение "установить theta в ноль" не будет удовлетворительным.
Я смотрю ты запарился не хуже меня )
Спасибо, обязательно всё посмотрю!
По поводу задачи сдвинуть за один кадр это да, один из путей решения проблемы - это постоянный сдвиг и проверка что цель под курсором.
Но умение сдвигать за один кадр открывает много других преимуществ, не говоря уже об элементарной скорости.
Как вариант для улучшения результата, нужно сделать чтобы бот попадал не в центр шара, а в край шара, который ближе к прицелу. Тогда затратится еще меньше время на наведение)
Хауди, есть простая идея сокращения времени отстрела мишеней: я заметил, что ии стреляет в центр красного шарика в бирюзовом шаре, но прохождение от края синего шара до центра красного хоть и мало, Но занимает карды/время, чтобы поразить цель достаточно попасть в минимальную границу синего шара, совпадающей с центром курсора, попробуй запрограммировать так:
Создай красное кольцо, которое чуть чуть меньше диаметра синего шара, в результате при пересечении курсора этой границы происходит выстрел, не доводя до центра, после чего курсор перемещается к следующей цели. Следовательно, время перемещения до выстрела сократится.
Если это глупо или невозможно или не дает результата, прокомментируй пж. Спасибо
Я так понимаю, судя по кадрам, даже поворот на 180° происходит мгновенно, поэтому это не должно сработать. Тут скорее сама проблема в скорости распознавания цвета самой программы, плюс, нужно убедиться второй раз, что под прицелом именно тот цвет. И если эту задержку сократить, то останется только скорость самого пистолета, насколько он может быстро стрелять.
И ещё, можно сократить количество распознаваний до минимума, чтобы один раз сканировать, расстрелять имеющиеся шарики и заново сканировать.
В общем, нужно найти скорость всех четырёх составляющих, количество сканирований в секунду, количество перемещений в секунду, выстрелов в секунду (самое важное) и сканирования цвета под прицелом в секунду, и тогда уже прорабатывать проблемную зону.
Я начинаю писать на питоне, и с такими видео я офигиваю от его функционала
Используй функцию dot (произведение векторов) для того, чтобы узнать насколько вектор цвета в HSV или RGB похож на другой цветовой вектор, значения нормализуй заранее от 0 до 1 желательно, выходное будет от -1 до 1. Так можно сравнить вектора любой размерности с любым содержанием.
Нет смысла для HSV схемы. Для RGB да, можно.
@@iforand, для HSV тоже норм, будут попадаться цвета с похожим оттенком, яркостью и насыщенностью, будет просто некоторое одно число релевантности. Можно конечно ещё и через матрицу поворота всё это провести, чтобы деформировать область пересечения, или просто находить расстояние до точки в цветовом пространстве, но тут и этого достаточно.
@@ATtiny13a-PU да у него проблема в том, что даже при непохожих насыщенности и яркости сферы не полностью маскируются, как я понял. :) Хотя, может действительно скалярное произведение в RGB пространстве может даст лучше результат, но не факт.
@@iforand, сейчас сгонял на шейдер той и проверил на практике, лучше всего работает расстояние от точки в HSV. У RGB проблема с перепадами яркости, но тоже работает.
Тестил на блевотных камнях, в шейдер тое это самая первая по списку дефолд текстура, выискивал только бирюзовые, находит успешно.
Тут ВАЖНО то, что 0 и 360 градусы цвета (или 0 и 1 в нормализованном диапазоне) равны, т.е. расстояние нужно искать относительно зацикленного пространства. Достаточно лишь вычислить расстояние между 3-мя точками в текущем и двух +макс - макс отдельными компонентами и взять минимальные по модулю, а потом запихнуть в функцию вычисления расстояния. Это особенно важно для красного например, т.к. он находится прям на разделении.
Охринеть ) у меня взорвался мозг , но блин видос крутой очень !
Если вы ничего не поняли, то не беспокойтесь, ведь я тоже ничего не понял, но главное, что поставил лайк
TenZ: "Подержите моё пиво..."
Слушай затея с развитием и понимаем ИИ это очень-очень круто! Мне очень сильно зашла такая тематика особенно на твоем канале!
Круто делай по чаще видосики по такой теме
Да понимаю трудно! Но буду ждать новых видосиков!
Красиво и качественно делаешь
Делаем ИИ для веселья ! мне понравилось видео, но жалко что ты про компьютерное зрение говорил и по сути это пример его использования :3
Эх завариваю чаёк и смотрю видосик.
хабуди хабудай выпустил ролик🥵🥵🥵🥶🥶🥶🥶🔥🔥🔥🔥💯💯💯
Словил кринж
@@aler4354 пон
И пока из самого банального до цели можно перемещаться за два шага.
Причём после первого шага замеры проводить... Ёмаё дайте мне пейнт... И где скачать этот ваш аим лаб..)
@@leprechauns5815в стиме
уже скачал) теперь пересматривать видос ибо не уверен в том откуда взялось 2420
А еще я вспомнил про десмос..
Теперь ждём видео с ботом который будет трекать мишени а не фликать в них!!!
Обалдеть ты сделал это , открыл новую страницу искусственного интеллекта . Даже не представляю что будет если такую машину посадить за реальный пулемет .
Её открыли задолго до меня )
Я просто показываю свои эксперименты.
Хей, сделай ИИ играющего в шахматы, будет интересно посмотреть как они работают. А сам видос классный.
Можно сделать подобного бота в ксго.Нужно взять головы моделек сделать картинки с разных сторон и углов, и заставить ИИ считывать это.Можно также написать чтобы ИИ определяло головы противника через определение команды.(По спавну, по бомбе в команде, по никам через таб)
И словить бан в стиме за создание читов
Определять цель по одному уникальному пикселю и использовать системные переменные для определения положения курсора мыши в игре эффективнее.
Итерировать все пиксели долго.
Про передвижение курсора не понял :3
Ну тут грех на пол пути останавливаться, давай Топ1!
Твои ролики очень крутые.
Больше сотни в этом режиме делается, и, если натренироваться, то даже легко🙃
4:23 не будет ли мешать оружие находить цели? оно же перекрывает пол экрана
14:05 почему не match case ?
и кстати попробуй научить нейронку ходить в игре (любой хоть в кс) было бы интересно посмотреть как это будет работать)
1) Очень редко оружие перекрывает цель, если она всего 1 на карте. В других случаях детект постоянный, и цель определяется даже если частично перекрыта оружием.
2) Хз, у меня тот же вопрос xD
Ходить в игре нейронку я попытаюсь научить, сейчас в процессе осознания как это вообще сделать.
Смотрю в сторону Q-Learning.
Вообще, для перевода перемещения мыши в углы можно воспользоваться переводом прямоугольных координат в полярные
12:44 что за сериал???
Чувак это нереально круто но можешь сделать видео как использовать твой код. Я хотел бы тоже попробовать его но не знаю как.
ты не задавался вопросом как выглядит тот же фл студио или эболтон (знаю не по теме) виде кода.
0:11 | да, вы слышите звук в видео без звука)
Вопрос, если уменьшить зону сканирования, то получится ли попасть ещё больше очков?
Например про горизонтали спокойно можно срезать 25%, по вертикали 10-20%. Самарканд площадь сканирования может снизится прилично.
Ты чёртов гений!
Я знал! Я чувствовал что видосу быть)
Хауди! Попробуйте сделать бота в файтинг, guilty gear: strive например
Хауди сделай ИИ по распознаванию капчи на картинке
Мировой рекорд человеческий в аимлабе именно на этой карте тобишь гридшот 177к) к слову мой рекорд 136к, так что насчет полного топа ботов ты не прав) читеров там банят :)
Вот-вот, тоже немного удивили эти слова. У самого тут тоже 120к рекорд, так что бот ещё не на всю мощь херачит.
Можно ещё попробовать сделать так:
Ты двигаешь курсор, а оружие само должно стрелять. Мне кажется это будет намного лучше. Думаю вы меня поняли
5:51 если 3.8px это около 2 то мне жаль
1) 0.1mm (мм) = 0.3779575176px Далее
2) Линейный размер изображения будет зависеть от выводящего устройства, точнее, от его разрешения. Скажем, одну и ту же картинку можно распечатать на 300 DPI, а можно на 600 DPI. При прочих равных условиях во втором случае картинка буде вдвое меньше. Теперь минимум теории. Уже встретившееся DPI = dots per inch, точек на дюйм. 1" (дюйм) = 25,4 мм. Собственно, все. Попробуем прикинуть. Пусть имеем 17"-монитор с видимой областью 15,5". Это диагональ. Учитывая, что ширина и высота монитора относятся как 4:3, применим теорему дедушки Пифагора. (3x)^2 + (4x)^2 = (15,5")^2, 25x^2 = 240,25 кв. дюймов, x = 3,1 " и стороны равны 12,4" и 9,3". В режиме 1024х768 получим разрешение примерно в 83 DPI. Если возьмем картинку 300x200 пикселей и отобразим ее без масштабирования, размер картинки на экране будет (300/83)" х (200/83)", или 3,6" х 2,4", или 9,1 см x 6,1 см.
15:36 ты не прав, рекорд в гридшоте 174.4к, у бота отсутсвует плавность движения, а также он не учитывает последовательность появления шаров, он моментально наводится на цели с продолжительной остановочной силой из-за этого такой эффект "нечеловеческой скорости". Можешь посмотреть ролики WhoIsAqua чтобы точно понять что я имею ввиду. Если возможно, то мог бы попробовать создать нейросеть которая будет обучаться по реплеям рекордсмена WhoIsAqua, чтобы она смогла передавать человеческие движения
Молодец)))) Вот бы мне так научиться программировать)
Начинай учиться, это не сложно 🙂
15:35 чел.............
Ты бы хотя бы поинтересовался что ты собирался высирать.
В киберспортсмены в среднем тут бьют от 110к, а люди которые просто хорошо играют в шутеры если постараются могут брать 110+120к если просто будут тренироваться, я сам набивал 105к еще два+- года назад и люди с которыми я знаком имеют рекорд в 120-125к и причем спокойно могут это подтвердить
Хауди, привет! Насчет проблемы думаю поможет основы линейной алгебры. Предлагаю прочитать RayCasting, там только на один FOV, но думаю принцип станет яснее. Успехов✊
Что за фильм на 12:43 минуте?
Выглядит круто!
Как насчёт ассистента для American truck simulator, удержание в полосе торможение перед встречным автомобилем?)
а теперь ждём ии для CS2D (именно CS2D), ведь там *ОМЕГААБСОЛЮТНОЕ* передвижение мыши))) да и плюсом, скорее всего, ии для неё легче объяснить и понять, а значит что это будет чем-то типо обучалки)))
Всем приятного аппетита кто кушает и приятного просмотра! :)