Zh/Closed Captions

隐藏式字幕，或者字幕，是伴随声音和对话而出现的文本描述。它们可以提示那些听力存在障碍的玩家，在一定程度上也提示玩家周围正在发生什么。通过一些巧妙的设计，它们还可以用来显示尚未录制的对话。
可以在起源引擎游戏的“选项”>“音频”里启用对话字幕或者完全字幕。
在和scripts/中定义的声音都可以制作成字幕。
==编辑隐藏式字幕==
隐藏式字幕储存在 closecaption_%语言%.dat 中（例如 closecaption_english.dat），路径为 <游戏目录>\resource\。一个 .dat 文件是由 captioncompiler 工具从相应的 .txt 文件编译而成的二进制文件。
尽管引擎不会从文本文件中读取字幕，Valve 还是提供了他们的源文件以供模组制作者使用。你可以在你的 resource\ 文件夹中或者 文件中找到这些文件。
文本文件的格式为：
lang
{ 
	Language "English" //设置为“英语”（或者“schinese”代表简体中文，以及其他语言...）
	Tokens 
	{ 
		//这里开始编写字幕。
		音效名称	"这是字幕文本。"
		barn.chatter	"We're picking up radio chatter. They're looking for your car."
		//以此类推...
	}
}
* 文本文件必须以“UCS-2 Little Endian”的编码格式保存。
* 音效名称必须是在你的里定义的音效，而不是音频的原始文件名。
* 记得在有空格的数据块两边加上英文双引号。
以下是一个 sentences.txt 的例子：
音效名称 声音文件 {字幕代码 closecaption 音效名称}
BA_LATE barney/c1a0_ba_late {Len 2.33 closecaption BA_LATE}
===字幕代码===
;<sfx>: 把字幕标记为音效字幕，只能在“显示完全字幕”启用的情况下出现。如果玩家将 cc_subtitles 设置为“1”，就不会出现这些字幕。
;<clr:255,255,255>: 使用 RGB 设置字幕的颜色，0 表示无色，255 表示全色。比如<clr:255,255,255>表示白色。
;<playerclr:255,176,0:255,255,255>: 基于是否由玩家/客户端发出的声音来设置 RGB 颜色。第一个颜色代码是当音效为玩家所发出时，字幕的颜色。第二个颜色代码是当音效为非玩家所发出时，字幕的颜色。用冒号分隔。举个例子，<playerclr:255,176,0:255,255,255>当声音是由玩家或玩家的武器发出的，字幕为橙色，由其它东西发出的，为白色。
;<B>: 加粗该标记后面的所有文本。
;<I>: 将标记后面的文本变成斜体。
;<norepeat:15>: 控制字幕出现的频率。如果设置为 15，则表示这行字幕在出现后 15 秒之内不会重复出现。 
;<len:5>: 设置字幕的持续时间。举个例子，<len:5>会让字幕在屏幕上持续 5 秒钟。如果不添加此代码，字幕的持续时间为“音频时长+cc_linger_time命令的参数”。
;<cr>: 为字幕手动添加一个空行。
: 举个例子，"功能：<cr>字幕"等同于
: 功能：
: 字幕
;<delay:2>: 设置字幕文本出现的延迟，自动换行并且清除所有格式。举个例子，在“<clr:255,176,0>HEV 已启动。<delay:3>你的 HEV 已经启动。”中，“HEV 已启动”将会以橙色斜体的样子出现。3 秒钟后，“你的 HEV 已经启动”将出现在它下面，而不使用上一行的任何格式。新行总是在前一行的正下方，即使下面有其他字幕。
===编译===
字幕文件必须使用 captioncompiler.exe 进行编译。且需要编译的字幕文件必须位于模组的 resource 文件夹，这样才能够生成 .dat 文件。 举个例子 C:\Program Files\Steam\steamapps\SourceMods\[模组名称]\resource\，如果在 resource 文件夹中创建批处理命令文件，此过程将变得稍微容易一些。将以下代码复制到文本文件中，并将其另存为 .bat 文件：
"C:\Program Files (x86)\Steam\steamapps\common\Half-Life 2\bin\captioncompiler.exe" %1
pause
将你的字幕 .txt 文件拖到批处理文件上，以便像使用 .exe 本身一样使用它。
==在你的地图里播放带有字幕的音频==
有时候，当玩家激活了一个触发器时，你也许想要播放带有字幕的音频。不幸的是， 的“Play Everywhere（到处播放）”标签对于 来说是损坏的，因为字幕只能在音效脚本和 中使用（除了解说音频节点，详情请参加这里）。因此，你必须进行一些修改：使用 实体执行三个命令：
* 
* ，其中“X”是手动调整的参数。
* ，其中“字幕名称”是隐藏式字幕文件中的键值。
确保 和 都已设置。
==没有音频的字幕==
录制对话是一个非常耗费资源的过程。如果对话录制完成后，您决定要更改某些内容，那么进行这些更改的成本将非常高，因此，最终对话录制通常是项目的最后阶段之一。
然而，在创作编排好的场景时，尽早提供对话是非常可取的。解决此问题的一种方法是开发人员录制自己的占位符音频，但即使这样也会占用大量时间。创建占位符对话的一种更廉价的方法是使用隐藏式字幕，而不附加任何对话音频。
实现这一点需要三个步骤：
;1.创建字幕
:声音标记（例如上面的 barn.chatter）可以为在音效列表中没有的音效脚本添加隐藏式字幕。要创建新的隐藏式字幕，只需将新条目添加到“closecaption_schinese.txt”（或其他语言文件）中，如上文所述。
;2.在 Faceposer 中添加字幕 
:在 Faceposer 中，添加无对话的隐藏式字幕的方式与添加普通对话的方式相同（右键单击时间线并选择 WAV File…）。但是，由于隐藏式字幕标记不在音效列表中，因此它们不会出现在可用声音列表中。相反，只需参考你在步骤 1 中添加的条目，并在 Sound 文本框中手动键入标记名称即可。
;3.设置字幕的出现时长
:前两步完成后，在游戏中播放时，场景将显示隐藏式字幕（当然，需要在游戏选项中打开隐藏式字幕）。但是，由于没有关联的声音文件，因此事件没有长度。这意味着隐藏式字幕几乎一显示就消失，只给玩家一点点时间阅读。虽然这对于由一个或两个单词组成的字幕来说是可以接受的，但需要做更多的工作才能让字幕保持较长以方便阅读。
Faceposer 不支持编辑 WAV 文件事件的长度，但可以通过手动编辑 .vcd 文件来更改它们。用记事本打开 .vcd，找到要更改长度的演讲事件。搜索 speak 事件的名称会将你跳转到文件中的指定位置。
在这里，你会发现一个类似以下内容的条目：
 event speak "Test"
 {
 	time 1.000000 -1.000000
 	param "test.test"
 	fixedlength
 	cctype "cc_master"
 	cctoken ""
 }
time 行表示事件的开始和结束时间。结束时间设置为 -1.000000 是因为该 speak 事件当前没有长度。将此数值更改为你想要字幕消失的时间（在时间线上，以秒为单位），然后就可以保存文件退出了。
显然，字幕显示的所需时间长度因文本长度而异。一般来说，当试图确定文本应该在屏幕上显示多长时间时，一种比较好的方法是你自己计时朗读文本，然后把读完所需的时间加倍，以便于阅读速度不是很快的人能够读完字幕。
==为 BINK 视频制作字幕==
随着《》的发布，现在可以为 Bink 视频制作字幕。
==注意事项==
在《》以及之后的游戏中，Valve 使用 subtitles_language 作为主要的字幕文件，而不是将字幕保存在带有“听力障碍”字幕的 closecaption_语言文件中。这可能是因为“隐藏式字幕”是为了方便听力受损者。而就目的来说，“Subtitles（字幕）”是一个更容易被接受的术语，不过，其中的音效仍然可以被标记为 <sfx>。
==另见==
* 
* 与隐藏式字幕相关的控制台命令的前缀为cc_。有关完整列表，请参见