Тёмный

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

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

Существует много идей и алгоритмов для процедурной генерации различных уровней и миров, в этом видео я начну разбирать алгоритмы связанные с созданием мира из воксельных тайлов. Особенность этого генератора будет в том что для создания уровня не нужно будет настраивать никаких правил, только нарисовать в воксельном стиле 3D модели тайлов, из которых будет автоматически генерироваться уровень. В этой третьей части мы добавим несколько возможностей генератору, сделанному в прошлом видео, которые пригодятся нам и в следующей части, в которой мы будем писать новый супер-классный генератор миров
Плейлист про генерацию из тайлов: • Генерация мира из тайлов
Следующее видео: • Генерация мира из 3D т...
Готовый проект из всех пяти видео: github.com/eme...
Patreon канала - / emeraldpowder (там уже есть проект из этого видео)
Наш Discord - / discord
На этом канале регулярно появляются новые видео, которые позволят тебе научиться создавать игры, или подарят новые идеи и вдохновение, если ты уже умеешь. Подписывайся!
Остались какие-то вопросы, пожелания, или идеи для других видео? Смело пиши в комментарии под видео

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

 

21 сен 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 47   
@asortimentmaintainer8987
@asortimentmaintainer8987 4 года назад
Трындец нам с тобой повезло)
@artura6305
@artura6305 4 года назад
как же вовремя ты канал создал, просто уйму времени экономишь, спасибо
@p5ina
@p5ina 4 года назад
Отличный туториал, спасибо
@SHILY-PROJECT
@SHILY-PROJECT 4 года назад
Ток зашел и видос сразу прявился)) Без просмотра скажу: ТОП! ЛУЧШИЙ! Ведь иначе ты не можешь снимать! (теперь глядеть можно:D)
@KoliaBoroda
@KoliaBoroda 2 года назад
Очень подробно, спасибо
@dozzza4053
@dozzza4053 4 года назад
Нет времени смотреть. Сразу лайк!)
@radiomojavestudios3319
@radiomojavestudios3319 4 года назад
Лайк не глядя!
@vladislavlukachik4364
@vladislavlukachik4364 4 года назад
Зачем проверка на TilePrefabs[i].Weirht 0 на 2?
@EmeraldPowder
@EmeraldPowder 4 года назад
В C# (да и почти во всех языках) с целыми числами получается `1 / 2 == 0` . Но можно заменить тип Weight на float и вообще не париться насчёт таких вещей
@Hitori_FtoL
@Hitori_FtoL 4 года назад
Круто ;)
@artura6305
@artura6305 4 года назад
только код объясняй получше, просто у многих начинаются проблемы именно с кодингом. Так же был бы рад увидеть отдельные видео про с# от тебя
@НікітаКлейменов
@НікітаКлейменов 4 года назад
Редко пишу комменты в ютубе , но ты бы не мог снять курс , о скриптинге в юнити ?Надеюсь прочтешь мой коммент ) P.S. Очень классная подача роликов )
@slava7522
@slava7522 4 года назад
Лайк а потом просмотр)
@shellypeng8855
@shellypeng8855 4 года назад
Hi, amazing as always, great tutorial! You explained things very coherently. I am wondering what happens if we set all rotation types to "Four Rotations". Does it also work properly?
@СергейСкворцов-о4р
Yes, but it will require additional unnecessary calculations
@filipp-pro
@filipp-pro 3 года назад
Генератор каркаcсона ^_^
@The_Mavrik
@The_Mavrik 4 года назад
Ты лучший!!!!! Как ты так быстро в своём коде разбираешься? Я в свой код через неделю лезу и уже всё забываю...(
@Tezla0
@Tezla0 4 года назад
Потому что он его пишет нормально
@The_Mavrik
@The_Mavrik 4 года назад
@@Tezla0 Я вот не понимаю, он одновременно пишет код и рассказывает что пишет? Ведь там очень запутанно. Или он потом озвучивает?
@EmeraldPowder
@EmeraldPowder 4 года назад
Я после озвучиваю, и ещё между съемкой и озвучиванием редактирую, вырезаю или замедляю нужные моменты) А вообще если код недельной давности выглядит очень плохим - значит ты за неделю очень прокачался, что сейчас знаешь как лучше было всё сделать
@ВикторБелоусов-т7к
Я бы переделал просто массивы цветов для каждой стороны тайла на двумерные. В таком случае поворот бы осуществлялся тупо сменой ссылок на массивы, а не этими плясками с бубном.
@EmeraldPowder
@EmeraldPowder 3 года назад
Всё равно проблема бы не ушла, там если левые и правые грани хранить в порядке сзади вперёд, то придётся плясать с бубном чтобы повернуть. А если хранить в порядке по часовой стрелке (левую сзади-вперёд, правую спереди-назад), тогда те же пляски придётся делать когда сравниваешь массивы двух соседних ячеек
@ВикторБелоусов-т7к
@@EmeraldPowder Хм... оно-то да, но во всяком случае поворачивалки и всяческие отражалки двумерных массивов уже точно кто-то да написал :)
@IIAjaXII1
@IIAjaXII1 2 года назад
Подскажите есть ли плагин или может встроенная функция в VS2019 чтобы показывал именя аргументов функции которую вызываешь)
@JusteG01
@JusteG01 4 года назад
Спасибо тебе за то, что ты делаешь. Этот код еще не выкладывался на гитхаб?)
@EmeraldPowder
@EmeraldPowder 4 года назад
Спасибо что смотрите) Код через неделю появится
@mulognikov
@mulognikov 4 года назад
А что на счет освещения? Можно ли как то использовать запеченный свет в сгенерированном мире?
@EmeraldPowder
@EmeraldPowder 4 года назад
Тот стандартный что Юнити умеет запекать - вряд ли, он всё таки для статичных объектов предназначен. А если где-то в отдельной программе запекать в текстуру тайла то конечно можно. Или иногда тени запекают в отдельную полупрозрачную картинку и на quad вешают, если земля ровная, такие запекания тоже можно
@ebakryak3486
@ebakryak3486 4 года назад
Привет я хотел спросить о том как можно изменить настройки hdrp post processing через код? Заранее спасибо, продолжай в том же духе, желаю удачи в развитие канала + лайк под всеми будущими видео
@hummylisii8237
@hummylisii8237 4 года назад
Есть вопрос.Как сделать так чтобы ты мог с любого оружия стрелять разными ефектами выбирая их зарание каким ефектом будешь стрелять и так с любого оружия.Очень нужно!!!Спасибо кто сможет дать ответ.Большое спасибо)
@Kitulous
@Kitulous 4 года назад
Делаешь поле с енумом, допустим public enum Effect { Fire, Water, Laser, Light // тут твои типы эффектов } Потом во время выстрела switch (this.ShootEffect) { // ShootEffect - твое поле case Effect.Fire: // Что делать когда эффект огня, можешь систему частиц запустить или что там надо break; case Effect.Water: // Тоже что-то делаешь break; // И так далее для остальных элементов енума }
@TheNeromax65
@TheNeromax65 4 года назад
Не понял, почему у тебя время на компе не идет?)
@ТерриМакГиннис
@ТерриМакГиннис 4 года назад
блин, вот смотрю уже третье видео и аж корежет. Всё же можно легко оптимизировать. Просто добавить каждому тайлку интовый массив из 4 элементов. И потом смотреть на каждую сторону. К примеру чисто зеленая трава =1. Трава с дорогой =2, камень =3 и так все стороны тайлов. А потом в генераторе прописать чтоб при подборе тайлов не выпускались лучи, а генератор искал для каждой стороны тайла, другой тайл у которого с одной стороны подходит этот эллемент интового массива. И так трава будет к траве генериться, а камень к камню и т.д. Но этл оптимизирует эти лучи и упростит генерацию
@The_Mavrik
@The_Mavrik 4 года назад
Он написал один метод для любых тайлов, хоть миллион разных добавь и всё будет автоматически подбираться. А какого тебе будет такое количество тайлов продуманно пронумеровывать?
@ТерриМакГиннис
@ТерриМакГиннис 4 года назад
@@The_Mavrik можно запустить алгоритм, который один раз выпустит лучи и пронумерует все тайлы прямо в движке и запишит данные либо в документ либо подставит прямо в переменные, чтоб потом при билде уже использовались только числовые определения. Хоия это только первый вариант. Ждем новую версию генератора)
@EmeraldPowder
@EmeraldPowder 4 года назад
Сохранить сами массивчики Colors, чтобы их вообще не вычислять потом в runtime - отличная идея. Это я как-нибудь сделаю, просто там на самом деле на отдельное видео дел. Ещё хочется этому какой-нибудь интерфейсик приделать, и чтобы при билде игры они на всякий случай автоматически рассчитывались, если забыл кнопку в инспекторе нажать А вот трава=1, дорога=2 - если самому настраивать потом всё это то запаришься, всякие "стена с травой и бетоном", которые ещё и несимметричные. Если есть два-три типа сторон и 1- тайлов, то конечно проще будет вручную разметить чем делать то что я делаю. Но мне тут хочется всё автоматизировать чтобы для любого тайлсета всё само работало с:
@eloreneloreneloreneloreneloren
@eloreneloreneloreneloreneloren 4 года назад
Батька
@Виталик-ю3д
@Виталик-ю3д 4 года назад
Кто может объяснить мне почему на моем terrain детали кучно не ставятся, а ставятся по 1 предмету, причём на другом terrain ставятся как надо. Что делать (не кричите на меня в комментариях)
@Виталик-ю3д
@Виталик-ю3д 4 года назад
Это из-за размера terrain, но я не знаю как это исправить
@BlackWhite-gp8oz
@BlackWhite-gp8oz 4 года назад
Как и где найти код? По ссылке его нету
@EmeraldPowder
@EmeraldPowder 4 года назад
По ссылке на готовый проект в папке Assets лежат скрипты, а весь проект можно скачать нажав зелёную кнопку в углу и Download ZIP, и потом открыть в Unity
@BlackWhite-gp8oz
@BlackWhite-gp8oz 4 года назад
@@EmeraldPowder спасибо большое, а можно узнать характеристики ваше компьютера? Просто сам хочу создать игру, но в 3д unity камера лагает
@BlackWhite-gp8oz
@BlackWhite-gp8oz 4 года назад
@@EmeraldPowder и чтобы заработал генератор, нужно "выложить" все тайлы, и после нажимать на кнопку? Или как запустить генератор?
@kotovplay8892
@kotovplay8892 4 года назад
Скинь плиз исходники проекта
@EmeraldPowder
@EmeraldPowder 4 года назад
Выложил, ссылка в описании к видео
@АлеАле-ч2й
@АлеАле-ч2й 4 года назад
Первонах
@hlibprishchepov322
@hlibprishchepov322 4 года назад
"Веса тайлов" я просто создаю несколько одинаковых плиточек и никаких формул
Далее
HA-HA-HA 👊  #countryball
00:15
Просмотров 1,9 млн
The Most Impressive Scratch Projects
11:00
Просмотров 4,9 млн
Dear Game Developers, Stop Messing This Up!
22:19
Просмотров 713 тыс.
I Created My Own Custom 3D Graphics Engine
26:29
Просмотров 73 тыс.
HA-HA-HA 👊  #countryball
00:15
Просмотров 1,9 млн