BSP (GoldSrc)

Remember to check for any notes left by the tagger at this article's talk page.
Данный документ посвящен структуре BSP файлов карт версии 30 для игрового движка Gold Source (Half-life 1). Начнем с определения структуры трехмерного вектора, который является незаменимой частью 3д геометрии: typedef struct _VECTOR3D { Float x, y, z; } VECTOR3D;
Файл состоит из заголовка фиксированного размера и чанков данных, позиция и размер каждого, а также его наличие, определяемое заголовком файла. Карта ограничена 15 чанками в файле, соответственно всего 15 типов чанков, и чанк данного типа может войти лишь единожды в файл. Описание заголовка ниже:
- define
HEADER_LUMPS 15
- define
LUMP_ENTITIES 0
- define
LUMP_PLANES 1
- define
LUMP_TEXTURES 2
- define
LUMP_VERTICES 3
- define
LUMP_VISIBILITY 4
- define
LUMP_NODES 5
- define
LUMP_TEXINFO 6
- define
LUMP_FACES 7
- define
LUMP_LIGHTING 8
- define
LUMP_CLIPNODES 9
- define
LUMP_LEAVES 10
- define
LUMP_MARKSURFACES 11
- define
LUMP_EDGES 12
- define
LUMP_SURFEDGES 13
- define
LUMP_MODELS 14 typedef { struct _BSPHEADER
int32_t nVersion; // Версия карты = 0x0000001E = 30 BSPLUMP lump[HEADER_LUMPS]; // блок описания чанков } BSPHEADER;
Константа HEADER_LUMPS указывает на максимальное число чанков = 15. Далее идет набор 15 констант: индексов в массиве lump заголовка, который описывает чанк данного типа. Таблица ниже подробнее описывает каждый чанк по его индексу в массиве lump заголовка: