Хонич А.
Как самому создать трехмерную игру
стр. 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 между высотами полов двух соседних секторов является проходимой для игроков и монстров (при условии, что они поднимаются


Новости
Sony PlayStation 5 стала последней игровой консолью в мире
Игровые консоли присутствуют в мире уже более 30 лет, за которые в них успели поиграть целые поколения игроков, то есть отцы, дети и их внуки.
Авторы новой Call of Duty объявили даты проведения бета-теста
Студия Treyarch официально озвучила даты проведения бета-тестов мультиплеерного режима ожидаемого военного шутера Call of Duty: Black Ops 4. Разработчики уже раскрыли немало особенностей соревновательной части игры, но многое остаётся за завесой тайны.