This article's documentation is for anything that uses the Source engine. Click here for more information.

VBSP++

From Valve Developer Community
Jump to navigation Jump to search

English (en)Translate (Translate)

VBSP++VVIS++VRAD++BSPZIP++

Stub

This article or section is a stub. You can help by expanding it.

Developer(s)
Initial release
Jun 28, 2025
Stable release
May 4, 2026
Operating system
Windows
Type
Map compiler
Target engine(s)
Source
Distribution
Freeware

VBSP++ VBSP++ is a community-made modification of Source's VBSP developed by ficool2.

Differences

  • Reduces brushes and brushsides usage of the map by 10-30% (MAX_MAP_BRUSHES, MAX_MAP_BRUSHSIDES)
    • Note: this reduction will be applied once the map exceeds the limit
  • Reduces vertex usage of the map by 10-30% (MAX_MAP_VERTS)
    • Note: this reduction will be applied once the map exceeds the limit
    • You can also use the new -cullverts parameter to always reduce verts even if the limit isn't exceeded
  • Automatically reduces planes usage of the map up to 40% if limit is hit (MAX_MAP_PLANES)
    • If plane limit is exceeded, VRAD++ must be used or lighting will be broken
  • No t-junction limit
  • No detail prop limit
  • Raised overlay limit to 8192 and internal entity limit to 65536
  • Increased maximum switchable lights from 32 to 96
  • -leaktest is now enabled by default, i.e. stops compile on leaks
    • Added -noleaktest to disable this behavior
  • Added AppID mounting in gameinfo.txt
  • Added support for mounting custom shaders in mods
  • Added support for custom $surfaceprops on clip brushes
  • Added support for compiling 4-way blends (for games that support it)
  • Added func_detail_blocker (like newer VBSPs)
  • Added -blocksize (default is 1024)
    • Useful to compute visibility faster on open, large maps like surf (I recommend 2048)
    • Using a higher blocksize also reduces your vertex count, useful to circumvent vertex limit
  • Added -allowdynamicpropsasstatic (allows any props to used as static props)

- Note that some props might not work right with this, particularly props that aren't compiled with $staticprop

  • Added per-prop ambient occlusion toggle
    • To use, set disableambientocclusion 1 keyvalue on the entity
    • Does not work on HL2/Singleplayer BSPs due to older static prop format
  • Added proper support for compiling power of 4 displacements (like CS:GO)
    • Update: this is now reverted due to causing crashes on Linux servers. Slammin is also affected by this.
  • Added parallax_obb entity support for mods that have parallax cubemaps
    • Also inserts extra data for PCC on models
  • Added func_detail_illusionary (identical to func_detail but non solid)
  • Added %compileNoShadows
  • Added func_nobevel support
  • Added -nobevel (disables brushsides for all angled geometry. I do not recommend using this, use func_nobevel instead)
  • Added optimization to automatically disable vertex lighting for props with $bumpmap/$phong
    • Reduces time spent in VRAD with -staticproplighting
    • Use -showineligiblevertexlitprops to show what props were marked ineligible for vertex lighting
    • Use -noineligiblevertexlitprops to disable this optimization (disabled by default with "-csgo" parameter)
  • Added logging if FGD has parsing errors
  • Added -nonamefixup to disable default instance name prefixing with InstanceAuto
  • Added -singleplayer option to compile maps for Half-Life 2 Half-Life 2 (Source SDK Base 2013 - Singleplayer) BSP format
  • Added -l4d2, -portal2, -asw, -insurgency, -csgo options

, Source SDK Base 2013 - Singleplayer Source SDK Base 2013 - Singleplayer: -singleplayer

  • Added warning if using info_lighting on dynamic entities
  • Added warning if static prop hull generation takes a long time
  • Added sanity check for NaN/Inf values in the VMF
  • Added check for brushes going outside of map grid
    • This prevents the Map coordinate extents are too large!! error in-game
  • Added -warnMissingInstances to ignore missing instance VMFs
  • Added %compileNoShadows support
  • Added %compileTeam support
  • Added new %compileNormal parameter for brush materials
    • This forces vertex normals on the face to all be the same
    • Useful to make fake 2D skyboxes without needing a HDR texture (via "UnlitGeneric" cubemap)
    • Example: %compileNormal "[1 0 0]"
  • Added support for compiling lightmaps on Water if $lightmapwaterfog is set (for mods that support it)
  • Added support for high lightmap sizes (useful for games that support -maxlightmapdim)
  • Added support for saving enablelightbounce flag for static props
  • Added support for reading decimal values from face lightmap scales
  • Added -nohdrcubemap to not write HDR cubemaps to BSP, useful if map is compiled in LDR only
    • Likewise -noldrcubemap exists to not write LDR cubemaps
    • -nodefaultcubemap disables both cubemaps
  • Added -nobump (disables bumpmap lightmaps on all faces)
  • Added -maxluxelscale (clamps maximum luxel scale, default is no limit)
  • Added -report_search_paths to list current search paths for debugging
  • Added ability to insert default options from gameinfo
    • To use this, make a Tools section in your gameinfo.txt
    • Use {{codelink|vbsp]], vvis, vrad and studiomdl keys, with the values being options to add
  • Added func_simpleladder format support (used by Left 4 Dead 2 Left 4 Dead 2)
    • If your mod supports it, you can also compile this ladder format with -simpleladders parameter
  • Added experimental support for compiling different static prop formats
  • Added support for variable brush, displacement and texinfo limit
    • Change them via -maxbrushes, -maxdispinfo and -maxtexinfo respectively
    • NOTE: This will only work on engines that support the higher limit
  • Blocklight and blockLOS tooltextures no longer cut out faces from other func_detail
    • This change was made to support Left 4 Dead 2 Left 4 Dead 2 maps, which rely on this change
    • -leaktest will now stop on areaportal leaks
  • Restored support for -maxlightmapdim and -defaultluxelsize parameters
  • func_occluder, func_areaportal, func_viscluster, func_nobevel, parallax_obb no longer count towards the brush limit
  • Improved performance of "Fixing up env_cubemap materials" step
  • Improved clarity of some warnings and removed useless ones
  • Renamed waterindices to primindices (less misleading name)
  • Fixed instances not collapsing correctly if FGD had unrecognized types
  • Fixed instance names prefixed with ! being remapped
  • Fixed remapped instance I/O always using ESC separators (fixes HL2 compatibility)
  • Fixed recursive instance paths not working
  • Fixed cubemaps not being transformed inside instances
  • Fixed smoothing groups not working on func_detail
  • Fixed displacements not being rotated correctly in instances
  • Fixed occluders not being collapsed correctly in instances
  • Fixed cubemap side IDs not being remapped in instances
  • Fixed missing texture cubemaps if skybox has mismatched side dimensions
  • Fixed crash if an instance overflowed brush or brushsides limit
  • Fixed crash if instance name was too long
  • Fixed crash if no surfaceprops were loaded
  • Fixed crash if map had more than 32768 texinfo
  • Fixed crash if displacement face had less than 3 points
  • Fixed bug where brushside count was varying depending on the CPU
  • Deprecated manifests
  • Deprecated func_viscluster entity

Supported games

VBSP++ is currently available for the following games and engine branches:

Supported Game Notes
Source 2013 Singleplayer Source 2013 Singleplayer
Source SDK Base 2013 - Singleplayer Source SDK Base 2013 - Singleplayer Installation:
   First method: Extract "tools_plusplus" folder, then run toolsplusplus_installer.exe, pointing it to the game root directory.
   Second method: Install the tool to a Source 2013 SP game's bin/x64 folder (you will need to create the "x64" folder), then go to compatibility folder and drop all the .dll files into x64 folder.
After installing VBSP++, either open Hammer (or Hammer++) in your Source 2013 SP game and edit the BSP executable pointer to $SteamUserDir\Your Source 2013 SP game\bin\x64\vbspplusplus.exe, or use the tool from the command-line.
Use -singleplayer command line argument to compile Singleplayer format maps.
Note.pngNote:Any features which require Static prop flags greater than 0xFF are unavailable when compiling for the singleplayer format, as the static prop lump used by the older format only supports 8 bits of flags, instead of 32.
Half-Life 2 Half-Life 2 and its episodes (one, two)
Portal Portal
Source 2013 Multiplayer Source 2013 Multiplayer
Source SDK Base 2013 - Multiplayer Source SDK Base 2013 - Multiplayer Legacy version (previous2021 branch).
Installation:
   First method: Extract "tools_plusplus" folder, then run toolsplusplus_installer.exe, pointing it to the game root directory.
   Second method: Install the tool to a Source 2013 MP game's bin/x64 folder (you will need to create the "x64" folder), then go to compatibility folder and drop all the .dll files into x64 folder.
After installing VBSP++, either open Hammer (or Hammer++) in your Source 2013 MP game and edit the BSP executable pointer to $SteamUserDir\Your Source 2013 SP game\bin\x64\vbspplusplus.exe, or use the tool from the command-line.
This method will also works with pre-2021 version of Counter-Strike: Source, Half-Life 2: Deathmatch, etc... games, aswell as pre-2021 version of Source 2013 Multiplayer.
Team Fortress 2 branch Team Fortress 2 branch (x64 only)
Counter-Strike: Source Counter-Strike: Source Installation: Follow same instructions as Source 2013 MP games. If you do the second method, ignore the compatibility folder (and it's dll files) completely.
Day of Defeat: Source Day of Defeat: Source
Half-Life 2: Deathmatch Half-Life 2: Deathmatch
Team Fortress 2 Team Fortress 2
Source SDK Base 2013 - Multiplayer Source SDK Base 2013 - Multiplayer
Other
Left 4 Dead 2 Left 4 Dead 2 Auto-detect & compile using correct BSP format, otherwise use -l4d2 command line argument.
Alien Swarm Alien Swarm
Alien Swarm: Reactive Drop Alien Swarm: Reactive Drop
Auto-detect & compile using correct BSP format, otherwise use -asw command line argument.
Portal 2 Portal 2 Partial support. func_instance_io_proxy is not yet supported. Auto-detect & compile using correct BSP format, otherwise use -portal2 command line argument.
Counter-Strike: Global Offensive Counter-Strike: Global Offensive
Insurgency Insurgency
Day of Infamy Day of Infamy
Black Mesa Black Mesa
Auto-detect & compile using correct BSP format, otherwise use -csgo command line argument.
Garry's Mod Garry's Mod

Other games/mods tested & Additional notes

VBSP++ has been unofficially tested with the following games or engine branch:

Game Engine branch (game) Notes ViewDiscuss
All third-party Source 2013 Singleplayer Source 2013 Singleplayer games Source 2013 Singleplayer Installation:
   First method: Extract "tools_plusplus" folder, then run toolsplusplus_installer.exe, pointing it to the game root directory.
   Second method: Install the tool to a Source 2013 SP game's bin/x64 folder (you will need to create the "x64" folder), then go to compatibility folder and drop all the .dll files into x64 folder.
After installing VBSP++, either open Hammer (or Hammer++) in your Source 2013 SP game and edit the BSP executable pointer to $SteamUserDir\Your Source 2013 SP game\bin\x64\vbspplusplus.exe, or use the tool from the command-line.
Use -singleplayer command line argument to compile Singleplayer format maps.
Note.pngNote:Any features which require Static prop flags greater than 0xFF are unavailable when compiling for the singleplayer format, as the static prop lump used by the older format only supports 8 bits of flags, instead of 32.
All third-party Source 2013 Multiplayer Source 2013 Multiplayer games Source 2013 Multiplayer Installation:
   First method: Extract "tools_plusplus" folder, then run toolsplusplus_installer.exe, pointing it to the game root directory.
   Second method: Install the tool to a Source 2013 MP game's bin/x64 folder (you will need to create the "x64" folder), then go to compatibility folder and drop all the .dll files into x64 folder.
After installing VBSP++, either open Hammer (or Hammer++) in your Source 2013 MP game and edit the BSP executable pointer to $SteamUserDir\Your Source 2013 SP game\bin\x64\vbspplusplus.exe, or use the tool from the command-line.
This method will also works with pre-2021 version of Counter-Strike: Source, Half-Life 2: Deathmatch, etc... games, aswell as pre-2021 version of Source 2013 Multiplayer.
All Source 2004 Source 2004 and Source 2006 Source 2006 games Source 2004
Source 2006
Not supported.
Left 4 Dead Left 4 Dead Left 4 Dead engine branch Not yet supported.

External links

Navigation