Vad är filformatet BSP?
En .bsp-fil är en kompilerad binär 3D-spelnivå, uppkallad efter algoritmen Binary Space Partitioning som används för att rekursivt dela upp 3D-rymden för effektiv rendering i realtid. Formatet introducerades 1996 med id Softwares Quake och har sedan dess grenat ut sig i flera nära besläktade men ömsesidigt inkompatibla varianter som används av olika spelmotorer.
Filen använder en lump-baserad binär behållare: ett fast huvud (header) lagrar ett magiskt nummer, ett versionsheltal och ett register över numrerade lumps. Varje lump är ett sammanhängande datablock som innehåller en specifik kategori av data - BSP-trädnoder, hörnpunkter (vertices), ytor (faces), kanter (edges), ljuskartor (lightmaps), synlighetsdata (PVS), definitioner för entiteters startpunkter samt referenser till texturer eller material. Entitetsdata som startpunkter, triggers och föremål lagras som vanliga ASCII-nyckel-värdepar i en dedikerad lump.
Större inkompatibla varianter inkluderar:
- Quake 1 (BSP29): version int = 29; id Software, 1996.
- GoldSrc / Half-Life 1 (BSP30): version int = 30; Valve, 1998.
- Quake 2 / Quake 3 (IBSP v38/v46): ASCII-magic
IBSP, följt av versionsheltal. - Source Engine (VBSP): ASCII-magic
VBSP, versioner 17-21 beroende på spel (CS:GO, TF2, L4D2). - Source 2 (VBSP2):
VBSP-magic, version 29; används i CS2 och Half-Life: Alyx.
.bsp-filer är kompilerade utdata, inte källfiler. Nivådesigners arbetar i .vmf (Valve Map Format) eller .map-filer och kompilerar till .bsp med vbsp.exe (Source Engine) eller q3map2 (Quake-familjen).
Säkerhet & trygghet
RISK: MEDIUMBSP-filer i sig är statiska data och kan inte exekvera kod. Att ladda en illvilligt utformad BSP i en sårbar spelmotor kan dock utlösa buffertöverskridningar eller heap-korruptionsfel (historiska CVE:er finns för Quake-motor-spel). Risken är främst relevant vid nedladdning av anpassade kartor från okända källor för flerspelarspel; officiella Steam Workshop-kartor är generellt säkrare.
Formatdetaljer
i ett nötskal- Quake 1 BSP (BSP29) - Ursprungligt id Software-format från 1996, ingen ASCII-magic, versionsnummer 29 vid offset 0.
- Quake 3 / Quake Live BSP (IBSP v46) - Använder 'IBSP'-magic som Quake 2 men version 46; används av open-source-motorer (ioquake3, OpenArena).
Program som öppnar BSP-filer
Tekniska detaljer
djup specifikation| Behållare | Anpassad lump-baserad binär; inkompatibla varianter finns per spelmotor |
| Kodning | Binär |
| Byteordning | Little-endian |
| Magiska bytes | Motorberoende: IBSP (Quake 2/3), VBSP (Source/Source 2), rå int 29 eller 30 (Quake 1/GoldSrc) |
| Versionsfält | Heltal i huvudet: 29=Quake 1, 30=GoldSrc/HL1, 38=Quake 2, 46=Quake 3, 17-21=Source Engine-titlar, 29=Source 2 |
| Lump-typer | BSP-trädnoder/löv/plan, hörnpunkter, ytor, kanter, ljuskartor, PVS-synlighet, entitetsdefinitioner, materialreferenser |
| Entitetsdata | Lagras som vanliga ASCII-nyckel-värdepar i entitets-lumpen (startpunkter, triggers, föremål, etc.) |
| Ljuskartsformat | 24-bitars RGB per luxel (Source Engine); 8-bitars monokrom per luxel (Quake 1) |
| Koordinatomfång | ±32 768 enheter (Quake 1); ±16 384 användbara för geometri (Source Engine) |
| Komprimering | Ingen på filnivå; Source 2 stöder valfri LZ4-komprimering per lump |
| Typisk storlek | 2 MB - 200 MB (Quake-kartor 1-20 MB; Source-kartor 5-100 MB; CS2-kartor 50-200 MB) |
| Kompilerad utdata | BSP är kompilatorutdata; källan är .vmf (Source) eller .map (Quake), kompilerad med vbsp.exe eller q3map2 |
| Kompatibilitet mellan motorer | Ingen - varje motorvariant är inkompatibel med de andra |
| Associerade OS | Windows, Linux, macOS |
| Släppt | 1996 (Quake 1.0, id Software) |
| Senaste version | Source 2 VBSP2 (2020+, used in CS2 / Half-Life: Alyx); multiple incompatible lineages |
| Specifikation | developer.valvesoftware.com |
BSP-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om BSP-filer.