Что такое формат файла BSP?
Файл .bsp представляет собой скомпилированный бинарный уровень игры, названный в честь алгоритма Binary Space Partitioning (двоичное разбиение пространства), используемого для рекурсивного деления 3D-пространства для эффективного рендеринга в реальном времени. Формат был представлен в 1996 году в игре Quake от id Software и с тех пор разделился на несколько тесно связанных, но взаимно несовместимых вариантов, используемых различными игровыми движками.
Файл использует бинарный контейнер на основе «лампов» (lumps): фиксированный заголовок хранит магическое число, целое число версии и каталог пронумерованных лампов. Каждый ламп - это непрерывный блок данных, содержащий определенную категорию информации: узлы дерева BSP, вершины, грани, ребра, карты освещения (lightmaps), данные видимости (PVS), определения точек появления сущностей (entities), а также ссылки на текстуры или материалы. Данные сущностей, такие как точки появления, триггеры и предметы, хранятся в виде простых пар «ключ-значение» в кодировке ASCII внутри выделенного лампа.
Основные несовместимые варианты включают:
- Quake 1 (BSP29): версия (int) = 29; id Software, 1996.
- GoldSrc / Half-Life 1 (BSP30): версия (int) = 30; Valve, 1998.
- Quake 2 / Quake 3 (IBSP v38/v46): ASCII-сигнатура
IBSP, затем целое число версии. - Source Engine (VBSP): ASCII-сигнатура
VBSP, версии 17-21 в зависимости от игры (CS:GO, TF2, L4D2). - Source 2 (VBSP2): сигнатура
VBSP, версия 29; используется в CS2 и Half-Life: Alyx.
Файлы .bsp являются результатом компиляции, а не исходными файлами. Дизайнеры уровней работают в форматах .vmf (Valve Map Format) или .map и компилируют их в .bsp с помощью vbsp.exe (Source Engine) или q3map2 (семейство Quake).
Безопасность и защита
РИСК: MEDIUMСами файлы BSP являются статичными данными и не могут исполнять код. Однако загрузка специально сформированного вредоносного BSP в уязвимый игровой движок может вызвать переполнение буфера или ошибки повреждения кучи (существуют исторические CVE для игр на движке Quake). Риск актуален в первую очередь при загрузке пользовательских карт из ненадежных источников для многопользовательских игр; официальные карты из Steam Workshop обычно безопасны.
Детали формата
в двух словах- Quake 1 BSP (BSP29) - Оригинальный формат id Software 1996 года, без ASCII-сигнатуры, номер версии 29 по смещению 0.
- Quake 3 / Quake Live BSP (IBSP v46) - Использует сигнатуру «IBSP», как в Quake 2, но версию 46; используется в движках с открытым исходным кодом (ioquake3, OpenArena).
Программы, открывающие файлы BSP
Технические подробности
глубокая спецификация| Контейнер | Собственный бинарный формат на основе лампов; существуют несовместимые варианты для разных движков |
| Кодировка | Бинарная |
| Порядок байтов | Little-endian |
| Магические байты | Зависят от движка: IBSP (Quake 2/3), VBSP (Source/Source 2), целое число 29 или 30 (Quake 1/GoldSrc) |
| Поле версии | Целое число в заголовке: 29=Quake 1, 30=GoldSrc/HL1, 38=Quake 2, 46=Quake 3, 17-21=игры на Source Engine, 29=Source 2 |
| Типы лампов | Узлы/листья/плоскости дерева BSP, вершины, грани, ребра, карты освещения, видимость PVS, определения сущностей, ссылки на материалы |
| Данные сущностей | Хранятся в виде текстовых пар «ключ-значение» ASCII в лампе сущностей (точки появления, триггеры, предметы и т. д.) |
| Формат карты освещения | 24-битный RGB на люксель (Source Engine); 8-битный монохромный на люксель (Quake 1) |
| Диапазон координат | ±32 768 единиц (Quake 1); ±16 384 единицы доступны для геометрии (Source Engine) |
| Сжатие | Отсутствует на уровне файла; Source 2 поддерживает опциональное сжатие LZ4 для отдельных лампов |
| Типичный размер | 2 МБ - 200 МБ (карты Quake 1-20 МБ; карты Source 5-100 МБ; карты CS2 50-200 МБ) |
| Результат компиляции | BSP - это выходной файл компилятора; исходником является .vmf (Source) или .map (Quake), скомпилированный через vbsp.exe или q3map2 |
| Междвижковая совместимость | Отсутствует - варианты для каждого движка взаимно несовместимы |
| Связанные ОС | Windows, Linux, macOS |
| Выпущен | 1996 (Quake 1.0, id Software) |
| Последняя версия | Source 2 VBSP2 (2020+, used in CS2 / Half-Life: Alyx); multiple incompatible lineages |
| Спецификация | developer.valvesoftware.com |
Конвертации BSP
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах BSP.