Che cos'è il formato di file BSP?
Un file .bsp è un livello di gioco 3D binario compilato, che prende il nome dall'algoritmo Binary Space Partitioning utilizzato per dividere ricorsivamente lo spazio 3D per un rendering in tempo reale efficiente. Il formato è stato introdotto nel 1996 con Quake di id Software e da allora si è ramificato in diverse varianti strettamente correlate ma reciprocamente incompatibili utilizzate da diversi motori di gioco.
Il file utilizza un contenitore binario basato su «lump»: un'intestazione fissa memorizza un «magic number», un numero intero di versione e una directory di lump numerati. Ogni lump è un blocco di dati contiguo che contiene una categoria specifica di dati: nodi dell'albero BSP, vertici, facce, spigoli, lightmap, dati di visibilità (PVS), definizioni dei punti di spawn delle entità e riferimenti a texture o materiali. I dati delle entità come punti di spawn, trigger e oggetti raccoglibili sono memorizzati come coppie chiave-valore ASCII semplici all'interno di un lump dedicato.
Le principali varianti incompatibili includono:
- Quake 1 (BSP29): versione int = 29; id Software, 1996.
- GoldSrc / Half-Life 1 (BSP30): versione int = 30; Valve, 1998.
- Quake 2 / Quake 3 (IBSP v38/v46): magic ASCII
IBSP, seguito dall'intero di versione. - Source Engine (VBSP): magic ASCII
VBSP, versioni 17-21 a seconda del gioco (CS:GO, TF2, L4D2). - Source 2 (VBSP2): magic
VBSP, versione 29; utilizzato in CS2 e Half-Life: Alyx.
I file .bsp sono output compilati, non file sorgente. I level designer lavorano in .vmf (Valve Map Format) o file .map e compilano in .bsp utilizzando vbsp.exe (Source Engine) o q3map2 (famiglia Quake).
Sicurezza e incolumità
RISCHIO: MEDIUMI file BSP stessi sono dati statici e non possono eseguire codice. Tuttavia, il caricamento di un BSP creato con intenti malevoli in un motore di gioco vulnerabile potrebbe innescare buffer overflow o bug di corruzione dell'heap (esistono CVE storici per i giochi con motore Quake). Il rischio è rilevante soprattutto quando si scaricano mappe personalizzate da fonti non attendibili per giochi multiplayer; le mappe ufficiali dello Steam Workshop sono generalmente più sicure.
Dettagli del formato
in sintesi- Quake 1 BSP (BSP29) - Formato originale id Software del 1996, nessun magic ASCII, numero di versione 29 all'offset 0.
- Quake 3 / Quake Live BSP (IBSP v46) - Utilizza il magic 'IBSP' come Quake 2 ma versione 46; utilizzato dai motori open source (ioquake3, OpenArena).
Programmi che aprono file BSP
Dettagli tecnici
specifiche approfondite| Contenitore | Binario personalizzato basato su lump; esistono varianti incompatibili per ogni motore di gioco |
| Codifica | Binario |
| Ordine dei byte | Little-endian |
| Magic bytes | Dipendenti dal motore: IBSP (Quake 2/3), VBSP (Source/Source 2), intero grezzo 29 o 30 (Quake 1/GoldSrc) |
| Campo versione | Intero nell'intestazione: 29=Quake 1, 30=GoldSrc/HL1, 38=Quake 2, 46=Quake 3, 17-21=titoli Source Engine, 29=Source 2 |
| Tipi di lump | Nodi/foglie/piani dell'albero BSP, vertici, facce, spigoli, lightmap, visibilità PVS, definizioni di entità, riferimenti ai materiali |
| Dati entità | Memorizzati come coppie chiave-valore ASCII semplici nel lump delle entità (punti di spawn, trigger, oggetti, ecc.) |
| Formato lightmap | RGB a 24 bit per luxel (Source Engine); monocromatico a 8 bit per luxel (Quake 1) |
| Intervallo coordinate | ±32.768 unità (Quake 1); ±16.384 utilizzabili per la geometria (Source Engine) |
| Compressione | Nessuna a livello di file; Source 2 supporta la compressione LZ4 opzionale per singolo lump |
| Dimensione tipica | 2 MB - 200 MB (mappe Quake 1-20 MB; mappe Source 5-100 MB; mappe CS2 50-200 MB) |
| Output compilato | Il BSP è l'output del compilatore; il sorgente è .vmf (Source) o .map (Quake), compilato con vbsp.exe o q3map2 |
| Compatibilità tra motori | Nessuna: ogni variante del motore è reciprocamente incompatibile con le altre |
| OS associati | Windows, Linux, macOS |
| Rilasciato | 1996 (Quake 1.0, id Software) |
| Ultima versione | Source 2 VBSP2 (2020+, used in CS2 / Half-Life: Alyx); multiple incompatible lineages |
| Specifica | developer.valvesoftware.com |
Conversioni BSP
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file BSP.