Предлагаю в этой теме обсудить техническую возможность создания прожектора строителя.
Проблема: В процессе строительства крупных объектов часто возникает проблема равномерного освещения строительной площадки и постоянной переукладки светильников по мере работы. Также имеющиеся светильники не всегда сочетаются со сложной архитектурой сооружения.
Предложение: Можно добавить в игру блок-прожектор работающий по такому принципу: Блок-прожектор по аналогии с детектором устанавливается в любом направлении. Если в радиусе 10 кубов уже имеется хотябы один установленный блок-прожектор, установка не происходит.
При установке блока происходит следующее: Программа на стороне сервера просчитывает координаты 32 прямых линий длиной 64 блока проходящих через блок-прожектор и расходящихся равномерным пучком в виде телесного угла 60х60 градусов.
Расчет координат производится по уравнению прямой:
Рассчитанные координаты заносятся в стек. Затем программа идет по координатам вдоль каждой линии проверяя какой блок находится в каждой точке (Xi,Yi,Zi). Если в этой точке находится блок воздуха программа переходит к следующей точке и так до первого непрозрачного блока. Как только найден непрозрачный блок в предыдущей рассчитанной точке устанавливается технический блок-источник света и прога переходит к обработке следующей линии. Если непрозрачный блок не найден на прямой (длина прямой 64 блока), прога также переходит к следующей линии. На одной линии может быть установлен только 1 блок-источник.
Свойства блока-источника света:
- обладает всеми свойствами блока воздуха (невидимость, проходимость и т.п.)
- создает освещение 15 единиц
- исчезает при установке на его месте любого блока.
В итоге программа запрашивает свойства не более 32*64 = 2048 блоков для установки не более 32 источников света. Для уменьшения нагрузки на сервер при установке/эксплуатации блока предусмотрено ограничение плотности установки блоков (1 блок на 10 кубов), баф "опасный блок" 10 сек., высокая прочность блока как у сверхпроводника.
Таким прожектором можно будет освещать территорию города, окружающий ландшафт, создавать архитектурную подсветку высотных строений и т.п. В данной реализации возможна установка направления прожектора на 0, 90, 180 и 270 градусов, можно обсудить варианты установки под произвольными углами - тогда в блок-прожектор придется добавлять какой-нибудь интерфейс для смещения пучка линий на углы меньше 45 градусов.
Крафт и текстуру блока-прожектора не превожу т.к. в данной теме обсуджается только техническая возможность реализации подобного алгоритма.
Думаю, основная техническая проблема состоит не в том, как поставить блок-прожектор, а в том, как его корректно убрать дабы потом не оставалось фантомных источников света.
--- Добавлено в 2012-11-21 12:07:20
Сейчас прикинул, при 32 линиях и телесном угле 60х60 плотность источников света быстро падает с расстоянием. Более сбалансированным вариантом будет 32 линии длиной по 48 блоков каждая и 45х45 телесный угол.
Ответов: 884
|
|||
карма: 136 |
| ||
Голосовали: | wthout_brain, Steone, Flane |