¿Qué es el formato de archivo BSP?
Un archivo .bsp es un nivel de juego 3D binario compilado, llamado así por el algoritmo Binary Space Partitioning (partición binaria del espacio) utilizado para dividir recursivamente el espacio 3D para un renderizado eficiente en tiempo real. El formato fue introducido en 1996 con Quake de id Software y desde entonces se ha ramificado en varias variantes estrechamente relacionadas pero mutuamente incompatibles utilizadas por diferentes motores de juego.
El archivo utiliza un contenedor binario basado en «lumps» (bloques): un encabezado fijo almacena un número mágico, un entero de versión y un directorio de bloques numerados. Cada bloque es un segmento de datos contiguo que contiene una categoría específica de información: nodos del árbol BSP, vértices, caras, aristas, mapas de luz (lightmaps), datos de visibilidad (PVS), definiciones de puntos de aparición (spawn-points) de entidades y referencias a texturas o materiales. Los datos de las entidades, como puntos de aparición, activadores (triggers) y recolección de objetos, se almacenan como pares clave-valor en ASCII simple dentro de un bloque dedicado.
Las principales variantes incompatibles incluyen:
- Quake 1 (BSP29): versión int = 29; id Software, 1996.
- GoldSrc / Half-Life 1 (BSP30): versión int = 30; Valve, 1998.
- Quake 2 / Quake 3 (IBSP v38/v46): magia ASCII
IBSP, luego el entero de versión. - Source Engine (VBSP): magia ASCII
VBSP, versiones 17-21 dependiendo del juego (CS:GO, TF2, L4D2). - Source 2 (VBSP2): magia
VBSP, versión 29; utilizado en CS2 y Half-Life: Alyx.
Los archivos .bsp son salidas compiladas, no archivos de origen. Los diseñadores de niveles trabajan en archivos .vmf (Valve Map Format) o .map y los compilan a .bsp usando vbsp.exe (Source Engine) o q3map2 (familia Quake).
Seguridad y protección
RIESGO: MEDIUMLos archivos BSP en sí mismos son datos estáticos y no pueden ejecutar código. Sin embargo, cargar un BSP malintencionado en un motor de juego vulnerable podría provocar desbordamientos de búfer o errores de corrupción de memoria (existen CVE históricos para juegos con motor Quake). El riesgo es relevante principalmente al descargar mapas personalizados de fuentes no confiables para juegos multijugador; los mapas oficiales de Steam Workshop son generalmente más seguros.
Detalles del formato
en pocas palabras- Quake 1 BSP (BSP29) - Formato original de id Software de 1996, sin magia ASCII, número de versión 29 en el desplazamiento 0.
- Quake 3 / Quake Live BSP (IBSP v46) - Utiliza la magia 'IBSP' como Quake 2 pero con versión 46; utilizado por motores de código abierto (ioquake3, OpenArena).
Programas que abren archivos BSP
Detalles técnicos
especificación profunda| Contenedor | Binario personalizado basado en bloques (lumps); existen variantes incompatibles por motor de juego |
| Codificación | Binario |
| Orden de bytes | Little-endian |
| Bytes mágicos | Dependiente del motor: IBSP (Quake 2/3), VBSP (Source/Source 2), entero simple 29 o 30 (Quake 1/GoldSrc) |
| Campo de versión | Entero en el encabezado: 29=Quake 1, 30=GoldSrc/HL1, 38=Quake 2, 46=Quake 3, 17-21=títulos de Source Engine, 29=Source 2 |
| Tipos de bloques | Nodos/hojas/planos del árbol BSP, vértices, caras, aristas, mapas de luz, visibilidad PVS, definiciones de entidades, referencias a materiales |
| Datos de entidades | Almacenados como pares clave-valor en ASCII simple en el bloque de entidades (puntos de aparición, activadores, objetos, etc.) |
| Formato de mapa de luz | RGB de 24 bits por luxel (Source Engine); monocromo de 8 bits por luxel (Quake 1) |
| Rango de coordenadas | ±32,768 unidades (Quake 1); ±16,384 utilizables para geometría (Source Engine) |
| Compresión | Ninguna a nivel de archivo; Source 2 admite compresión LZ4 opcional por bloque |
| Tamaño típico | 2 MB - 200 MB (mapas de Quake 1-20 MB; mapas de Source 5-100 MB; mapas de CS2 50-200 MB) |
| Salida compilada | BSP es la salida del compilador; el origen es .vmf (Source) o .map (Quake), compilado con vbsp.exe o q3map2 |
| Compatibilidad entre motores | Ninguna: cada variante de motor es mutuamente incompatible con las demás |
| SO asociado | Windows, Linux, macOS |
| Lanzado | 1996 (Quake 1.0, id Software) |
| Última versión | Source 2 VBSP2 (2020+, used in CS2 / Half-Life: Alyx); multiple incompatible lineages |
| Especificación | developer.valvesoftware.com |
Conversiones de BSP
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos BSP.