top of page

Свет в воксельном мире: настоящие источники или заливка?

Фото автора: Marcel Dütscher
Marcel Dütscher
27 июн.
1 мин. чтения

Игрок ставит лампу в своей базе. Что происходит технически? Этот невинный вопрос привёл нас к принципиальному решению — а ответ хорошо показывает, что «более современное» решение не всегда лучшее.


Вариант А: настоящие источники света Unity. Каждый светящийся блок становится точечным источником, движок всё считает сам. Выглядит здорово — но не масштабируется. В воксельном мире в поле зрения могут быть сотни светящихся блоков; точечные источники в реальном времени в таком количестве заставят попотеть любую видеокарту, а в браузерной сборке тем более.


Вариант Б: свет по заливке (flood fill). Классика жанра: свет — это число для каждого блока, которое расходится от источника и уменьшается с каждым шагом. Безумно дёшево, источников может быть сколько угодно — но результат выглядит плоским, потому что у света нет направления. Стена рядом с лампой светится так же ярко, как поверхность под ней.


Наш выбор: заливка с направлением. Мы остались на заливке, но научили её информации о направлении: свет знает, с какой стороны он приходит, и поверхности освещаются по-разному. Результат запекается в сетку чанка при её построении — во время игры это почти ничего не стоит, но выглядит заметно объёмнее классического блочного света.


Урок отсюда мы теперь применяем везде: сначала спроси, в чём на самом деле проблема жанра (здесь: очень много источников, статичная геометрия), и только потом выбирай технологию. Настоящие источники света решали проблему, которой у нас не было, — и создали бы такую, которую нам не решить.

Недавние посты

Смотреть все

Комментарии


Комментарии к этому посту больше не доступны. Обратитесь к владельцу сайта за дополнительной информацией.
bottom of page