Тёмный

Генерация мира из 3D тайлов: часть 5, Wave Function Collapse 

Emerald Powder
Подписаться 77 тыс.
Просмотров 15 тыс.
50% 1

Существует много идей и алгоритмов для процедурной генерации различных уровней и миров, в этом видео я буду разбирать алгоритмы связанные с созданием мира из воксельных тайлов. Особенность этого генератора будет в том что для создания уровня не нужно будет настраивать никаких правил, только нарисовать в воксельном стиле 3D модели тайлов, из которых будет автоматически генерироваться уровень. В этой части мы доделаем, настроим, и поэкспериментируем с генератором миров на основе коллапса волновой функции
Плейлист про генерацию из тайлов: • Генерация мира из тайлов
Ссылка на готовый проект: github.com/emeraldpowder/Voxe...
Patreon канала - / emeraldpowder
Наш Discord - / discord
Полезные ссылки и статьи:
• Generate Worlds - Firs...
habr.com/ru/post/475188/
habr.com/ru/post/437604/
www.kchapelier.com/wfc-example...
selfsame.itch.io/unitywfc
habr.com/ru/post/488336/
marian42.de/article/wfc/
На этом канале регулярно появляются новые видео, которые позволят тебе научиться создавать игры, или подарят новые идеи и вдохновение, если ты уже умеешь. Подписывайся!
Остались какие-то вопросы, пожелания, или идеи для других видео? Смело пиши в комментарии под видео

Опубликовано:

 

4 апр 2020

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 53   
@dxmln
@dxmln 4 года назад
познавательное видео, спасибо! Сделай видео с трехмерной генерацией , про которую ты говорил в конце видео, пожалуйста,очень интересно увидеть
@Eliodorr
@Eliodorr 4 года назад
Как всегда очень круто, спасибо за видео)
@dozzza4053
@dozzza4053 4 года назад
Как всегда классно. Лайк) Был бы ещё интересен разбор генерации многоуровневых карт
@TypicalRabbit
@TypicalRabbit 4 года назад
Великолепно :)
@SHILY-PROJECT
@SHILY-PROJECT 4 года назад
Лайк, коммент и можно глядеть:D Заранее, спасибо за старания! Ты топ!
@Hafune
@Hafune Год назад
Всё очень здорово ), сейчас совместил генерацию лабиринта с колапсом, получаются вполне сносные тропинки )) Сколько крови мне выпило создание подобных уровней вручную, ужас, а эти твои туториалы прямо спасение !)
@tusk3
@tusk3 Год назад
привет ,есть возможность проектом поделиться?
@Hafune
@Hafune Год назад
@@tusk3 нет, проект коммерческий.
@user-eq6pv2xt2s
@user-eq6pv2xt2s 2 месяца назад
Эмиральд ты красава!=) А можно использовать твой проект и создать свою игру на ГуглСторе на его основе?
@kracklin7689
@kracklin7689 4 года назад
Сделай сохранение мира
@risovshik6638
@risovshik6638 3 года назад
Да сохранение это ооооочень важно
@kitayskiykabachek8244
@kitayskiykabachek8244 Год назад
Это просто нужно только создать каждой клетке номер, и создать массив из номеров клеток, а потом создать такие же
@user-ob9nc4oy3d
@user-ob9nc4oy3d 4 года назад
Давай туторы по шейдерам, ты слишком хорошо объясняешь все
@user-pm2ru6ir6n
@user-pm2ru6ir6n 4 года назад
Классно получилось! Но как по мне, над сразу кешировать стороны в list или hash. И конечно, методом исключения, подбирать тайл, из всего сета в каждой ячейке - это лаг ) слишком много new.
@malikvalley
@malikvalley 3 года назад
Привет. Я хотел спросить про математику... Есть ли книги по общей математике, которые бы ты мог посоветовать? Я не очень развит в данной науке, так что хочу подтянуть свои навыки) Буду благодарен!
@Tender-dn9sp
@Tender-dn9sp 4 года назад
Слушай, привет , ты не смог бы сделать урок по 'слиянии'' текстур ? Например сделать конвейер любой длины и у него только были вход, середина и выход .( Ну а также углы )
@maximus3973
@maximus3973 2 года назад
Добрый день! Интересует вопрос как изготовить вручную какой-нибудь контент, и позволить WFC отрисовать вокруг него уровень?
@Kot-Alenya
@Kot-Alenya 4 года назад
Эмиральд скажи пожалуйста лучший способ сохранения и загрузки мира во время игры . Нет ли способа делать дубликат сцены во время игры и загружаться с него , когда копался в инете ничего кроме сохранения отдельных свойств и переменных не находи , это очень не удобно (сохранять координаты каждого из объектов а потом загружать их при загрузке игры) . Буду благодарен за ответ . Ps зацени первоапрельское обновление майна (обновление Бесконечность) оно связанно с генерацией )
@EmeraldPowder
@EmeraldPowder 4 года назад
Если нужно сохранить в пределах одного перезапуска игры (для какого-нибудь скилла отката во времени), то в теории можно скопировать все gameobject'ы на сцене, засунуть их в другой пустой объект, и выключить его, а при загрузке просто включить. Но всё равно и в плане производительности, и контроля над тем что происходит, всё таки лучше будет сохранить координаты и другое состояние. Ну а чтобы сохранить между перезапусками игры, то есть обычные сейвы, придётся так или иначе сохранять отдельными переменными. Но существуют всякие ассеты которые это делают сами, можно поискать
@Kot-Alenya
@Kot-Alenya 4 года назад
Emerald Powder благодарю за ответ, очень помогло )!
@user-jf2mx7lk6y
@user-jf2mx7lk6y 2 года назад
Так а как в итоге уменьшить затраты производительности на выделение памяти?
@user-yo9xq9ie1f
@user-yo9xq9ie1f 4 года назад
Привет! Спасибо за видео, очень классно рассказываешь! Интересует вопрос - как сделать генерацию бесконечной 3D дороги с поворотами и холмами. Как в Subway surf, может есть подобные уроки в интернете. Как это вообще делается, с чего начать обучение?
@EmeraldPowder
@EmeraldPowder 4 года назад
Привет, пожалуйста! Начать можно с прототипа где нужно бежать по собранной вручную в редакторе прямой дороге, потом добавить поворотов и холмов, и когда это всё заработает, прикрутить генерацию как у меня в видео про генерацию для бесконечного раннера (ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-xh1U0Bf6wKw.html), и прикрутить к ней поворотные чанки
@RybusObyknovenniy
@RybusObyknovenniy 3 года назад
@@EmeraldPowder почему-то не работает ссылка на видео..
@jusii458
@jusii458 3 года назад
Да, с трех мерной генерацией очень не хватает.
@Epifai
@Epifai 4 года назад
7:20 я для практики повторял написание самоиграющейся змейки с ии, и в итоге моя змейка решила, что она хочет телепортироваться. Вот хрен его знает, хочет и всё. Я перепутал Х и У, в итоге, когда она ела еду над ней, её У координата повторяла Х координату + 1. Выглядело странно.
@Obelardos2
@Obelardos2 4 года назад
Интересная тема. Что насчет проходимости таких уровней?
@EmeraldPowder
@EmeraldPowder 4 года назад
Проходимость очень сильно зависит от геймплея и механик. Если нужно можно фиксировать какие-то тайлы, можно в принципе и добавлять всякие условия, вроде чтобы дороги не спаунились близко к воде, или что-то такое. Но вот всякие сложные правила, вроде каждый замок должен иметь один вход, уже так просто сюда не введешь
@Obelardos2
@Obelardos2 4 года назад
@@EmeraldPowder Сейчас алгоритм выдает локации с явно выраженным рандомом, т.е. каждая ячейка генерируется как бы локально, нет структур. Например подземелье не будет выглядеть построенным человеком. Я думаю будет круто докрутить
@lonochka9634
@lonochka9634 2 года назад
Ввести условие: дорогу можно создавать только один раз, тайлы дороги создаются раньше всего остального. В том числе мосты, ворота замка. После окончания генерации дорог нужно дорисовать остальное.
@DrPeeper
@DrPeeper 4 года назад
Готовый Проект Не Скачивается!
@hatiko8227
@hatiko8227 4 года назад
Даёшь туториалы по ECS, или по игровым паттернам!!!!!
@bibyter6451
@bibyter6451 4 года назад
Ничесе заявка 😉
@hatiko8227
@hatiko8227 4 года назад
@@bibyter6451 Ну серьезно ни по игровым паттернам, ни по ЕСSке нет хороших уроков в русском сегменте.
@bibyter6451
@bibyter6451 4 года назад
@@hatiko8227 ты про uecs?
@hatiko8227
@hatiko8227 4 года назад
@@bibyter6451 Я про Entity Component System - это архитектурный паттерн, используется во многих современных играх таких как овервоч, танки, и другие. Этот паттерн повышает производительность, особенно с большим количеством объектов и делает код очень не связанным, что сильно повышает гибкость и лёгкость написания новых фич. Юнити сейчас очень активно развивают своё ECS решение и в будущем планируют вообще весь движок на ecs переводить(они сами что то подобное говорили), так что важно начать изучать его как можно раньше. Фух, устал писать, аж вспотел.
@bibyter6451
@bibyter6451 4 года назад
@@hatiko8227 uecs=>unity ecs
@user-ei5be1ii5f
@user-ei5be1ii5f 4 года назад
А если эту дрянь сделать условно двухуровневой, то получатся биомы) Сначала генерим карту биомов, потом на ней саму карту) Прикольно на самом деле, спасибо)
@EmeraldPowder
@EmeraldPowder 4 года назад
Да, можно прикрутить и такое, интересно что получится) Тут конечно уже не воксельные тайлы будут, кстати в какой-то из статей в ссылках вроде было что-то про тайлы океана/пляжа/леса
@user-ei5be1ii5f
@user-ei5be1ii5f 4 года назад
@@EmeraldPowder Почему не воксельные? Вроде же можно выделить несколько цветов для биомов, который будут с низу опрашиваться...Или просто тебя вокселей надоела?)
@azalothe3150
@azalothe3150 4 года назад
То есть, так можно собрать свой собственный Майнкрафт, только без разрушаемого мира! А вот с разрушаемым, как? Я не то, что начинающий, я ещё даже не начал. Думаю, стоит ли лезть сюда:) Вот у тебя, насколько я понял, изначально тайлы, подгонялись по цвету, теперь по (библиотеке подходящих). А если применить механику Майнкрафта? То если я правильно понял, (А я наверное, не правильно понял), нужно будет вычислять совпадения, по крайним блокам (Их обозначению), биомам и локациям? Подскажите дурачку:) Есть коварный план, сделать своё подобие Майнкрафта, только больше похожего не на Майнкрафт, а на TES, с херовой графикой и разрушаемостью. Хотел бы увидеть видео, про вариативность и репутацию с различными эм-м-м... Назовём это фракциями. Думаю, должно выйти интересно. Про разрушаемость, тоже интересно было бы.
@asvalias
@asvalias 3 года назад
На ютубе сейчас полно пододбных проектов по созданию майнкрафта, в некоторых я точно видел настройку разрушаемости мира.
@azalothe3150
@azalothe3150 3 года назад
@@asvalias Спасибо. Но я больше имел ввиду, способ генерации чанков. Чтобы из кучи блоков, один тайтл, а уже из них, большие биомы. Но больше, меня интересует репутация с различными фракциями и различные ивенты, под различную репутацию. Если знаешь видосы про подобное, буду благодарен.
@Vorono4ka
@Vorono4ka 4 года назад
После внутреенего цикла совершил ошибку - написал проверку максимального количеста итераций не внутреннего, а внешнего цикла Upd: 153 строка
@EmeraldPowder
@EmeraldPowder 4 года назад
Действительно, спасибо что заметил! В проекте на гитхабе исправил
@blockycars1482
@blockycars1482 4 года назад
Здраствуйте, а могли бы вы показать, как сделать игру на подобии робокрафта.
@virusomanvs
@virusomanvs 4 года назад
1337)
@Ya_Tut_Ne_Pri_Chem
@Ya_Tut_Ne_Pri_Chem Год назад
Сделайте мод Майнкрафта, который убирает сиды и добавляет такую генерацию чанков вокруг игрока по дальности прорисовки. Ещё нужно сделать блок, который сохраняет чанк. Ещё одна фича как по мне, это отключение лута в сундуках, или уменьшение шансов на хороший лут, дабы игроки их не обсасывали. Вообще нужно нормально так его продумать, особенно с блоком сохранения чанка
@goosesuka
@goosesuka 2 года назад
да так делали лет 25 назад в танчиках на денди и спустя 25 лет снг так делает это успех
@coolk1dk
@coolk1dk 2 года назад
Так и не дошли руки
@sushkahacker9762
@sushkahacker9762 Год назад
как исправить ошибку - NullReferenceException: Object reference not set to an instance of an object VoxelTile.GetVoxelColor (System.Int32 verticalLayer, System.Int32 horizontalOffset, Direction direction) (at Assets/Scripts/VoxelTile.cs:82) VoxelTile.CalculateSidesColors () (at Assets/Scripts/VoxelTile.cs:37) VoxelTilePlacerSimple.Start () (at Assets/Scripts/VoxelTilePlacerSimple.cs:21)? размер тайла 32 на 32
Далее
🎲 Как работает Random в играх
8:45
Just try to use a cool gadget 😍
00:33
Просмотров 50 млн
Best tutorial💞🤗🕺🏻 #tiktok
00:11
Просмотров 401 тыс.
Tipuan Jenius dalam Mengasuh Anak & Gadget Cerdas
00:21
🖽 Всё про Tilemaps в Unity 3D [часть 2]
15:47
Just try to use a cool gadget 😍
00:33
Просмотров 50 млн