Wat is het BSP-bestandsformaat?
Een .bsp-bestand is een gecompileerd binair 3D-spelniveau, vernoemd naar het Binary Space Partitioning-algoritme dat wordt gebruikt om de 3D-ruimte recursief te verdelen voor efficiënte real-time rendering. Het formaat werd in 1996 geïntroduceerd met id Software's Quake en is sindsdien vertakt in verschillende nauw verwante maar onderling incompatibele varianten die door verschillende game-engines worden gebruikt.
Het bestand gebruikt een op lumps gebaseerde binaire container: een vaste header slaat een magic number, een versie-integer en een directory van genummerde lumps op. Elke lump is een aaneengesloten datablok dat een specifieke categorie gegevens bevat - BSP-boomknooppunten, vertices, faces, edges, lightmaps, zichtbaarheidsgegevens (PVS), definities van entity-spawnpoints en textuur- of materiaalreferenties. Entity-gegevens zoals spawnpoints, triggers en item-pickups worden opgeslagen als platte ASCII-sleutel-waardeparen binnen een speciale lump.
Belangrijke incompatibele varianten zijn onder meer:
- Quake 1 (BSP29): versie int = 29; id Software, 1996.
- GoldSrc / Half-Life 1 (BSP30): versie int = 30; Valve, 1998.
- Quake 2 / Quake 3 (IBSP v38/v46): ASCII-magic
IBSP, gevolgd door versie-integer. - Source Engine (VBSP): ASCII-magic
VBSP, versies 17-21 afhankelijk van het spel (CS:GO, TF2, L4D2). - Source 2 (VBSP2):
VBSP-magic, versie 29; gebruikt in CS2 en Half-Life: Alyx.
.bsp-bestanden zijn gecompileerde outputs, geen bronbestanden. Leveldesigners werken in .vmf (Valve Map Format) of .map-bestanden en compileren naar .bsp met behulp van vbsp.exe (Source Engine) of q3map2 (Quake-familie).
Beveiliging & veiligheid
RISICO: MEDIUMBSP-bestanden zelf zijn statische gegevens en kunnen geen code uitvoeren. Het laden van een kwaadaardig ontworpen BSP in een kwetsbare game-engine kan echter buffer-overflows of heap-corruptiefouten veroorzaken (er bestaan historische CVE's voor Quake-engine-spellen). Het risico is vooral relevant bij het downloaden van aangepaste kaarten van niet-vertrouwde bronnen voor multiplayer-spellen; officiële Steam Workshop-kaarten zijn over het algemeen veiliger.
Formaatdetails
in een notendop- Quake 1 BSP (BSP29) - Origineel id Software-formaat uit 1996, geen ASCII-magic, versienummer 29 op offset 0.
- Quake 3 / Quake Live BSP (IBSP v46) - Gebruikt „IBSP”-magic zoals Quake 2 maar versie 46; gebruikt door open-source engines (ioquake3, OpenArena).
Programma's die BSP-bestanden openen
Technische details
diepe specificaties| Container | Aangepast binair bestand op basis van lumps; incompatibele varianten bestaan per game-engine |
| Encoding | Binair |
| Byte-volgorde | Little-endian |
| Magic bytes | Engine-afhankelijk: IBSP (Quake 2/3), VBSP (Source/Source 2), ruwe int 29 of 30 (Quake 1/GoldSrc) |
| Versieveld | Integer in header: 29=Quake 1, 30=GoldSrc/HL1, 38=Quake 2, 46=Quake 3, 17-21=Source Engine-titels, 29=Source 2 |
| Lump-types | BSP-boomknooppunten/bladeren/vlakken, vertices, faces, edges, lightmaps, PVS-zichtbaarheid, entity-definities, materiaalreferenties |
| Entity-gegevens | Opgeslagen als platte ASCII-sleutel-waardeparen in de entities-lump (spawnpoints, triggers, pickups, enz.) |
| Lightmap-formaat | 24-bit RGB per luxel (Source Engine); 8-bit monochroom per luxel (Quake 1) |
| Coördinatenbereik | ±32.768 eenheden (Quake 1); ±16.384 bruikbaar voor geometrie (Source Engine) |
| Compressie | Geen op bestandsniveau; Source 2 ondersteunt optionele LZ4-compressie per lump |
| Typische grootte | 2 MB - 200 MB (Quake-kaarten 1-20 MB; Source-kaarten 5-100 MB; CS2-kaarten 50-200 MB) |
| Gecompileerde output | BSP is compiler-output; bron is .vmf (Source) of .map (Quake), gecompileerd met vbsp.exe of q3map2 |
| Cross-engine compatibiliteit | Geen - elke engine-variant is onderling incompatibel met andere |
| Geassocieerd OS | Windows, Linux, macOS |
| Uitgebracht | 1996 (Quake 1.0, id Software) |
| Laatste versie | Source 2 VBSP2 (2020+, used in CS2 / Half-Life: Alyx); multiple incompatible lineages |
| Specificatie | developer.valvesoftware.com |
BSP conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over BSP-bestanden.