Hva er BSP-filformatet?
En .bsp-fil er et kompilert binært 3D-spillnivå, oppkalt etter «Binary Space Partitioning»-algoritmen som brukes til å rekursivt dele opp 3D-rom for effektiv sanntidsrendring. Formatet ble introdusert i 1996 med id Softwares Quake og har siden forgrenet seg til flere nært beslektede, men gjensidig inkompatible varianter brukt av ulike spillmotorer.
Filen bruker en «lump»-basert binær container: en fast header lagrer et «magic number», et versjonsheltall og en oversikt over nummererte «lumps». Hver «lump» er en sammenhengende datablokk som inneholder en spesifikk kategori data - BSP-trenoder, hjørner (vertices), flater, kanter, lyskart (lightmaps), synlighetsdata (PVS), definisjoner for startpunkter (entity spawn-points) og tekstur- eller materialreferanser. Entitetsdata som startpunkter, triggere og gjenstander lagres som rene ASCII-nøkkel-verdi-par i en dedikert «lump».
Store inkompatible varianter inkluderer:
- Quake 1 (BSP29): versjon = 29; id Software, 1996.
- GoldSrc / Half-Life 1 (BSP30): versjon = 30; Valve, 1998.
- Quake 2 / Quake 3 (IBSP v38/v46): ASCII magic
IBSP, etterfulgt av versjonsheltall. - Source Engine (VBSP): ASCII magic
VBSP, versjon 17-21 avhengig av spill (CS:GO, TF2, L4D2). - Source 2 (VBSP2):
VBSPmagic, versjon 29; brukt i CS2 og Half-Life: Alyx.
.bsp-filer er kompilerte resultater, ikke kildefiler. Nivådesignere jobber i .vmf (Valve Map Format) eller .map-filer og kompilerer til .bsp ved hjelp av vbsp.exe (Source Engine) eller q3map2 (Quake-familien).
Sikkerhet og trygghet
RISIKO: MEDIUMBSP-filer i seg selv er statiske data og kan ikke kjøre kode. Men å laste en ondsinnet utformet BSP i en sårbar spillmotor kan utløse buffer-overflyt eller feil i minnehåndtering (historiske CVE-er eksisterer for Quake-motor-spill). Risikoen er primært relevant ved nedlasting av egendefinerte kart fra upålitelige kilder for flerspillerspill; offisielle Steam Workshop-kart er generelt tryggere.
Formatdetaljer
i et nøtteskall- Quake 1 BSP (BSP29) - Originalt 1996 id Software-format, ingen ASCII magic, versjonsnummer 29 ved offset 0.
- Quake 3 / Quake Live BSP (IBSP v46) - Bruker 'IBSP' magic som Quake 2, men versjon 46; brukt av åpen kildekode-motorer (ioquake3, OpenArena).
Programmer som åpner BSP-filer
Tekniske detaljer
dyp spesifikasjon| Container | Egendefinert lump-basert binær; inkompatible varianter eksisterer per spillmotor |
| Koding | Binær |
| Byterekkefølge | Little-endian |
| Magic bytes | Motor-avhengig: IBSP (Quake 2/3), VBSP (Source/Source 2), rått heltall 29 eller 30 (Quake 1/GoldSrc) |
| Versjonsfelt | Heltall i header: 29=Quake 1, 30=GoldSrc/HL1, 38=Quake 2, 46=Quake 3, 17-21=Source Engine-titler, 29=Source 2 |
| Lump-typer | BSP-trenoder/blader/plan, hjørner, flater, kanter, lyskart, PVS-synlighet, entitetsdefinisjoner, materialreferanser |
| Entitetsdata | Lagret som rene ASCII-nøkkel-verdi-par i entitets-lumpen (startpunkter, triggere, gjenstander, osv.) |
| Lyskart-format | 24-bit RGB per luxel (Source Engine); 8-bit monokrom per luxel (Quake 1) |
| Koordinatområde | ±32 768 enheter (Quake 1); ±16 384 brukbart for geometri (Source Engine) |
| Komprimering | Ingen på filnivå; Source 2 støtter valgfri LZ4-komprimering per lump |
| Typisk størrelse | 2 MB - 200 MB (Quake-kart 1-20 MB; Source-kart 5-100 MB; CS2-kart 50-200 MB) |
| Kompilert resultat | BSP er resultatet fra kompilatoren; kilden er .vmf (Source) eller .map (Quake), kompilert med vbsp.exe eller q3map2 |
| Kompatibilitet på tvers av motorer | Ingen - hver motorvariant er gjensidig inkompatibel med andre |
| Assosiert OS | Windows, Linux, macOS |
| Utgitt | 1996 (Quake 1.0, id Software) |
| Siste versjon | Source 2 VBSP2 (2020+, used in CS2 / Half-Life: Alyx); multiple incompatible lineages |
| Spesifikasjon | developer.valvesoftware.com |
BSP-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om BSP-filer.