Полезное

Мы Вконтакте

Discord канал

#
Аватара пользователя
Пользователь
Сообщения: 7
Как создать процедурно-генерируемый мир для 3D, и 2D?
Аватара пользователя
Пользователь
Сообщения: 1297
Смотря что генерировать. Тунели/Коридоры, города, ландшафт? Это все довольно разные алгоритмы. На сайте есть видео урок по генерации дорог, советую поглядеть.
_________________
Мои работы.
Youtube Channel
Форум по геймдеву.
Аватара пользователя
Пользователь
Сообщения: 7
Как насчет космоса? А вообще я хочу понять как писать алгоритм генерации для всего (мира, пещер, города, ландшафта, ресурсов...) на C++. Буду благодарен за любую информацию.
Пользователь
Сообщения: 403
Проблема не в алгоритме, проблема в том, что все это будут динамические объекты, с динамическими тенями и освещением.
То есть такой уровень будет с резкими тенями, не будет на нем GI - глобального отсвещения (отраженного света) статического. А все динамическое жрет ресурсы "мама не горюй".
При больших объемах в итоге ты получишь пошаговую стратегию а не шутер с FPS в 5-10 кадров в секунду...
Сначала реши эту проблему - размести на уровне туеву хучу моделей с динамическим освещением, добейся адекватного освещения и FPS не ниже 60-ти. Размести столько, сколько хочешь чтобы было в поле зрения игрока. Тогда будешь думать о генерации.
В противном случае я тебе предрекаю разочарование самое великое и горестное после того как ты придумаешь и реализуешь таки систему генерации нарвешься на проблемы с оптимизацией ))
Пользователь
Сообщения: 403
Сама же генерация банальна. Делаешь блоки, в заранее определенных габаритах, чтобы понимать как ставить на поверхность, и разрабатываешь сначала алгоритм генерации ландшафта из карты высот, которая в свою очередь генерируется из алгоритма получения карты шума Perlin вроде.
После того как сгенерируешь поверхность приступаешь к расположению блоков конструкций на нем трейсером и алгоритмом расчета положения и возможности постановки.

Сам расчет и генерация может вызвать падение FPS так как задействуется много ресурсов ЦПУ в основном...
Алгоритмы генерации можно найти в сети, если нужно, потом адаптировать под Анриал. Хотя Анриал, как по мне не предназначен для такого применения...
Аватара пользователя
Пользователь
Сообщения: 2
Mr.Physicist писал(а):
Как насчет космоса? А вообще я хочу понять как писать алгоритм генерации для всего (мира, пещер, города, ландшафта, ресурсов...) на C++. Буду благодарен за любую информацию.


Hello Games своим "No Man's Sky" уже эпически зафейлили саму идею процедурной генерации. Посему я бы не стал озвучивать слово "процедурный" еще лет 5 как минимум...
Аватара пользователя
Пользователь
Сообщения: 1
КреБотолий писал(а):
Проблема не в алгоритме, проблема в том, что все это будут динамические объекты, с динамическими тенями и освещением.
То есть такой уровень будет с резкими тенями, не будет на нем GI - глобального отсвещения (отраженного света) статического. А все динамическое жрет ресурсы "мама не горюй".
При больших объемах в итоге ты получишь пошаговую стратегию а не шутер с FPS в 5-10 кадров в секунду...
Сначала реши эту проблему - размести на уровне туеву хучу моделей с динамическим освещением, добейся адекватного освещения и FPS не ниже 60-ти. Размести столько, сколько хочешь чтобы было в поле зрения игрока. Тогда будешь думать о генерации.
В противном случае я тебе предрекаю разочарование самое великое и горестное после того как ты придумаешь и реализуешь таки систему генерации нарвешься на проблемы с оптимизацией ))


Это справедливо только для слабых машин.
Для любого современного нормального железа это не проблема.

Вот тут процедурный ландшаф и на GeForce GTX 960 примерно 60-80 фпс.





При этом проект не доделан до конца и оптимизации никакой нет вообще.
Если все сделать нормально с LODами и оптимизацией то можно с процедурального ладншафта и 100 fps снять.
Последний раз редактировалось epic_slowpoke 24 ноя 2016, 11:38, всего редактировалось 2 раз(а).
Аватара пользователя
Пользователь
Сообщения: 261
оптимизация в таком проекте очень серьезная,скорей все написан свой вариант рендера( точнее выборки того что будет обрабатываться в видеокартой), написан свой вариант модели коллизий.
Не зная тонкостей оптимизации хорошей производительности не получишь.

Но не все так печально, в UE достаточно инструментов что без углубления в такие вещи как рендер, получить неплохие результаты.

1 из каторых использование инстансов для дублирующихся объектов.
2 - Мержинг объектов( не уверен, что это можно делать в реалтайме)
Аватара пользователя
Пользователь
Сообщения: 2
Да, динамическое освещение действительно может оказаться довольно тяжелым, особенно это критично если у вас типичная "индюшатина" и игра, по идее, должна хорошо идти на далеко не топовых машинах.

Решение этого вопроса может зависеть от геймплея. В моем случае геймплей несколько айзекоподобен, то есть уровни состоят из небольших румов (room), которые можно динамически подгружать/выгружать. Только вот сами румы тоже динамически генерируются, поэтому вместо стандартного стриминга Unreal приходится спаунить и удалять все объекты из своих структур данных.
Никто не подскажет, можно ли создавать .uasset уровни "налету" из генерируемых данных? Мне не удалось найти способ.


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница