Вся суть программирования: ошибку я исправил, но это тоже не помогло
@АнтиНационалист4 жыл бұрын
Прям после этих слов прочитал.
@jekins15804 жыл бұрын
Зачем аватарку украл?)))
@chroma_red4 жыл бұрын
И спустя сутки поисков ошибки понимаешь что у тебя просто проект не правильно собрался
@CTEHOE64 жыл бұрын
😂😭
@WastiPlayX4 жыл бұрын
Или просто буквы перепутал поэтому код не работает
@ducksser4 жыл бұрын
25:40 - "а давай ты будешь ходить, а я буду стрелять?" ахахах, детство
@anton.k.4 жыл бұрын
а ведь именно так устроены танки, правда там ещё есть командир
@-PRO-log-3 жыл бұрын
@@anton.k. можна третьего друга тогда позвать)))
@main_zhenek2 жыл бұрын
Всегда бесило. Я легких путей не искал
@Memcat250 Жыл бұрын
Я помню как играл с братом так в халф лайф 2
@TrueSeekered4 жыл бұрын
Хахаххаха "и люблю программирование потому что в нем решая одну проблему, ты решаешь еще несколько, там все так классно связано". Обычно как раз таки ты решаешь одну проблему, а получаешь 10 новых)))
@GIR забей это школьник который читает комментарии и не можете ответить
@DimaZheludko4 жыл бұрын
30:40 Ну конечно он будет крутиться, почему бы и нет? Я бы тоже так делал, если бы каждый миг мог идеально проанализировать всю ситуацию с первого взгляда. Если хочешь сделать чтобы бот вёл себя более похоже на человека, сделай задержку между моментом когда он начал куда-то смотреть и когда он что-то там рассмотрел. Ну да, и, полагаю, нужно ограничить максимальный угол поворота, который может сделать бот за единицу времени. Думаю, 360° за секунду максимум, или около того. Иначе бот действительно буде вести себя не по-человечески.
@maxogongd76804 жыл бұрын
ещё можно сместить лучи рей-каста ближе к центру (т.е. по центру больше лучей, а по краям меньше), чтобы они хуже видели по краям
@Unknown648884 жыл бұрын
Действительно.Без задержки между получением данных,обработки и выхода,т.е действия по типу разворота,стрельбы и т.д,боты слишком жесткие (Сверхботы)
@katastroff60112 жыл бұрын
Создал крутилку нейросетью
@kop-lg7lo2 жыл бұрын
добавлять ошибку к положению противника при большой скорости поворота
@Пирокатехин Жыл бұрын
@@maxogongd7680 Ну строго говоря, человеческое зрение тоже так работает. Отлично мы видим в центре, остальное иллюзия, за глазами нейронка достраивает реальность
@Riemnand4 жыл бұрын
Задай ботам параметр "Макс радиус поворота камеры за тик". Чтобы он не имел возможности крутиться как читер в cs::go.
@adrenalin78074 жыл бұрын
Не, за кадр не очень, иначе при большом количестве fps ты будешь нереально быстро крутиться. Лучше сделать скорость разворота камеры, как и у игрока, так и у ботов.
@GazziFX4 жыл бұрын
@@adrenalin7807 умножаем значение на время кадра и вуаля
@ATtiny13a-PU4 жыл бұрын
я тоже пишу игры на С++, особенно часто связанные с естественным отбором и нейросетями (и не только), у меня есть опыт и предложения на эту тему нейросеть не имеет памяти, это убьёт её работу. Для того, чтобы она работала нормально нужно исправить несколько вещей 1) добавить память (из классики это рекурентные сети, но я предлагаю сделать особые нейроны, что меняют свои значения либо плавно, либо с задержкой, вообщем имеют временные изменения) 2) обучать не 64 бота на одной карте, а хотя бы 500, просто протестировали одну пачку из 64-х ботов, далее тестим новую пачку. Далее берём общий результат 3) аккуратнее производить скрещивание, многие сети несовместимы друг с другом, и для работы фичи в их мозгах должны быть все наборы мутаций. Представьте человека, в которого запихнули 2 личности, причём не полностью, а перемешали. Такой метод не даёт появляться прорывным мутациям и сильно тормозит обучение. Это надо делать совершенно по другому. 4) нейросети будет достаточно всего не более 2-х скрытых слоёв, причём больше всего на первом, а на втором столько же, или меньше. Иначе это сильно замедлит обучение, а может и вовсе остановит. 5) советую смешать нейросеть с высокоуровневыми инструментами, такими как угол от противника и прочими похожими на это. Стреляют ли в бота, кол-во оставшихся жизней, много такого. 6) увеличьте штраф за смерть, чтобы нейросеть научилась пугаться, и пыталась избегать выстрелов по себе, уходя за стену. Штраф в виде отнима очков например, сразу 2! Но тогда нужна механика медленной регенерации здоровья
@Riemnand4 жыл бұрын
@@ATtiny13a-PU очень круто. А как вы конкретно их пишете? Через SFML, SDL2, OpenGl, directX или может Unreal Engine?
@ATtiny13a-PU4 жыл бұрын
@@Riemnand, С++ SFML (пытаюсь от него отказаться в пользу GLFW и мультиплатформы), в основном нужно от него лишь запустить шейдер, или вывести массив пикселей, всю графику я пишу сам без встроенных примитивов. А ещё если кто знает игру CellLab, я делаю ща её ремейк для пк, уже получилось на проце запустить 50к клеток, вместо 1к в оригинале, а на видеокарте 2 миллиона клеток
@mishame1564 жыл бұрын
Ахахахахах. Классика: "я оптимизировал алгоритм с многопоточкой, но теперь все работает хреново"
@mishame1564 жыл бұрын
Очень понравился ход мыслей и объяснение происходящего. По-моему, у тебя настоящий талант подавать сложный материал просто.
@anton.k.4 жыл бұрын
@@mishame156 просто он достаточно хорошо разбирается в том, что делает. в отличии от некоторых. а не умение объяснить просто - это, как правило, результат не достаточных знаний или проф деформация
@kriegtech16513 жыл бұрын
пиздец тут сборище токсиков недомерок
@vectozavr4 жыл бұрын
:) Ребят, возможно, будет продолжение. Некоторые ребята в комментариях дают дельные советы. Лайкайте эти советы, чтобы я быстрее их находил.
@kujivuniakituo61214 жыл бұрын
Можно ли мне как-то связаться с этим замечательным чуваком, который помог тебе всё сделать?
@darkstormheute4 жыл бұрын
;)
@temayne60504 жыл бұрын
нужна шкала голода аще нужно творческий режим игры чтобы можно было спокойно проходить без ограничений летать для тестов
@mimumi37234 жыл бұрын
:)
@dozzza40534 жыл бұрын
Onigiri, это ты?)) Очень похожая тематика и формат видео)
@alopexstudio21744 жыл бұрын
1) Как по мне, лучше сделать так, что со временем у ботов уменьшается хп. Во-первых, они будут вынуждены ходить по карте и лечиться, а во-вторых, боты, которые просто стоят на месте, будут понижаться в "рейтинге" из-за смертей от безделья (это если сделать, как предлагали, оценку качества бота по соотношению убийств к смертям). Может быть ещё добавить восстановление здоровья от убийств. То есть чтобы быть выше в рейтинге, боты должны будут как можно больше убивать и как можно меньше умирать (а для того, чтобы не умирать, нужно убивать и подбирать бонусы, которые, может быть, стоит сделать в большем количестве) 2) Наследование лучше сделать комбинированное. 4-х лучших нужно сохранять в оригинале, чтобы не потерять этот хороший генотип (это на 16 ботов, если что), сделать 8 мутированных (по схеме 3-2-2-1, например (3 мутированных потомка от первого места, 2 от второго и т.д.)) и 4 скрещённых от рандомных родителей. В этом случае эволюция и сохранит уже достигнутые результаты, и сможет показать что-то совершенно новое 3) Как уже сказали, можно сделать ограничение на угол поворота в кадр, но ещё лучше сделать так, что выходной нейрон указывает на то, насколько нужно повернуться. Например, "0" - 10 градусов влево, "1" - 10 градусов вправо. Тогда, правда, придётся добавить входной нейрон с нынешним поворотом бота. Ну и локальный угол положения противника вместо глобального. В принципе, если вообще всё переделать под локальное, то входной нейрон поворота бота уже не будет нужен 4) Нейросеть лучше на 2 не разделять, как мне кажется, а то будут и попытки стрелять через стены, и невозможность корректировать ходьбу в зависимости от наличия противников, и всё такое. Некритично, конечно, но неприятно 5) 3000 патронов у бота - это, как мне кажется, уже перебор 6) Опять же как уже говорили в комментах (просто повторю чтобы точно не пропало), нужно добавить входные нейроны патронов и здоровья. Не, ну конечно если у бота 3000 патронов, то ему о них не нужно заботиться, но всё же Ну и просто надеюсь, что ты передаёшь на входные нейроны не глобальные координаты противника, а локальные. Так, просто, на всякий, а то по невнимательности подобные ошибки случаются
@dimetry28962 жыл бұрын
По поводу первого. Сделать вампиризм. Стрельнул в другого и получил половину хп от нанесённого ему урона
@kritokrim72872 жыл бұрын
@@dimetry2896 хахаха чел ниxyя не понял кроме вампиризма
@dimetry28962 жыл бұрын
@@kritokrim7287 я незнаю не одну игру с этой механикой. Кроме мобильной игры caves. А так я всё понял, но первое реально вампиризм
@ОгурчикРик-х4ы2 жыл бұрын
@@dimetry2896 world of tanks blitz , там есть такая хрень в режимах
@dimetry28962 жыл бұрын
@@ОгурчикРик-х4ы точно! Спасибо, что напомнил
@glebmartynov97384 жыл бұрын
Зауисаю на образовательном ютубе 25/7, ты единственный, кто может одновременно совмещать контент для обывателей и для продвинутых "прогеров"
@Печальный-ф9г4 жыл бұрын
А Хауди Хо?
@h_it4 жыл бұрын
@GIR Он веб-программист и питонист))))
@senpai24224 жыл бұрын
@Gleb Martynov kzbin.info/door/zdmz_lLWT_dPqOvFjXAMVg тоже не плохой чел чекни его видосы : D
@glebmartynov97384 жыл бұрын
@@senpai2422 да я его знаю - это мой Сын, горжусь им, спасибо вам, что у него такая аудитория!!!
@maksamaksim76924 жыл бұрын
А Onigiri
@OnigiriScience4 жыл бұрын
27:12 и невозможно забыть😂
@govdamikhaylo41834 жыл бұрын
Коничыва:)
@govdamikhaylo41834 жыл бұрын
Ты тоже входишь в этот список:)
@Riemnand4 жыл бұрын
О, Онигири. Здорова. Ещё один топ канал :)
@ttempaa4 жыл бұрын
Ку
@dmytruek4 жыл бұрын
Привет от создателя НИЧЕГО ;)
@andreivlasenko5274 жыл бұрын
Скрещивание путём рандомного выбора весов это плохое скрещивание, потому что получится бессмыслица, результаты скрещивания крайне слабо связаны с предками, поэтому и не работает, оставил бы только мутации, стало бы лучше (либо нужно более сложное скрещивание, например если у тебя "мульти-нейрал нетворк систем", то скрещивать можно путём случайного выбора нейросетей у предков -- у одного взял стреляющую, у другого ходящую, например, но при этом сами нейросети только мутациями менять)
@dena54984 жыл бұрын
Лучше не скрещивать, а делать цепочку генов с лучшими результатами в разных областях. К примеру частота движения, точность (держит прицел, пока противник не видит), скрытность (если противник не видит, старается приблизится) и т.д.
@Граф_Мрякула4 жыл бұрын
По идее надо прикручивать обратную коррекцию, вместо мутаций. как-то так.
@Pavel_Kudinov4 жыл бұрын
При использовании одних только мутаций есть вероятность, что процесс обучения будет "застревать" в локальных экстремумах, потому что мутации - это небольшие изменения, которые дают аккуратную подстройку. А скрещивание нужно, чтобы "встряхнуть" алгоритм большими изменениями в начале обучения. Но при этом в конце, когда нейросеть будет достаточно хорошо натренирована, скрещивание не будет вносить больших изменений. Ребенок берет комбинацию генов родителей, и получается не бессмыслица, а обычный человек )
@andreivlasenko5274 жыл бұрын
@@Pavel_Kudinov если две разные нейросети скрестить рандомным выбором весов, это будет слабо отличаться от просто создания рандомной нейросети. Тут суть в том, что чтобы скрещивание хорошо работало нужно чтобы был какой-то спроектированный тип генома, который при скрещивании действительно наследует признаки обоих родителей корректно, и обычно крайне сложно в нетривиальной задаче этот геном придумать, очевидно, что использовать в качестве генома веса нейросети нерабочая идея, можете проверить, что будет если взять две рабочие разные нейросети и скрестить так) У людей не так, у нас сложно устроенный геном и как раз заточенный на скрещивание А если нейронки слабо отличаются, то скрещивание слабо отличается от мутации
@anxwiy4 жыл бұрын
Плюсую, есть более уместные варианты нейросетей для данного случая.
@danilaley17544 жыл бұрын
30:56 В собственной игре за читы не забанят👌! 👍
@Fuze1844 жыл бұрын
Забанят если есть другие разработчики и ты мешаешь игрокам.
@dex34914 жыл бұрын
@@Fuze184 что ты выпукал?
@ОльгаБокова-о5щ4 жыл бұрын
@@Fuze184 ор
@strangespot58054 жыл бұрын
@@Fuze184 ты чё только что высрал?
@megagamememe4 жыл бұрын
@@Fuze184 😂😂😂😂
@ATtiny13a-PU4 жыл бұрын
почему я до сих пор обманываю себя, что это TF2,а мы играем за солдата?
@n_vseso1od3 жыл бұрын
Ебать, не думал, что так много людей думают так же
@wmouse1163 жыл бұрын
А это только из-за аружея
@That1guy-e3 жыл бұрын
Блин схожее чувство
@t-minus1004 жыл бұрын
Габен, подвинься! У нас будут свои игры с блэкджеком и нейросетями!
@artemiyzubarev70684 жыл бұрын
@@Yoqolo тупой бот/человек
@Slava_tobi_Ukraine4 жыл бұрын
Судя по ценам на ТП стим у гейба все плохо с блекджеком и...
@metalim4 жыл бұрын
и рейкастингом, конечно
@jebus_the_not_very_smart4 жыл бұрын
@@Yoqolo у смотрите бот подъехал какого то хера
@geroinmaster39704 жыл бұрын
@@jebus_the_not_very_smart Я буду клонится вам 92727382 раз!
@mertuess4 жыл бұрын
Я ночью думал:"А что будет если сделать ботов не заскриптованными, а с помощью нейросетей?" И утром увидел этот видос в реках.
@Achmd4 жыл бұрын
нейросеть - это всего лишь функция с множеством переменных. Т.е. по факту это скрипт, который тебе лень продумывать и ты отдаёшь бразды в лапы рандома.
@Yobs2K4 жыл бұрын
@@Achmd и что это меняет?
@Achmd4 жыл бұрын
@@Yobs2K в том-то и дело, что ничего не поменяется.
@NikitaLindmann4 жыл бұрын
@@Achmd А ещё его можно заставить адаптироваться к изменяющимся условиям, и предоставить адаптивную сложность игроку, меняя поколения ботов каждый раунд, например.
@Kr1sGuy4 жыл бұрын
похоже ты попал в матрицу "тук-тук нео"
@Весёлыйфикус-э3х4 жыл бұрын
Небольшое применение: при многопоточных вычислениях становятся видны "швы" между областями, обрабатываемыми разными ядрами (как при вертикальной десинхронизации). Это особо заметно по резких поворотах камерой.
@vectozavr4 жыл бұрын
Да, вы правы :)
@CooplixThe4 жыл бұрын
Но ведь можно синхронизировать вычисления. Таким образом мы избегаем вычисления критических частей на разных потоках.
@Весёлыйфикус-э3х4 жыл бұрын
@@CooplixThe Тоже верно, на на этом этапе разработки синхронизация не добавлена
@armredwings14654 жыл бұрын
Примитивная игра уровня Г. Тормозит на топовом i9. Вся суть современного геймдева
@GANYBEISENOV4 жыл бұрын
Джон кармак гении. Прикинь какого работать было на компе от джобса и создавать doom
@DiamondSane4 жыл бұрын
а вот раньше трава была зеленее. и игры были лучше(это правда)
@DiamondSane4 жыл бұрын
@Сознатель Око зато переносимость и поддерживаемость и прочее
@NikitaLindmann4 жыл бұрын
Да, тормозит. Но это какбэ тестовый образец, человек написал себе песочницу и играет с ней.
@NikitaLindmann4 жыл бұрын
@Varvar Workshop и чо?
@konstantinshuliko17824 жыл бұрын
Я пишу крестики нолики в стиле аски арта, радуюсь, что черт побери, как же я хорош! А потом увидел видео этого парня))))
@nellcreate33494 жыл бұрын
Любопытно... я тоже сейчас тем же, чем и ты занимаюсь. Можешь скинуть репозиторий (если ты, конечно, сделал его для проекта)? Хочу посмотреть, как это реализовывают другие.
@gleb_bro87104 жыл бұрын
Лох. Я на пайтоновском tkinter написал крестики нолики. Ха-ха
@denamix69264 жыл бұрын
@@gleb_bro8710 ЛОХ-Лицо Обманутое Хулиганами. Не знал, что ты такой затупок.
@gleb_bro87104 жыл бұрын
@@denamix6926 Лох это не абревиатура.
@ОразаевАмир4 жыл бұрын
@@gleb_bro8710 вы щито, ищете значения мата ?
@santolok7662 Жыл бұрын
30:36 здесь, почему-то, ролик резко обрывается. В приложении ютуб показывает, что это длительность видоса.
@gangster-tz5xe4 жыл бұрын
Есть мысли по поводу улучшения генерации поколений: 1) В каждом следующем поколении оставляем лучшие экземпляры из старого. 2) Делать не один дочерний экземпляр, а несколько, комбинируя веса из родителей по-разному. 3) В каждое поколение закидываем несколько рандомных экземпляров для поддержания разнообразия И ещё - нельзя ли как-то переложить часть вычислений на gpu?
@drimef0854 жыл бұрын
Привет, tensorflow
@gangster-tz5xe4 жыл бұрын
@@drimef085?
@gishack-xr4ju4 жыл бұрын
@@gangster-tz5xe это библиотека для создания и обучения нейросетей. Возможно, это относится к твоему вопросу, а возможно, он имел ввиду, что такой вид обучения там уже есть, я не знаю, я не пользовался этим.
@gangster-tz5xe4 жыл бұрын
@@gishack-xr4ju окей, спасибо
@МаксимНабиуллин-я9щ3 жыл бұрын
Я: покупаю себе ноут с райзеном 4800h, чтобы играть в эту игру. Разраб: ваше железо дно, так что игру я вам не дам!
@vladyslavkryvoruchko2 жыл бұрын
Ты: Покупаешь видюху 3090 ti. Разраб: Моя игра рендериться на процессоре
@argentum25594 жыл бұрын
Ооооо да! Готовся, С++, я посмотрел новый ролик Вектозавра и теперь заряжен мотивацией в край!
@alexeikutu67734 жыл бұрын
Вот такой умник и написал симуляцию под названием "Земля" и задал функцию-верить во всё происходящее. Вот вам и "Большой взрыв"
@uawinwin4 жыл бұрын
8:37 это круто если решение одной проблеммы решает другую, а зачастую это наоборот ты что то решил а на самом деле выстрелил себе в ногу. Или же например ты решил две проблеммы одним выстрелом а потом решение второй проблеммы решил изменить но не можешь так как она связана с первой и так одно за другое тянется. Поэтому лучше когда решения по возможности не зависят друг от друга.
@vlad_covers3 жыл бұрын
При экспериментах с генетическими алгоритмами, я заметил, что тщательный подбор кол-ва особей в поколении очень сказывается на эффективности. Похоже, что этот размер нужно подбирать индивидуально под задачу, т.к. правила "чем больше/меньше, тем лучше" тут не работает. Маленький размер поколения - быстрая сменяемость, медленное продвижение (возможно, из-за отсутствия достаточного разнообразия). Большой размер поколений - низкая производительность, и, опять же, медленный рост качества. Нужен еще один генетический алгоритм для нахождения оптимальных параметров ))
@yaalex254 жыл бұрын
Я не очень понял, бот набирает рейтинг только за счёт убийств? Просто если в качестве рейтинга делать соотношение убийства \ смерти, возможно они не будут флексить(скорее всего я не прав).
@mikepro83714 жыл бұрын
Может выродиться, во что нибудь прикольное. Например ботов которые забиваются в углы и там стоят) Но может и повезти
@Achmd4 жыл бұрын
так у него же "килы - смерти". Если бот сделает 30 убийств и сам отъедет 10 раз, то кд у него будет 3, а "очков" - 20. А другой бот сделает 3 убийства и умрёт всего лишь один раз. У него тоже кд будет 3, а "очков" всего 2. Вопрос: зачем тебе второй бесполезный бот, который где-то крысит?
@amonra87644 жыл бұрын
@@Achmd Бот который крысит это тот бот которого мы заслужили)
30:40 умный бот,вот бы и так в жизни военные анализировали то что вокруг,постоянно крутясь
@МаринаИльина-ъ3ь4 жыл бұрын
Спасибо Иван за очередную прекрасную работу. Очень интересно и познавательно.
@Drug_Design_Nabrosov4 жыл бұрын
если бы генерировать ботов с небольшими мутациями в их искусственном интеллекте, а еще если бы лучшим ботам было позволено перепихнуться и при этом у них появлялся бы бот-ребенок, со средним значением параметров родителей, которое бы создавалось опять же с некоторой искусственной погрешностью. а потом эти лучшие детки могли бы сливаться в одно) удваивая количество нейронов, такие себе пчелиные короли, потом сделать рубилово королей, потом хералово богов. только карта и задачи должны усложнятся в соответствии, короче нужен квантовый ПК
@myasnik4myasnik4854 жыл бұрын
Мужик, было бы круто, если бы написал курс на юдеми по созданию такого проекта
@Несмешнонесмеемся4 жыл бұрын
поддерживаю, пытался уже несколько раз написать псевдо 3д и у меня даже близко не получилось, нужно обьяснение для таких тупых как я
@MathPTU4 ай бұрын
так на ютубе есть
@H336-p1v4 жыл бұрын
8:38 "Это так круто! Когда ты решаешь одну проблему, а взамен вылезают ещё десять."
@sever90814 жыл бұрын
Был на стриме и помню твои рассказы об этом видео, лайк не глядя
@heyhoe1684 жыл бұрын
Есть еще вариант, обход многоугольника по часовой стрелки задает нормаль наружу, обход против часовой -- нормаль внутрь. PS поржал когда ты запилил многопоточность, а уже ПОТОМ узнал про мутексы.
@jetyb4 жыл бұрын
3:22 Можно было бы находить коллизии по итерациям для фигур возрастающей сложности. В первом приближении это описанный вокруг игрока квадрат, затем - восьмиугольник, потом сложный многогранник. Но вообще скорее всего можно изящной математикой посчитать коллизию мира с кругом. 5:05 Проблема решилась бы вводом понятия "ориентации фрагмента". Грубо говоря, если отрезок проходится (относительно взгляда игрока) слева направо - он рисуется, справа налево - нет. 11:00 А почему бы вам не освоить какой-нибудь примитивный DirectX и делать движок на видеокарте? Видеокарта по числу потоков даст прикурить любому процессору. Зачем игровую логику(подбор здоровья) переносить в разные потоки? У вас потоки должны конкретно заниматься отрисовкой графики. Оставьте игровую логику за 1 потоком, он справится) Зачем писать нейросеть для наведения прицела на врага? Наведение делается простым кодом. Важным же тут решением может являться только на какого именно врага наводиться (в вашем же случае это очевидно, т.к. враг во входящих данных один). Самым же сложным является передвижение игрока по карте. Мне не нравится, что описанный вами алгоритм имеет слишком мало входящих данных. Он не запоминает структуры карты. Не запоминает, что секунду назад враг скрылся за стеной. Не учитывает "опасность" противника. Я так понял, там логика действия "мгновенная", не учитывающая прошлого.
@ИльясИсмагилович4 жыл бұрын
24:28 ахаха) Небольшая такая ошибочка... "сделал ровно наоборот" :D
@stripedheads3 жыл бұрын
Любой начинающий программист, первым делом, заново переизобретает Doom... :-)
@kilorad4 жыл бұрын
Я сравнивал разные оптимизирующие алгоритмы. Эволюция с рандомными скрещиваниями (как у автора) для нейросетей работает лучше, чем без скрещиваний. Просто экспериментальные данные. Но по моим наблюдениям, одна только эволюция - это не очень хороший оптимизатор. Существует такой алгоритм - дифференциальная эволюция. Там суть в том, что мы по всем особям в популяции пытаемся вычислить градиент функции полезности. Взять dQ/dX для каждого X, где Q - функция полезности, а X - это веса и смещения. И потом, когда генерируем новых агентов, после скрещивания накладывать не только мутацию, но и прибавлять этот градиент. Условно, у нас 100 особей. У каждой 10к параметров. Параметр номер 4 имеет (судя по выборке в 100 особей) dQ/dX = -0.1, то есть он антикоррелирует с эффективностью. Создаём новую особь. У неё параметр номер 4 имел значение 0 у "мамы" и 1 у "папы", берём рандомное - 0. Накладываем мутацию - стало 0.3. Прибавляем градиент - стало 0.2. Кроме того, я бы добавил ботам память - прочитал бы, что такое LSTM или GRU нейроны. У меня это очень положительно влияло на поведение ботов - они лучше собирали бонусы. Ещё можно вручную написать алгоритм для бота, вставить в него кучу коэффициентов и применить эволюцию к этим коэффициентам. То есть если вы решите, что нейронка работает плоховато, а рукописный алгоритм хорош, но не как терминатор... Потом - для обучения хорошо работает такой (нечестный?) хак: сделать функцию полезности более гладкой. Условно, за убийство противника даётся 100 очков. А за ранение даются очки? Надо давать, хотя бы чуть-чуть. А за подбор бонуса? Можно тоже чуть-чуть давать. А за проход рядом с бонусом? Самую капельку, но можно дать. Так, чтобы на итоговый счёт почти не влияло, но из двух равных ботов размножался тот, который лучше собирает бонусы, промахивается ближе к цели и так далее. Ошибается, но хотя бы пытается что-то сделать
@evilvirraZzz4 жыл бұрын
Слабая оптимизация не из за SFML У тебя рейкастинг происходит на процессоре, верно ? Попробуй переписать его в шейдер, и производить вычисления на видеокарте.
@Necroforesis4 жыл бұрын
При таком маленьком количестве точек и объектов, сам метод трассировки луча не эффективен. Посекторное разбиение карты и сортировка точек еще на этапе обработки карты были бы раз в сто эффективнее.
@evilvirraZzz4 жыл бұрын
@@Necroforesis я думал, он реализовал уже посектарно. Это вроде не так сложно, как и сама трассировка )
@Necroforesis4 жыл бұрын
@@evilvirraZzz, трассировка несложный алгоритм, но эффективен, когда корректно нужно посчитать освещение, и когда много объектов в кадре.
@helldog4 жыл бұрын
Вау, у меня от вашего диалога прошло закипание в мозгу
@leViiAkker4 жыл бұрын
@@helldog ай, больно в мозгах
@AlexStraga4 жыл бұрын
"Самая востребованная профессия в 2020"? Гробовщик? ) Молодец, прям интересно наблюдать что выйдет ) Я первый раз писал интеллект на флеше ничего не зная. Сплошные условники и рандом. на удивление получилось очень даже ниче) Поэтому возможно написать базовый ии было бы проще, чем генетику делать и отлаживать )
@zion12462 жыл бұрын
9:51 баг! В воздухе патроны собрал! 😄
@schetnikov4 жыл бұрын
Ваня, совет насчёт "сесть и немножко подумать" - величайший, правда, я важнее совета не знаю. Люди разделяются на нет, кто ему следует и не следует. И так классно на тебя смотреть! Держишься ты отлично, видно, как многому ты научился и в этом плане тоже.
@vectozavr4 жыл бұрын
Андрей Иванович, очень приятно слышать, что вам понравилось!
@DaleDeAtrak2 жыл бұрын
факт того что эта игра зделана буквально на линиях вызывает шок
@nb13834 жыл бұрын
бонус с мультипотоком - прикольная штука, его бы разрфиксить его в какой нибудь ммо грг, чтобы собирать тем больше лута - чем больше у тебя потоков xD а и по делу, делайте игруху уже сразу на юнити или крайэнжен, лучше на первом - большие выживалки с большой функциональностью на нем.... будет по фану купить за недорого такой тайм киллер с "умными" ботами, а изначально нормальный движок позволит со временем дополнить и сделать годный продукт.. кто знает- может нас ждет "умный" пабг или дейз....
@MrLomaster4 жыл бұрын
threadripper: Хе хе бой)))
@paddyritsharh4 жыл бұрын
Если отладка это исправление багов, то программирование это внедрение багов. Ролик зачет, удачи во всех начинаниях, да благословит тебя пресвятая бело-синяя консоль! Кстати, некоторые моменты можно поправить на уровне взаимодействия с процессором через добавление сторонних баг-фиксов на ассемблере, хотя решение требует определенных умений, ибо на этом говне мамонта могут кодить только разумисты, т.к. там можно в 3-х переменных ошибку сделать.
@Янетыая-з2р4 жыл бұрын
видео топ, канал тоже, один минус, что видео выходят редко, но это понятно так как затрачиваются большие усилия.
@allexrosh99463 жыл бұрын
Спасибо огромное за видео. В последнее время стало уж очень много мамкиных программистов--математиков, у которых прямо с полоборота все реализуется и работает. Насмотревшись этого, другие мамкины программисты бросаются повторять подвиг, но на первой же проблеме сдуваются и вцелом в себе разочаровываются. Они ведь тоже ожидали, что бах-бах и готово и работает. Ваше видео показывает, что тут не все так просто, что сразу с нуля ничего никогда не получится, что обязательно будут проблемы и ошибки. И тут сразу 2 зайца - это отпугнёт от программирования тех, кто хочет всё и сразу, и приободрит тех, кто старается, но ловит фейлы
@Ntryzn61844 жыл бұрын
Я смотрящий это видео: "Нихрена не понял, но очень интересно".
@retzerroll3 жыл бұрын
Я тоже
@strategistaow35204 жыл бұрын
20 лет ты прожил не зря а для нас
@sloupoc63254 жыл бұрын
ты: *делаешь шаг для лучей колизии больше я: "опа, спиной можно пройти сквозь стену"
@ЦыборьгъУбивца4 жыл бұрын
Добавь следы от выстрела. Думаю, будет весело
@PaZZitiFFdroid3 жыл бұрын
Ты изобрёл NEAT-алгоритм:) Топ вещь, для многих игр именно на нем получается написать ботов для прохождения.
@krypton95854 жыл бұрын
Расскажи как сделать 3х мерный движок, расскажи побольше про полигоны и основы рендера
@sirynka4 жыл бұрын
@Zerokol изи, ну да ну да.
@gishack-xr4ju4 жыл бұрын
@Zerokol производительность 0? Где ж такое видано на низкоуровневых библиотеках? Это насколько лапки должны быть кривыми?
@dmytruek4 жыл бұрын
@@gishack-xr4ju Полностью согласен!
@valerchsayonara86074 жыл бұрын
@Zerokol Изи??? ПРоизводительность 0??? Это еще почему?
@IMPRESSIONplay14 жыл бұрын
@Zerokol чел хуйню не высирай, майнкрафт лагает тк он на джаве
@lincoolns4 жыл бұрын
Лампово и при этом прогрессивно получилось! По поводу нейросети, возможно стоит разделить их не на две а на три или даже 4. Одна отвечает за перемещение, вторая за поиск ближайшего противника, третья за поиск бонусов а четвёртая их объединяет в решающее поведение. при этом если у бота заканчиваются патроны или здоровье то веса для сети с поиском бонусов начинают преобладать над поиском противника. таким образом бот будет решать что важнее в текущий момент поиск противника или поиск бонусов. Так же думаю стоить урезать обзор поиска противника до примерно 190 градусов перед собой и только изредка смещение осмотра по другим сторонам (влево или в право). тогда движения ботов будут более походить на осмысленные. если это не помешает боту огибать препятствия на пути так как этот момент не освещён, либо я не понял как это реализовано.В целом за ролик и познания с какими проблемами пришлось столкнутся спасибо. Надеюсь у тебя всё получится. Ждём продолжения истории в плоть до выхода релиза! (особенно интересует версия под linux)
@aeeyyryeaeryr Жыл бұрын
А ведь он работал с нейросетями до того как это стало мейнстримом
@skrupidonn5 ай бұрын
это стало популярно ещё так лет 6 назад))
@aeeyyryeaeryr5 ай бұрын
@@skrupidonn видимо я не так хорошо шарю
@MathPTU4 ай бұрын
лол, а как же ок гугл? яндекс алиса, а боты в старых играх? это все примитивные нейросети, хотя гугл и яндекс это уже не самые притивные, твой текстаисправитель Т800 это тоже нейронка, реклама покупок и тд все это
@aeeyyryeaeryr4 ай бұрын
@@MathPTU честно, всегда думал что это простые алгоритмы которые условно говоря написаны на "если..., то...", похоже что был неправ.
@reikavasa81444 жыл бұрын
Ля, какой чел, прям по теме и без воды. Таки подпишусь, офигенные дела делаешь. Желаю удачи
@sweettooth55344 жыл бұрын
Спасибо за видео. Теперь я лучше понял, как работают нейронные сети
@goodcontent-gcrussian44353 жыл бұрын
3:18 мог просто уменьшить дальность лучей, чтоб столкновения за 3 км не просчитывались (в топ плз)
@LaVladz4 жыл бұрын
Спасибо за старания и за этот интересный ролик, который вдохновляет встать с дивана и заняться изучением программирования. Желаю тебе успехов в этом проекте)
@drewssd48044 жыл бұрын
Как будто посмотрел хороший фильм. Спасибо! Очень качественная работа, просто нет слов!
@Romanychev_Iliy_G74 жыл бұрын
Минус у ботов, они не должны видеть на 360°, а должны на 90°.
@sydskoff4 жыл бұрын
У человека угол обзора равен 120°
@Romanychev_Iliy_G74 жыл бұрын
Их много, а ты один и будет не интересно когда они всегда будут видеть тебя
@whatyoumean14983 жыл бұрын
Разве, не по этой причине они постоянно вертятся?
@jujubeperch2 жыл бұрын
@@sydskoff 180
@Граф_Мрякула4 жыл бұрын
Столкновения проще проверять так. Нарезать пространство на области, составить списки обьектов входящих в эти области. Потом определить в какой области мы находимся. Рассчитать расстояния от игрока до всех объектов в области отобрать имеющие расстояние до определенной величины о потом проверять на пересечение областей. Имху так будет гораздо быстрей.
@НурбакытНурмухамедулы4 жыл бұрын
Мои родители когда я учусь: боты начали к чему то учиться
@imrussian85074 жыл бұрын
Но ты как бы не бот
@imrussian85074 жыл бұрын
А всё, понял, шиза, вяжем его ребята!
@midas66494 жыл бұрын
@@imrussian8507 я приехал сори было еще 990 порюстрадавший
@imrussian85074 жыл бұрын
@@midas6649 хорошо, теперь мы готовы к работе!
@midas66494 жыл бұрын
@@imrussian8507 вяжем его!!!
@IGOREKHissin4 жыл бұрын
ну ты красавчик! а я думаю где то был у меня в подписках такой чел, который программирует, неужели я думаю, пропустил его где то? Спасибо ТЕБЕ за гигантсткий труд!
@MrSBFI4 жыл бұрын
у тебя крутая анимация в роликах и микрофоны вроде неплохие, но звук совсем не редактируешь при монтаже. Используй готовые фильтры. К примеру, тебе нужно выпиливать свои сибилянты. А то у меня перепонки уже болят)
@verbator22414 жыл бұрын
гудит просто звук, фонить немного. А в остальном всё норм с ним
@Panminipig2 жыл бұрын
Эти боты мне напоминают людей ) Вроде все дают и вся инфа на носу а сук не хотят ничего видеть
@ererur6464 жыл бұрын
Приятно смотреть твои ролики под чай. Спасибо за твой труд! Я думаю, твои видео об игре очень пригодятся для понимания, как все устроено, мне и другим людям. P.S. Сам относительно недавно начал учить C++, можете поспрашивать в ответах не бросил ли ещё)
@refrigerator8874 жыл бұрын
Чувак, три недели прошло, ты уже наверняка бросил
@ererur6464 жыл бұрын
@@refrigerator887 нет, не бросил. Ещё учу)
@Peregonn13 жыл бұрын
@@ererur646 прошло 7 месяцев, какие успехи?
@dkzib2 жыл бұрын
@@ererur646 год
@askveitekstanda Жыл бұрын
Ну как там с С++?)
@sergeymuzychuk37084 жыл бұрын
Хахахаха - "никогда не задумывался, что происходит у бота в голове"....класс
@zeOnni4 жыл бұрын
Интересно было бы узнать что за целевую функцию ты использовал своего ГА. Ты говорил что делал просто отношение числа побед к числу поражений. Мне кажется в для такой функции это большая дискретность. Что бы получить хотя бы одно очко, боту нужно сделать несколько выстрелов. Это довольно сложное поведение. Если сделать подсчет очков по числу нанесенного\полученого урона, то целевая функция стала бы более чувствительная к изменениям и отбор шел бы быстрее и эффективнее. Ты делаешь отличный контент!
@vectozavr4 жыл бұрын
А вы пишите очень полезные и дельные комментарии! :)
@Hande_hoch4 жыл бұрын
26:36 трудно найти, легко потерять и невозможно забыть дееее 😂😂😂
@yaalex254 жыл бұрын
Видос супер, досмотрел, очень понравилось
@vectozavr4 жыл бұрын
ахах
@AnggusKopeliani4 жыл бұрын
Создав вторую нейросеть вы создали аналог полушария. Для улучшения обучения создайте еще одну с "зеркальными нейронами". Пусть учатся наблюдая за успешными ботами, переписывают себе их опыт. Ваше обучение чисто генетическое. опыт должен все равно быть связанным я считаю, так как полушария в природе все же связанны. на входе нет чувства голода - чтоб они спешили к аптечке.
@luxeon20024 жыл бұрын
пожалуйста сделай отдельный ролик по реализации нейросети. с кодом со структурой данных.
@Запискиэлектроника4 жыл бұрын
И кстати обычно просто добавляют нейрон смещения, с постоянной единицей на входе. Получается более универсально.
@u5gb6194 жыл бұрын
Все видео смотрел и каждую минуту ты рассказывал как у тебя выходила ошибка, а потом как ты ее решал. В эти моменты у меня подгорало за тебя. Ты большой молодец что не останавливаешься, я и многие на твоем бы месте на второй ошибке все бросили😅
@kirillushakov3744 жыл бұрын
Очень классный видос, сам программировал одно время, я очень рад, что у тебя все удалось с нуля, это повторюсь очень круто, я думаю у тебя есть отличные способности, для развития в gamedev, так что продолжай в том же духе !
@gaitavr19924 жыл бұрын
Очень крутой результат, красава!
@petervotarum60204 жыл бұрын
Я не спец, но у меня есть идея. А что если попытаться обучить части нейросети отдельно? Сделать для них миниигры: для нейронки стрельбы и наведения сделать тир, а для нейронки перемещения гонку по чекпоинтам, где чекпоинты это враги в будущем, отбор по числу фрагов на единицу времени и по скорости прохождения трассы или количеству пройденных чекпоинтов за определенное время соответственно. Потом их объединить в одну, которая и бегает, и стреляет. Также для системы передвижения можно попробовать и другие игры: может ставить их перед обученным стрелять ботом и отсеивать по времени, которое они умудрились выжить или еще что-нибудь.
@danilyan45044 жыл бұрын
31:18 Забыл включить античит...
@ookageookage3 жыл бұрын
Очень круто, обычно на таких вот видео можно загореться идеей и попробовать самому) Надо было сложнее добавить систему поощрений : время жизни учесть, количество собранных бонусов, а не только киллы и смерти... А если играть с коэффициентами весов в системе наград - можно было бы создать несколько видов мобов: любителей прятаться, берсерков, любителей собирать бонусы. Ну и из-за отсутствия связей между нейросетями боты не могут додуматься об уклонении от противника... + Реген патронов добавить для фана, что бы боты не сдавались в углу 😅
@菊の花を愛しています4 жыл бұрын
Интересно. Спасибо, теперь я больше понимаю в нейросетях. Сделай им ограниченное зрение(как у человека) и чтобы они не могли крутиться быстро. Приблизь их характеристики к человеческим. Будет интересно посмотреть на их поведение после этих изменений. Кстати, всё происходит на процессоре, и графика тоже? Если да, то можно графику скинуть на видеокарту. Так же можно добавить что-то вроде тумана(туман войны), тогда обработка графики не будет тратить так много ресурсов.
@POJOK_B_IIuPOJOK4 жыл бұрын
Ввиду того, что уже есть алгоритм текстурирования и стен и пола на заданной высоте, теперь необходимо сделать так, чтобы каждый многоугольник на карте имел свою высоту пола и потолка, а также соответствующие текстуры(потолок, верхняя стена, нижняя стена, пол). Отрисовка вертикальной линии экрана тогда приобретает вид - из сектора в котором находится игрок луч до внешней стены карты(возможно невидимой - если это улица), сортировка найденных секторов по дальности и обратно отрисовка - полы стены потолки стены от сектора к сектору до самого игрока(до верхнего и нижнего краёв экрана). Неплохо назначить главный сектор(внешнюю стену) отдельно, чтобы об неё спотыкался рэйтрейсер при таком поиске. Ну а дальше активные сектора, которые могут менять высоту пола(лифт) или потолка(дверь). Гдето я это уже видел.................))))
@василийусов-л6ы4 жыл бұрын
Надо сделать ограничение на скорость поворота головы бота, а то они пользуются тем что у них его нет. И возможно ввести какую нибудь небольшую случайную задержку на распознавание цели. Потом заново их переучить с этими условиями и снять видео от их первого лица. Вот это я бы посмотрел))
@PLEER11K4 жыл бұрын
Было бы интересно глянуть, как бы ты реализовал батл рояль на этой огромной карте.
@elon_musk4 жыл бұрын
все таки стрим был перед большим видева)
@user-duignwkfpcb22 жыл бұрын
29:08 Люди также себя ведут-собираются в кучи и флексят. Ору😂😂🤣🤣
@БарбитуратНатриевич4 жыл бұрын
Это все конечно круто, но такой уровень программирования рядовому пользователю не осилить... Я только начал все это дело изучать, а уже хочу забить))))
@Megamind20064 жыл бұрын
Поздравляю тебя, я уж думал что у тебя не получится
@positiv85094 жыл бұрын
Хотелось бы по больше про нейросети.
@Шаман-е4д4 жыл бұрын
хех, наткнулся случайно на данный видеоматериал,но весьма занятно.Чуваку действительно респект, полностью и беспрекословно отдан своему делу.Удачи в дальнейшем.
@iTwirl8884 жыл бұрын
Почему я не программист, но мне интересно это смотреть?
@TheRioMiner4 жыл бұрын
Что-бы боты не застревали в цикле постоянного кручения на одном месте, попробуй добавить небольшой шум на входные нейроны, это по идее не должен сильно повлиять на ихнее поведение в бою, но когда они застревают в цикле, в теории это должно помочь.
@Voroshilov18812 жыл бұрын
Зашёл только из-за дробовика из tf2
@Laplace_s_Demon4 жыл бұрын
Эх, жалко, что это случай обучения без учителя, а то можно было бы натравить алгоритм обратного прохождения ошибки, хотя вроде на таких задачах научились его применять(правда что брать за функцию потерь, хз как эта проблема решается). Очень большая работа, ты крут, продолжай в том же духе!!!
@kilorad4 жыл бұрын
Чтобы перейти к задаче обучения с учителем, надо доработать задачу до reinforcement learning. В этой статье про него упрощённо рассказывается: habr.com/ru/post/468379/ Но это сложно. RL работает сильно не всегда, оно довольно неустойчиво. А генетика работает очень надёжно и просто.
@__1__4 жыл бұрын
сега 32мб, а вообще интересный эксперимент! Наверное Бог примерно так все и придумывал.)
@ZeekHain4 жыл бұрын
Не до конца досмотрел Вопрос на сеге мега драйв можно сделать 2.5 локацию
@ZeekHain4 жыл бұрын
@GIR не просто интересно типо такую технологию в каких случаях нельзя использовать ну ти 8 бит 16 бит и т. Д
@Мстящийбоксер-ъ6г4 жыл бұрын
@@ZeekHain на сеге несколько игр с рейкастингом. зеро толеранс, дюк нюкем 3д, бладшот, еще какая то. так же есть порт вольфенштейна от какого то задрота
@ZeekHain4 жыл бұрын
@@Мстящийбоксер-ъ6г спасибо не знал
@theHAFEN4 жыл бұрын
Да он и сейчас смотрит на нас, и угорает с придурков xD
@_-GIGA_CHAD-_2 жыл бұрын
*17:12** Вы единственный кто объяснил зачем нужна математика в программировании…* *🚬🗿👍*
@ATtiny13a-PU4 жыл бұрын
21:30 одна нейронка умеет ходить, другая стрелять, смешаем их и теперь у нас нейросеть не умеет ни то, ни другое, потому что сети не так хорошо совместимы, как кажется. Иногда на способность хорошо ходить нужен КАЖДЫЙ нейрон, а тут мы случайно забираем один и нейросеть просто сыпется. Это работает только при большой популяции с большим кол-вом выборок
@ATtiny13a-PU4 жыл бұрын
ахаха, как же я сванговал, нейросети ДЕЙСТВИТЕЛЬНО НИЧЕМУ НЕ МОГЛИ УЧИТСЯ! Я мог ещё посоветовать не карту делать больше, а несколько раз прогонять по одной карте разных ботов, а потом уже вести отбор
@ATtiny13a-PU4 жыл бұрын
30:52 нейросеть не имеет память, она не сможет анализировать инфу, она лишь может подтолкнуть себя к следующему шагу. Что же делает нейросеть? Крутится и когда угол до врага = 0 она стреляет. Всё. Я просто работал с большим колвом игр про эволюцию ботов, я обожаю своё дело и я уже точно понимаю, где проблема
@Мстящийбоксер-ъ6г4 жыл бұрын
@@ATtiny13a-PU вообще это не более чем баловство же? в его игре проще было самому написать интеллект ботов, но он решил использовать хайповый путь, который только в будущем раскроется
@Ланс-м1в4 жыл бұрын
Отличная рубрика. Увлекательно. Прихожу со смены с завода и смотрю.
@kakebalt4 жыл бұрын
добавь одиночную кампанию лол
@aceedcath Жыл бұрын
короч смысл тут какой - хочешь сделать движок - лучше найди толкового кодера! Вот так и работали два Джона, Джон Кармак и Джон Ромеро, один пилил движок, а другой рисовал
@qenterr61924 жыл бұрын
8:40 ну да, круто, решаешь 1 проблему и случайно решаешь 2, случайно создаёшь проблему - создаётся сразу 10....