这篇条目有关 Source引擎。如需详情,点击这里。

Zh/VBSP: Difference between revisions

From Valve Developer Community
< Zh
Jump to navigation Jump to search
m (→‎top: clean up, replaced: {{Language subpage → {{langsp)
m (Setting bug notice hidetested=1 param on page where the bug might not need tested in param specified)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{langsp}}
{{LanguageBar}}
{{Source topicon}}
{{map compile pipeline|source1}}
 


{{toc-right}}
{{toc-right}}


'''VBSP''' 是将原始 [[VMF]] 文件编译为[[Binary Space Partition|二元空间划分]]格式。一般后面跟着 [[VVIS]] [[VRAD|VRAD]]
'''VBSP''' 是将原始 {{L|VMF}} 文件编译为{{L|Binary Space Partition|BSP}}格式。一般后面跟着 {{L|VVIS}} {{L|VRAD}}


VBSP 将:
VBSP 将:


* 将[[brush|固体]]转换为几何图形
* 将{{L|brush|固体}}转换为几何图形
* 生成[[visleaf|可见叶子块]]
* 生成{{L|visleaf|可见叶子块}}
* 生成[[detail props|细节道具]]
* 生成{{L|detail props|细节道具}}
* 将大部分[[internal entity|内部实体]]吞入[[the world|世界]]
* 将大部分{{L|internal entity|内部实体}}吞入{{L|the world|世界}}
* 将[[$envmap|反光材质]]替换为链接到最近的 [[env_cubemap|cubemap]] [[patch|修补]]版本
* 将{{L|$envmap|反光材质}}替换为链接到最近的 {{L|env_cubemap|cubemap}} {{L|patch|修补}}版本
* 嵌入[[entity block|实体块]]
* 嵌入{{L|entity block|实体块}}
* {{csgo}} 合并共享相同[[VMT|材质]][[prop_static|静态道具]]
* {{csgo}} 合并共享相同{{L|VMT|材质}}{{L|prop_static|静态道具}}


虽然生成的 BSP 文件可以直接游玩,但它没有可见性控制(性能不佳)和照明。
虽然生成的 BSP 文件可以直接游玩,但它没有可见性控制(性能不佳)和照明。


{{bug|在非求生之路分支游戏中,具有<code>IDST1</code>标头的<code>.mdl</code>文件将无法为 VBSP 加载,请参阅 [[VRAD|VRAD]] 的错误。}}
{{bug|hidetested=1|在非求生之路分支游戏中,具有<code>IDST1</code>标头的<code>.mdl</code>文件将无法为 VBSP 加载,请参阅 {{L|VRAD}} 的错误。}}


== 启动选项 ==
== 启动选项 ==
Line 42: Line 45:
: 只更新静态和细节道具(即内部实体)。不生成 .prt 文件,导致 VVIS 错误!
: 只更新静态和细节道具(即内部实体)。不生成 .prt 文件,导致 VVIS 错误!
; <code>-glview</code>
; <code>-glview</code>
: 将 [[glview]] 数据写入 VMF 的目录。 <code>-tmpout</code>将导致文件将写入<code>\tmp</code>代替。
: 将 {{L|glview}} 数据写入 VMF 的目录。 <code>-tmpout</code>将导致文件将写入<code>\tmp</code>代替。
; <code>-nodetail</code>
; <code>-nodetail</code>
: 移除 [[func_detail]] 笔刷。剩下的几何图形(固体)会影响可见性。
: 移除 {{L|func_detail}} 笔刷。剩下的几何图形(固体)会影响可见性。
; <code>-nowater</code>
; <code>-nowater</code>
: 移除水固体。
: 移除水固体。
Line 50: Line 53:
: 作为 Idle 优先级进程运行。
: 作为 Idle 优先级进程运行。
; <code>-vproject <directory></code>
; <code>-vproject <directory></code>
: 覆盖 [[VPROJECT]] 环境变量。
: 覆盖 {{L|VPROJECT}} 环境变量。
; <code>-game <directory></code>
; <code>-game <directory></code>
: 指定<code>gameinfo.txt</code>文件所在的文件夹
: 指定<code>gameinfo.txt</code>文件所在的文件夹
; <code>-insert_search_path <directory></code>
; <code>-insert_search_path <directory></code>
: 包括一个额外的基础目录,用于安装附加内容(如 [[Gameinfo.txt]] 条目)。如果您想出于任何原因将某些资源与 mod 分开,则很有用。
: 包括一个额外的基础目录,用于安装附加内容(如 {{L|Gameinfo.txt}} 条目)。如果您想出于任何原因将某些资源与 mod 分开,则很有用。
; <code>-embed <directory></code>
; <code>-embed <directory></code>
: 将<directory>的内容嵌入到包文件中
: 将<directory>的内容嵌入到包文件中
Line 78: Line 81:
: 不要修复 {{ent|func_detail}} 上的 T 形连接。
: 不要修复 {{ent|func_detail}} 上的 T 形连接。
; <code>-nodrawtriggers</code>
; <code>-nodrawtriggers</code>
: 编译所有 trigger,就好像它们使用 Nodraw 纹理一样,只影响使用带有 [[%CompileTrigger]] 的纹理的触发器。
: 编译所有 trigger,就好像它们使用 Nodraw 纹理一样,只影响使用带有 {{L|%CompileTrigger}} 的纹理的触发器。
; <code>-noopt</code>
; <code>-noopt</code>
: 默认情况下,vbsp 会移除地图的“外壳”,即您无法看到的所有面,因为您永远无法离开地图。使用 -noopt 禁用此操作。
: 默认情况下,vbsp 会移除地图的“外壳”,即您无法看到的所有面,因为您永远无法离开地图。使用 -noopt 禁用此操作。
Line 101: Line 104:
; <code>-block # #</code>
; <code>-block # #</code>
: 控制 vbsp 切割关卡的网格大小。
: 控制 vbsp 切割关卡的网格大小。
{{bug|导致 VBSP 完全崩溃。}}
{{bug|hidetested=1|导致 VBSP 完全崩溃。}}
; <code>-blocks # # # #</code>
; <code>-blocks # # # #</code>
: 输入 vbsp 使用的网格大小的最小值和最大值。
: 输入 vbsp 使用的网格大小的最小值和最大值。
Line 109: Line 112:
: 写入带有碰撞信息的文件。
: 写入带有碰撞信息的文件。
; <code>-forceskyvis</code>
; <code>-forceskyvis</code>
: 在[[3D Skybox|三维天空盒]]叶子块中启用可见性计算。
: 在{{L|3D Skybox|三维天空盒}}叶子块中启用可见性计算。
; <code>-luxelscale #</code>
; <code>-luxelscale #</code>
: 按此量缩放所有光照贴图(默认值:1.0)。
: 按此量缩放所有光照贴图(默认值:1.0)。
Line 123: Line 126:
: 在崩溃时写入大型转储。
: 在崩溃时写入大型转储。
; <code>-novirtualmesh</code>
; <code>-novirtualmesh</code>
: 以更大的 bsp 大小为代价修复物理[[Entities fall through displacements|实体在置换表层]]上的物理效果
: 以更大的 bsp 大小为代价修复物理{{L|Entities fall through displacements|实体在置换表层}}上的物理效果
; <code>-allowdynamicpropsasstatic</code> {{GMOD only}}
; <code>-allowdynamicpropsasstatic</code> {{GMOD only}}
: 允许在模型查看器中使用所有带有“static”标志的模型在 [[prop_static]] 上使用,即使它们的 propdata 不包含“allowstatic”。
: 允许在模型查看器中使用所有带有“static”标志的模型在 {{L|prop_static}} 上使用,即使它们的 propdata 不包含“allowstatic”。
}}
}}


Line 132: Line 135:
{{ColumnBox|count=2|
{{ColumnBox|count=2|
; <code>-StaticPropCombine</code>
; <code>-StaticPropCombine</code>
: 根据<code>scripts/hammer/spcombinerules/spcombinerules.txt</code>中定义的规则将静态道具合并在一起。这减少了绘制调用的数量,提高了性能。它还可用于减少地图中存在的静态道具的数量。参见 [[Static Prop Combine]]
: 根据<code>scripts/hammer/spcombinerules/spcombinerules.txt</code>中定义的规则将静态道具合并在一起。这减少了绘制调用的数量,提高了性能。它还可用于减少地图中存在的静态道具的数量。参见 {{L|Static Prop Combine}}
; <code>-StaticPropCombine_AutoCombine</code>
; <code>-StaticPropCombine_AutoCombine</code>
: 为 VBSP 认为应该组合的道具自动生成静态道具组合规则。 {{note|这不会写入<code>spcombinerules.txt</code>。}}
: 为 VBSP 认为应该组合的道具自动生成静态道具组合规则。 {{note|这不会写入<code>spcombinerules.txt</code>。}}
Line 139: Line 142:
; <code>-StaticPropCombine_SuggestRules</code>
; <code>-StaticPropCombine_SuggestRules</code>
: 列出应该添加到<code>spcombinerules.txt</code>的共享相同材质的模型。
: 列出应该添加到<code>spcombinerules.txt</code>的共享相同材质的模型。
; <code>-StaticPropCombine_MinInstances <[[int]]></code>
; <code>-StaticPropCombine_MinInstances <{{L|int}}></code>
: 设置创建组合道具所需的组合组中的最小道具数。
: 设置创建组合道具所需的组合组中的最小道具数。
: {{Tip|Valve 将新的 Dust 2 设置为 3。}}
: {{Tip|Valve 将新的 Dust 2 设置为 3。}}
Line 180: Line 183:


== 另请参阅 ==
== 另请参阅 ==
* [[Map Compiling Theory]]
* {{L|Map Compiling Theory}}
* [[Decompiling Maps]]
* {{L|Decompiling Maps}}


{{SDKTools}}
{{SDKTools}}


[[Category:Level Design]]
[[Category:Level Design]]
{{sdktools}}
{{ACategory|Official Source Tools}}
{{ACategory|Source 1 BSP compilers}}

Latest revision as of 07:18, 20 May 2025

English (en)Español (es)Русский (ru)中文 (zh)Translate (Translate)

VBSPVVISVRADBSPZIP


VBSP 是将原始 VMF(en) 文件编译为BSP(en)格式。一般后面跟着 VVIS(en)VRAD(en)

VBSP 将:

虽然生成的 BSP 文件可以直接游玩,但它没有可见性控制(性能不佳)和照明。

Icon-Bug.png错误:在非求生之路分支游戏中,具有IDST1标头的.mdl文件将无法为 VBSP 加载,请参阅 VRAD(en) 的错误。

启动选项

语法

vbsp <选项...> <vmf_文件>

例如:

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

这将重新嵌入实体块而不影响世界。

常用选项

Note.png注意:-onlyents-keepstalezip将通过将文件 stale.txt 嵌入到 BSP 中来将地图标记为过时。在引擎中加载陈旧的地图会导致“This map is not final!!(这张地图不是最终的!!)”控制台中的警告消息。
-v
-verbose
打开详细输出(还显示更多命令行选项)。不带任何其他参数使用。
-onlyents
仅从 VMF 导入实体。固体和内部实体不会被修改。保存现有的照明数据。
-onlyprops
只更新静态和细节道具(即内部实体)。不生成 .prt 文件,导致 VVIS 错误!
-glview
glview(en) 数据写入 VMF 的目录。 -tmpout将导致文件将写入\tmp代替。
-nodetail
移除 func_detail(en) 笔刷。剩下的几何图形(固体)会影响可见性。
-nowater
移除水固体。
-low
作为 Idle 优先级进程运行。
-vproject <directory>
覆盖 VPROJECT(en) 环境变量。
-game <directory>
指定gameinfo.txt文件所在的文件夹
-insert_search_path <directory>
包括一个额外的基础目录,用于安装附加内容(如 Gameinfo.txt(en) 条目)。如果您想出于任何原因将某些资源与 mod 分开,则很有用。
-embed <directory>
将<directory>的内容嵌入到包文件中

高级选项

-novconfig
不要在 vproject 错误上显示图形 UI。
-threads
控制 vbsp 使用的线程数(默认为您设备上的处理器数量(Hypertreading/SMT CPU 的 2 倍))。
-verboseentities
如果 -v 启用,这将禁用子模型的详细输出。
-noweld
不要将面顶点连接在一起。
-nocsg
不要不绘制相交的固体区域。
-noshare
发出独特的面边缘而不是共享它们。
-notjunc
不要修复任何 T 形连接。(Don't fixup any t-junctions.)
-allowdetailcracks
不要修复 func_detail 上的 T 形连接。
-nodrawtriggers
编译所有 trigger,就好像它们使用 Nodraw 纹理一样,只影响使用带有 %CompileTrigger(en) 的纹理的触发器。
-noopt
默认情况下,vbsp 会移除地图的“外壳”,即您无法看到的所有面,因为您永远无法离开地图。使用 -noopt 禁用此操作。
-noprune
不要修整相邻的固体节点。
-nomerge
不要将节点上的切碎的面合并在一起。
-nomergewater
不要在水面上将切碎的面合并在一起。
-nosubdiv
不要为光照贴图细分面。
-micro <#>
当固体输出的体积小于此数字(默认值:1.0)时,vbsp 将发出警告。
-fulldetail
将所有细节几何体标记为普通几何体(因此所有细节几何体都会影响可见性)。
-leaktest
如果检测到泄漏,则停止处理地图。无论是否设置此选项,(vbsp)都会在 <vmf 文件名>.lin 处写出一个泄漏文件,并且可以将其导入到 Hammer 中。
-bumpall
强制所有曲面进行凹凸贴图。
-snapaxial
将轴向平面对齐到整数坐标。
-block # #
控制 vbsp 切割关卡的网格大小。
Icon-Bug.png错误:导致 VBSP 完全崩溃。
-blocks # # # #
输入 vbsp 使用的网格大小的最小值和最大值。
-dumpstaticprops
将静态道具转储到 staticprop*.txt
-dumpcollide
写入带有碰撞信息的文件。
-forceskyvis
三维天空盒(en)叶子块中启用可见性计算。
-luxelscale #
按此量缩放所有光照贴图(默认值:1.0)。
-lightifmissing
强制为所有表面生成光照贴图,即使它们不需要光照贴图。
-localphysx
待完善: 目前未知。
-keepstalezip
保持 BSP 的 zip 文件完好无损,但重新生成其他所有内容。
-replacematerials
根据 content\maps 中的 materialsub.txt 替换材质
-FullMinidumps
在崩溃时写入大型转储。
-novirtualmesh
以更大的 bsp 大小为代价修复物理实体在置换表层(en)上的物理效果
-allowdynamicpropsasstatic Template:GMOD only
允许在模型查看器中使用所有带有“static”标志的模型在 prop_static(en) 上使用,即使它们的 propdata 不包含“allowstatic”。

静态道具合并

(存在于自 反恐精英:全球攻势 以来)

-StaticPropCombine
根据scripts/hammer/spcombinerules/spcombinerules.txt中定义的规则将静态道具合并在一起。这减少了绘制调用的数量,提高了性能。它还可用于减少地图中存在的静态道具的数量。参见 Static Prop Combine(en)
-StaticPropCombine_AutoCombine
为 VBSP 认为应该组合的道具自动生成静态道具组合规则。
Note.png注意:这不会写入spcombinerules.txt
-StaticPropCombine_ConsiderVis
不使用距离限制,而是合并组中共享可见簇的所有道具。
-StaticPropCombine_SuggestRules
列出应该添加到spcombinerules.txt的共享相同材质的模型。
-StaticPropCombine_MinInstances <int(en)>
设置创建组合道具所需的组合组中的最小道具数。
Tip.png提示:Valve 将新的 Dust 2 设置为 3。
-StaticPropCombine_PrintCombineRules
证实:打印组合规则?无效果。
-StaticPropCombine_ColorInstances
证实:这会为实例着色吗?
-KeepSources
完成后不要删除自动生成的 QC 和解压缩的模型文件。
-CombineIgnore_FastReflection
组合道具,即使它们具有不同的 Render in Fast Reflections 设置。
-CombineIgnore_Normals
组合道具,即使它们具有不同的 Ignore Normals 设置。
-CombineIgnore_NoShadow
组合道具,即使它们具有不同的 Disable Shadows 设置。
-CombineIgnore_NoVertexLighting
组合道具,即使它们具有不同的 Disable Vertex lighting 设置。
-CombineIgnore_NoFlashlight
组合道具,即使它们具有不同的 Disable flashlight 设置。
-CombineIgnore_NoSelfShadowing
组合道具,即使它们具有不同的Disable Self-Shadowing设置。
-CombineIgnore_DisableShadowDepth
组合道具,即使它们具有不同的Disable ShadowDepth设置。

非功能性选项

-linuxdata
强制它为 linux 多人服务器写入物理数据。 (如果它发现某些实体,例如 info_player_terrorist、info_player_deathmatch、info_player_teamspawn、info_player_axis 或 info_player_coop,它将自动写入此数据。)
-nolinuxdata
强制它不为 linux 多人服务器写入物理数据,即使地图中有多人实体。
-virtualdispphysics
使用虚拟(非预计算)位移碰撞模型
-xbox
启用强制 Xbox 1 优化。

控制台输出

待完善: 添加关于每个输出的描述(例如 WriteBSP、其他等)


另请参阅