Хонич А.
Как самому создать трехмерную игру
стр. 124

являются узлы рекурсивного дерева.

В этом пункте я попытаюсь популярно объяснить, что из себя представляет ресурс NODES и как с его помощью строится трехмерный лабиринт. Я не буду' приводить принцип формирования узлов по следующим причинам: во-первых - это очень сложный алгоритм, и тяжело прокомментированный код был бы трудно читаемым. Во-вторых - имеется очень много программ, которые это делают: программа “bsp.exe” формирует ресурсы NODES,SEGS и SSECTORS из набора LINEDEFS, SIDEDEFS и VERTEXES. (Параметром программы “bsp.exe” является wad файл со сформированной картой уровня. Карту уровня можно сформировать в любом редакторе уровня для DOOM’a, например, в DOOMCAD или в DCK. Выходом программы “bsp.exe” является новый файл “temp.wad” с вычисленными структурами NODES, SEGS и SSECTORS). Отличный редактор уровней для DOOM’a “vvaded.exe” умеет сам формировать ресурсы узлов.

Узлы представляют собой отделения в двоичном делении пространства (bi-naiy space partition, или BSP), которые делят уровень; они необходимы для определения, какие стены находятся на переднем плане, а какие являются невидимыми. Этот процесс известен как удаление скрытых поверхностей. Субсектора и сегменты - необходимые части структуры узлов. BSP дерево обычно используется в трехмерном пространстве, но в DOOM’e используется упрощенная, 2-мерная версия схемы.

Основной принцип состоит в том, чтобы делить карту уровня иа малые части до тех пор, пока каждая из этих малых частей не будет содержать только сегменты стены, которые не могут служить преградой (блокировать вид других стен) в этом месте. Эти малые неделимые части называются субсекторами. Каждый сегмент стены, относящийся к конкретному субсектору, представляет собой LINEDEF или ее часть. Этот сегмент относится к ресурсу SEGS. Это деление используется в алгоритме двоичного дерева в DOOM’e для быстрой прорисовки трехмерного лабиринта (рисование видимых поверхностей)

Деление на су бсектора производится в пределах сектора Одни субсектор не может принадлежать к двум и более секторам. Части уровня, которые находятся за пределами секторов, игнорируются.

Сегментами могут быть только LINEDEF или ее часть. Стороны созданного субсекгора, которые не являн’тся частью linedef, сегментами не будут (мнимые или воображаемые линии в пределах сектора).

Некоторые сектора ие требуют никакого деления. Для примера рассмотрим квадратный сектор, все стены которого строго ортогональны к полу. Таким образом, в любой точке зрения данного квадрата ни одна из четырех стен ие может блокировать вид любой другой стены. Таким образом, этот квадратный сектор целиком является субсектором.


Новости
Авторы проекта «1917» выпустили онлайн-игру об истории СССР
Разработчики рассказали о том, что пользователи их игры смогут принять участие в главных исторических событиях советского периода.
В God of War не будет сезонного пропуска
Креативный директор студии SIE Santa Monica Studio Кори Барлог заявил, что в новой части God of War не будет сезонного пропуска.