Сделал Ботов на НЕЙРОСЕТЯХ и Заставил их Сражаться

  Переглядів 797,060

Vectozavr

Vectozavr

3 роки тому

#Vectozavr #Gamedev #Programming
Моя школа по математике: vectozavr.ru
discord: / discord
Игра: github.com/vectozavr/pseudo3D...
Моя статья про нейросети: ilinblog.ru/article.php?id_art...
tg: @vectozavr
inst: / vectozavr
vk: vectozavr
patreon: / vectozavr
Тайм коды:
Сегодня я расскажу, о том, как я добавил систему бонусов в свою 3D игру, сделал большую и интересную карту для сражений и реализовал ботов, которых заставил сражаться друг с другом. Приятного просмотра!
Для тех, кто не смотрел, вкратце расскажу, что было сделано. Сначала я подключил SFML и научился рисовать простые двумерные примитивы. После этого я сделал двумерную карту, добавил игрока и сделал управление. С помощью рейкастинга я добился эффекта третьего измерения. То есть зная расстояние до объекта в данном направлении, можно нарисовать препятствия разной высоты. При этом будет создаваться иллюзия третьего измерения.
После этого я добавил текстуры, оружие, зеркала, звуки, обработку столкновений и онлайн. Про все это вы сможете посмотреть у меня на канале, если вам это интересно.
Первым делом я решил сделать новую, большую и просторную карту.
Карту можно делать в любом 3D редакторе, а потом экспортировать графику как .obj файл. Так обычно и делают, когда пишут игры. Я буду использовать Cinema4D. Нет никакой разницы, какой именно редактор трёхмерной графики вы будите использовать, ведь формат .obj файлов унифицирован.
Я подумал, что раз у нас есть прыжок, то логично было бы сделать его очень большим. Для этого нужно подготовить движок к тому, чтобы можно было перепрыгивать через стены и правильно обрабатывать стрельбу в воздухе.
По ходу того, как я писал движок, со мной связался подписчик, который загорелся желанием запустить мою игру на linux’e и эльбрусе. Дмитрий смог запустить движок, но проблема была в том, что игра сильно тормозила. Так как вся математика производится на процессоре, появилась идея воспользоваться мульти поточностью и распараллелить вычисления равномерно на все ядра, ведь практически все современные процессоры имеют более одного ядра.
Изначально я думал написать какой-нибудь простой алгоритм для бота, но проблема в том, что простой алгоритм будет слишком глупым, а сложный не понятно, как реализовать. И тогда почти сразу же мне пришла гениальная идея: а что, если сделать нейросеть для ботов, которая будет обучаться естественным отбором, играя сама с собой. Это действительно интересно!
В сети я нашел несколько статей, посвященных обучению нейросетей специально для этих целей. Но эти статьи требовали достаточно высокого уровня владения материалом. Так же нужно понимать, что настоящий 3d шутер отличается от моей игры хотя бы тем, что у меня все происходит в 2D, а значит и процесс обучения будет гораздо проще.
Я решил, что самым простым вариантом будет использовать генетический алгоритм, основанный на естественном отборе.
После 2х тысяч поколений счет вышел на постоянную величину и дальше боты развиваться не хотели. После 6-ти тысячного поколения был небольшой рост до 9-ти тысячного поколения, но дальше, сколько я не обучал сеть, роста больше не было.

КОМЕНТАРІ: 1 600
@TrueSeekered
@TrueSeekered 3 роки тому
Хахаххаха "и люблю программирование потому что в нем решая одну проблему, ты решаешь еще несколько, там все так классно связано". Обычно как раз таки ты решаешь одну проблему, а получаешь 10 новых)))
@glebmartynov9738
@glebmartynov9738 3 роки тому
Нет
@TrueSeekered
@TrueSeekered 3 роки тому
@@glebmartynov9738 почему?
@artemkarpov1078
@artemkarpov1078 3 роки тому
Мальчик дарит букет роз, Мужчина дарит букет багов.
@glebmartynov9738
@glebmartynov9738 3 роки тому
@GIR помолчи
@revoss8375
@revoss8375 3 роки тому
@GIR забей это школьник который читает комментарии и не можете ответить
@niko7k383
@niko7k383 3 роки тому
Вся суть программирования: ошибку я исправил, но это тоже не помогло
@user-lh7sk2vn1o
@user-lh7sk2vn1o 3 роки тому
Прям после этих слов прочитал.
@jekins1580
@jekins1580 3 роки тому
Зачем аватарку украл?)))
@chroma_red
@chroma_red 3 роки тому
И спустя сутки поисков ошибки понимаешь что у тебя просто проект не правильно собрался
@CTEHOE6
@CTEHOE6 3 роки тому
😂😭
@WastiPlayX
@WastiPlayX 3 роки тому
Или просто буквы перепутал поэтому код не работает
@ducksser
@ducksser 3 роки тому
25:40 - "а давай ты будешь ходить, а я буду стрелять?" ахахах, детство
@anton.k.
@anton.k. 3 роки тому
а ведь именно так устроены танки, правда там ещё есть командир
@-PRO-log-
@-PRO-log- 3 роки тому
@@anton.k. можна третьего друга тогда позвать)))
@main_zhenek
@main_zhenek Рік тому
Всегда бесило. Я легких путей не искал
@memcat250
@memcat250 9 місяців тому
Я помню как играл с братом так в халф лайф 2
@mishame156
@mishame156 3 роки тому
Ахахахахах. Классика: "я оптимизировал алгоритм с многопоточкой, но теперь все работает хреново"
@mishame156
@mishame156 3 роки тому
Очень понравился ход мыслей и объяснение происходящего. По-моему, у тебя настоящий талант подавать сложный материал просто.
@anton.k.
@anton.k. 3 роки тому
@@mishame156 просто он достаточно хорошо разбирается в том, что делает. в отличии от некоторых. а не умение объяснить просто - это, как правило, результат не достаточных знаний или проф деформация
@kriegtech1651
@kriegtech1651 2 роки тому
пиздец тут сборище токсиков недомерок
@RiemStrider
@RiemStrider 3 роки тому
Задай ботам параметр "Макс радиус поворота камеры за тик". Чтобы он не имел возможности крутиться как читер в cs::go.
@adrenalin7807
@adrenalin7807 3 роки тому
Не, за кадр не очень, иначе при большом количестве fps ты будешь нереально быстро крутиться. Лучше сделать скорость разворота камеры, как и у игрока, так и у ботов.
@GazziFX
@GazziFX 3 роки тому
@@adrenalin7807 умножаем значение на время кадра и вуаля
@ATtiny13a-PU
@ATtiny13a-PU 3 роки тому
я тоже пишу игры на С++, особенно часто связанные с естественным отбором и нейросетями (и не только), у меня есть опыт и предложения на эту тему нейросеть не имеет памяти, это убьёт её работу. Для того, чтобы она работала нормально нужно исправить несколько вещей 1) добавить память (из классики это рекурентные сети, но я предлагаю сделать особые нейроны, что меняют свои значения либо плавно, либо с задержкой, вообщем имеют временные изменения) 2) обучать не 64 бота на одной карте, а хотя бы 500, просто протестировали одну пачку из 64-х ботов, далее тестим новую пачку. Далее берём общий результат 3) аккуратнее производить скрещивание, многие сети несовместимы друг с другом, и для работы фичи в их мозгах должны быть все наборы мутаций. Представьте человека, в которого запихнули 2 личности, причём не полностью, а перемешали. Такой метод не даёт появляться прорывным мутациям и сильно тормозит обучение. Это надо делать совершенно по другому. 4) нейросети будет достаточно всего не более 2-х скрытых слоёв, причём больше всего на первом, а на втором столько же, или меньше. Иначе это сильно замедлит обучение, а может и вовсе остановит. 5) советую смешать нейросеть с высокоуровневыми инструментами, такими как угол от противника и прочими похожими на это. Стреляют ли в бота, кол-во оставшихся жизней, много такого. 6) увеличьте штраф за смерть, чтобы нейросеть научилась пугаться, и пыталась избегать выстрелов по себе, уходя за стену. Штраф в виде отнима очков например, сразу 2! Но тогда нужна механика медленной регенерации здоровья
@RiemStrider
@RiemStrider 3 роки тому
@@ATtiny13a-PU очень круто. А как вы конкретно их пишете? Через SFML, SDL2, OpenGl, directX или может Unreal Engine?
@ATtiny13a-PU
@ATtiny13a-PU 3 роки тому
@@RiemStrider, С++ SFML (пытаюсь от него отказаться в пользу GLFW и мультиплатформы), в основном нужно от него лишь запустить шейдер, или вывести массив пикселей, всю графику я пишу сам без встроенных примитивов. А ещё если кто знает игру CellLab, я делаю ща её ремейк для пк, уже получилось на проце запустить 50к клеток, вместо 1к в оригинале, а на видеокарте 2 миллиона клеток
@vectozavr
@vectozavr 3 роки тому
:) Ребят, возможно, будет продолжение. Некоторые ребята в комментариях дают дельные советы. Лайкайте эти советы, чтобы я быстрее их находил.
@kujivuniakituo6121
@kujivuniakituo6121 3 роки тому
Можно ли мне как-то связаться с этим замечательным чуваком, который помог тебе всё сделать?
@darkstormheute
@darkstormheute 3 роки тому
;)
@temayne6050
@temayne6050 3 роки тому
нужна шкала голода аще нужно творческий режим игры чтобы можно было спокойно проходить без ограничений летать для тестов
@mimumi3723
@mimumi3723 3 роки тому
:)
@dozzza4053
@dozzza4053 3 роки тому
Onigiri, это ты?)) Очень похожая тематика и формат видео)
@DimaZheludko
@DimaZheludko 3 роки тому
30:40 Ну конечно он будет крутиться, почему бы и нет? Я бы тоже так делал, если бы каждый миг мог идеально проанализировать всю ситуацию с первого взгляда. Если хочешь сделать чтобы бот вёл себя более похоже на человека, сделай задержку между моментом когда он начал куда-то смотреть и когда он что-то там рассмотрел. Ну да, и, полагаю, нужно ограничить максимальный угол поворота, который может сделать бот за единицу времени. Думаю, 360° за секунду максимум, или около того. Иначе бот действительно буде вести себя не по-человечески.
@maxogongd7680
@maxogongd7680 3 роки тому
ещё можно сместить лучи рей-каста ближе к центру (т.е. по центру больше лучей, а по краям меньше), чтобы они хуже видели по краям
@Unknown64888
@Unknown64888 3 роки тому
Действительно.Без задержки между получением данных,обработки и выхода,т.е действия по типу разворота,стрельбы и т.д,боты слишком жесткие (Сверхботы)
@katastroff6011
@katastroff6011 2 роки тому
Создал крутилку нейросетью
@kop-lg7lo
@kop-lg7lo 2 роки тому
добавлять ошибку к положению противника при большой скорости поворота
@user-ry1iy1cu8f
@user-ry1iy1cu8f 10 місяців тому
@@maxogongd7680 Ну строго говоря, человеческое зрение тоже так работает. Отлично мы видим в центре, остальное иллюзия, за глазами нейронка достраивает реальность
@alopexstudio2174
@alopexstudio2174 3 роки тому
1) Как по мне, лучше сделать так, что со временем у ботов уменьшается хп. Во-первых, они будут вынуждены ходить по карте и лечиться, а во-вторых, боты, которые просто стоят на месте, будут понижаться в "рейтинге" из-за смертей от безделья (это если сделать, как предлагали, оценку качества бота по соотношению убийств к смертям). Может быть ещё добавить восстановление здоровья от убийств. То есть чтобы быть выше в рейтинге, боты должны будут как можно больше убивать и как можно меньше умирать (а для того, чтобы не умирать, нужно убивать и подбирать бонусы, которые, может быть, стоит сделать в большем количестве) 2) Наследование лучше сделать комбинированное. 4-х лучших нужно сохранять в оригинале, чтобы не потерять этот хороший генотип (это на 16 ботов, если что), сделать 8 мутированных (по схеме 3-2-2-1, например (3 мутированных потомка от первого места, 2 от второго и т.д.)) и 4 скрещённых от рандомных родителей. В этом случае эволюция и сохранит уже достигнутые результаты, и сможет показать что-то совершенно новое 3) Как уже сказали, можно сделать ограничение на угол поворота в кадр, но ещё лучше сделать так, что выходной нейрон указывает на то, насколько нужно повернуться. Например, "0" - 10 градусов влево, "1" - 10 градусов вправо. Тогда, правда, придётся добавить входной нейрон с нынешним поворотом бота. Ну и локальный угол положения противника вместо глобального. В принципе, если вообще всё переделать под локальное, то входной нейрон поворота бота уже не будет нужен 4) Нейросеть лучше на 2 не разделять, как мне кажется, а то будут и попытки стрелять через стены, и невозможность корректировать ходьбу в зависимости от наличия противников, и всё такое. Некритично, конечно, но неприятно 5) 3000 патронов у бота - это, как мне кажется, уже перебор 6) Опять же как уже говорили в комментах (просто повторю чтобы точно не пропало), нужно добавить входные нейроны патронов и здоровья. Не, ну конечно если у бота 3000 патронов, то ему о них не нужно заботиться, но всё же Ну и просто надеюсь, что ты передаёшь на входные нейроны не глобальные координаты противника, а локальные. Так, просто, на всякий, а то по невнимательности подобные ошибки случаются
@dimetry2896
@dimetry2896 Рік тому
По поводу первого. Сделать вампиризм. Стрельнул в другого и получил половину хп от нанесённого ему урона
@kritokrim7287
@kritokrim7287 Рік тому
@@dimetry2896 хахаха чел ниxyя не понял кроме вампиризма
@dimetry2896
@dimetry2896 Рік тому
@@kritokrim7287 я незнаю не одну игру с этой механикой. Кроме мобильной игры caves. А так я всё понял, но первое реально вампиризм
@user-me9uy8zw8q
@user-me9uy8zw8q Рік тому
@@dimetry2896 world of tanks blitz , там есть такая хрень в режимах
@dimetry2896
@dimetry2896 Рік тому
@@user-me9uy8zw8q точно! Спасибо, что напомнил
@danilaley1754
@danilaley1754 3 роки тому
30:56 В собственной игре за читы не забанят👌! 👍
@Fuze184
@Fuze184 3 роки тому
Забанят если есть другие разработчики и ты мешаешь игрокам.
@dex3491
@dex3491 3 роки тому
@@Fuze184 что ты выпукал?
@user-hp4iy5sk1y
@user-hp4iy5sk1y 3 роки тому
@@Fuze184 ор
@strangespot5805
@strangespot5805 3 роки тому
@@Fuze184 ты чё только что высрал?
@user-nl4jm2cw1r
@user-nl4jm2cw1r 3 роки тому
@@Fuze184 😂😂😂😂
@OnigiriScience
@OnigiriScience 3 роки тому
27:12 и невозможно забыть😂
@govdamikhaylo4183
@govdamikhaylo4183 3 роки тому
Коничыва:)
@govdamikhaylo4183
@govdamikhaylo4183 3 роки тому
Ты тоже входишь в этот список:)
@RiemStrider
@RiemStrider 3 роки тому
О, Онигири. Здорова. Ещё один топ канал :)
@ttempaa
@ttempaa 3 роки тому
Ку
@dmytruek
@dmytruek 3 роки тому
Привет от создателя НИЧЕГО ;)
@andreivlasenko527
@andreivlasenko527 3 роки тому
Скрещивание путём рандомного выбора весов это плохое скрещивание, потому что получится бессмыслица, результаты скрещивания крайне слабо связаны с предками, поэтому и не работает, оставил бы только мутации, стало бы лучше (либо нужно более сложное скрещивание, например если у тебя "мульти-нейрал нетворк систем", то скрещивать можно путём случайного выбора нейросетей у предков -- у одного взял стреляющую, у другого ходящую, например, но при этом сами нейросети только мутациями менять)
@dena5498
@dena5498 3 роки тому
Лучше не скрещивать, а делать цепочку генов с лучшими результатами в разных областях. К примеру частота движения, точность (держит прицел, пока противник не видит), скрытность (если противник не видит, старается приблизится) и т.д.
@user-ep1hf2ig9f
@user-ep1hf2ig9f 3 роки тому
По идее надо прикручивать обратную коррекцию, вместо мутаций. как-то так.
@Pavel_Kudinov
@Pavel_Kudinov 3 роки тому
При использовании одних только мутаций есть вероятность, что процесс обучения будет "застревать" в локальных экстремумах, потому что мутации - это небольшие изменения, которые дают аккуратную подстройку. А скрещивание нужно, чтобы "встряхнуть" алгоритм большими изменениями в начале обучения. Но при этом в конце, когда нейросеть будет достаточно хорошо натренирована, скрещивание не будет вносить больших изменений. Ребенок берет комбинацию генов родителей, и получается не бессмыслица, а обычный человек )
@andreivlasenko527
@andreivlasenko527 3 роки тому
@@Pavel_Kudinov если две разные нейросети скрестить рандомным выбором весов, это будет слабо отличаться от просто создания рандомной нейросети. Тут суть в том, что чтобы скрещивание хорошо работало нужно чтобы был какой-то спроектированный тип генома, который при скрещивании действительно наследует признаки обоих родителей корректно, и обычно крайне сложно в нетривиальной задаче этот геном придумать, очевидно, что использовать в качестве генома веса нейросети нерабочая идея, можете проверить, что будет если взять две рабочие разные нейросети и скрестить так) У людей не так, у нас сложно устроенный геном и как раз заточенный на скрещивание А если нейронки слабо отличаются, то скрещивание слабо отличается от мутации
@anxwi6299
@anxwi6299 3 роки тому
Плюсую, есть более уместные варианты нейросетей для данного случая.
@heyhoe168
@heyhoe168 3 роки тому
Есть еще вариант, обход многоугольника по часовой стрелки задает нормаль наружу, обход против часовой -- нормаль внутрь. PS поржал когда ты запилил многопоточность, а уже ПОТОМ узнал про мутексы.
@glebmartynov9738
@glebmartynov9738 3 роки тому
Зауисаю на образовательном ютубе 25/7, ты единственный, кто может одновременно совмещать контент для обывателей и для продвинутых "прогеров"
@user-cx4jg9wp7y
@user-cx4jg9wp7y 3 роки тому
А Хауди Хо?
@h_it
@h_it 3 роки тому
@GIR Он веб-программист и питонист))))
@senpai2422
@senpai2422 3 роки тому
@Gleb Martynov ukposts.info/the/zdmz_lLWT_dPqOvFjXAMVg.html тоже не плохой чел чекни его видосы : D
@glebmartynov9738
@glebmartynov9738 3 роки тому
@@senpai2422 да я его знаю - это мой Сын, горжусь им, спасибо вам, что у него такая аудитория!!!
@maksamaksim7692
@maksamaksim7692 3 роки тому
А Onigiri
@t-minus100
@t-minus100 3 роки тому
Габен, подвинься! У нас будут свои игры с блэкджеком и нейросетями!
@artemiyzubarev7068
@artemiyzubarev7068 3 роки тому
@@Yoqolo тупой бот/человек
@Slava_tobi_Ukraine
@Slava_tobi_Ukraine 3 роки тому
Судя по ценам на ТП стим у гейба все плохо с блекджеком и...
@metalim
@metalim 3 роки тому
и рейкастингом, конечно
@jebus_the_debilus
@jebus_the_debilus 3 роки тому
@@Yoqolo у смотрите бот подъехал какого то хера
@geroinmaster3970
@geroinmaster3970 3 роки тому
@@jebus_the_debilus Я буду клонится вам 92727382 раз!
@ATtiny13a-PU
@ATtiny13a-PU 3 роки тому
почему я до сих пор обманываю себя, что это TF2,а мы играем за солдата?
@wasland509
@wasland509 3 роки тому
Ебать, не думал, что так много людей думают так же
@wmouse116
@wmouse116 2 роки тому
А это только из-за аружея
@dez0d0rant
@dez0d0rant 2 роки тому
Блин схожее чувство
@mertuess
@mertuess 3 роки тому
Я ночью думал:"А что будет если сделать ботов не заскриптованными, а с помощью нейросетей?" И утром увидел этот видос в реках.
@Achmd
@Achmd 3 роки тому
нейросеть - это всего лишь функция с множеством переменных. Т.е. по факту это скрипт, который тебе лень продумывать и ты отдаёшь бразды в лапы рандома.
@Yobs2K
@Yobs2K 3 роки тому
@@Achmd и что это меняет?
@Achmd
@Achmd 3 роки тому
@@Yobs2K в том-то и дело, что ничего не поменяется.
@NikitaLindmann
@NikitaLindmann 3 роки тому
@@Achmd А ещё его можно заставить адаптироваться к изменяющимся условиям, и предоставить адаптивную сложность игроку, меняя поколения ботов каждый раунд, например.
@Kr1sGuy
@Kr1sGuy 3 роки тому
похоже ты попал в матрицу "тук-тук нео"
@gangster-tz5xe
@gangster-tz5xe 3 роки тому
Есть мысли по поводу улучшения генерации поколений: 1) В каждом следующем поколении оставляем лучшие экземпляры из старого. 2) Делать не один дочерний экземпляр, а несколько, комбинируя веса из родителей по-разному. 3) В каждое поколение закидываем несколько рандомных экземпляров для поддержания разнообразия И ещё - нельзя ли как-то переложить часть вычислений на gpu?
@drimef085
@drimef085 3 роки тому
Привет, tensorflow
@gangster-tz5xe
@gangster-tz5xe 3 роки тому
@@drimef085?
@gishack-xr4ju
@gishack-xr4ju 3 роки тому
@@gangster-tz5xe это библиотека для создания и обучения нейросетей. Возможно, это относится к твоему вопросу, а возможно, он имел ввиду, что такой вид обучения там уже есть, я не знаю, я не пользовался этим.
@gangster-tz5xe
@gangster-tz5xe 3 роки тому
@@gishack-xr4ju окей, спасибо
@konstantinshuliko1782
@konstantinshuliko1782 3 роки тому
Я пишу крестики нолики в стиле аски арта, радуюсь, что черт побери, как же я хорош! А потом увидел видео этого парня))))
@nellcreate3349
@nellcreate3349 3 роки тому
Любопытно... я тоже сейчас тем же, чем и ты занимаюсь. Можешь скинуть репозиторий (если ты, конечно, сделал его для проекта)? Хочу посмотреть, как это реализовывают другие.
@gleb_bro8710
@gleb_bro8710 3 роки тому
Лох. Я на пайтоновском tkinter написал крестики нолики. Ха-ха
@denamix6926
@denamix6926 3 роки тому
@@gleb_bro8710 ЛОХ-Лицо Обманутое Хулиганами. Не знал, что ты такой затупок.
@gleb_bro8710
@gleb_bro8710 3 роки тому
@@denamix6926 Лох это не абревиатура.
@user-mj1vf1br2r
@user-mj1vf1br2r 3 роки тому
@@gleb_bro8710 вы щито, ищете значения мата ?
@armredwings1465
@armredwings1465 3 роки тому
Примитивная игра уровня Г. Тормозит на топовом i9. Вся суть современного геймдева
@GANYBEISENOV
@GANYBEISENOV 3 роки тому
Джон кармак гении. Прикинь какого работать было на компе от джобса и создавать doom
@DiamondSane
@DiamondSane 3 роки тому
а вот раньше трава была зеленее. и игры были лучше(это правда)
@DiamondSane
@DiamondSane 3 роки тому
@Сознатель Око зато переносимость и поддерживаемость и прочее
@NikitaLindmann
@NikitaLindmann 3 роки тому
Да, тормозит. Но это какбэ тестовый образец, человек написал себе песочницу и играет с ней.
@NikitaLindmann
@NikitaLindmann 3 роки тому
@Varvar Workshop и чо?
@user-gr1oi5je8p
@user-gr1oi5je8p 3 роки тому
Я: покупаю себе ноут с райзеном 4800h, чтобы играть в эту игру. Разраб: ваше железо дно, так что игру я вам не дам!
@vladyslavkryvoruchko
@vladyslavkryvoruchko 2 роки тому
Ты: Покупаешь видюху 3090 ti. Разраб: Моя игра рендериться на процессоре
@user-tl6xf6cc6o
@user-tl6xf6cc6o 3 роки тому
Небольшое применение: при многопоточных вычислениях становятся видны "швы" между областями, обрабатываемыми разными ядрами (как при вертикальной десинхронизации). Это особо заметно по резких поворотах камерой.
@vectozavr
@vectozavr 3 роки тому
Да, вы правы :)
@CooplixThe
@CooplixThe 3 роки тому
Но ведь можно синхронизировать вычисления. Таким образом мы избегаем вычисления критических частей на разных потоках.
@user-tl6xf6cc6o
@user-tl6xf6cc6o 3 роки тому
@@CooplixThe Тоже верно, на на этом этапе разработки синхронизация не добавлена
@uawinwin
@uawinwin 3 роки тому
8:37 это круто если решение одной проблеммы решает другую, а зачастую это наоборот ты что то решил а на самом деле выстрелил себе в ногу. Или же например ты решил две проблеммы одним выстрелом а потом решение второй проблеммы решил изменить но не можешь так как она связана с первой и так одно за другое тянется. Поэтому лучше когда решения по возможности не зависят друг от друга.
@stripedheads
@stripedheads 3 роки тому
Любой начинающий программист, первым делом, заново переизобретает Doom... :-)
@discreetbiscuit237
@discreetbiscuit237 3 роки тому
30:40 умный бот,вот бы и так в жизни военные анализировали то что вокруг,постоянно крутясь
@myasnik4myasnik485
@myasnik4myasnik485 3 роки тому
Мужик, было бы круто, если бы написал курс на юдеми по созданию такого проекта
@user-ve9pq4nw8o
@user-ve9pq4nw8o 3 роки тому
поддерживаю, пытался уже несколько раз написать псевдо 3д и у меня даже близко не получилось, нужно обьяснение для таких тупых как я
@argentum2559
@argentum2559 3 роки тому
Ооооо да! Готовся, С++, я посмотрел новый ролик Вектозавра и теперь заряжен мотивацией в край!
@kilorad
@kilorad 3 роки тому
Я сравнивал разные оптимизирующие алгоритмы. Эволюция с рандомными скрещиваниями (как у автора) для нейросетей работает лучше, чем без скрещиваний. Просто экспериментальные данные. Но по моим наблюдениям, одна только эволюция - это не очень хороший оптимизатор. Существует такой алгоритм - дифференциальная эволюция. Там суть в том, что мы по всем особям в популяции пытаемся вычислить градиент функции полезности. Взять dQ/dX для каждого X, где Q - функция полезности, а X - это веса и смещения. И потом, когда генерируем новых агентов, после скрещивания накладывать не только мутацию, но и прибавлять этот градиент. Условно, у нас 100 особей. У каждой 10к параметров. Параметр номер 4 имеет (судя по выборке в 100 особей) dQ/dX = -0.1, то есть он антикоррелирует с эффективностью. Создаём новую особь. У неё параметр номер 4 имел значение 0 у "мамы" и 1 у "папы", берём рандомное - 0. Накладываем мутацию - стало 0.3. Прибавляем градиент - стало 0.2. Кроме того, я бы добавил ботам память - прочитал бы, что такое LSTM или GRU нейроны. У меня это очень положительно влияло на поведение ботов - они лучше собирали бонусы. Ещё можно вручную написать алгоритм для бота, вставить в него кучу коэффициентов и применить эволюцию к этим коэффициентам. То есть если вы решите, что нейронка работает плоховато, а рукописный алгоритм хорош, но не как терминатор... Потом - для обучения хорошо работает такой (нечестный?) хак: сделать функцию полезности более гладкой. Условно, за убийство противника даётся 100 очков. А за ранение даются очки? Надо давать, хотя бы чуть-чуть. А за подбор бонуса? Можно тоже чуть-чуть давать. А за проход рядом с бонусом? Самую капельку, но можно дать. Так, чтобы на итоговый счёт почти не влияло, но из двух равных ботов размножался тот, который лучше собирает бонусы, промахивается ближе к цели и так далее. Ошибается, но хотя бы пытается что-то сделать
@user-em2fd7gx3v
@user-em2fd7gx3v 3 роки тому
Спасибо Иван за очередную прекрасную работу. Очень интересно и познавательно.
@differentone_p
@differentone_p 3 роки тому
Это была очень интересная серия роликов, спасибо! Ждём следующий проект.
@yaalex25
@yaalex25 3 роки тому
Я не очень понял, бот набирает рейтинг только за счёт убийств? Просто если в качестве рейтинга делать соотношение убийства \ смерти, возможно они не будут флексить(скорее всего я не прав).
@mikepro8371
@mikepro8371 3 роки тому
Может выродиться, во что нибудь прикольное. Например ботов которые забиваются в углы и там стоят) Но может и повезти
@Achmd
@Achmd 3 роки тому
так у него же "килы - смерти". Если бот сделает 30 убийств и сам отъедет 10 раз, то кд у него будет 3, а "очков" - 20. А другой бот сделает 3 убийства и умрёт всего лишь один раз. У него тоже кд будет 3, а "очков" всего 2. Вопрос: зачем тебе второй бесполезный бот, который где-то крысит?
@amonra8764
@amonra8764 3 роки тому
@@Achmd Бот который крысит это тот бот которого мы заслужили)
@vladyslavkryvoruchko
@vladyslavkryvoruchko 2 роки тому
Убийства: 1 Смерти: 0 Счёт: 1 / 0 Счёт: Бесконечность
@kirillushakov374
@kirillushakov374 3 роки тому
Очень классный видос, сам программировал одно время, я очень рад, что у тебя все удалось с нуля, это повторюсь очень круто, я думаю у тебя есть отличные способности, для развития в gamedev, так что продолжай в том же духе !
@evilvirraZzz
@evilvirraZzz 3 роки тому
Слабая оптимизация не из за SFML У тебя рейкастинг происходит на процессоре, верно ? Попробуй переписать его в шейдер, и производить вычисления на видеокарте.
@GOTO_LOOP
@GOTO_LOOP 3 роки тому
При таком маленьком количестве точек и объектов, сам метод трассировки луча не эффективен. Посекторное разбиение карты и сортировка точек еще на этапе обработки карты были бы раз в сто эффективнее.
@evilvirraZzz
@evilvirraZzz 3 роки тому
@@GOTO_LOOP я думал, он реализовал уже посектарно. Это вроде не так сложно, как и сама трассировка )
@GOTO_LOOP
@GOTO_LOOP 3 роки тому
@@evilvirraZzz, трассировка несложный алгоритм, но эффективен, когда корректно нужно посчитать освещение, и когда много объектов в кадре.
@helldog
@helldog 3 роки тому
Вау, у меня от вашего диалога прошло закипание в мозгу
@ferum7318
@ferum7318 3 роки тому
@@helldog ай, больно в мозгах
@bigenough2122
@bigenough2122 3 роки тому
капеец, круто!) и формат меняется. Ты красавчик!)
@sever9081
@sever9081 3 роки тому
Был на стриме и помню твои рассказы об этом видео, лайк не глядя
@sweettooth5534
@sweettooth5534 3 роки тому
Спасибо за видео. Теперь я лучше понял, как работают нейронные сети
@jetyb
@jetyb 3 роки тому
3:22 Можно было бы находить коллизии по итерациям для фигур возрастающей сложности. В первом приближении это описанный вокруг игрока квадрат, затем - восьмиугольник, потом сложный многогранник. Но вообще скорее всего можно изящной математикой посчитать коллизию мира с кругом. 5:05 Проблема решилась бы вводом понятия "ориентации фрагмента". Грубо говоря, если отрезок проходится (относительно взгляда игрока) слева направо - он рисуется, справа налево - нет. 11:00 А почему бы вам не освоить какой-нибудь примитивный DirectX и делать движок на видеокарте? Видеокарта по числу потоков даст прикурить любому процессору. Зачем игровую логику(подбор здоровья) переносить в разные потоки? У вас потоки должны конкретно заниматься отрисовкой графики. Оставьте игровую логику за 1 потоком, он справится) Зачем писать нейросеть для наведения прицела на врага? Наведение делается простым кодом. Важным же тут решением может являться только на какого именно врага наводиться (в вашем же случае это очевидно, т.к. враг во входящих данных один). Самым же сложным является передвижение игрока по карте. Мне не нравится, что описанный вами алгоритм имеет слишком мало входящих данных. Он не запоминает структуры карты. Не запоминает, что секунду назад враг скрылся за стеной. Не учитывает "опасность" противника. Я так понял, там логика действия "мгновенная", не учитывающая прошлого.
@AlexStraga
@AlexStraga 3 роки тому
"Самая востребованная профессия в 2020"? Гробовщик? ) Молодец, прям интересно наблюдать что выйдет ) Я первый раз писал интеллект на флеше ничего не зная. Сплошные условники и рандом. на удивление получилось очень даже ниче) Поэтому возможно написать базовый ии было бы проще, чем генетику делать и отлаживать )
@user-vf6cr3ol9l
@user-vf6cr3ol9l 3 роки тому
24:28 ахаха) Небольшая такая ошибочка... "сделал ровно наоборот" :D
@drewssd4804
@drewssd4804 3 роки тому
Как будто посмотрел хороший фильм. Спасибо! Очень качественная работа, просто нет слов!
@vlad_covers
@vlad_covers 2 роки тому
При экспериментах с генетическими алгоритмами, я заметил, что тщательный подбор кол-ва особей в поколении очень сказывается на эффективности. Похоже, что этот размер нужно подбирать индивидуально под задачу, т.к. правила "чем больше/меньше, тем лучше" тут не работает. Маленький размер поколения - быстрая сменяемость, медленное продвижение (возможно, из-за отсутствия достаточного разнообразия). Большой размер поколений - низкая производительность, и, опять же, медленный рост качества. Нужен еще один генетический алгоритм для нахождения оптимальных параметров ))
@user-df8rw3lr1v
@user-df8rw3lr1v 3 роки тому
видео топ, канал тоже, один минус, что видео выходят редко, но это понятно так как затрачиваются большие усилия.
@user-co8of2dl3d
@user-co8of2dl3d 3 роки тому
Спасибо за старания и за этот интересный ролик, который вдохновляет встать с дивана и заняться изучением программирования. Желаю тебе успехов в этом проекте)
@alexanderrubanskiy9594
@alexanderrubanskiy9594 3 роки тому
Спасибо за видео! Реально нужными вещами занимаешься. Удачи в развитии!
@s_topsky
@s_topsky 3 роки тому
Это круто и очень Интересно, спасибо за такой полезный, учебный контент) Успехов в доработке и дальнейшей разработке, улучшений!
@MrSBFI
@MrSBFI 3 роки тому
у тебя крутая анимация в роликах и микрофоны вроде неплохие, но звук совсем не редактируешь при монтаже. Используй готовые фильтры. К примеру, тебе нужно выпиливать свои сибилянты. А то у меня перепонки уже болят)
@verbator2241
@verbator2241 3 роки тому
гудит просто звук, фонить немного. А в остальном всё норм с ним
@schetnikov
@schetnikov 3 роки тому
Ваня, совет насчёт "сесть и немножко подумать" - величайший, правда, я важнее совета не знаю. Люди разделяются на нет, кто ему следует и не следует. И так классно на тебя смотреть! Держишься ты отлично, видно, как многому ты научился и в этом плане тоже.
@vectozavr
@vectozavr 3 роки тому
Андрей Иванович, очень приятно слышать, что вам понравилось!
@allexrosh9946
@allexrosh9946 3 роки тому
Спасибо огромное за видео. В последнее время стало уж очень много мамкиных программистов--математиков, у которых прямо с полоборота все реализуется и работает. Насмотревшись этого, другие мамкины программисты бросаются повторять подвиг, но на первой же проблеме сдуваются и вцелом в себе разочаровываются. Они ведь тоже ожидали, что бах-бах и готово и работает. Ваше видео показывает, что тут не все так просто, что сразу с нуля ничего никогда не получится, что обязательно будут проблемы и ошибки. И тут сразу 2 зайца - это отпугнёт от программирования тех, кто хочет всё и сразу, и приободрит тех, кто старается, но ловит фейлы
@vladislavalbus2211
@vladislavalbus2211 3 роки тому
Красавчик! Особенно согрело мое сердце прекрасное объяснение сути нейросеток. Получил кучу удовольствия, когда увидел матрицы в ролике на ютубе, наконец-то канал с реально годным контентом.
@unmeiji8
@unmeiji8 3 роки тому
Интересно. Спасибо, теперь я больше понимаю в нейросетях. Сделай им ограниченное зрение(как у человека) и чтобы они не могли крутиться быстро. Приблизь их характеристики к человеческим. Будет интересно посмотреть на их поведение после этих изменений. Кстати, всё происходит на процессоре, и графика тоже? Если да, то можно графику скинуть на видеокарту. Так же можно добавить что-то вроде тумана(туман войны), тогда обработка графики не будет тратить так много ресурсов.
@nb1383
@nb1383 3 роки тому
бонус с мультипотоком - прикольная штука, его бы разрфиксить его в какой нибудь ммо грг, чтобы собирать тем больше лута - чем больше у тебя потоков xD а и по делу, делайте игруху уже сразу на юнити или крайэнжен, лучше на первом - большие выживалки с большой функциональностью на нем.... будет по фану купить за недорого такой тайм киллер с "умными" ботами, а изначально нормальный движок позволит со временем дополнить и сделать годный продукт.. кто знает- может нас ждет "умный" пабг или дейз....
@MrLomaster
@MrLomaster 3 роки тому
threadripper: Хе хе бой)))
@paddyritsharh
@paddyritsharh 3 роки тому
Если отладка это исправление багов, то программирование это внедрение багов. Ролик зачет, удачи во всех начинаниях, да благословит тебя пресвятая бело-синяя консоль! Кстати, некоторые моменты можно поправить на уровне взаимодействия с процессором через добавление сторонних баг-фиксов на ассемблере, хотя решение требует определенных умений, ибо на этом говне мамонта могут кодить только разумисты, т.к. там можно в 3-х переменных ошибку сделать.
@user-mz4ye7mh6b
@user-mz4ye7mh6b 3 роки тому
хех, наткнулся случайно на данный видеоматериал,но весьма занятно.Чуваку действительно респект, полностью и беспрекословно отдан своему делу.Удачи в дальнейшем.
@user-hr3sv8mw8c
@user-hr3sv8mw8c 3 роки тому
Добавь следы от выстрела. Думаю, будет весело
@blendfile3_0
@blendfile3_0 3 роки тому
Круто! Ты лучший
@Drefty
@Drefty 3 роки тому
Красава, очень интересно, держу за тебя кулачки!
@Coolverstukas1984
@Coolverstukas1984 3 роки тому
Молодец! Так держать! Советую посмотреть в сторону "Обучения с подкреплением" (deep reinforcement learning).
@strategistaow3520
@strategistaow3520 3 роки тому
20 лет ты прожил не зря а для нас
@blaxzy6184
@blaxzy6184 3 роки тому
Я смотрящий это видео: "Нихрена не понял, но очень интересно".
@retzerroll
@retzerroll 3 роки тому
Я тоже
@Partey-xh3fr
@Partey-xh3fr 3 роки тому
Просто продолжай, это офигенно смотреть
@user-is9fv5bi7x
@user-is9fv5bi7x 3 роки тому
Отличная рубрика. Увлекательно. Прихожу со смены с завода и смотрю.
@luxeon2002
@luxeon2002 3 роки тому
пожалуйста сделай отдельный ролик по реализации нейросети. с кодом со структурой данных.
@zeOnni
@zeOnni 3 роки тому
Интересно было бы узнать что за целевую функцию ты использовал своего ГА. Ты говорил что делал просто отношение числа побед к числу поражений. Мне кажется в для такой функции это большая дискретность. Что бы получить хотя бы одно очко, боту нужно сделать несколько выстрелов. Это довольно сложное поведение. Если сделать подсчет очков по числу нанесенного\полученого урона, то целевая функция стала бы более чувствительная к изменениям и отбор шел бы быстрее и эффективнее. Ты делаешь отличный контент!
@vectozavr
@vectozavr 3 роки тому
А вы пишите очень полезные и дельные комментарии! :)
@ookageookage
@ookageookage 3 роки тому
Очень круто, обычно на таких вот видео можно загореться идеей и попробовать самому) Надо было сложнее добавить систему поощрений : время жизни учесть, количество собранных бонусов, а не только киллы и смерти... А если играть с коэффициентами весов в системе наград - можно было бы создать несколько видов мобов: любителей прятаться, берсерков, любителей собирать бонусы. Ну и из-за отсутствия связей между нейросетями боты не могут додуматься об уклонении от противника... + Реген патронов добавить для фана, что бы боты не сдавались в углу 😅
@bogdanwr5554
@bogdanwr5554 3 роки тому
Парню респект! Не увлекаюсь программированием, но после этого видео задумался о его сути. Однозначно годный и информативный контент! Лайк и подписка.
@elon_musk
@elon_musk 3 роки тому
все таки стрим был перед большим видева)
@ererur646
@ererur646 3 роки тому
Приятно смотреть твои ролики под чай. Спасибо за твой труд! Я думаю, твои видео об игре очень пригодятся для понимания, как все устроено, мне и другим людям. P.S. Сам относительно недавно начал учить C++, можете поспрашивать в ответах не бросил ли ещё)
@refrigerator887
@refrigerator887 3 роки тому
Чувак, три недели прошло, ты уже наверняка бросил
@ererur646
@ererur646 3 роки тому
@@refrigerator887 нет, не бросил. Ещё учу)
@Peregonn1
@Peregonn1 3 роки тому
@@ererur646 прошло 7 месяцев, какие успехи?
@dkzib
@dkzib 2 роки тому
@@ererur646 год
@askveitekstanda
@askveitekstanda Рік тому
Ну как там с С++?)
@sloupoc6325
@sloupoc6325 3 роки тому
ты: *делаешь шаг для лучей колизии больше я: "опа, спиной можно пройти сквозь стену"
@3263927
@3263927 3 роки тому
это шедевр спасибо!
@santolok7662
@santolok7662 10 місяців тому
30:36 здесь, почему-то, ролик резко обрывается. В приложении ютуб показывает, что это длительность видоса.
@krypton9585
@krypton9585 3 роки тому
Расскажи как сделать 3х мерный движок, расскажи побольше про полигоны и основы рендера
@zerokol12
@zerokol12 3 роки тому
на OpenGL вроде изи но производительность будет на 0 а directx сложный
@sirynka
@sirynka 3 роки тому
@@zerokol12 изи, ну да ну да.
@gishack-xr4ju
@gishack-xr4ju 3 роки тому
@@zerokol12 производительность 0? Где ж такое видано на низкоуровневых библиотеках? Это насколько лапки должны быть кривыми?
@dmytruek
@dmytruek 3 роки тому
@@gishack-xr4ju Полностью согласен!
@valerchsayonara8607
@valerchsayonara8607 3 роки тому
@@zerokol12 Изи??? ПРоизводительность 0??? Это еще почему?
@fanlinp
@fanlinp 3 роки тому
Видос как всегда топовый, оч интересна эта тема в качестве контента, сам ни программированием ни созданием игр не занимаюсь. Но смотрю с удовольствием. Анимации оч качественные как и монтаж видео. Так держать!
@Megamind2006
@Megamind2006 3 роки тому
Поздравляю тебя, я уж думал что у тебя не получится
@Romanychev_Iliy_G7
@Romanychev_Iliy_G7 3 роки тому
Минус у ботов, они не должны видеть на 360°, а должны на 90°.
@sydskoff
@sydskoff 3 роки тому
У человека угол обзора равен 120°
@Romanychev_Iliy_G7
@Romanychev_Iliy_G7 3 роки тому
Их много, а ты один и будет не интересно когда они всегда будут видеть тебя
@whatyoumean1498
@whatyoumean1498 2 роки тому
Разве, не по этой причине они постоянно вертятся?
@jujubeperch
@jujubeperch 2 роки тому
@@sydskoff 180
@aeeyyryeaeryr
@aeeyyryeaeryr 11 місяців тому
А ведь он работал с нейросетями до того как это стало мейнстримом
@PaZZitiFFdroid
@PaZZitiFFdroid 2 роки тому
Ты изобрёл NEAT-алгоритм:) Топ вещь, для многих игр именно на нем получается написать ботов для прохождения.
@IGOREK210491
@IGOREK210491 3 роки тому
ну ты красавчик! а я думаю где то был у меня в подписках такой чел, который программирует, неужели я думаю, пропустил его где то? Спасибо ТЕБЕ за гигантсткий труд!
@user-ny9ic3ig4j
@user-ny9ic3ig4j 3 роки тому
Мои родители когда я учусь: боты начали к чему то учиться
@imrussian8507
@imrussian8507 3 роки тому
Но ты как бы не бот
@imrussian8507
@imrussian8507 3 роки тому
А всё, понял, шиза, вяжем его ребята!
@midas6649
@midas6649 3 роки тому
@@imrussian8507 я приехал сори было еще 990 порюстрадавший
@imrussian8507
@imrussian8507 3 роки тому
@@midas6649 хорошо, теперь мы готовы к работе!
@midas6649
@midas6649 3 роки тому
@@imrussian8507 вяжем его!!!
@yaalex25
@yaalex25 3 роки тому
Видос супер, досмотрел, очень понравилось
@vectozavr
@vectozavr 3 роки тому
ахах
@PiratVetrov
@PiratVetrov 3 роки тому
Очень круто, я такое не когда не сделаю, жду продолжение, лайк поставил, ты всё умело сделал.
@DaleDeAtrak
@DaleDeAtrak 2 роки тому
факт того что эта игра зделана буквально на линиях вызывает шок
@u5gb619
@u5gb619 3 роки тому
Все видео смотрел и каждую минуту ты рассказывал как у тебя выходила ошибка, а потом как ты ее решал. В эти моменты у меня подгорало за тебя. Ты большой молодец что не останавливаешься, я и многие на твоем бы месте на второй ошибке все бросили😅
@dbmongo9732
@dbmongo9732 3 роки тому
Сижу в туалете, досматриваю видео из последних сил...
@user-tq5wy7tf2z
@user-tq5wy7tf2z 3 роки тому
Удачи тебе терпения и хороших спонсоров!
@user-ep1hf2ig9f
@user-ep1hf2ig9f 3 роки тому
Столкновения проще проверять так. Нарезать пространство на области, составить списки обьектов входящих в эти области. Потом определить в какой области мы находимся. Рассчитать расстояния от игрока до всех объектов в области отобрать имеющие расстояние до определенной величины о потом проверять на пересечение областей. Имху так будет гораздо быстрей.
@user-dp2gu5oq6g
@user-dp2gu5oq6g 3 роки тому
Это все конечно круто, но такой уровень программирования рядовому пользователю не осилить... Я только начал все это дело изучать, а уже хочу забить))))
@user-rb5dy7fn9y
@user-rb5dy7fn9y 3 роки тому
Надо сделать ограничение на скорость поворота головы бота, а то они пользуются тем что у них его нет. И возможно ввести какую нибудь небольшую случайную задержку на распознавание цели. Потом заново их переучить с этими условиями и снять видео от их первого лица. Вот это я бы посмотрел))
@reikavasa8144
@reikavasa8144 3 роки тому
Ля, какой чел, прям по теме и без воды. Таки подпишусь, офигенные дела делаешь. Желаю удачи
@user-eq1eu5ng2l
@user-eq1eu5ng2l 3 роки тому
Респект ,продолжай в том же духе. Контент реально годный. Желаю тебе удачи
@gaitavr1992
@gaitavr1992 3 роки тому
Очень крутой результат, красава!
@playaaaLV
@playaaaLV 3 роки тому
Чувак, вот ты вроде строишь из себя программиста (C++, самописный 3d-движок (хоть и на cpu), неплохое понимание нейросетей), но иногда звучишь как самый обыкновенный гуманитарий. Мало места на карте для большего поколения ИИ - увеличу карту и ВРУЧНУЮ расставлю респы в Cinema 4D. Ты серьёзно? В чем проблема генерить простой лабиринт с рандомными респами хоть на 1000 голов процедурально в рантайме? Ох уж это поколение Apple... :)
@sagrer128
@sagrer128 3 роки тому
Вполне возможно что на написание приблуды для процедурной генерации карт ушло бы времени больше чем на разовую ручную правку уровня в редакторе. Потратить 10 дней на написание программы, которая за 10 секунд сделает работу, которую без программы можно было сделать за 10 минут имеет смысл если эту работу нужно будет делать больше 1 раза. Обычно - значительно больше одного раза %).
@playaaaLV
@playaaaLV 3 роки тому
@@sagrer128 ну раз такую херню писать 10 дней, то комментарий про гуманитария особенно актуален.
@sagrer128
@sagrer128 3 роки тому
@@playaaaLV Вас упоминание 10 минут и 10 секунд рядом с упоминанием 10 дней вообще не смутило?
@playaaaLV
@playaaaLV 3 роки тому
@@sagrer128 вообще нет, потому как выбирая между ручной работой и автоматизацией я в подавляющем большинстве случаев выберу последнюю. Особенно учитывая, что а) упомянутая автоматизация пишется не за 10 дней и даже не за 10 часов и б) создавать/менять карту предстоит явно больше одного раза, что автор наглядно и демонстрирует в этом видео. Спорить дальше на очевидные темы я не буду, я - программист, а не философ.
@sagrer128
@sagrer128 3 роки тому
@@playaaaLV и в) в данном конкретном случае переправить карту явно было где-то на порядок быстрее (сколько он там карту правил, минут 5-10?) чем заняло бы написание генерилки. Быстрее чем за час он имхо вряд ли бы её написал с учётом обдумывания как вообще делать, отладки-тестирования-исправления косяков вылезших в каких-то особых случаях + самого факта работы на плюсах а не на каком-нибудь питоне. А вот вернётся ли он к опытам по обучению нейросетевых ботов, для чего ему могла бы понадобиться генерилка - ещё неизвестно.
@lincoolns
@lincoolns 3 роки тому
Лампово и при этом прогрессивно получилось! По поводу нейросети, возможно стоит разделить их не на две а на три или даже 4. Одна отвечает за перемещение, вторая за поиск ближайшего противника, третья за поиск бонусов а четвёртая их объединяет в решающее поведение. при этом если у бота заканчиваются патроны или здоровье то веса для сети с поиском бонусов начинают преобладать над поиском противника. таким образом бот будет решать что важнее в текущий момент поиск противника или поиск бонусов. Так же думаю стоить урезать обзор поиска противника до примерно 190 градусов перед собой и только изредка смещение осмотра по другим сторонам (влево или в право). тогда движения ботов будут более походить на осмысленные. если это не помешает боту огибать препятствия на пути так как этот момент не освещён, либо я не понял как это реализовано.В целом за ролик и познания с какими проблемами пришлось столкнутся спасибо. Надеюсь у тебя всё получится. Ждём продолжения истории в плоть до выхода релиза! (особенно интересует версия под linux)
@Remis_ice
@Remis_ice 3 роки тому
Наконец то Это же оно Даждались
@gagnat3812
@gagnat3812 3 роки тому
Как всегда лучше всех
@danilyan4504
@danilyan4504 3 роки тому
31:18 Забыл включить античит...
@ivanmikhail7162
@ivanmikhail7162 3 роки тому
Супер! Желаю сил и удачи! :)
@alexwhite8040
@alexwhite8040 3 роки тому
Сочувствую как тот кто писал нейронку с нуля на C++ )) Вроде Unity неплохая среда для игр но там C#
@RiemStrider
@RiemStrider 3 роки тому
Мне 15 лет. Я делал. Главное сделать модуль вроде numPy. Чтобы работать с матрицами. Если есть такой модуль. Можешь где угодно написать весьма просто. Можно и без него, но это увеличит код в НЕСКОЛЬКО раз. Ибо матрицы очень помогают тут. Но это был обычный маленький перцептрон. Я делал на c++ так как считал что я не пойму нейросеть, если буду делать их использую только уже готовые модули на Python. Единственное что бесило, это то что C++ в отличие от Python более низкоуровневый и сложный, и было сложно работать с массивами. Нельзя даже было банально написать Int B[2][3]; (Типа заполнение массива) A = B; Типа он не может взять, и присвоить новой переменной значение другой, если та является массивом. Точнее я не понял как. В итоге делал через костыли. Делал на телефоне. Ибо комп не работает из-за видеокарты.
@RiemStrider
@RiemStrider 3 роки тому
Только моя по сравнению с его кусок говно в углу
@alexwhite8040
@alexwhite8040 3 роки тому
@@RiemStrider, В C++ спокойно можно делать двумерные массивы - чем я и пользовался. Зато C++ более точный.
@RiemStrider
@RiemStrider 3 роки тому
@@alexwhite8040 я знаю. Просто например умножать и поворачивать он их не умеет. Это надо писать самому. Я ими пользовался. Просто функции для них писал сам.(ибо их там банально нет изначально)
@alexwhite8040
@alexwhite8040 3 роки тому
@@RiemStrider , Ха так в этом и соль - всё пишешь сам с нуля - никаких тебе библиотек и модулей. Если сделал всё сам значит в теме - собрал из блоков значит ничего ты не в теме ))
@__1__
@__1__ 3 роки тому
сега 32мб, а вообще интересный эксперимент! Наверное Бог примерно так все и придумывал.)
@ZeekHain
@ZeekHain 3 роки тому
Не до конца досмотрел Вопрос на сеге мега драйв можно сделать 2.5 локацию
@ZeekHain
@ZeekHain 3 роки тому
@GIR не просто интересно типо такую технологию в каких случаях нельзя использовать ну ти 8 бит 16 бит и т. Д
@user-wp1te1uy7k
@user-wp1te1uy7k 3 роки тому
@@ZeekHain на сеге несколько игр с рейкастингом. зеро толеранс, дюк нюкем 3д, бладшот, еще какая то. так же есть порт вольфенштейна от какого то задрота
@ZeekHain
@ZeekHain 3 роки тому
@@user-wp1te1uy7k спасибо не знал
@HAFEN_
@HAFEN_ 3 роки тому
Да он и сейчас смотрит на нас, и угорает с придурков xD
@dmitrys6362
@dmitrys6362 3 роки тому
Спасибо, очень интересно и познавательно!
@sheltonlegion4767
@sheltonlegion4767 3 роки тому
Ура, наконец-то новое видео!
@lamtorh7238
@lamtorh7238 3 роки тому
Нейросеть это интересно
I PUT MY ARMOR ON (Creeper) (PG Version)
00:19
Sam Green
Переглядів 6 млн
Kitten has a slime in her diaper?! 🙀 #cat #kitten #cute
00:28
Сын Расстроился Из-за Новой Стрижки Папы 😂
00:21
Глеб Рандалайнен
Переглядів 4,4 млн
Издеваюсь над Своим 3D Движком :)
11:31
Vectozavr
Переглядів 620 тис.
Я раскрасил Гугл Динозаврика!!! Вот что вышло :3
9:50
Хауди Хо™ - Просто о мире IT!
Переглядів 129 тис.
Нейросеть УНИЧТОЖИЛА Hill Climb Racing
20:07
Code Wizer
Переглядів 1,6 млн
Делаю эволюцию ИИ в Unity
17:05
Onigiri
Переглядів 470 тис.
How to write your own pseudo-3d game in 10 minutes? ( @javidx9 )
8:23
НЕЙРОСЕТЬ УНИЧТОЖИЛА ДЖУНА
31:47
Роман Сакутин
Переглядів 164 тис.
DIY COMPUTER from scratch!
25:03
Vectozavr
Переглядів 2,2 млн
Первые продажи Ryzen на Ozon и первый возврат! 😱
13:17
Герасимов Live
Переглядів 30 тис.
СЛОМАЛСЯ ПК ЗА 2000$🤬
0:59
Корнеич
Переглядів 1,6 млн
Первые продажи Ryzen на Ozon и первый возврат! 😱
13:17
Герасимов Live
Переглядів 30 тис.
RTX 4070 Super слишком хороша. Меня это бесит
15:22
Рома, Просто Рома
Переглядів 89 тис.