Empaquetar contenido custom en un BSP: texturas, modelos y sonidos
Empaquetar contenido custom en un BSP: qué va dentro, cómo funcionan bspzip, CompilePal y VIDE, qué estructura de carpetas usar y cómo comprobarlo.
Para empaquetar tus propias texturas, modelos y sonidos en el BSP, los escribes en el pakfile del mapa después de la última compilación con una herramienta como bspzip, CompilePal o VIDE. A partir de ahí el motor carga los archivos directamente desde el mapa y los jugadores no necesitan ninguna descarga adicional. Si no empaquetas, verán cuadros rosas y negros en lugar de texturas y carteles rojos de ERROR en lugar de modelos.
Por qué conviene empaquetar el contenido
Además de la geometría y la iluminación, un BSP tiene una sección propia para archivos incrustados: el pakfile. Técnicamente es un contenedor de archivos dentro del mapa. Al cargar el mapa, el motor trata su contenido como si los archivos estuvieran en la carpeta del juego. Garry's Mod pone aquí un límite: desde los parches de seguridad de diciembre de 2023, el juego comprueba los archivos incrustados contra una whitelist, y lo que no pasa la comprobación no se monta. La consola muestra entonces BSP embedded file failed whitelist check. Cómo está estructurado un BSP en conjunto lo explica ¿Qué es un archivo BSP?.
La alternativa es distribuir el contenido aparte, por ejemplo como addon. Funciona, pero tiene más puntos de fallo: falta un archivo, alguien no está suscrito a un addon, una ruta está mal. Un mapa empaquetado es un único archivo que se ve igual en todas partes.
Qué va dentro del BSP
| Contenido | Archivos | Carpeta de destino |
|---|---|---|
| Materiales | .vmt y .vtf | materials/ |
| Modelos | .mdl, .vvd, .phy y los archivos .vtx | models/ |
| Sonidos | .wav o .mp3 | sound/ |
Lo que se olvida con facilidad:
- los materiales de un modelo, que están en una carpeta distinta a la del propio modelo
- las texturas adicionales a las que hace referencia un VMT, como los normal maps
- las texturas de skybox propias en
materials/skybox/ - los scripts específicos del mapa, como los soundscapes, y los archivos de partículas propios
Lo que no va en el BSP: contenido que todos los jugadores ya tienen con el juego, archivos sin usar y archivos fuente como VMF, TGA o PSD.
La estructura de carpetas correcta
Dentro del pakfile valen las mismas rutas que en la carpeta del juego garrysmod/:
materials/yourname/yourmap/wall_concrete01.vmt
materials/yourname/yourmap/wall_concrete01.vtf
models/yourname/yourmap/lantern.mdl
sound/yourname/yourmap/hall_ambient.wav
Tres reglas te ahorran la mayoría de los problemas:
- Tu propia subcarpeta. Con un nombre de carpeta único no sobrescribes archivos de otros addons ni te los sobrescriben a ti.
- Minúsculas, sin espacios y sin caracteres especiales. Los servidores Linux distinguen entre mayúsculas y minúsculas. Una ruta que funciona en Windows puede fallar ahí.
- Revisa las rutas del VMT. Un VMT apunta a su VTF de forma relativa a
materials/y sin extensión. Si mueves archivos, tienes que ajustar las referencias.
Comparativa de herramientas
| Herramienta | Tipo | Punto fuerte |
|---|---|---|
bspzip | Programa de línea de comandos de Valve, en la carpeta bin del juego | Control exacto, ideal para scripts |
| CompilePal | Interfaz de compilación hecha por la comunidad | Encuentra automáticamente el contenido usado y lo empaqueta como paso aparte después de compilar. Él mismo marca ese paso como potencialmente incompatible con Garry's Mod, así que revisa el resultado |
| VIDE | Colección de herramientas de la comunidad con editor de pakfile | Escanea el mapa, muestra la lista y te deja añadir o quitar archivos |
A bspzip le pasas un archivo de texto con la lista de todos los archivos:
bspzip -addlist yourmap.bsp filelist.txt yourmap_packed.bsp
bspzip -dir yourmap_packed.bsp
La lista se compone de pares de líneas: primero la ruta dentro del mapa y, debajo, la ruta completa en tu disco. El segundo comando muestra lo que hay en el pakfile.
Las herramientas automáticas detectan lo que el mapa usa de forma directa. Se les puede escapar contenido al que solo se accede en tiempo de ejecución, como un sonido que solo reproduce un script. Por eso, revisa siempre la lista.
Empaquetar en cinco pasos
- Haz la compilación final. Empaqueta solo cuando el mapa esté terminado. El proceso está descrito en VBSP, VVIS y VRAD explicados.
- Determina el contenido. Deja que la herramienta escanee el mapa o escribe la lista a mano.
- Empaqueta. Escribe en una copia del BSP para conservar el original.
- Genera los cubemaps. Los cubemaps también se guardan en el pakfile. Genéralos en el archivo ya empaquetado.
- Prueba. Mira más abajo.
Importante: cada nueva compilación produce un BSP nuevo sin tu contenido empaquetado. Después de cada cambio en el mapa toca empaquetar otra vez.
Tamaño de archivo y compresión
Del contenido empaquetado, las texturas suelen llevarse la mayor parte. Elige resoluciones acordes al tamaño de la superficie y guarda los VTF en un formato comprimido, no sin comprimir. Quita el contenido que al final no hayas usado y recorta los sonidos largos.
Al distribuir el mapa suele añadirse otra compresión: los servidores FastDL normalmente entregan los mapas como archivo comprimido, y el Workshop también comprime al subir. Por eso el tamaño en disco no es el tamaño de la descarga. El texto de ayuda del bspzip de GMod incluye además -repack -compress, que comprime el propio BSP. En nuestra prueba con la versión actual de GMod, sin embargo, el comando terminó sin mostrar nada y dejó el archivo sin cambios, y la Valve Developer Community remite en su lugar al bspzip de Team Fortress 2. Si comprimes un mapa, hazlo como último paso y prueba a fondo que el juego y el servidor lo cargan sin problemas.
Comprobar después de empaquetar
- Renombra temporalmente tus carpetas de contenido suelto en la carpeta del juego, o prueba en una segunda instalación. Solo así ves lo que de verdad sale del BSP.
- Carga el mapa y recorre todas las zonas. La consola avisa de los materiales y modelos que faltan.
- Compara la salida de
bspzip -dircon tu lista. - Sube el BSP al Map Scanner. Lista los archivos Lua y de assets incrustados en el pakfile y comprueba la estructura del archivo.
Si siguen apareciendo cuadros o modelos ERROR, consulta Solucionar texturas que faltan y modelos ERROR.
Derechos: empaqueta solo lo que puedas redistribuir
Quien empaqueta contenido en un BSP lo redistribuye junto con el mapa. Empaqueta solo tu propio trabajo y contenido cuya licencia permita la redistribución. Si quieres vender el mapa, la licencia tiene que cubrir también el uso comercial. Que un addon sea gratuito en el Workshop no es un permiso, y citar al autor tampoco lo sustituye. Lo mismo vale para el contenido sacado de otros juegos. Lo básico está en Derechos de autor en mapas de GMod. Esta sección no es asesoramiento jurídico.
Preguntas frecuentes
¿Tengo que volver a empaquetar después de cada compilación?
Sí. VBSP escribe un BSP nuevo en cada ejecución y el pakfile del archivo anterior se pierde. Empaqueta solo después de la última compilación y genera los cubemaps a continuación.
¿Por qué sigo viendo cuadros rosas y negros después de empaquetar?
Casi siempre hay una ruta mal. O el archivo está en el pakfile en un sitio distinto al que espera el mapa, o se empaquetó el VMT pero no su VTF. En los modelos suelen faltar los materiales, porque están en otra carpeta.
¿Se puede volver a extraer del BSP el contenido empaquetado?
Sí. El pakfile es un contenedor de archivos corriente, y las mismas herramientas que empaquetan también desempaquetan. Empaquetar es una cuestión de distribución, no una protección para tu contenido.
¿Cuánto puede ocupar un mapa empaquetado?
No podemos confirmar un límite fijo para el archivo completo en GMod. En la práctica depende de cómo se distribuya el mapa. Cuanto más grande es el archivo, más esperan los jugadores la primera vez que entran. Por eso, en el contenido empaquetado, ahorrar en texturas suele ser lo que más efecto tiene.