Какой контент вы создали/видели, созданный с использованием процедурных приемов?
-
19-09-2019 - |
Вопрос
Я рассматривал какое-то исследование, которое мне предстоит провести в будущем, связанное с методами процедурной генерации, и мне было интересно, какой тип контента у вас есть:
Развитый
Помогли разработать
Видно реализовано
Пытался разработать
и какие методы/техники/процедуры вы использовали для его разработки.
Если вы чувствуете себя щедрым, возможно, вы даже сможете вникнуть в его особенности, например, в структуры данных и алгоритмы, которые вы использовали для его разработки.
Если это нужно разместить как вики-сообщество, потому что это не я прошу решить проблему, просто дайте мне знать.Это не тема для домашнего задания, потому что это исследовательский модуль, который я пока не сдаю ;)
Решение
Программное обеспечение Introversion, создатели игр Defcon, Uplink и Darwinia (среди прочих) около года назад начали работу над игрой, в которой широко используется PCG для генерации городов. вот видео их работы, и вы можете прочитать больше об этом на дневник разработки игры (начните с первой части внизу страницы!).
Это сразу меня чрезвычайно заинтересовало, и, увидев потенциал игр, я сразу же начал исследовать эту технологию.Я собрал папку из 18 PDF-файлов по этой теме (научные статьи, презентации SIGGRAPH и т. д.). Вот, я загрузил это для вас.
Основной подход заключается в использовании L-систем, однако я так и не удосужился понять это настолько, чтобы что-то из этого извлечь.Я пробовал другие, менее успешные подходы, например, использование Вороной, рекурсивно разбивая прямоугольную область на более мелкие области и немного смещая границы, чтобы получить немного случайности и разделения полигонов.
Последний метод, который я получил из сообщений Майка в блоге Code (здесь и здесь).Скриншоты, показанные в его блоге, вызывают у меня слюни, это моя самая большая мечта программиста — когда-либо получить что-то подобное.Я написал ему по электронной почте, чтобы спросить, как он это сделал, и вот соответствующая часть его ответа. Я уверен, что он не будет возражать, если я опубликую это здесь:
L-Systems, безусловно, один из вариантов, но я этим не занимаюсь.Основа моего метода — разделение полигонов.Я начинаю с простого многоугольника, который представляет всю территорию города.Затем я разделил его (примерно) пополам, а затем разделил эти два многоугольника и т. д.пока я не доберусь до размеров городского квартала.На этом этапе края всех моих полигонов представляют собой дороги.Затем я использую тот же метод подразделения, чтобы разбить блоки на участки размером со здание.
Дьявол, конечно, кроется в деталях, но это основной метод.
Мне, например, до сих пор не удалось полностью реализовать решение, которым я доволен, но оно остается одной из, если не самой большой мечтой моего программиста, когда-либо достичь чего-то подобного.
Другие советы
Вот несколько лидеров в области процедурно генерируемого ландшафта (и в меньшей степени листвы).Если вы не получили здесь подробного ответа относительно методов и техник, возможно, вы захотите поискать/спросить на их форумах.Я видел там некоторые обсуждения методов.
Никто не упомянул о демосцене, где используются ТОЛЬКО процедурные вещи?
Итак, для начала найдите Werkkzeug, Kkrieger, MilkyTracker.Также вы можете зайти на сайт pouet и увидеть чудо прекрасно сделанных процедурных видеороликов (да, процедурных видеороликов!С музыкой и графикой всё процедурно!)
Аллегоритмические продукты используются в фактических названиях отгрузок.Эти ребята сосредоточены на генерации текстур (как в автономном режиме, так и во время выполнения).
У них есть очень красивые скриншоты и демо.