Zh/Prop Types Overview

在Source里，"prop（道具）"这个词通常是"代码仿真模型实体"的代名词。有各种道具的实体类，每一个都代表着具有特定功能的模型。选择它们中的每一个都有具体的原因，并且不同的人对功能和性能方面有着不同的需求。
== 道具类型 ==
下表列出了关卡设计者能放置的主要道具类型，以及它们的总体特征：
模型实体 	属性
 	带细节的几何体 - 不能移动的静态模型。不包含任何物理性质或碰撞数据。无法被打碎。不能投射阴影。可以通过分配一个细节贴图来自动放置。关卡设计师一般不会逐个放置。是渲染起来最"费劲"的几何体。在低配置机器上甚至可能无法渲染。
例子：草地，岩石，植物。
 	静态几何体 - 不动的模型。除了碰撞，不包含其他物理性质，并且无法被打碎。无法拥有关节或动画。投射光照贴图阴影。"廉价"的几何渲染。
例子：管道，灯具，岩石，电线杆。
 	拥有内建物理性质的模型。移动和碰撞采用布娃娃物理系统。可以使用铰链或其他的限制器来约束其他物理对象。它也可以配置成一旦受到足够的伤害就会碎裂。投射动态阴影。移动和渲染较"费劲"，当服务器设置了sv_turbophysics的时候工作会不正常。
例子：桶，小碎片，家具。
 	使用布娃娃物理骨骼的物理道具。拥有物理道具的所有特性，并且可以使用严格的身体布娃娃物理系统来拥有多个碰撞和关节。移动和渲染都非常"费劲"。
例子：尸体，多片式纸箱，床垫。
 	一个可放置在层次结构中，可以拥有关节和播放动画的模型。它也可以配置成一旦受到足够的伤害就会碎裂。可以有层次地连接到其他物体。可以投射动态阴影。渲染起来比静态几何体"费劲"，比物理几何体"省力"。
例子：机械手臂，机械，剪辑场景里的模型动画。
 	使用简化的物理碰撞系统的模型，专为多人游戏设计。网络开销比起使用标准物理道具要低。对于带宽有限的多人游戏环境来说是有必要的。服务器设置sv_turbophysics的话，工作起来更好。
 	用于覆盖模型内建属性的特殊道具类型。跟prop_physics的渲染成本相同。
 	用于转换一个原本被设计用于prop_static的模型，并且给予它prop_dynamic的属性。跟prop_dynamic的渲染成本相同。
请查看Source SDK范例地图mapsrc\sdk_prop_types.vmf，来获取一些道具类型在使用中的例子。
== 使用中的限制 ==
为了保证"跨地图"道具行为的一致性，Source限制了某种模型只能用于特定的道具类型。举个例子，在一张地图里面，一个基于物理的桶，在另一张图里不应该是静态的，除非有很好的理由这样做。如果你把模型用在错误的道具类型上，游戏也许会将道具从你的地图上删除。
在Hammer的模型浏览器里的"信息（info）"标签页中，有三个复选标记。它们是："物理（physics）"，"静态（static）"，和"动态（dynamic）"。
* 如果"物理"是勾上的，模型也许只能用于prop_physics或prop_ragdoll，或者prop_dynamic_override。
* "静态"的话要求用于prop_static。
如果你为prop_static使用了错误的模型类型，你会在你的编译日志里得到一个错误信息：
 Error! prop_static using model "[model]", which must be used on a dynamic entity (i.e. prop_physics). Deleted.
错误！prop_static正使用模型"[模型名称]"，它必须用在一个动态实体(比如prop_physics)上。已删除。
或者是：
 Error! To use model "[model]"
 with prop_static, it must be compiled with $staticprop!
 Error loading studio model "[model]"!
错误！要在prop_static上
使用模型"[模型名称]"，它必须编译成$staticprop（静态道具）！
载入工作室模型"[模型名称]"错误！
如果你放置了一个没有设置物理的prop_physics，你会在游戏里的控制台得到一个错误信息：
 prop_physics at [x] [y] [z] uses model [model], which has no propdata which means it must be used on a prop_static. DELETED.
prop_physics在[x] [y] [z]位置使用了模型[模型名称]，它没有道具数据，它只能被用在prop_static上。已删除
=== 覆盖实体 ===
; : 大多数模型都能工作在prop_dynamic上，除了物理模型。如果你想要使用一个物理模型，但不想要其物理特性，可以使用。
;：要可以模拟物理的话，必须要有编译进它们里面。实体允许你从Hammer输入这个数据，而且允许你将大多数模型当成物理道具使用。
== 创建道具 ==
特定的代码会让你的模型适用于某些类型的道具，而不适用于其他的。
	prop_detail	prop_static	prop_dynamic	prop_physics	prop_ragdoll
	是 	是 	可选 	可选 	不
	不 	不 	不 	是 	是
	不 	不 	可选 	不 	是
	不 	可选 	可选 	是 	不
注意：
"是"或"不"的意思是道具可能会从游戏中移除，反之如果没有正确完成将不会工作。"可选"意味着该代码可以工作，而且通常是一个好主意。点击链接获取关于如何使用对应的.qc代码，以及他们做了什么的说明。
Prop_detail模型只可使用着色器材质。查看获取更多信息。
$staticprop用在移除骨骼和骨骼动画上很有效。如果你的道具需要无骨骼或者无动画，staticprop算得上是一个划算的优化。在Hammer的模型浏览器，如果复选标记"静态（static）"勾上了，你就知道$staticprop已经被使用了。
== 特点 ==
===prop_detail ===
* 在一个地图里可以有成千上万个这种实体。（Left 4 Dead（求生之路）里的限制是64000个）
* 可以作为或者是spr动画。spr动画渲染起来要比MDL快得多。
* 可以在Hammer编辑器里放置，或者通过添加一个材质特性%detailtype到一个.vmt文件，为了让能在特定材质上自动生成细节道具（下面描述的）。
* 永远都不会跟它们发生冲突。
* 具有恒定颜色的发光（为了优化）
* 不会影响地图上的光照贴图。
* 当它们和玩家的距离超出一个特定的值之后，它们会自动淡出。（由控制台变量cl_detaildist和cl_detailfade控制）。
* 有时候甚至无法在低端硬件上渲染。
* 必须在模型的.文件编译时包含$staticprop。
* 没有网络开销 + 非常低的内存使用。
* 并不是一个真正的实体，没有输入（inputs）或输出（outputs）。
* 可能没有动画。
* 无法被有层次的附加到其他实体。
* 从一个可见性的角度来看，它们被假定为是点。
=== prop_static ===
* 在一个地图里可以有成千上万个这种实体。
* 可以在Hammer编辑器里放置。
* 它们之间可以有碰撞。
* 会影响地图里的光照贴图，可以投射光照贴图阴影。
* 顶点会发光，就像标准的工作室模型。
* 使用系统。
* 用户可选择是否让道具用低端硬件模式渲染。
* 可以在Hammer编辑器里设置淡入淡出距离。
* 必须在模型的.文件编译时包含$staticprop。
* 没有网络开销 + 非常低的内存使用
* 并不是一个真正的实体，没有输入或输出。
* 可能没有动画或关节。
* 无法被有层次的附加到其他实体。
* 从优化可见性的角度来看，它使用凹凸的物体。
=== prop_dynamic ===
* 在一个地图里可以有成千上万个这种实体。
* 可以在Hammer编辑器里放置。
* 它们之间可以有碰撞。
* 不会影响地图里的光照贴图，但可以投射动态阴影。
* 顶点会发光，就像标准的工作室模型。
* 使用LOD。
* 可以在低端硬件上渲染。
* 可以在Hammer编辑器里设置淡入淡出距离。
* 在编译模型的时候可以不使用$staticprop。
* 可以有动画。
* 低（但不为零）的网络开销 + 更高的内存使用（不亚于任何其他实体）。
* 它是一个真正的实体，拥有输入和输出。
* 可以有层次的附加到其他实体。
* 从优化可见性的角度来看，它使用凹凸的物体。
* 从一个可见性的角度来看，它们被假定为是盒。
=== prop_physics ===
* 在一个地图上可以有几十到几百个实体，取决于复杂度。
* 可以在Hammer编辑器里放置。
* 它们之间一定有碰撞。
* 不会影响地图里的光照贴图，但它们投射动态阴影。
* 顶点会发光，就像标准的工作室模型。
* 使用系统。
* 可以在Hammer编辑器里设置淡入淡出距离。
* 在低端硬件上如果没有改变设置，它们会更早的淡出。
* 在编译模型的时候可以不使用$staticprop。
* 可以有动画。
* 低（但不为零）的网络开销 + 更高的内存使用（不亚于任何其他实体）。
* 它是一个真正的实体，拥有输入和输出。
* 无法被有层次的附加到其他实体。
* 可以被其他各个物理约束实体所约束。
* 从优化可见性的角度来看，它使用凹凸的物体。
* 从一个可见性的角度来看，它们被假定为是盒。
* 额外的特征？
=== prop_ragdoll ===
* 和prop_physics一样，不过可以使用骨架，用于布娃娃物理。
* 具有非常高的网络开销。
== 参见 ==
*