Привет всем камент за поддержку 😊 😁👍👌👍👍👍👍 ❤ за труды 👍👍👍👍👍🔥🔥🔥🔥🔥👌👌👌👌👌 за развитие 👌👍👍👍👍👍🔥🔥🔥🔥🔥😊 ты класс процедурное генератор в игре гре как не снимешь видео а 😊🤔
красавец, умница, гений мало того, что взял интересную и сложную тему, так ещё понятно всё объяснил и сделал видос, смотреть который одно удовольствие 🫀
В целом неплохо. Вот мои мыслишечки: В UE5.3 есть процедурная генерация PCG. Один из методов реализованных в UE 5.3 - это генерация по текстовому правилу вдоль сплайна безье кривой. Привила записываются в формате напоминающем регулярные выражения ну например [1,2,3](1-3)[1:10,2:1,3:1](*)[5](1)[6](1)[5](1) элементы 1,2,3 будут повторены (1-3) раза с равной вероятностью, далее элементы 1,2,3 будут повторены (*) бесконечное число раз с вероятностью по весам 1=10, 2=1,3=1 и элементы 5, 6, 5 будут по одному разу в указанном порядке в конце пути Даже если кривая будет замкнута - у неё всё равно будет ведь начало и конец - так вот правило в соответствии с этим и сработает Но остается вопрос - как придумать язык правил, чтобы элементы воздействовали не только на выбор по пути (соседей справа и слева) а чтобы в этом текстовом паттерне можно было описать правило для более общих закономерностей или исключений. Тут у меня даже идеи как устроить сам формат записи - нет. Можно сделать что-то типа структур с ограничивающими условиями для соседей по краям, сверху и снизу или по признакам распространения на площадь в качестве контрольного, чисто для себя, чтобы продумать как можно сделать саму запись правил, я придумал такую тестовую задачу: рассматриваем генерацию стены с полом, потолком и пола вдоль стены. на стене могут быть развешаны картины или к стене может быть придвинут шкаф - картины за шкафом вешать по логике примера - нельзя. Также с потолка могут свисать лампы на проводах, они загораживают картины, но должны быть между картинами и там где свисают лампы - на полу могут быть низкие предметы (тумбочки, столики, вазы). картины не должны идти одна за другой без разрыва, расстояние между лампами должно быть от 5 до 15 юнитов. Ну это просто пример описывающий что в данном случае должна быть связь в правилах "на стене" "на полу у стены" и "на потолке у стены".
в твоем примере как будто нельзя отделаться лишь одной регуляркой для генерации вдоль кривой, тут явно сложнее. Можно сделать ряд заготовленных тайлов: пустая стена, стена с картиной, стена с тумбой и т.д., и уже их расставлять на кривой. А при спавне ламп - отдельно запускать генерацию для случайного расстояния между ними
@@данилка2004 Твой ответ похож на ответ большой языковой модели ;-) Я для того и сделал пример, чтобы показать, что в том виде записи правил, как это уже реализовано и в том виде, который понятен и может быть использован как основа для дальнейших измышлений - так вот в таком виде эти правила не позволяют делать такие связанные условия. И интерес тут не в том, как сделать алгоритм для частного случая, а как создать систему задания правил, которая могла бы расширяться и включать в себя более сложные условия и зависимости.
Пожалуйста, не стоит. Автор сам отметил, что на UA-cam полно видео о Wave Function Collapse, и все это можно легко найти и понять. Что касается стен, это связано с геометрией: мы используем два вектора, чтобы найти третий, ортогональный, с помощью векторного произведения. Добавление большего количества кода может только навредить, ведь твое желание сводится к обсуждению реализации, а это, как правило, не так интересно. Такой контент может вдохновить на создание своей версии и помочь улучшить навыки. Превращать ознакомительный и развлекательный материал в учебный - звучит довольно скучно.
как я понял, процед генерация не способна сделать уровень интересным. Сначала нужно сделать крутую игру. А потом можно что то немного погенерировать. Чуточку. Опасность в том что результат мб настолько непредсказуемый, что игрок просто уткнется в тупик, как пример. Вообще, каждый уровень дб осмысленный. Учитывается даже положение Солнца. Но для простеньких по графону рогаликов это канает. В Диабло 1 мне тоже оч нравится генерация подземелий. В Торчлайте 1 и 2 тоже хорошо.
Ну такое, я думал по ходу видео пойму, что ты хотел повторить из tiny glade, но в итоге ничего не понятно. Сначала генерацию с ограничениями делал, потом просто алгоритм построения стены реализовал.
Получал дочерние объекты и сдвигал их в соответствии с тремя векторами: grid size, cell size, spacing size. 1 - отвечает за то, сколько ячеек будет на каждой из осей 2 - размер ячейки на каждой оси 3 - промежуток между ячейками по каждой оси Сдвигал просто пробегаясь циклом по каждой ячейке У юнити есть атрибут [ExecuteInEditMode], который позволяет выполнять скрипт вне рантайма игры, есть ли подобие в анриале - не знаю
1:58 Потому что программирование - развитие математики. Кажется вполне естественным описывать алгоритмы и идеи решения задач на этом самом математическом языке.
Геймдев одно из самых сложных направлений, где математика основа для работы с графикой, физикой, AI и оптимизацией. Однако в условной веб-разработке, особенно в front-end`e или CRUD-приложениях, математика часто сводится к базовым операциям. Утверждать, что программирование - это развитие математики, слишком узко, так как программирование включает множество дисциплин, где математика может быть как ключевой, так и второстепенной. Это скорее инструмент, а не суть.
Чувак ты гений! Ты полюбому тогда должен знать кто такой Onigiri)
Да, смотрю его
А кто это?
😱
Привет всем камент за поддержку 😊 😁👍👌👍👍👍👍 ❤ за труды 👍👍👍👍👍🔥🔥🔥🔥🔥👌👌👌👌👌 за развитие 👌👍👍👍👍👍🔥🔥🔥🔥🔥😊 ты класс процедурное генератор в игре гре как не снимешь видео а 😊🤔
Конечный результат с произвольными стенами выглядит как интересная фишка для какой-нить стратежки
я даже знаю для какой *на заднем плане началось щибитание долгоносиков*
7:05 Objective-c - это как c++, но только хуже)
А про него как-то вообще ничего не слышал, учту 🌛
Пайтон это хуже
Шикарный видос, спасибо!
Очень круто, продолжай!
Добавь пожалуйста ссылки на материалы, которые ты упоминал, я думаю многим будет интересно, заранее спасибо!
красавец, умница, гений
мало того, что взял интересную и сложную тему, так ещё понятно всё объяснил и сделал видос, смотреть который одно удовольствие 🫀
блин, мне это нафиг не нужно) но это было безумно интересно!) даже какая-то навязчивая идея повторить зародилась на задворках разума) СпасибО!
В целом неплохо.
Вот мои мыслишечки: В UE5.3 есть процедурная генерация PCG. Один из методов реализованных в UE 5.3 - это генерация по текстовому правилу вдоль сплайна безье кривой.
Привила записываются в формате напоминающем регулярные выражения
ну например [1,2,3](1-3)[1:10,2:1,3:1](*)[5](1)[6](1)[5](1)
элементы 1,2,3 будут повторены (1-3) раза с равной вероятностью, далее
элементы 1,2,3 будут повторены (*) бесконечное число раз с вероятностью по весам 1=10, 2=1,3=1
и элементы 5, 6, 5 будут по одному разу в указанном порядке в конце пути
Даже если кривая будет замкнута - у неё всё равно будет ведь начало и конец - так вот правило в соответствии с этим и сработает
Но остается вопрос - как придумать язык правил, чтобы элементы воздействовали не только на выбор по пути (соседей справа и слева) а чтобы в этом текстовом паттерне можно было описать правило для более общих закономерностей или исключений. Тут у меня даже идеи как устроить сам формат записи - нет.
Можно сделать что-то типа структур с ограничивающими условиями для соседей по краям, сверху и снизу или по признакам распространения на площадь
в качестве контрольного, чисто для себя, чтобы продумать как можно сделать саму запись правил, я придумал такую тестовую задачу:
рассматриваем генерацию стены с полом, потолком и пола вдоль стены.
на стене могут быть развешаны картины или к стене может быть придвинут шкаф - картины за шкафом вешать по логике примера - нельзя. Также с потолка могут свисать лампы на проводах, они загораживают картины, но должны быть между картинами и там где свисают лампы - на полу могут быть низкие предметы (тумбочки, столики, вазы). картины не должны идти одна за другой без разрыва, расстояние между лампами должно быть от 5 до 15 юнитов. Ну это просто пример описывающий что в данном случае должна быть связь в правилах "на стене" "на полу у стены" и "на потолке у стены".
в твоем примере как будто нельзя отделаться лишь одной регуляркой для генерации вдоль кривой, тут явно сложнее. Можно сделать ряд заготовленных тайлов: пустая стена, стена с картиной, стена с тумбой и т.д., и уже их расставлять на кривой. А при спавне ламп - отдельно запускать генерацию для случайного расстояния между ними
@@данилка2004 Твой ответ похож на ответ большой языковой модели ;-) Я для того и сделал пример, чтобы показать, что в том виде записи правил, как это уже реализовано и в том виде, который понятен и может быть использован как основа для дальнейших измышлений - так вот в таком виде эти правила не позволяют делать такие связанные условия. И интерес тут не в том, как сделать алгоритм для частного случая, а как создать систему задания правил, которая могла бы расширяться и включать в себя более сложные условия и зависимости.
интересная тема, требуется больше подобного, ахахах. вообще разрывает мозг то, что ты работаешь так с 3д моделями. вершины выделяешь и т.п. это шок
Выше всяких похвал. Лайк.
Кратко и понятно. Благодарю
Годнота! Автор, пили еще)
замок построен!
Ниуя непонятно, но очень интересно.
Хотелось бы более подробно с объяснениями как и что, с примерами кода.
Пожалуйста, не стоит. Автор сам отметил, что на UA-cam полно видео о Wave Function Collapse, и все это можно легко найти и понять. Что касается стен, это связано с геометрией: мы используем два вектора, чтобы найти третий, ортогональный, с помощью векторного произведения.
Добавление большего количества кода может только навредить, ведь твое желание сводится к обсуждению реализации, а это, как правило, не так интересно.
Такой контент может вдохновить на создание своей версии и помочь улучшить навыки. Превращать ознакомительный и развлекательный материал в учебный - звучит довольно скучно.
мегахорош.( еще три слова)
Круто, просто реально круто
Крутой 👍
вау!
Спасибо тебе огромное
Мне кажется ты можешь сделать очень крутую игру
как я понял, процед генерация не способна сделать уровень интересным.
Сначала нужно сделать крутую игру. А потом можно что то немного погенерировать. Чуточку.
Опасность в том что результат мб настолько непредсказуемый, что игрок просто уткнется в тупик, как пример.
Вообще, каждый уровень дб осмысленный. Учитывается даже положение Солнца.
Но для простеньких по графону рогаликов это канает. В Диабло 1 мне тоже оч нравится генерация подземелий.
В Торчлайте 1 и 2 тоже хорошо.
А зАмки то где? Генерация стены какая-то
А ты шаришь в этой теме)
Ну такое, я думал по ходу видео пойму, что ты хотел повторить из tiny glade, но в итоге ничего не понятно. Сначала генерацию с ограничениями делал, потом просто алгоритм построения стены реализовал.
Контентно!!!!
Привет, а ты не сохранял ссылки на источники? Хотел бы узнать их
Не помню как ютуб к ссылкам в комментариях относится. Создал тгк @Empathy_danilka - там один единственный пост с этими ссылками
а можно пж поподробнее как ты сделал класс Grid. Просто тоже думаю как мне сделать грид в UE5, там тоже только чисто для 2D встроенный функционал есть
Получал дочерние объекты и сдвигал их в соответствии с тремя векторами: grid size, cell size, spacing size.
1 - отвечает за то, сколько ячеек будет на каждой из осей
2 - размер ячейки на каждой оси
3 - промежуток между ячейками по каждой оси
Сдвигал просто пробегаясь циклом по каждой ячейке
У юнити есть атрибут [ExecuteInEditMode], который позволяет выполнять скрипт вне рантайма игры, есть ли подобие в анриале - не знаю
@@данилка2004 спасибо большое!
Ого
Напомнило карту в кс го, которая генерирует сама себя, о которой снимал депозит, хоть конечно про реализацию он ничего не рассказал
1:58 Потому что программирование - развитие математики. Кажется вполне естественным описывать алгоритмы и идеи решения задач на этом самом математическом языке.
Геймдев одно из самых сложных направлений, где математика основа для работы с графикой, физикой, AI и оптимизацией. Однако в условной веб-разработке, особенно в front-end`e или CRUD-приложениях, математика часто сводится к базовым операциям. Утверждать, что программирование - это развитие математики, слишком узко, так как программирование включает множество дисциплин, где математика может быть как ключевой, так и второстепенной. Это скорее инструмент, а не суть.
Ауеть
чиназус
Мне кажется ты можешь сделать очень крутую игру