Difference between revisions of "VBSP"

From Valve Developer Community
Jump to: navigation, search
m (Categorised)
 
(49 intermediate revisions by 33 users not shown)
Line 1: Line 1:
A compiling tool that creates the BSP(Binary Space Partition) file that will be your map. Can be run by itself to create a basic map, use of the other 2 tools is recommended for maximum performance and result.
+
{{otherlang2
 +
|ru=VBSP:ru
 +
}}
  
----
+
{{toc-right}}
  
'''See Also:'''
+
'''VBSP''' is the tool that compiles a raw [[VMF]] file into the [[Binary Space Partition]] format. It is generally followed by [[VVIS]] and [[VRAD]].
  
[[Vrad|VRAD]]
+
VBSP will:
  
[[Vvis|VVIS]]
+
* Convert [[brush]]es to polygons
 +
* Generate [[visleaf|visleaves]]
 +
* Generate [[detail props]]
 +
* Swallow most [[internal entity|internal entities]] into [[the world]]
 +
* Eeplace [[$envmap|specular materials]] with [[patch]]ed versions that link to the nearest [[env_cubemap|cubemap]]
 +
* Embed the [[entity block]]
 +
* {{csgo}} Merge groups of [[prop_static|static props]] sharing the same [[VMT|material]]
 +
 
 +
While the resulting BSP file can be played directly it has no visibility control (poor performance) and no lighting.
 +
 
 +
{{bug|In non-L4D branch games, <code>.mdl</code> files that have the <code>IDST1</code> header will fail to load for VBSP, see [[VRAD]]'s bugs.}}
 +
 
 +
== Launch options ==
 +
=== Syntax ===
 +
 
 +
vbsp [options...] vmf_file
 +
 
 +
For example:
 +
 
 +
"Half-Life 2\bin\vbsp.exe" -onlyents sdk_trainstation_01
 +
 
 +
This will re-embed the entity block without affecting the world.
 +
 
 +
=== Common options ===
 +
 
 +
{{Note|<code>-onlyents</code> and <code>-keepstalezip</code> will mark the map as stale by embedding the file stale.txt into the BSP. Loading stale maps in the engine will cause a "This map is not final!!" warning message in the console.}}
 +
 
 +
; <code>-v</code>
 +
; <code>-verbose</code>
 +
: Turn on verbose output (also shows more command-line options). Use without any other parameters.
 +
; <code>-onlyents</code>
 +
: Only import the entities from the VMF. Brushes and internal entities are not modified. Conserves existing lighting data.
 +
; <code>-onlyprops</code>
 +
: Only update static and detail props (i.e. the internal entities). Does not generate a .prt file, making VVIS fail!
 +
; <code>-glview</code>
 +
: Writes [[glview]] data to the VMF's directory. <code>-tmpout</code> will cause the files will be written to <code>\tmp</code> instead.
 +
; <code>-nodetail</code>
 +
: Removes [[func_detail]] brushes. The geometry left over is what affects visibility.
 +
; <code>-nowater</code>
 +
: Get rid of water brushes.
 +
; <code>-low</code>
 +
: Run as an idle-priority process.
 +
; <code>-vproject <directory></code>
 +
: Override the [[VPROJECT]] environment variable.
 +
; <code>-game <directory></code>
 +
: Specify the folder of the <code>gameinfo.txt</code> file
 +
; <code>-embed <directory></code>
 +
: Embed the contents of <directory> in the packfile
 +
 
 +
=== Advanced options ===
 +
 
 +
{{ColumnBox|count=2|
 +
; <code>-novconfig</code>
 +
: Don't bring up graphical UI on vproject errors.
 +
; <code>-threads</code>
 +
: Control the number of threads vbsp uses (defaults to the # of processors (times 2 for Hypertreading/SMT CPU's) on your machine).
 +
; <code>-verboseentities</code>
 +
: If -v is on, this disables verbose output for submodels.
 +
; <code>-noweld</code>
 +
: Don't join face vertexes together.
 +
; <code>-nocsg</code>
 +
: Don't chop out intersecting brush areas.
 +
; <code>-noshare</code>
 +
: Emit unique face edges instead of sharing them.
 +
; <code>-notjunc</code>
 +
: Don't fixup any t-junctions.
 +
; <code>-allowdetailcracks</code>
 +
: Don't fixup t-junctions on func_detail.
 +
; <code>-nodrawtriggers</code>
 +
: Compiles all triggers as if they were using Nodraw texture, only affects triggers using a texture with [[%CompileTrigger]].
 +
; <code>-noopt</code>
 +
: By default, vbsp removes the 'outer shell' of the map, which are all the faces you can't see because you can never get outside the map. -noopt disables this behavior.
 +
; <code>-noprune</code>
 +
: Don't prune neighboring solid nodes.
 +
; <code>-nomerge</code>
 +
: Don't merge together chopped faces on nodes.
 +
; <code>-nomergewater</code>
 +
: Don't merge together chopped faces on water.
 +
; <code>-nosubdiv</code>
 +
: Don't subdivide faces for lightmapping.
 +
; <code>-micro <#></code>
 +
: vbsp will warn when brushes are output with a volume less than this number (default: 1.0).
 +
; <code>-fulldetail</code>
 +
: Mark all detail geometry as normal geometry (so all detail geometry will affect visibility).
 +
; <code>-leaktest</code>
 +
: Stop processing the map if a leak is detected. Whether or not this flag is set, a leak file will be written out at <vmf filename>.lin, and it can be imported into Hammer.
 +
; <code>-bumpall</code>
 +
: Force all surfaces to be bump mapped.
 +
; <code>-snapaxial</code>
 +
: Snap axial planes to integer coordinates.
 +
; <code>-block # #</code>
 +
: Control the grid size mins that vbsp chops the level on.
 +
{{bug|Causes VBSP to fail completely.}}
 +
; <code>-blocks # # # #</code>
 +
: Enter the mins and maxs for the grid size vbsp uses.
 +
; <code>-dumpstaticprops</code>
 +
: Dump static props to staticprop*.txt
 +
; <code>-dumpcollide</code>
 +
: Write files with collision info.
 +
; <code>-forceskyvis</code>
 +
: Enable vis calculations in [[3D Skybox]] leaves.
 +
; <code>-luxelscale #</code>
 +
: Scale all lightmaps by this amount (default: 1.0).
 +
; <code>-lightifmissing</code>
 +
: Force lightmaps to be generated for all surfaces even if they don't need lightmaps.
 +
; <code>-localphysx</code>
 +
: {{todo|Currently unknown.}}
 +
; <code>-keepstalezip</code>
 +
: Keep the BSP's zip files intact but regenerate everything else.
 +
; <code>-replacematerials</code>
 +
: Substitute materials according to materialsub.txt in content\maps
 +
; <code>-FullMinidumps</code>
 +
: Write large minidumps on crash.
 +
; <code>-novirtualmesh</code>
 +
: Fix Physics [[Entities fall through displacements]] at cost of bigger bsp size
 +
; <code>-allowdynamicpropsasstatic</code> {{GMOD only}}
 +
: Allow all models with the 'static' flag in the model viewer to be used on [[prop_static]], even when their propdata doesn't contain 'allowstatic'.
 +
}}
 +
 
 +
=== {{CSGO add|Static Prop Combine}} ===
 +
{{ColumnBox|count=2|
 +
; <code>-StaticPropCombine</code>
 +
: Merges static props together according to the rules defined in <code>scripts/hammer/spcombinerules/spcombinerules.txt</code>. This lowers the number of draw calls, increasing performance. It can also be used to lower the number of static props present in a map. See [[Static Prop Combine]].
 +
; <code>-StaticPropCombine_AutoCombine</code>
 +
: Automatically generate static prop combine rules for props that VBSP deems should be combined. {{Note|This does not write to <code>spcombinerules.txt.</code>}}
 +
; <code>-StaticPropCombine_ConsiderVis</code>
 +
: Instead of using the distance limit, combine all props in the group that share visclusters.
 +
; <code>-StaticPropCombine_SuggestRules</code>
 +
: Lists models sharing the same material that should be added to <code>spcombinerules.txt</code>.
 +
; <code>-StaticPropCombine_MinInstances <[[int]]></code>
 +
: Set the minimum number of props in a combine group required to create a combined prop.
 +
: {{Tip|Valve had this set to 3 for the new Dust 2.}}
 +
; <code>-StaticPropCombine_PrintCombineRules</code>
 +
: {{Confirm|Prints the combine rules? Hasn't been working for me.}}
 +
; <code>-StaticPropCombine_ColorInstances</code>
 +
: {{Confirm|Does this color the instances?}}
 +
; <code>-KeepSources</code>
 +
: Don't delete the autogenerated QCs and unpacked model files after finishing.
 +
; <code>-CombineIgnore_FastReflection</code>
 +
: Combine props, even if they have differing '''Render in Fast Reflections''' settings.
 +
; <code>-CombineIgnore_Normals</code>
 +
: Combine props, even if they have differing '''Ignore Normals''' settings.
 +
; <code>-CombineIgnore_NoShadow</code>
 +
: Combine props, even if they have differing '''Disable Shadows''' settings.
 +
; <code>-CombineIgnore_NoVertexLighting</code>
 +
: Combine props, even if they have differing '''Disable Vertex lighting''' settings.
 +
; <code>-CombineIgnore_NoFlashlight</code>
 +
: Combine props, even if they have differing '''Disable flashlight''' settings.
 +
; <code>-CombineIgnore_NoSelfShadowing</code>
 +
: Combine props, even if they have differing '''Disable Self-Shadowing''' settings.
 +
; <code>-CombineIgnore_DisableShadowDepth</code>
 +
: Combine props, even if they have differing '''Disable ShadowDepth''' settings.
 +
}}
 +
 
 +
=== Nonfunctional Options ===
 +
 
 +
; <code>-linuxdata</code>
 +
: Force it to write physics data for linux multiplayer servers. ( It will automatically write this data if it finds certain entities like info_player_terrorist, info_player_deathmatch, info_player_teamspawn, info_player_axis, or info_player_coop. )
 +
; <code>-nolinuxdata</code>
 +
: Force it to not write physics data for linux multiplayer servers, even if there are multiplayer entities in the map.
 +
; <code>-virtualdispphysics</code>
 +
: Use virtual (not precomputed) displacement collision models
 +
; <code>-xbox</code>
 +
: Enable mandatory Xbox 1 optimisation.
 +
 
 +
== Console output ==
 +
{{todo|Add description about every output (WriteBSP, other)}}
 +
 
 +
 
 +
== See also ==
 +
* [[Map Compiling Theory]]
 +
* [[Decompiling Maps]]
 +
 
 +
{{SDKTools}}
  
[[Category:Tools]]
 
 
[[Category:Level Design]]
 
[[Category:Level Design]]
[[Category:Glossary]]
 

Latest revision as of 22:49, 22 September 2020

Русский

VBSP is the tool that compiles a raw VMF file into the Binary Space Partition format. It is generally followed by VVIS and VRAD.

VBSP will:

While the resulting BSP file can be played directly it has no visibility control (poor performance) and no lighting.

Bug: In non-L4D branch games, .mdl files that have the IDST1 header will fail to load for VBSP, see VRAD's bugs.

Launch options

Syntax

vbsp [options...] vmf_file

For example:

"Half-Life 2\bin\vbsp.exe" -onlyents sdk_trainstation_01

This will re-embed the entity block without affecting the world.

Common options

Note:-onlyents and -keepstalezip will mark the map as stale by embedding the file stale.txt into the BSP. Loading stale maps in the engine will cause a "This map is not final!!" warning message in the console.
-v
-verbose
Turn on verbose output (also shows more command-line options). Use without any other parameters.
-onlyents
Only import the entities from the VMF. Brushes and internal entities are not modified. Conserves existing lighting data.
-onlyprops
Only update static and detail props (i.e. the internal entities). Does not generate a .prt file, making VVIS fail!
-glview
Writes glview data to the VMF's directory. -tmpout will cause the files will be written to \tmp instead.
-nodetail
Removes func_detail brushes. The geometry left over is what affects visibility.
-nowater
Get rid of water brushes.
-low
Run as an idle-priority process.
-vproject <directory>
Override the VPROJECT environment variable.
-game <directory>
Specify the folder of the gameinfo.txt file
-embed <directory>
Embed the contents of <directory> in the packfile

Advanced options

-novconfig
Don't bring up graphical UI on vproject errors.
-threads
Control the number of threads vbsp uses (defaults to the # of processors (times 2 for Hypertreading/SMT CPU's) on your machine).
-verboseentities
If -v is on, this disables verbose output for submodels.
-noweld
Don't join face vertexes together.
-nocsg
Don't chop out intersecting brush areas.
-noshare
Emit unique face edges instead of sharing them.
-notjunc
Don't fixup any t-junctions.
-allowdetailcracks
Don't fixup t-junctions on func_detail.
-nodrawtriggers
Compiles all triggers as if they were using Nodraw texture, only affects triggers using a texture with %CompileTrigger.
-noopt
By default, vbsp removes the 'outer shell' of the map, which are all the faces you can't see because you can never get outside the map. -noopt disables this behavior.
-noprune
Don't prune neighboring solid nodes.
-nomerge
Don't merge together chopped faces on nodes.
-nomergewater
Don't merge together chopped faces on water.
-nosubdiv
Don't subdivide faces for lightmapping.
-micro <#>
vbsp will warn when brushes are output with a volume less than this number (default: 1.0).
-fulldetail
Mark all detail geometry as normal geometry (so all detail geometry will affect visibility).
-leaktest
Stop processing the map if a leak is detected. Whether or not this flag is set, a leak file will be written out at <vmf filename>.lin, and it can be imported into Hammer.
-bumpall
Force all surfaces to be bump mapped.
-snapaxial
Snap axial planes to integer coordinates.
-block # #
Control the grid size mins that vbsp chops the level on.
Bug: Causes VBSP to fail completely.
-blocks # # # #
Enter the mins and maxs for the grid size vbsp uses.
-dumpstaticprops
Dump static props to staticprop*.txt
-dumpcollide
Write files with collision info.
-forceskyvis
Enable vis calculations in 3D Skybox leaves.
-luxelscale #
Scale all lightmaps by this amount (default: 1.0).
-lightifmissing
Force lightmaps to be generated for all surfaces even if they don't need lightmaps.
-localphysx
To do: Currently unknown.
-keepstalezip
Keep the BSP's zip files intact but regenerate everything else.
-replacematerials
Substitute materials according to materialsub.txt in content\maps
-FullMinidumps
Write large minidumps on crash.
-novirtualmesh
Fix Physics Entities fall through displacements at cost of bigger bsp size
-allowdynamicpropsasstatic (only in <Garry's Mod>)
Allow all models with the 'static' flag in the model viewer to be used on prop_static, even when their propdata doesn't contain 'allowstatic'.

Static Prop Combine (in all games since <Counter-Strike: Global Offensive>)

-StaticPropCombine
Merges static props together according to the rules defined in scripts/hammer/spcombinerules/spcombinerules.txt. This lowers the number of draw calls, increasing performance. It can also be used to lower the number of static props present in a map. See Static Prop Combine.
-StaticPropCombine_AutoCombine
Automatically generate static prop combine rules for props that VBSP deems should be combined.
Note:This does not write to spcombinerules.txt.
-StaticPropCombine_ConsiderVis
Instead of using the distance limit, combine all props in the group that share visclusters.
-StaticPropCombine_SuggestRules
Lists models sharing the same material that should be added to spcombinerules.txt.
-StaticPropCombine_MinInstances <int>
Set the minimum number of props in a combine group required to create a combined prop.
Tip:Valve had this set to 3 for the new Dust 2.
-StaticPropCombine_PrintCombineRules
Confirm:Prints the combine rules? Hasn't been working for me.
-StaticPropCombine_ColorInstances
Confirm:Does this color the instances?
-KeepSources
Don't delete the autogenerated QCs and unpacked model files after finishing.
-CombineIgnore_FastReflection
Combine props, even if they have differing Render in Fast Reflections settings.
-CombineIgnore_Normals
Combine props, even if they have differing Ignore Normals settings.
-CombineIgnore_NoShadow
Combine props, even if they have differing Disable Shadows settings.
-CombineIgnore_NoVertexLighting
Combine props, even if they have differing Disable Vertex lighting settings.
-CombineIgnore_NoFlashlight
Combine props, even if they have differing Disable flashlight settings.
-CombineIgnore_NoSelfShadowing
Combine props, even if they have differing Disable Self-Shadowing settings.
-CombineIgnore_DisableShadowDepth
Combine props, even if they have differing Disable ShadowDepth settings.

Nonfunctional Options

-linuxdata
Force it to write physics data for linux multiplayer servers. ( It will automatically write this data if it finds certain entities like info_player_terrorist, info_player_deathmatch, info_player_teamspawn, info_player_axis, or info_player_coop. )
-nolinuxdata
Force it to not write physics data for linux multiplayer servers, even if there are multiplayer entities in the map.
-virtualdispphysics
Use virtual (not precomputed) displacement collision models
-xbox
Enable mandatory Xbox 1 optimisation.

Console output

To do: Add description about every output (WriteBSP, other)


See also