Zh/SourceTV

SourceTV 提供的一种能力，可以让无限多的观众观看基于 Source 引擎的在线游戏。SourceTV 的观众对于游戏中的玩家是不可见的，而且也无法和游戏中的玩家互动。SourceTV 的观看视角是由人工或 AI 自动控制的。转播通常有一定量的延迟。这确保了游戏中的队伍无法使用 SourceTV 来获取任何关于对手的有用信息。SourceTV 也可以录制服务器端的 demo，这些 demo 包含了游戏中所有的实体和事件。
为几个观众提供一个 SourceTV 广播服务是一个简单的任务，只需要在游戏服务器上做一点更改。为上千个观众安装一个大型的 SourceTV 网络则需要更多的时间来准备，以及更多带宽、CPU和内存。
==观看游戏==
要通过 SourceTV 观看一个游戏，启动 Steam，然后从 Steam 菜单中选择服务器（Servers）来打开服务器浏览器。选择 观看（Spectate） 标签。可以通过点击更改过滤器（Change filters）然后选择一个指定的游戏来缩减列表。等列表更新之后，在列表中双击你想要观看的服务器，然后你就会连接上去。
如果某个游戏组织宣告了有什么比赛会在 SourceTV 上转播的话，他们通常会提供他们的 SourceTV 服务器的IP地址（IP:Port）。相对于通过服务器列表来搜索它们，你可以直接到收藏夹（Favorites）标签，然后通过右击选择添加服务器IP地址（Add server by IP address）来添加 SourceTV 到你的服务器列表。另外，你可以打开 Source 的控制台窗口，然后使用 connect 命令来观看某些游戏。例如：
 connect 192.168.130.42:27020
默认的 SourceTV 的端口是 27020，但也可能被更改了。一般应该会包括在所给的 SourceTV 的 IP 地址里，因为通常情况下，这个端口和游戏服务器默认端口 27015 是不同的。
当观众通过 SourceTV 观看转播的话，摄像机的位置和摄像机模式是由自动导航或者摄影师选择的。观众无法切换观看者模式或者跟随玩家，这些功能在 HLTV 里可以，但现在移除了这些功能，以减少网络带宽的占用。在回放 SourceTV 的 demo 时，依然允许切换模式以及使用自由视角。
==转播游戏==
SourceTV 现在完全集成到 Source 引擎，而不再像以前一个单独的工具 HLTV。要开始转播游戏，游戏服务器必须在地图载入之前启用 SourceTV 的 tv_enable 1。那会创建一个 SourceTV 服务器实例，可以在游戏中看到一个机器人加入观看者队伍。SourceTV 运行在游戏服务器进程中，称为 SourceTV 主服务器。SourceTV 主服务器会缓冲所有游戏数据、事件，经过一定的延迟时间之后广播出去，以此来防止作弊。自动导航是一个 MOD 的特定模块，它会根据有趣的游戏事件选择摄像机模式和位置（如玩家被杀、炸弹爆炸等）。另外，一个人类观众也可以变成一个摄影师，他的视角会覆盖掉自动导航的视角。SourceTV 观众连接到跟游戏服务器相同的 IP 地址，但使用不同的端口，比如 SourceTV 使用27020。可以使用 tv_port 控制台命令来更改这个端口号。
这是一个很好的例子，但是只能用于观众较少的场合，因为一台服务器主机要为所有的玩家和所有的观众客户端服务。对于大量的观众，这会很快耗尽这台机器上可用的CPU/带宽。因此，有必要在多台主机上分配所需的带宽和CPU，以此可以满足大量观众的需求。通过设置其他的 SourceTV 服务器连接到 SourceTV 主服务器，中继其游戏转播来完成完成。那些服务器称为 SourceTV 中继代理，每台代理都可以为255个观众服务。SourceTV 代理也可以连接到其他 SourceTV 代理，可以建立一个无限大的中继节点网络。
要设置一个 SourceTV 中继代理，启动一个 Source 专用服务器（Dedicated Server）进程，并且不要运行地图。tv_relay 命令连接中继代理到其他 SourceTV 服务器/代理。这里有一个例子关于如何创建一个 SourceTV 中继。
 srcds.exe -game cstrike -console +tv_relay 127.0.0.2:27020
随时都可以在你的本地代理上使用 tv_status 命令来查看状态。这里是一些输出的例子：
 --- SourceTV Status ---
 Online 05:08, FPS 253.8, Version 2841 (Win32)
 Master "SourceTV", delay 30
 Game Time 05:01, Mod "cstrike", Map "de_dust", Players 7
 Local IP 255.255.179.38:27020, KB/sec In 0.0, Out 0.0
 Local Slots 128, Spectators 8, Proxies 0
 Total Slots 128, Spectators 0, Proxies 0
总计位（Total Slots）以及观看者数字是指所有已连接的中继代理的人数的总和。如果某个中继代理丢失了和其服务器的连接，你可以使用 tv_retry 来快速重新连接。要停止转播并断开所有的客户端，执行 tv_stop。
==摄影师==
SourceTV 的摄像机视角一般是由自动导航模块控制的。也可以是一个加入了游戏服务器观看者队伍的玩家，他们可以通过按使用键来变成摄影师（通常是 'E'）。这会将他的视角作为摄像机视角呈现给所有观众。摄影师可以选择任何观看者模式（第一人称、自由视角等），切换到任何玩家或者自由地移动。摄影师可以通过再次按使用建来关闭摄像机，之后自动导航会再次接管。摄影师应该在实际直播之前，拥有较好的关于基础游戏性的知识，练习摄像机的移动。一个死了的、在观看者模式的玩家无法变成摄影师。
==录制游戏==
SourceTV 主服务器可以在无任何数据损失和网络延迟的前提下录制游戏。所有的事件和实体都会被录制，而且 demo 文件可以像平常一样在客户端上回放（使用 demoui 来回放）。要开始录制一个 demo 文件，必须在载入地图之前启用 SourceTV，然后执行 tv_record demoname 。demo 将会在下次更换地图的时候停止录制，或者使用 tv_stoprecord 来停止录制。要在每局游戏都自动录制，你可以设置 tv_autorecord 1。自动录制的 demo 文件会命名为地图名+录制开始的日期/时间的形式（auto-YYYYMMDD-hhmm-map.dem）。SourceTV 的观众也可以使用一般的 record 命令来录制游戏，但在正常的客户端录制 demo 上，你不能在播放时更改追踪的玩家或者观看模式。
有些时候你可能只是想使用 SourceTV 来录制 demo 而不是转播。你可以通过设置最大客户端数量为零 （tv_maxclients 0）来禁用转播。要确保启用你的服务器上的自动录制，在你的 autoexec.cfg 中添加这几行：
 tv_enable 1
 tv_autorecord 1
 tv_maxclients 0
==如何做...==
;不使用 Steam 运行一个 Win32 中继代理：使用 HldsUpdateTool 下载并安装 Windows 专用服务器（srcds.exe），你可以在这里下载。
（译注：Source 引擎的游戏开始全面迁移到 ，HldsUpdateTool 下载到的过期旧文件将不在可用，欲下载最新的 srcds，应使用 。）
在安装过程完成后，按照 hldsupdatetool_readme.txt 文件里的步骤来升级服务器端。这也许需要花费很多磁盘空间，但是如果你只是运行 SourceTV 中继代理的话，你可以删除所有模型、地图、材质以及声音文件。现在你可以在没有运行 Steam 的情况下启动 srcds.exe 了。
;远程控制一个中继代理：SourceTV 中继代理支持像正常的 SRCDS 游戏服务器一样的远程控制命令（RCON）。使用 "rcon_address <ip:port>" 和 "rcon_password <password>" 来访问你的目标主机，并使用 "rcon <command>" 来发出命令，比如 "rcon tv_status"。请注意：RCON TCP 端口是服务器的默认端口（通常是27015），不是 SourceTV 的端口。
==控制台命令==
;tv_enable <0|1>
:在本地游戏服务器上启用 SourceTV，在下次更换地图之后 SourceTV 机器人会出现在观察者的位置（仅限主服务器）。
;tv_name <name>
:设置 SourceTV 显示在服务器浏览器和分数板的名字。
;tv_title <text>
:设置显示在观众GUI的 SourceTV 转播标题
;tv_maxclients <0..255> 
:设置本地 SourceTV 服务器/代理的最大客户端数量（默认128）。
;tv_stop
:停止通过 SourceTV 转播游戏。
;tv_status
:显示 SourceTV 特定的信息。
;tv_clients
:显示一个所有连接到本地 SourceTV 服务器的观众客户端的列表。
;tv_msg <text>
:发送一个 HUD 信息给所有已连接到 SourceTV 的观众客户端。
;tv_retry
:重新连接 SourceTV 中继代理到最后一个已知的地址（仅限中继）。
;tv_autoretry <0|1>
:如果启用，SourceTV 在丢失连接后会尝试重新连接到最后一个已知的服务器。
;tv_timeout <seconds>
:设置 SourceTV 中继代理连接超时时间（秒）。如果一个连接超时，中继代理会自动尝试重新连接。
;tv_delay <seconds>
:Source TV 转播延迟时间（秒）（仅限主服务器）。
;tv_delaymapchange <0|1>
在游戏服务器上延迟换图直到剩余的缓冲数据广播出去。
;tv_port <port>
:设置 SourceTV 主机端口（默认27020）。必须设置在 srcds 的启动参数中。
;tv_maxrate <bytes>
:设置每个客户端最大的带宽速度（字节/秒）（默认5000）
;tv_snapshotrate <n>
:设置 SourceTV 每秒的世界快照广播（仅限主服务器）。
;tv_password <password>
:设置观众连接时需要的密码。
;tv_relaypassword <password>
:设置中继代理连接时需要的密码。代理连接时只需要使用 "password <password>" 来连接到设置好的 tv_relaypassword。
;tv_relay <IP>
:连接一个中继服务器到另一个 SourceTV 服务器/中继
;tv_record <filename>
:启动一个 SourceTV demo 录制，并且录制所有实体和事件（仅限主服务器）
;tv_stoprecord
:停止 SourceTV demo 录制（仅限主服务器）
;tv_autorecord <0|1>
:自动录制每场游戏，demo 文件名自动命名为 - YYYYMMDD-hhmm-map.dem
;tv_debug <0|1>
:显示额外的调试信息
;tv_dispatchmode <0|1|2>
:设置连接时的 Source 调遣模式：0=从不，1=如果合适，2=一直
;tv_overrideroot <0|1>
:用本地 IP 覆盖掉主服务器 IP 转播给观众。
;tv_relayvoice <0|1>
:如果启用，允许用户在转播时语音聊天
;tv_transmitall <0|1>
:默认情况下，在自动导航视角之外的实体和事件将不会转播出去以此来节省带宽。如果 tv_transmitall 启用了，整个游戏都会传输转播，观众可以切换他们的视角到任何他们想要的玩家。这个选项会提高每个观众的带宽需求，每个观众提高 2 或 3 个因子。
;tv_chattimelimit <seconds>
:限制观众只能每隔 n 秒才能聊天
;tv_chatgroupsize <n>
:设置聊天群大小。只有在同一聊天群的观众可以互相说话。聊天群可以用 "tv_chatgroupsize 0" 来关闭，所有人都可以跟其他所有人说话。设置聊天群可以帮助减少喋喋不休的噪音，以及节省一些带宽。
;tv_chatgroup <name>
:允许观众选择他们的聊天群如果不给出名字，会显示当前的聊天群（仅限客户端）
;tv_nochat <0|1>
:屏蔽其他观众的聊天（仅限客户端）
;tv_allow_static_shots <0|1>
:允许自动导航选择固定的摄像机位（仅限主服务器）
;tv_allow_camera_man <0|1>
:允许在游戏服务器的观看者变成一个摄影师（仅限主服务器）
==命令行参数==
这些命令行设置无法通过控制台或 rcon 执行。如果你想限制出租的服务器的 SourceTV 功能的话，他们很有用。
;-nohltv
;-tvdisable 
:禁用该游戏服务器上所有 SourceTV 功能。
;-tvmasteronly
:SourceTV 只能服务一个客户端，并且无法作为中继代理使用。
== 参阅 ==
*
*
*