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