// // //
offset from the start of .bsp file
sizeof lump in bytes
} ;
struct
Quake2BspHeader
//
header of the .bsp file
unsigned char magic [4] long version; Quake2BspEntry dir [19];
// signature ("IBSP")
};

Первые 4 байта £х/?-файла содержат подпись файла ("1В8Р"), затем идет номер версии (здесь рассматривается версия 38). Далее идет таблица блоков- для каждого из 19 блоков идет запись 0>иаке2В5рЕпггу, содержащая информацию о размере и местоположении соответствующего блока внутри йх/7-файла.

Ниже приводится полная таблица блоков (табл. 11.1).

Таблица 11.1

Индекс-

Название

Описание

блока

Entities

Текстовые данные, описывающие начальное положение и ориентацию игрока, положение противников и т. II.

Planes

Массив плоскостей

Vertices

Массив вершин

Visibility

Сжатые РУ8

Nodes

Массив внутренних узлов В8Р-дерева

Texture information

Информация о текстурировании граней

Faces

Массив вершин

Lightmaps

Карты освещенности

Leaves

Массив листьев В8Р-дерева

Leaf Face Table

Индексы листьев для каждого листа В8Р-дерева

Leaf Brush Table
Edges

Ребра граней

Face Edge Table

Массив индексов ребер для каждой из граней

Models(Hulls)

Набор моделей уровня (В8Р-деревья, задающие уровень)

Brushes
Brush Sides
Pop
Areas
Area Portals

Большинство блоков представляет собой массив одинаковых структур фиксированного размера. Для них количество элементов в блоке можно определить как частное размера блока и размера одной структуры.

Блок сущностей (entities lump). Представляет собой набор строк, описывающих уровень. Ниже приводится фрагмент таких данных.

Пишем рендерер уровней Quake II

{
"nextmap" "base2" " sky" "unitl_" "message" "Outer Base" "classname" "worldspawn" "sounds" "9" } {
"origin" "32 -224 24"

⇐ Предыдущая| |Следующая ⇒