Рассмотрим структуру типичного уровня (пример уровня приведен на рис. 13,12).
Несмотря на кажущуюся трехмерность, игра эта скорее двумерная, представляя собой набор плоских слоев (такие сцены иногда называют 2,5-мерными). Заметнее
13. Элементы виртуальной реальности
всего это при создании нового уровня - сначала на плоскости Оху строится карта уровня, состоящая из вершин (Vertex) и соединяющих их отрезков (L/neDef). Отрезки разбивают плоскость на ряд областей (Sector), для которых задаются высота пола, потолка и необходимые текстуры. Фактически для любой точки карты лабиринта пересечение сцены вертикальной прямой, проходящей через эту точку, состоит либо из двух точек, либо из отрезка (возможен случай, когда это пересечение состоит из двух отрезков). При этом отрезки возникают только в том случае, когда луч проходит сквозь стену. Тем самым возможность расположения двух комнат одна над другой полностью исключается.
Отрезки направлены (порядок вершин выбран) таким образом, что справа от отрезка всегда находится сектор. Существуют и такие отрезки, для которых секторы находятся с обеих сторон, - так называемые двусторонние отрезки.
Рассмотрим сцену, представленную на рис. 13.13 и состоящую из двух секторов 0-1-4-5 и 1-2-3-4 с разными высотами пола и потолка (или разными текстурами для них). В данном случае отрезок 1-4 является двусторонним, так как служит линией раздела двух секторов. С каждым отрезком связана одна или несколько сторон (SideDef).
Сторона служит для определения текстуры вдоль стены, и в случае, когда отрезок служит разделителем двух секторов, с ним могут быть связаны две стороны, каждая из которых определяет текстуру, видимую со своей стороны. Выделяется несколько типов текстуры. Простейшая из них - это регулярная (main), служащая для закрашивания нормальной стены. В случае двусторонних отрезков возникают специальные текстуры - верхняя и нижняя. Нижняя текстура используется для закрашивания фрагментов стен, соединяющих пол одного сектора с полом другого вдоль линии их раздела (например, для ступенек). Верхняя текстура используется для закрашивания фрагмента стены, соединяющей потолок одного сектора с потолком другого (рис. 13.14).