// // //
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"