BSPZIP is a command-line tool that allows arbitrary files to be embedded within a BSP (GUIs are available). When the map is being loaded the files will be mounted as if they were present in the game's real content folders.
While it is usually a good idea to BSPZIP content, there are times when it can cause problems and other times when it won't work at all (e.g. for Maplist Thumbnails). When this happens a resource list can be used instead.
BSPZIP is found at
"%sourcesdk%\bin\[orangebox|ep1]\bin\bspzip.exe". It performs several functions:
Adding a list of files
The most common function. There are two related commands:
-addlist <input bsp> <file list> <output bsp> -addorupdatelist <input bsp> <file list> <output bsp>
The former command packs all files in the list, the latter (untested) packs only those that have changed since the last operation. In both cases it is possible for the input and output files to be the same.
The 'file list' is a .txt file containing this pattern:
internal_path\file1 external_path\file1 internal_path\file2 external_path\file2 ...
- Internal paths ('relative paths') are the location the file will take within the BSP, e.g.
- External paths ('full paths') are the location of the file to be packed, e.g.
Adding a single file
The same principle as above, but without a file list.
-addfile <input bsp> <internal path> <external path> <output bsp>
Viewing and extracting files
If you have an archive tool installed that is able to look inside BSPs it's better to use that. If you don't, these are the commands you need:
-extract <bsp file> <output.zip> -extractfiles <bsp file> -dir <bsp file>
Should be self-evident:
-extractcubemaps <bsp file> <output folder> -deletecubemaps <bsp file>
There are situations where files won't be loaded from BSP files correctly. As time goes on they become fewer in number, but it's always worth checking regardless. The easiest way to do so is moving all of the embedded content out of the game's folders -- or even better, not storing it there in the first place.