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

На этой схеме SO и S1 - субсектора. Они имеют номера соответственно 0x8000 и 0x8001. Так как у нас в данном случае только один узел, то в функцию ProcessTree передается 0 (numnodes-1 == 1-1 = 0). В функцию GetNextBranchofTree передаются три параметра PozX ofPlayer и PozY ofPlayer - координаты игрока по X и Y соответственно и п - указатель на текущий узел. Эта функция проверяет, с какой стороны от линии раздела находится игрок и возвращает:

0    - если с левой стороны;

1    - если с правой стороны.

В нашем случае эта функция возвращает 0, т.к. игрок находится с левой стороны от линю! раздела. На левой стороне находится субсектор S1 с номером 0x8001. Таким образом вызывается далее функция ProcessTгее с номером 0x8001. Т.к. 15 бит установлен, то вызывается функция Draw Subsector, которая осуществляет прорисовку сегментов стен этого субсектора в видимой области. После этого происходит возврат обратно в первоначальную функцию ProcessTree и управление передается функции CheckVisual ОррАгеа. Это достаточно сложная функция. Она проверяет путем аксонометрических преобразований, не захватывает ли обзор игрока пространство, относящееся к противоположной ветви (в нашем случае - это субсектор S0). И если не захватывает, то возвращает 0. В нашем случае эта функция возвращает 1, т.к. игрок видит часть субсектора S0. В этом случае прорисовывается субсектор с номером 0x8000.

Таким образом, вы видите - какова цепочка узлов (сколько звеньев в этой цепочке), такова вложенность функции ProcessTree.

Подробнее о функциях GetNextBranch ofTгее и CheckVisual ОррАгеа мы расскажем позже.

7.8. Ресурс SECTORS. (Восьмой объект)

SECTOR - это горизонтальная область на карте, где определяются высоты пола и потолка, освещенность, а также текстуры для полов/потолков. Сектора могут быть различных форм, причудливых очертаний. Они могут быть большими и маленькими. В одном помещении может быть определено несколько секторов. В помещении - любое изменение высот пола и потолка или яркости - это новый сектор (и следовательно, отдельный LINEDEFS и SIDEDEFS).

Каждый “сектор” состоит нз 26 байт, включая два значения типа short, две строки по 8 символов типа char и затем 3 значения типа short:

(1)    высота пола для этого сектора;

(2)    высота потолка для этого сектора;

Разница в 24 между высотами полов двух соседних секторов является проходимой для игроков и монстров (при условии, что они поднимаются


Новости
Сценарист Uncharted рассказала о проблемах одиночных игр
Над игрой работала Эми Хенниг, сценарист серий Uncharted и Legacy of Kain.
Готовится выход дополнения «Апокалипсис» для Battlefield 1
Компания Electronic Arts, которая занимается изданием компьютерных игр, и студия-разработчик DICE готовят выход дополнения «Апокалипсис» для игрового проекта Battlefield 1. В дополненной версии появится пять новых карт.