nyuuzyou/wikis huggingface dataset:
Zh/Mapping with Zombies

== 地图上的僵尸 ==
一开始, 应该:
*在玩家看不到的地方刷出
*他们应该有, (高度, 易燃, 小规模,)等等这样的缺点
*僵尸的机动性非常高.
== 释放的艺术 ==
玩家应该永远看不到僵尸是在哪里刷新产出的！
另一个好主意，就是用一些吸引眼球的东西让玩家看起来大事不妙或者即将与不明恐怖生物面对一场硬战！
当僵尸即将上场时最好给玩家一些提示，例如一些恐怖的贴图，从角落里穿出的奇怪的呻吟声与时不时的尖叫声，推荐使用将僵尸预兆发挥到极致。
== 建议 ==
当面对一大群僵尸时，玩家需要一个边缘，无论是高度还是被火挡住的区域。有时最好的缺点甚至可以是门或排水管的形式。创建阻塞点，一次一个地为玩家提供僵尸，使其更易于管理。其他的选择包括给玩家提供物理道具，比如用来投掷僵尸的锯片，或者其他道具，比如《半条命2：第一章》中的道具
== 机动性 ==
僵尸总是在处于最不利的时期，当他们可以跳跃。如果你遇到僵尸在排水管上爬行，从一栋楼跳到另一栋楼，这会增加你的游戏体验！
想想求生之路(又译:恶灵势力)。Hunter总是从高高的屋顶向猎物猛扑过去。
记住，你不想太快的僵尸扑到玩家身上，因为这样玩家很容易不知所措！(我在哪?什么情况?发生了什么?我怎么死了?)
Zh/Material proxies

材质代理允许游戏的编译后C++代码在运行时操作材质属性，可用于创建动态或动画纹理。
== 使用方法 ==
材质代理可通过VMT文件的ProxiesKeyValues块添加到材质中。该块内的每个条目即为一个代理。一个材质可以添加任意数量的代理，代理按出现顺序执行。游戏会以极快的间隔反复执行材质代理列表。
代理名称决定了其参数和功能。
许多代理执行特定任务，但也有一些通用代理可为VMT文件提供基础脚本支持。
通常每个代理都有一个输出值（例如浮点数），该值会被写入其resultVar（可以是着色器参数或变量，参见变量章节）。
例如以下材质使用代理生成浮点数，并写入材质的着色器参数，使纹理以8秒周期渐隐渐现：
LightmappedGeneric
{
	$basetexture shadertest/LightmappedTexture
	Proxies // 代理列表在此块中定义
	{
		Sine // 生成正弦波值的代理
		{
			sineperiod	8 // 正弦周期长度（秒）
			sinemin		0 // 最小输出值
			sinemax		1 // 最大输出值
			resultVar	$alpha // 振荡输出值的写入目标
		}
	}
}
=== 变量 ===
材质可以声明自定义变量供内部使用。此类变量必须在Proxies块之外的材质主体中声明，且必须指定右侧的默认值。
这些自定义变量可用于在代理间传递结果或向其提交硬编码数据。常用于将数学函数代理（如、等）链接成复杂公式。对于2D/3D/4D向量（$vec "[0 0 0]"），变量名可添加[0]后缀（"$vec[0]"）来读写特定索引。对索引变量的写入操作需用引号包裹。
引擎使用8位有符号整数编码这些自定义变量，因此每个材质最多有128个唯一自定义变量。
此示例扩展了前例，使用代理生成随机值来错开正弦波的起始位置：
LightmappedGeneric
{
	$basetexture shadertest/LightmappedTexture
	$offset 0 // 声明自定义变量（$offset并非游戏识别的着色器参数）
	
	Proxies
	{
		EntityRandom // 生成随机数
		{
			resultVar $offset // 写入自定义变量
		}
		Sine
		{
			resultVar	$alpha
			timeoffset	$offset // 从自定义变量读取
			sineperiod	8
			sinemin		0
			sinemax		1
		}
	}
}
现在使用该材质的每个实体都会按独立节奏脉动。
以下是通过写入索引变量使用$color向量创建"随机"颜色脉动的示例：
	$color "[0 0 0]" // 非自定义变量，游戏识别"$color"
	proxies
	{
		sine
		{
			sineperiod	1.3
			sinemin		0
			sinemax		1
			timeoffset	0
			resultvar	"$color[0]"
		}
		sine
		{
			sineperiod	1.7
			sinemin		0
			sinemax		1
			timeoffset	0
			resultvar	"$color[1]"
		}
		sine
		{
			sineperiod	2.3
			sinemin		0
			sinemax		1
			timeoffset	0
			resultvar	"$color[2]"
		}
	}
=== 向量拆分 ===
使用向量较为特殊，因为形如"$pos[0]"的向量分量表达式有时不被游戏识别。
以下代理及其键值可以识别向量分量：
* 所有代理的resultVar
* : min, max
* : offset, max, min, period
* : rate, initial value
* : min, max
* : min, max, mean, halfwidth
* : min, max
* : min, max, scale, offset
如需单独处理向量分量，需先将其拆分到不同变量中。
所有上述代理均可用于拆分向量，但性能消耗最低。
== 编写新代理 ==
创建新代理较为简单。代理仅存在于客户端，应继承自IMaterialProxy或其子类。
需要包含以下头文件：
* "materialsystem/IMaterialProxy.h"
* "materialsystem/IMaterialVar.h"
接口包含以下函数：
; bool Init( IMaterial* pMaterial, KeyValues* pKeyValues )
: 材质首次预缓存时调用。用于初始化变量并获取材质变量引用。成功返回true，失败返回false（此时代理不会运行）。
: pKeyValues包含来自VMT文件的代理参数。
; void OnBind( void* pC_BaseEntity )
: 材质即将在实体上渲染时调用。在此执行主要逻辑。
: 需注意所有使用该材质的实体共享同一个材质对象。若在某实体上修改材质参数，将影响所有使用该材质的实体。由于OnBind()在每次实体渲染时都会调用，只要每次重新赋值所需值就不会出现问题。不要因数据未变化而提前返回，也不要在代理中存储输入数据。
; void Release()
: 
; IMaterial* GetMaterial()
: 获取代理绑定的材质。
=== 接口暴露 ===
代理需使用EXPOSE_INTERFACE宏向材质系统暴露接口：
EXPOSE_INTERFACE( <className>, <interfaceName>, "<proxyName>" IMATERIAL_PROXY_INTERFACE_VERSION );
代理名称与接口版本间无逗号为设计特性。
=== 工具录制 ===
橙盒版本中所有代理都添加了以下代码：
#include "toolframework_client.h"
void OnBind(...)
{
	//...
	if ( ToolsEnabled() )
		ToolFramework_RecordMaterialParams( GetMaterial() );
}
此代码可能与相关。建议在自定义代理中添加此代码以兼容未来可能的电影工坊发布！
== 另见 ==
* 
* 
* 
* Steam指南详解各类代理：基础、随机数生成、"编程"
== 外部链接 ==
* 使用代理实现动态材质 - NoDraw.net的实战应用指南
Zh/Math counter

它存储和操作一个数值。它可以在数值达到用户指定的最大值或最小值时触发输出，或者每次更改数值时输出它的数值。它还具有执行简单数学函数的能力。当 math_counter 被禁用时，它将变为只读，直到重新启用。
== 另请参阅 ==
* 
* 
* 
== 键值 ==
== 输入 ==
== 输出 ==
Zh/Mini-mod tutorial

==介绍==
修改一个Source的游戏设置比如半条命2不需要编程或Source模组制作的知识（姿势）。这篇教程将教你如何用来修改游戏设置.设置文档包含了一个简单的命令列表使得Source引擎能用其执行。这些命令就是开发者控制台指令，所以任何可以通过打字输入控制台的指令都可以被配置文件所替代。
有了控制台指令，你就能改变任何东西，从一种武器的最大弹药容量到半条命2中蚁狮卫兵艹你时所造成的伤害大小。可以看控制台指令的列表大全 ,但是记住，一些列表只在半条命2和它的序章里才可用。如果一条列表中的指令确实被写在作弊专栏里，那你就必须在你用它之前加上sv_cheats 1
==创建一套配置==
打开记事本或者任何文本编辑器，然后写一些你想要的控制台指令，通过换行隔开。要执行前文提及的弹药和狮蚁卫兵的伤害改变，你要输入以下指令：
sk_max_crossbow 30
sk_antlionguard_dmg_charge 60
很显然还有很多其他控制台变量可以从中选择，这只是举个栗子。
通过使用配置文档，你还能把动作和按键绑定。举个栗子，如果你想创建一个能触发“子弹时间”模式的按键，你可以输入以下内容（它需要在配置文档的开头使用cheats指令）：
sv_cheats 1
alias "BulletTimeOn" "host_timescale 0.5; mat_yuv 1; switchToOff"
alias "BulletTimeOff" "host_timescale 1; mat_yuv 0; switchToOn"
alias "switchToOff" "bind tab BulletTimeOff"
alias "switchToOn" "bind tab BulletTimeOn"
switchToOn
通过这个已生效的配置，你能通过按Tab键够减缓游戏里的时间然后使屏幕产生黑白或单色的效果，再按一下就可以把游戏复原。要是想了解更多关于触发器的工作相关（看上去不明觉厉其实挺简单的）可以查看 和 .
==保存配置文档==
当你保存配置文档时，记住永远把“保存格式”的下拉框里设成“所有格式”。把你的配置文档任意保存一下，但是记住有 .cfg 后缀名。如果你在创建一个半条命2的配置，你要把它保存在这儿：
你放steam的文件夹\steamapps\YourUsername\half-life 2\hl2\cfg
==在游戏中运行配置文档==
要想在游戏中执行这个配置，你需要打开开发者控制台然后打字输入这个：
exec CONFIGNAME.cfg
配置只有在被放在正确的位置时才会被执行(见上文）。但愿你在配置文档里做的改变会在游戏中被执行。
==移除配置==
出现了一个问题，但是在运行了配置以后，你的指令依旧会在你下次玩游戏的时候加载在任何地图上。围绕这个问题，创建另一个叫uninstall.cfg（或者其他名字）的配置文档，在这个文档里，解除所有你在先前配置里绑定的配置，用这种指令来给每个按键解绑：
unbind KEY
所以，举个例子，如果你要绑定了箭头键和Tab键，你就要用这下面这些来卸除先前的命令:
unbind tab
unbind uparrow
unbind downarrow
unbind leftarrow
unbind rightarrow
==为特定的地图建配置==
如果你想让你的配置自动在你创建的地图里运行，只要简单地在地图里放一个logic_auto和一个point_clientcommand实体就行了 (多人游戏的话是point_servercommand实体) . 把point_clientcommand/point_servercommmand命名为 “console”。在logic_auto里加上以下输出（output）:
Output: OnMapSpawn
Target entity: console
Input: Command
Parameter: exec 你的配置文件
当你发布你的地图时,记得把cfg文档包含在一起。同时还有如何使用cfg配置的指导以及如何卸除配置。
==可选部分(每个地图的配置)==
如果你想要像用配置文档一样调整你的地图的配置，但是你不想动用安装/卸除配置文档,你可以单独使用 logic_auto and point_clientcommand/point_servercommand实体.简单地用上文提到的输出（output），但是可以改变你选择的指令的参数。
Zh/Mod Content Usage

== 使用来自其他模组的内容==
这是一个悲哀的事实，但在某些情况下，一个模组的内容会被复制到另一个模组使用。人们常常错误地认为，仅仅因为模组可以免费下载，它的内容也可以免费供您选择。
无论模组免费与否，它所包含的任何原创作品（声音、材质、模型、源代码）的作者都拥有其作品的版权。无论你是一个高中生、一个公司或只是喜欢把一些炫酷的东西放在一起玩，这都是不可否认的。每个作者在创作作品时都默认获得这些权利。
只有作者才能决定如何使用他们的作品，谁可以使用他们的作品，如果他们决定对未经许可使用的任何东西采取措施，他们有法律支持。如果你在一个模组中看到了一些对你自己的模组或地图有用的东西，你应该先联系模组团队，然后就你所需要的物品询问原作者。只有他们可以允许你使用他们的作品。
如果你不介意别人使用你创作的作品，以知识共享许可协议发布你的作品将省去无数麻烦，有益于整个社区的发展。要选择一个许可协议，见官方网站。
== 使用来自其他游戏的内容 ==
=== 通过Steam ===
你可以通过修改你的gameinfo.txt，通过Steam访问任意数量的游戏，即使它们不是使用起源引擎制作的。这不需要从GCF中提取任何内容，但您无法保证用户拥有您所安装的游戏。
然而，从法律角度来说，制作（例如）具有来自Defcon的音乐是不被允许的, 即使只有那些有Defcon人也可以播放它。这是因为有两个互相竞争的权利：
* 作者裁定其作品如何分发的权利
* 被允许使用作品的人（例如通过购买作品）私人使用的权利
Steam所允许的这种处于灰色区域的内容混合在法律上没有前例。
=== 一般的游戏 ===
如果没有适当的许可，就不要这样做。
上述版权讨论对商业游戏同样有效，您也受到最终用户许可协议（EULA）的约束。EULA通常禁止反编译/修改/再分发游戏的内容。
此外，如果您的模组有一个用户可以发布模型的论坛，请确保他们不发布侵犯版权的内容。根据「数字千年版权法案」（DMCA），一旦网站负责人在其网站上发现/被告知侵权材料，他们就有义务将其删除，否则他们必须承担侵犯版权的责任。
因此，如果您让用户发布侵权内容（例如来自其他游戏的内容），不仅是用户，而且您可能会被指控。
== 参见 ==
* Steam订户协议
*
Zh/Mod wizard complete

你已经成功安装了MOD基础文件! 在您选择安装的目录下会出现以下子目录:
;
:此目录保存了您未编译的 ( 地图文件)
;
:此目录保存了您未编译的 (一般是 文件)
;
:此目录保存了您未编译的 ( 和 文件)
;
:此目录保存所有的SDK C++源文件. (内部的工程文件将依据您在创建mod时的设置而有所变动)
一个和您的mod名字相同的文件夹已经建立在 下。此文件夹将放置以上目录所编译的文件。
（请无视里面的bat文件，它们是损坏的，除非你知道怎么修复它们）
== 现在该干啥？ ==
制作Mod分为很多部分。想看总的概括，请浏览页。以下是建议新人浏览的内容：
; 
:
:
;
:
: (如果你选择了半条命2单人或者多人源码的话)
: 
:
; 
: 
: 
; 
:
:
:
; 和 
:
:
;
:
== 获取帮助 ==
你可以在以下地方寻求帮助:
* 
* Steam 论坛
*The hlcoders mailing list and IRC channel (编程方面)
*The Noesis Interactive 'Mod Your World' tutorial series (various aspects of Source modding)
*每个文章的讨论页面 - 
*If you still can't find what you need here, give the section a look.
*你也可以在cs地图吧等技术宅聚集的地方寻求帮助。
祝你好运!
__NOTOC__ __NOEDITSECTION__
Zh/ModelDoc Editor

ModelDoc编辑器使最终用户能够在一个工具中创建、查看和编辑模型。
== 启动ModelDoc编辑器 ==
与其他工具一样，ModelDoc编辑器可以通过多种方式打开。你可以：
* 通过资产浏览器（Asset Browser）中的 ModelDoc编辑器 图标启动一个空会话：
*:
* 通过工具（Tools）菜单启动一个空会话。此菜单在所有工具中都可见：
*:
* 最后，你可以直接从资产浏览器打开模型。简单地在资产浏览器中双击一个模型，或者右键单击它，然后选择在模型编辑器中打开（Open in Model Editor）：
*:400px
== 了解ModelDoc ==
ModelDoc使用基于节点的系统来组合模型，但可能不是你想的那样。节点存储在按类别组织的大纲中，每个类别都有自己独特的设置和属性，值得一试。
要在处理模型时预览模型，你必须使用Needs Compiling按钮手动编译它。
要将网格添加到模型中，你需要右键单击大纲视图，然后将网格节点添加到模型中。这可以通过找到所需的网格节点（通常是 RenderMeshFile）或着更简单的方法——单击“添加网格...（Add Meshes...）”按钮执行相同的操作来完成。
现在，单击“Needs Compiling”按钮，你的模型应该会渲染！不过，通常情况下，你的模型不会生成带有纹理的模型，因为它会寻找不存在的材质。要覆盖 .fbx 文件中的材质，请添加一个名为“DefaultMaterialGroup”的新节点，它将覆盖你的默认材质。
这是编译模型的最基本设置。你现在可以将其加载到 Hammer、S2FM 或你希望使用的任何工具中。只要你的 .vmdl 存在于 /content/ 中，你就可以返回并修改模型！最终编译的模型将在你的模组的 /game/ 文件夹中找到，与 /content/ 所在的路径相同。
== 参考阅读 ==
*
Zh/Modification

"模组" 又称 "Mod"(Modification的简称)。通常是指为了修改原有的游戏方式，画面，环境，模型等等的修改档。
== 模组的种类 ==
*第三方模组 - 指的是由非最初设计游戏的设计师所开发出来的模组。大多数的模组几乎都是第三方模组。至于第一方模组通常就不叫模组，而叫扩充包。
*完全转换模组 -又称 TC (Total Conversions的简称) 模组，指的是那些几乎把原游戏中的元素都抹去，自行建立了新的模型、动画、源码以及其他东西。使的玩家已经完全无法辨别出与原游戏中相似的地方。因为开发 TC 模组需要大量的专业技术，所以这种模组非常少见。
*死亡模组 - 一些被暂停开发 (通常是因为失去继续开发的兴趣或者内部问题) 并且在未发布时就被遗弃的模组。
== 安装 ==
想要手动安装一个模组，可以照着下列步骤来做：
# 把模组的文件夹 (一进去就可以看到 gameinfo.txt 的那个)，整个复制到 <Installation path>\Steam\SteamApps\sourcemods 文件夹内。(例如： C:\Program Files\Valve\Steam\SteamApps\sourcemods)
# 启动或重新启动 。如果这个模组可以游玩，那么Steam 就会将它列在游戏列表里面。
== 相关资源 ==
* 与 的列表
* Help:Mod Profiles - 制作一个新模组的规则与注意事项
* - 与模组不同，这是一种含有许多地图的整合包
Zh/Modifying Source GameUI

改变 Source 游戏用户界面只需要使用任何 改变 SteamApps\SourceMods\YourMod\Resource\SourceScheme.res 文件内容. 如果您还没有制作您自己的 MOD, 您需要从 SteamApps 目录下的 source engine. 文件中提取出 SourceScheme.res 文件. 在这个 root\hl2\resource\SourceScheme.res 目录下可以找到此文件. 您需要把 SourceScheme.res 文件提取到游戏或 MOD 里面的 resource 文件夹下面.
让我们看看怎样把游戏中的改变界面改成蓝色的吧. 先打开 SourceScheme.res 文件, 滚动到大约第 63 行, 您将会看到一些这样的东西...
 	Frame.TitleTextInsetX			16
 	Frame.ClientInsetX			8
 	Frame.ClientInsetY			6
 	Frame.BgColor				"160 160 160 128"
 	Frame.OutOfFocusBgColor			"160 160 160 32"
 	Frame.FocusTransitionEffectTime		"0.3"	// time for a window to fade on focus
 	Frame.TransitionEffectTime		"0.08"	// time for a window to fade on open/close
 	Frame.AutoSnapRange			"0"
现在把 Frame.BgColor 的值改变为 160 160 255 128. 颜色格式为 'RGBA' (红-绿-蓝-Alpha值)(Red-Green-Blue-Alpha). 保存文件, 运行 MOD 看看吧. GUI 变成蓝色的了.
Zh/Momentary rot button

本简体中文页面由大康翻译于2021年8月8日，最后更新于2021年10月1日。部分内容由机器翻译。
----
它被设计用于旋转轮子，玩家可以在停止之前将它们旋转到任意位置。
== 键值 ==
:
值 	描述
0 	无
1 	大电击和 Warmup
2 	拒绝访问
3 	允许访问
4 	快速组合锁(Quick Combolock)
5 	电源死锁(Power Deadbolt) 1
6 	电源死锁 2
7 	柱塞(Plunger)
8 	小电击
9 	钥匙卡声音
21	吱吱作响(Squeaky)
22	吱吱作响的气动(Squeaky Pneumatic)
23	棘轮呻吟(Ratchet Groan)
24	清洁棘轮(Clean Ratchet)
25	煤气罐
== 选项 ==
* 
* 
* 
* 
* 
* 
* 
* 
== 输入 ==
== 输出 ==
== 另请参阅 ==
* func_button
* func_rot_button
Zh/MoveType

MoveType (移动类型) 定义实体的行为和移动方式。例如,movetype 0将冻结实体，在更改其 MoveType 之前，任何内容都不会影响它。
== 起源引擎中的各种 MoveType ==
名称 	十进制形式(数字) 	描述
MOVETYPE_NONE 	0 	冻结该实体，且其他内容无法移动它。
MOVETYPE_ISOMETRIC 	1 	用于在军团要塞 2 指挥官视图之类中的玩家。不要将其用于普通玩家！
MOVETYPE_WALK 	2 	默认移动类型（客户端）。
MOVETYPE_STEP 	3 	NPC 移动方式
MOVETYPE_FLY 	4 	无重力飞行。
MOVETYPE_FLYGRAVITY	5 	有重力飞行。
MOVETYPE_VPHYSICS 	6 	物理移动方式 (道具模型等) (译注:类似于 prop_physics)
MOVETYPE_PUSH 	7 	对世界无碰撞，但可以推动和压碎物体。
MOVETYPE_NOCLIP 	8 	(完全)无碰撞，就像控制台命令。
MOVETYPE_LADDER 	9 	对于玩家而言，即在一个梯子上移动。
MOVETYPE_OBSERVER 	10 	观察者移动类型。不要通过其使玩家处于观察状态。
MOVETYPE_CUSTOM 	11 	自定义移动类型，可以用于玩家，以防止默认移动类型代码运行，同时调用相关 hook。
Zh/Mutation Gametype (L4D2)

== 介绍 ==
 随着“”更新，游戏模式现在通过单独的游戏模式定义文件进行处理。这提供了一种方便的方法来创建基于主要四种模式的附加游戏模式条目：合作模式、写实模式、对抗模式和清道夫模式，以及具有高级自定义脚本的全新模式。
使用 gamemodes.txt 的旧版突变模式仍然可以使用，但一次只能激活一个附加组件(mod)。
突变模式的主要特点：
*突变模式 (Mutation) 是一种修改后的游戏模式，主要由修改后的(cvar，即"console variables")和一个突变模式脚本组成。
*突变模式名称是模式定义文件中的游戏模式条目名称设置(the game mode entry name set)。
*所有突变模式都可以通过主菜单GUI加载，但也可以通过控制台命令map <地图名> <游戏模式名称>加载。例如：map c1m1_hotel mutation13 或者 map c1m1_hotel survival
*控制台变量编写在游戏模式定义文件中。
*同名的脚本(vscript) (<游戏模式名称>.nut) 也会被加载以实现额外的功能。比如说，它可能包含替换武器的功能。地图特定的脚本 (<地图名>_<游戏模式名称>.nut) 也会被加载。
==示例游戏模式定义文件==
定义文件的格式：\left 4 dead 2\left4dead2\modes\<模式名称>.txt
有关求生之路 2 中几乎所有可用控制台变量的列表，请参阅
"my_example_mode" // 游戏模式的名称以及通过控制台或 GUI 启动游戏模式时将自动加载的脚本名称。
{
	"base"				"none" // 使用(继承)某游戏模式的游戏机制。它可以是合作/对抗/生还者/清道夫/写实或其他突变模式。对于新颖的游戏模式，它也可以是“无”(none)。
	"maxplayers" 		"4" // 设置允许的玩家数量。允许的值为 1、4 和 8。
	"hasdifficulty"			"1" // 设置是否允许有难度以及是否显示在大厅屏幕中的突变模式名称旁边。[可选/部分可继承(基于的游戏模式)]
	"singlechapter"			"1" // 检查是否只有一关(用于生还者模式/清道夫模式)。(可选/可继承)
	"playercontrolledzombies"	"1" // 允许/禁止玩家控制感染者。将其设置为 1 还会将特殊感染者的最大数量更改为 4 并禁用药丸转换(?，原文为pills conversion)。
	"hasroundlimit"			"1" // 设置是否有回合(译者注:就像清道夫里的)。 (可选/可继承)
	// 这些设置控制模式在突变模式选单中的显示方式。
	"DisplayTitle"			"示例游戏模式！"
	"Description"			"显示在主突变选择屏幕（列表）中。"
	"ShortDescription"		"显示在主菜单区域下方的突变模式名称旁边。"
	"Author"			"我!"
	"Image"				"vgui/my_thumbnail_material" // 通常为 512 x 256 像素
 
	// 这是可以添加控制台变量以改变游戏模式的部分，这也允许隐藏控制台变量。
	convar 
	{ 
		pain_pills_decay_rate 0.27
		z_speed 500
	}
}
== 突变模式脚本示例 ==
对于官方全部的突变模式脚本文件，请查阅 。
== 另请参阅 ==
=== 简介 ===
* (脚本)
*
*
=== 文档 ===
*
*
*
*
*
*
*包含所有原始结局脚本以供参考。
*
*
=== 其他 ===
*
*
*
*
== 外部链接 ==
*自定义突变模式教程 (Steam 论坛 - Wayback Machine 存档)
*"All Mutations Unlocked" (Steam 论坛)
Zh/NPC

本文由大康翻译。
----
 代表 Non-Player Character (非玩家角色)。它是一个，带有某种形式的 AI，可以在地图上移动、使用武器进行攻击等，而不是由玩家直接控制。例如在中包括以及的。
== 另见 ==
* 
* 
*
Zh/NPC Sensing

感知是NPC思考流程的第一阶段。此阶段，NPC将产生可见、可听的实体列表。NPC会忽略它不关心的实体与声响。
==概念==
空间化的NPC感知的两个重要概念是PVS和LOS:
* Potentially Visible Set/潜在可见集： 一组从NPC能够见到的visleafs。PVS是用visleafs测量出的空间区域，对于NPC所在位置而言，它是潜在可视区域。如果另一个实体（通常是Player或者NPC）进入这个区域，那么NPC可能考虑做一个视锥测试及视线测试。与 (Line of Sight)相比，PVS不被props和func_detail笔刷限制，也不限于NPC恰好看向的方向。 
*代表NPC目前的空间几何可见范围： 视锥的有效角度是NPC的角度，视锥长轴线的有效长度是NPC的。视锥方向由NPC目前的朝向或其角度决定。 视锥的边界代表了NPC的视野边缘。
:*是NPC能够作出识别或反应时，与目标保持的最远距离。如果是视锥的有效范围，那么就是视锥的有效深度。这似乎对所有NPC适用；通常为2048个单位。如果Long Visibility 标记开启, 范围将是无限的， 而Think Outside PVS标记不影响视锥范围。默认情况下，你从NPC的范围外射击NPC时，它什么也不会做。 
:* Field of View/视场： 在Source中, NPC的FOV值是 Angular Field of View/角度视场计算的视锥. FOV的边，或者其投影到的一侧代表了视野边缘。（相反，Player的FOV值代表了视锥的水平角FOV，而不是整个视锥。楔体的长方体截面对应着玩家的长方形屏幕） 
:* Line of Sight/视线: 如果一个潜在的目标包含在NPC的视锥中，LOS将用射线测试目标是否藏在另一个物体的后面；LOS会被所有的几何体阻挡（模型、func_detail笔刷等等），除非笔刷/模型有一个固体蒙版NotSolid to LOS/对射线不当作固体，即Transparent/透明。例如（SolidMask:Grate/固体蒙版：架子，对子弹与LOS而言不是固体，还有防弹玻璃等....）
* Potentially Audible Set/潜在声音集： PVS是用visleafs测量出的空间区域，在这个区域内的声源NPC可能听得到。与视野不同，听觉不受限于有方向的视锥。
==NPC 配置==
快速概括NPC实体在Hammer中实现各种NPC行为的配置。
=== 键值 ===
==== Squad Name/小队名 ====
有相同的小队名(以及相匹配小队名)的NPC会共享敌人信息，并且会采取轮番攻击以及掩护彼此等策略（取决于AI能力）。
==== Sleep State/睡眠状态 ====
睡眠状态将让npc停滞直到指定的条件达成
睡眠状态将阻止NPC渲染与思考(think) ，并且它会等待Wake输入或特定条件的达成。
睡眠的NPC也不会播放闲置的声响。出于性能原因，让NPC作为地图未激活的一部分而进入睡眠状态是常见的技术。
* sleepstate = 0 : None (default)
: NPC生成时不会进入睡眠状态。
* sleepstate = 1 : Waiting for threat
: NPC初始即睡眠状态。一旦建立威胁，NPC将被唤醒。
: LOS测试是独立于NPC的。只要NPC与威胁之间可以画出一条线，那么NPC将被唤醒。
: 这个设置可以让NPC纳入视野。例如在转角的情况。
: : 除了敌人之外，什么构成威胁？
* sleepstate = 2 : Waiting for PVS
: NPC初始即睡眠状态。一旦玩家进入NPC的，NPC将被唤醒。
: 根据世界几何体的情况， NPC可以被很早的唤醒。但应该确保NPC不会突然出现在视野内。
* sleepstate = 3 : Waiting for input, ignore PVS
: NPC初始即睡眠状态。NPC仅可以被外部输入唤醒，例如wake输入，小队成员（须设置唤醒小队标识），唤醒半径（见下方）。
* sleepstate = 4 : Auto PVS
: NPC初始即睡眠状态。一旦玩家进入NPC的PVS，NPC将被唤醒。只要离开PVS后，NPC又将进入睡眠状态，这甚至能暂停敌人对玩家的追逐。然而，它们不会忘记自己的目标，一旦被唤醒将继续追逐。
: 不应该与Wake Radius一同使用。当玩家在唤醒半径，但是又不在PVS时，这可能制造唤醒-睡眠的无限循环。
* sleepstate = 5 : Auto PVS after PVS
: NPC初始即睡眠状态。在首次建立'PVS接触'时，它将进入自动PVS模式。
==== Wake Radius/唤醒半径 ====
Auto-wake if player within this distance.
距离值distance为非0时, 玩家一进入该距离内NPC就会唤醒。距离唤醒与条件唤醒互补，不会覆盖它们。
==== Wake Squad/唤醒小队 ====
如果设置"Yes"，NPC将自动唤醒所有小队成员。
=== Flags/标识位 ===
* Wait for Script
: 不同于睡眠状态. 
: NPC只会在脚本运行后被激活，例如 和 。这意味着一开始NPC不认识敌人。这可以被用来让NPC待在原地直到脚本触，在脚本完成后，NPC离开等待状态。注意，当NPC被攻击后也会离开等待状态。
* Wait Till Seen
: NPC仅仅在玩家看见NPC后才被激活，“被玩家看见”测试似乎没有使用进入玩家FOV的方案。
=== I/O for NPC scripting/NPC脚本I/O ===
* BaseNPC Input : "Wake" : 如果NPC在睡眠状态，唤醒它。
* BaseNPC Input : "UpdateEnemyMemory" (targetname) : 更新NPC对自身目标的记忆.在对NPC新增敌对目标时有用, 比如!player。
* BaseNPC Output : "OnSleep" : NPC进入睡眠状态后开火。
* BaseNPC Output : "OnWake" : NPC从睡眠状态激活后开火。
* BaseNPC Outputs : "OnFoundPlayer" / "OnFoundEnemy" (targetname) : 当NPC发现玩家/敌人后开火.NPC不能在睡眠状态或者脚本执行中执行改输出。
Zh/NVIDIA

NVIDIA 是一家顶级计算机图形企业，创立于 1993 年。在 1999 年首次在 PC 平台引入了 GPU，并且首次在 GeForce 3 GPU 上引入可编程顶点着色器，在 2018 年面向民用市场推出了第一代硬件光线追踪加速架构“Turing RTX”。
目前该公司重心已从游戏图形转移至 GPU 加速计算 AI，云与数据中心。
=扩展链接=
NVIDIA 官网
NVIDIA 开发者网站
NVIDIA GeForce 官网
Zh/NextBot

NextBot是几个多人游戏使用的系统。该系统不仅可以用于，还可以用于不受玩家控制的实体。
NextBot系统代码不存在于任何公共SDK中，但存在导航网格代码，但默认情况下不包含在任何SDK编译中。这里提供的文档主要是基于某些控制台命令(最突出的是nb_debug)和关于AI的官方PDF。
== 与 NextBot 的区别 ==
尽管Source npc(如中的npc)和NextBots都用于AI，但我们必须清楚这两个系统并不相同。以下是这些系统的主要区别:
*NextBots使用来移动，而不是。
Source npc不仅使用节点来确定导航位置，而且还决定到达特定节点时该做什么。NextBots不使用这些节点进行导航;相反，它们使用导航网格来移动，并根据特定区域可能具有的标记执行不同的操作。
* NextBot系统既可以应用于bot，也可以应用于非可玩实体。
Source npc系统的内部机制只适用于非玩家实体。在NextBot系统中，如果需要，可玩和不可玩的角色都可以配备AI。
* NextBot系统几乎完全建立在地面实体的基础上。
Source npc可以被定义为在地面上导航或使用在开放空间中飞行。两个NextBots (和)能够基于飞行进行移动，但这是相当初级的，因为该系统目前没有官方支持“空中导航网格”或任何类似的机制。
== valve开发的使用NextBot系统的游戏 ==
NextBot系统用于以下游戏:
* 
** 生还者Bot
** 所有感染者
* 
** 红队和蓝队的bot
** MVM的机器人和坦克
** 万圣节npc (, ,等。)
** 毁灭机器人
** Unused/Test NPCs (, )
* 
** 英雄bot
:
* 任何内置NextBot系统的游戏
** 
虽然和都有AI Bot()，但它们使用独立于NextBot的独特系统来决定机器人的行为。
== NextBot是怎样工作的？ ==
thumb|300px|right|一个事件如何影响NextBot的示例图。这张图来自《求生之路》的AI系统PDF。NextBot使用一个被称为“Actor”的整体结构来运行更具体的因素。当事件发生时，例如示例图中的“Oninjured”，Actor通过改变这些因素来反映事件。以下是NextBot具备的所有不同因素的总结:
=== 移动 ===
这个因素决定了NextBot如何在环境中移动。例如，如果一个NextBot被编程为在受伤后逃跑，它就会依靠这个因素移动到地图上的不同位置。
=== 身体 ===
这个因素处理NextBot的动画。在“oninjured”的例子中，NextBot将依靠这个因素来播放退缩动画。
=== 视场 ===
这个因素处理NextBot如何看待其环境中的某些实体。视场和视距功能主要体现在这个因素上。
注意，这个因素不是NextBots工作所必需的。例如，tf2中的骷髅会发现并攻击敌人，而不管它是否看到敌人。
=== 意图 ===
这就是NextBot真正的AI所在。意图因素管理NextBot可能拥有的不同行为，这个因素负责根据事件改变这些行为。
要了解这个因素在游戏中的作用，请参见。
==== 行为 ====
行为包含一系列动作，当意图因素选择它时，它将执行这些动作。
这个函数可以看作是NextBot的，因为它们都是AI需要执行的特定操作的列表。
==== 动作 ====
这是NextBot的实际AI代码，当它的父行为被意图因素运行时，它将运行。Action可以有一个额外的子Action，它将与父Action同时运行。
这个函数可以看作是NextBot的，因为它们都包含驱动AI本身的核心编程。
== 参见 ==
== 外部链接 ==
* The AI Systems of Left 4 Dead - An official PDF regarding various mechanics of Left 4 Dead, including NextBots and the AI Director
::
Zh/Non-code mod settings

这里是一些可以在 MOD 里被修改的文件, 这些文件与编程无关. 大多数的 MOD 都需要修改这些文件.
文件 	作用
 	设置 MOD 的标题、图标和一些相关设置
 	列出在 MOD 中使用的地图
 	改变图形用户界面 (GUI)
scripts/titles.txt 	设置 本地化字符串. 看看
scripts/ChapterBackgrounds.txt	列出背景图像 (在动态背景载入中显示的图像). 看看
scripts/kb_act.lst 	游戏的选项菜单内的键盘标签.
cfg/config_default.cfg 	设置默认键盘按键
 	编辑本地以及专用服务器的设置.
== 顺便看看 ==
* - 编程文档.
MOD 制作
Zh/Obsolete

过时（Obsolete）实体就是已经弃用的或者从引擎分支被省略的物体。
当一个点实体被放置在Hammer中时这个精灵图标就会出现。
图标是一张Fonz的照片，但是Valve员工的脸被放在上面.
== 参考 ==
# 那个过时人的神秘面纱解开了！ | TF2Maps.net
Zh/Optimization/Level Design

创建一张在低配置（乃至更高配置）的计算机上难以流畅运行的地图是很容易的。这篇文章集合了各种优化关卡的信息以避免这种情况发生，但是要做到相反的方面就对地图制作者提出了更高要求，这意味着地图制作者要花一些时间在优化上。
== 范围 ==
; 
: 出现裂缝是不可原谅的！裂缝会使你几乎所有的努力都不起作用。
; 
: 首要的就是减少一些表面和物件的数量。也是优化中最重要的部分。
; 
: 运用多种技巧避免使CPU因物理计算而过载。
; 
: 正确选择材质能减少地图对低配置计算机的要求。
; 
:注意性能与文件体积的改良。
; 
: 一个合理优化过的天空盒能显著减少延迟和地图体积。
== 命令 ==
这里有一些有用的控制台命令罗列在这里——详细请参阅相关文档。
; 
: 显示帧速。1 表示实时，2 表示每秒平均值。
; 
: 呼出一块面板，显示你的计算机处理每帧所需要的（处理每帧所花的时间），这个工具对于找出地图中那些降低性能的内容是首要的。
: 可以使用+showbudget和-showbudget命令，你可以通过绑定按键的方式（例：bind <key> +showbudget）使用它。这样仅当按住按键不放时面板才会出现。
; 
: 这条命令可以让你看穿墙壁。这样你可以确切看到哪些东西正在被绘制。这是基于的原因，而不是感觉上认为的「可见」。
: 有三种线框模式， 从 1 到 3，分别表示显示线条的由多到少。
== 外部链接 ==
有关半条命2地图优化的站点可参看：Ralph van Hoorn's website。
Zh/Orange Box (engine branch)

（又称），于2007年10月10日随着（、和）发布，接替了。
它与并肩维护，直到2010年7月被的发布所淘汰。
2010年5月至6月，所有PC版的第一方 起源06 和 起源07 游戏（除了）都升级到了 ，该版本增加了对 macOS 的支持，并为 PC/Mac 版的 半衰期2 和 第一章 引入了成就。第三方 MOD 也可选择支持成就。EP2 2007 年在 X360/PS3 上发布时就已经有了成就，可能也适用于PC。
尽管如此，2013年还是发布了和，作为这些游戏的直接升级。此外，从 起源07 开始，Valve 更改了移动系统，试图阻止“兔子跳”（Bunnyhopping）漏洞的利用，结果却产生了一个名为“加速后跳”（Accelerated Back Hopping）的新漏洞。
橙盒建立在原始的 半衰期2 分支上，需要安装其内容才能工作。
== 分支 ==
有三个分支，在 SDK 启动器中分别称为、和。09 与 多人 分支没有不同的功能集，但由于各种底层更改（包括不同的 方案 和 Mac OS X 兼容性），它们与 2007 不兼容。
== 功能 ==
自以来的新功能是：
=== ===
; 
: 逻辑、渲染和音频已被线程化以在多核环境中获得性能提升。
; 
: 一个全新的、艺术家驱动的粒子系统，取代了旧的硬编码粒子系统。
; 
: 玩家手电筒等特殊动态灯光现在可以投射出高质量的动态阴影。
; 
: 重新制作更适合户外场景的 HDR 色调映射。[1]
; 运动模糊
: 廉价又简单的相机运动模糊。[1]
; 和
: 一个新的、强大的面部动画系统，支持在弯曲动画期间为面部添加精细皱纹细节的纹理。
; 条件语句
: 用于的新条件语句，可针对低端机器优化它们。
; Phongwarp 纹理和其他 Phong 改进
: 在 起源06 中引入的 Source 的 phong 着色已升级为附加功能，例如反射着色、反照率着色、phongwarp 纹理等。
; 
: 一种特殊的、更廉价的凹凸贴图，用于带有烘焙阴影的画笔着色器，以产生自阴影表面的错觉。
; 
: 减轻跨置换表层的纹理拉伸。
; 
: 类似矢量的边缘到光栅图像，快速。
; 
: 的高级流动发光，特别用于 中的 Vortigaunts。
; 模型上的和的菲涅耳(Fresnel)效果
: 在VertexLitGeneric上， 和 有新的参数来启用菲涅耳效果的着色。
; 
: 离线渲染的烘焙物理动画，并以最低的性能成本带入引擎进行播放。
; 
: 将新实体放置在具有不间断可见性的大型开放区域中，从而减少编译时间。
; 
: 一个面向控制台的 UI。
; Xbox 360 支持
: 添加了对 Xbox 360 手柄的本地支持和 XInput 支持。
=== / ===
; Mac OS X 支持
; 粒子系统调整
: 粒子现在可以渲染斑点和模型。在 起源13 中删除。
; 禁用 
: 现在可以在动态道具上禁用phys_bone_follower以提高性能并减少实体数量。
=== ===
;此处略
== 使用情况 ==
大多数使用该分支的游戏（主机版除外）都升级到了。不过，起源07 的游戏代码包含在现已废弃的 Source SDK 应用程序中。
=== ===
* 
* (formerly Source SDK Base - Orange Box)
* (ModDB版)
* 
* (Mod版)
* 主机版游戏（和,包括在里：
** 
** 
** 
** 
** 
** (仅)
=== ===
* 
=== ===
* 
* 
** 经过大量修改，使用专有文件格式存储游戏文件。
* 
** 修改后，通过 DLL 注入 () 添加了自定义纹理和其他附加组件支持，还添加了 PhysX 物理引擎。
== References ==
1. Valve GDC 2008: Post Processing in The Orange Box
Zh/P2map publish

如果您要将传送门 2地图上传到 Steam创意工坊，并且该地图是在 Hammer 中构建的，则必须使用名为 p2map_publish.exe 的单独工具上传它，该实用程序位于 \SteamApps\common\Portal 2\bin\ 中，是《传送门 2》创作工具的一部分。
使用方法相当简单 -- 单击 Add 为您的地图创建一个条目，然后上传地图缩略图和 BSP 文件。
如果您希望包含自定义资源（纹理、模型、声音），那么您需要在上传到 Workshop 之前，使用 bspzip 等工具将这些文件打包到 BSP 中。
== 替代品 == 
由 Trico Everfire 开发的 p2map_publish 的社区替代品： 一个稳定的多平台上传器，在设计上与 p2map_publish 相同，具有一些生活质量改进的附加功能以及一些附加功能，例如添加/删除标签和上传多个预览图像/视频。
== 外部链接 ==
* P2-Publishing-Tool on GitHub
Zh/Particle Editor

粒子编辑器是一款自Source 2007以来在Windows系统上可用的引擎工具。要使用它，请在命令行中通过添加运行你的游戏或模组，并在工具菜单中选择“Particle Editor”。确保在屏幕左下角的控制台中输入。
要在引擎视口中加载地图，请查看屏幕底部的控制台窗口并输入。
== 当前支持的游戏 == 
* 
* 与Qt UI不兼容，添加以使用VGUI启动游戏。自Xen引擎更新后支持软粒子。 
* 
* 参见Fixing CSGO particle editor。 
* 
* 需使用控制台命令"toolload pet"启动 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
 
* 
* Mods 
* Mods 
* Mods 
== 界面指南 == 
此截图来自。较早版本的编辑器外观不同，但工作原理相同。 
 
屏幕顶部是主菜单。从这里可以加载和保存PCF文件、撤销和重做操作以及配置工作区。 
1. 浏览器显示当前PCF文件的内容。你可以在同一个PCF文件中存储任意数量的粒子系统。预览下方显示父子数量。 
2. 引擎视口显示游戏当前渲染的内容。使用切换控制到游戏或工具，使用最大化视图。 
3. 属性用于编辑当前粒子系统。可以添加、移除和配置新功能与子项。每次修改都会重启粒子系统的所有实例。 
4. 预览窗口近距离显示当前系统及其子系统。按住旋转，缩放，平移。"Ctrl Pnts"标签允许为预览配置临时控制点。"Lock Preview System"复选框可在选择新系统时阻止预览更新，方便编辑子系统并在适当上下文中查看效果。 
屏幕底部包含一个紧凑的开发者控制台。命令输入在左侧框，最后一行输出显示在右侧。 
== 另请参阅 == 
* 粒子系统概览 
* 粒子系统 
* 创造一个火焰粒子 
* info_particle_system 
* 有用的SFM教程 
Category:Engine Tools
Zh/Particle Editor (Source 2)

== 布局 ==
粒子编辑器的基本布局由三个主要编辑面板和四个次级面板组成，接下来会详细说明。
面板与其他工具中的面板相类似，你可以拖动面板边缘来调整大小，切换面板的显示与否，直到符合你的使用习惯为止。
== 属性面板 ==
每个函数都有一组关联的属性，可以在属性面板中编辑。属性用于定义每个函数中特定的参数的行为。
属性数据有以下形式：
*标量(Scalar): 一个浮点数，有时处于0和1之间，有时不是。
*矢量(Vector): 三个浮点数的向量集。这些浮点数的通常表示示X，Y和Z。
*布尔值(Boolean): 一个复选框，通常定义一个参数的属性是开还是关。
*枚举列表(Enumerated list): 一个预定义选项的列表。
*颜色(Colour): 颜色!
*资源引用: 一个指向资源文件的字段，比如vtex纹理文件或是子特效。在少数情况下，类似"fallback replacement definition"，没有文件选择器时，你只需要输入文件的路径，路径开头为/particles。
(例如: "particles/abilities/conjure_fallback.vpcf")
注意，标量和矢量是控制点唯一支持的数据类型。
== 功能面板 ==
功能面板涵盖了特效的功能，其中包括了定义粒子行为的功能。
功能可以被添加,删除, 暂时禁用以及重新排序.
最后一项, "子功能(Children)", 不是一个功能类型本身，而是储存子特效的参考列表。(如果有任何参考的话.)
更多功能相关信息参见 .
== 预览面板 ==
在预览面板中你可以实时预览你的特效。
=== 控制按钮 ===
*暂停/播放(Pause/Play sim): 暂停实时预览(当前是暂停的话则会播放)
*重新开始(Restart sim): 立即消除所有粒子并重新开始模拟。
*重启所有工具(Restart sim across all tools): 类似于"重新开始", 但是会在已打开的所有工具中全部重启开始。 (例如Hammer.)
*停止(Stop sim): 停止产生粒子，但已产生粒子的生命周期将会继续。
*停止并输出结束描述(Stop sim with endcap): 停止产生粒子,并且触发任意预设的结束描述效果。
*渲染调试信息(Render debug info): 开关 渲染的调试几何边界框 等的显示。
*复位相机(Reset camera): 如果通过预览空间导航时丢失特效的踪迹，可以通过复位相机来帮助你找回轨迹。
预览面板中的导航与其他工具三维视角的导航非常相似。
=== 导航控件使用 ===
按住鼠标右键 来转动镜头,使用WASD移动镜头。
	
	向前移动镜头
	向后移动镜头
	向左移动镜头
	向右移动镜头
=== 使用飞行模式进行镜头导航 ===
按进入飞行模式，飞行模式下不需要按住右键来转动镜头，但是仍然使用WASD键控制镜头移动.
=== 围绕一点进行导航 ===
当你专注于一块几何体的工作并想要快速移动镜头时，此方法非常有效。
	
	绕屏幕的中心旋转
	重置所选几何体的中心点
	变焦
	相机视角移动
== 控制面板 ==
控制面板中提供了一些方便的工具来协助你的工作:
*控制点(Control Points):在空间中手动控制点的位置,在hammer编辑器中模拟手工放置点. (请注意，这些控制点是暂时的，只在粒子编辑器中存在- 他们不会随着特效一起保存。)
*仿真率(Simulation rate): 减慢 (值在0与1之间) 或者 加快 (值大于1) 模拟回放。
*地面(Ground): 选择网格，平面几何，或者不选择。请注意在平面几何中必须预览粒子的碰撞约束。
*预览模式(Preview Model):在你的场景中央渲染一个模型,对于调整特效的大小和距离比较有用。
== 撤销面板 ==
撤消面板中有撤消/重做的暂存,以确保用户能够在最近的特效历史项间进行跳转. 
Category:Dota 2 创意工坊工具集
Category:AMHC 汉化