熟悉Source引擎服务器的搭建,但想了解更多《传染病》特有的控制台变量和设置?本指南将尝试汇总相关数据,同时也会提供搭建服务器的基本说明。 简介、免责声明及其他相关内容 你想搭建《传染病》服务器吗?如果你曾接触过Source引擎服务器,这里能找到《传染病》的特定设置。如果你从未尝试过搭建专用服务器,本文也包含了对“搭建专用服务器”这一概念的新手友好介绍。 关于我 我叫托马斯,是个丹麦人,现居荷兰海牙。我从小就是个狂热的游戏玩家,并且有幸以电脑相关工作为生。过去很多年里,我为多款游戏搭建过服务器,其中大部分是基于Source引擎的,这让我在这个领域积累了一些经验。 不过,我不是也永远不会声称自己是专家。仍然有很多东西对我来说是未知或不清楚的。比如,我只了解网络的基础知识,知道IP地址和端口是如何工作的,但这些知识足以让服务器平稳运行。 告诉你这些的目的是什么呢?这意味着如果我能弄明白,那么如果你懂一点技术,你也很可能做到。 免责声明: 如前所述,我不是专家,也并非无所不知。 我很可能在某些事情上是错的。注意:如果你的电脑IP地址经常变动,可能会遇到问题。我很难就此给出太多建议,因为我自己从未遇到过这个问题(我甚至不使用静态IP地址)。在这种情况下,你可以考虑了解一下动态域名解析。 步骤2:配置文件(server.cfg) 配置文件包含服务器的各项设置(以控制台变量的形式)。这是Source引擎游戏之间的最大区别之一,也是最令人头疼的问题之一:哪些控制台变量有效,哪些无效?取值是多少?哪些是特定于该游戏的,等等。 全新安装的服务器不会有server.cfg文件,因此你需要自行创建。最简单的方法是打开记事本,将文本粘贴进去(或者你也可以从头开始编写),然后保存。之后,你需要将文件扩展名(通常是.txt)重命名为.cfg。该文件应保存在你的/contagion/cfg文件夹下。无需创建该文件夹,它应该已经存在,并且里面有很多文件。 注意:所有你启动的服务器实例都会自动执行server.cfg。如果你愿意,可以创建一个包含所有服务器应共享的通用控制台变量的server.cfg,然后为每个服务器创建名为其他名称的单独配置文件。之后,你可以在服务器启动时使用启动参数exec来执行特定的配置文件。 以下是一个相当标准的server.cfg,无需重大修改即可正常使用。请注意,这是为标准33的tickrate设计的! 需要记住以下几点: 确保仔细检查此配置文件,并更改我用斜体标记的值 有几个控制台变量目前处于注释状态(带有双斜杠//)。如果你想使用它们,必须取消注释(删除斜杠)并为其赋值。否则,它们将默认为标准值。 maxrate被设置为每个客户端50 kb/s。这个值可能还可以更低,但我尚未研究《传染病》平均发送的数据量。 //--> 这是你的服务器名称。也可以通过启动参数定义 hostname 在此处输入你的服务器名称!// ********* RCON 设置 ************* rcon_password 在此输入随机密码 // 务必设置此项,否则他人可能远程控制您的服务器!!! sv_rcon_banpenalty 15 // 对 RCON 认证失败用户的封禁时长(分钟) sv_rcon_log 1 // 启用/禁用 RCON 日志记录 sv_rcon_maxfailures 3 // 用户 RCON 认证失败次数达到此值后将被封禁 sv_rcon_minfailures 5 // 在 sv_rcon_minfailuretime 时间内,用户 RCON 认证失败次数达到此值后将被封禁 sv_rcon_minfailuretime 10 // 跟踪 RCON 认证失败次数的时间窗口(秒) // ************************************ // 服务器密码。如需使用,请取消注释并设置密码。 //sv_password // 区域 - 设置服务器所在的大厅区域你需要将此设置为最接近你服务器的位置 //--> 东海岸 - sv_region 0 //--> 西海岸 - sv_region 1 //--> 南美洲 - sv_region 2 //--> 欧洲 - sv_region 3 //--> 亚洲 - sv_region 4 //--> 澳大利亚 - sv_region 5 //--> 中东 - sv_region 6 //--> 非洲 - sv_region 7 //--> 全球 - sv_region 255 sv_region 255 // 日志设置 sv_logfile 1 // 启用文件日志记录 sv_logbans 1 // 是否记录封禁信息? sv_logecho 1 // 将日志消息回显到服务器窗口 sv_log_onefile 0 // 保留一个日志文件还是分割为多个?// ************* 速率与网络设置 ************* sv_minrate 30000 // 客户端允许设置的最小千比特率(客户端将以此速率接收数据) sv_maxrate 30000 // 发送给每个已连接客户端的最大千比特率 sv_lan 0 // 服务器是否仅局域网可用或可连接互联网 sv_mincmdrate 30 sv_maxcmdrate 33 hostip XXX.XXX.XXX.XXX // 你的外部IP // ************* 服务器设置 ************** sv_voiceenable 1 // 启用服务器上的Steam内置语音聊天功能 // sv_contact // 管理员联系邮箱地址,将显示在服务器信息中 sv_cheats 0 // 允许使用作弊功能。不建议开启!// *************** 回合与感染相关控制台变量 ************ // mp_roundlimit X(回合限制) // mp_timelimit XX(时间限制) // Difficulty 0 // 0(简单),1(普通),2(困难),3(极限) // cg_infection_disabled 0 // 此服务器是否禁用感染功能? // cg_zombie_ai_only 0 // 是否只允许AI僵尸?若启用,玩家死亡后只能以观察者模式进行游戏。 // ************************************ // 执行封禁文件 exec banned_user.cfg(执行封禁用户配置文件) exec banned_ip.cfg(执行封禁IP配置文件) writeid(写入身份标识) writeip(写入IP地址) 步骤3:启动并运行服务器(参数等) 通常使用.bat文件启动服务器。你可以像创建server.cfg一样创建该文件:使用记事本并更改文件扩展名。该文件不一定要放在《传染病》文件夹中,但如果放在其他位置,则必须提供contagionds的完整路径。在批处理文件中放入exe文件(下文将进一步说明)。批处理文件的名称基本无关紧要,只要文件名以.bat结尾即可。 一个典型的文件内容如下: contagionds.exe -steam -game ". contagion" -console -dedicated -maxplayers X -ip <你的内网IP> -port <你的端口> +map <地图名称> +sv_lan 0 这些参数中的大部分都相当容易理解。通常在server.cfg中使用的大多数控制台变量也可以在这里定义,它们以加号(+)开头,而非减号(-)。完整列表请参见Valve开发者维基。注意:务必将斜体部分替换为正确内容! 参数说明: Maxplayers(最大玩家数)的含义很明显,标准设置为8。在猎杀模式和恐慌模式下,最多可设置为16。尽管地图是一个控制台变量,但必须在启动时设置,否则服务器无法准备好接受连接。获取地图列表的一个好方法是启动服务器——或者启用控制台的客户端——然后使用maps *命令。 注意:没有用于切换游戏模式/类型的参数或控制台变量。这完全基于地图的类型。以CE开头的地图是逃亡模式,CX是撤离模式,CH是猎杀模式,CPC是经典恐慌模式,CPO是恐慌目标模式。 IP应为你的内网IP(你托管服务器的计算机的IP)。 端口显然是你通过端口转发打开的端口(或其中一个端口)。 控制台参数将让你的服务器在命令行样式的文本界面中运行。这是大多数人的做法。我过去曾使用过图形用户界面(就是以前那个经典的CSS界面),但从那以后就没再用过了。实际上我甚至不确定它现在是否还能正常运行。 游戏参数用于告知可执行文件它需要托管哪个游戏。它可以接受指向Gameinfo.txt的路径(该文件可在Contagion子文件夹中找到)或预设值(请参阅此列表)。 注意,它使用以点和正斜杠(./)开头的路径。这称为相对路径,表示它将从contagionds.exe文件所在的文件夹开始搜索。游戏自带的默认批处理文件使用两个点(../),这意味着它会先向上一级文件夹,然后再查看后续路径。欢迎对我进行纠正,或就如何以不同方式做得更好提出建议。 许多服务器都托管在Linux系统上。我从未有幸深入研究过这个可爱操作系统的奥秘,因此这里完全没有关于Linux的建议或技巧。 这是我第一次编写指南,如果不够完善,请见谅。未经我明确许可,您不得复制、转载或以任何形式部分或全部重新发布本指南。 目的: 您可能会问我制作本指南的原因是什么?正如我在引言中提到的,过去多年来,我曾为许多不同的游戏托管服务器。重要提示:如果将批处理文件移至《传染病》根目录外,需提供contagionds.exe的完整路径。默认情况下,批处理文件会在其运行所在的文件夹中查找该可执行文件。 sv_lan参数用于定义你的游戏仅在本地网络可用还是可通过互联网访问。除非你仅计划运行本地服务器,否则应将其设为0。通常此参数默认值为0,但据反馈,若不明确指定该参数,可能会导致服务器无法在网络上被正常发现。 关于tickrate的注意事项:若想以更高的tickrate运行服务器,必须将-tickrate作为启动参数进行定义。但需注意,你还需在server.cfg中修改几项相关设置。查看控制台变量和设置部分以获取更多关于tickrate的信息! 实用功能: exec是一个便捷参数,它能让服务器在启动时除了执行servercfg文件外,还执行特定的cfg文件。有关托管多个服务器的更多信息,请参见相关部分! 关于VAC的注意事项: VAC(Valve反作弊系统)是一项能够自动检测并封禁许多在服务器上使用不正当手段进行游戏的用户的技术(例如使用加速外挂、自瞄外挂,在某些极端情况下,还包括使用与sv_cheats相关的命令,如穿墙模式)。VAC在所有服务器上默认启用,管理员需要通过在服务器参数中添加insecure来明确禁用它。 防火墙: 如果您使用防火墙,务必为contagionds。exe访问权限。对于部分防火墙(例如Windows自带的防火墙),首次启动服务器时会弹出窗口询问是否授予该文件访问权限。 对于其他程序,你可能需要手动进入防火墙程序的设置,为contagionds.exe授予访问权限。请注意,该程序必须同时拥有发送和接收数据的权限! 可选:服务器重启脚本 这是一个额外的可选功能,可在服务器崩溃关闭时自动重启服务器。 @echo off cls echo 正在保护服务器防止崩溃... echo 若要关闭contagionds和此脚本,请关闭srcds窗口,然后根据你的语言输入Y并按Enter键。标题:contagionds 监控程序 :contagionds 回显(%时间%)contagionds 已启动。 开始 /等待 <在此处插入你的批处理文件内容> 回显(%时间%)警告:contagionds 已关闭或崩溃,正在重启。 跳转至 contagionds 此批处理文件与普通批处理文件的区别在于,它必须保存在与 contagionds.exe 相同的位置。不过,你始终可以为此文件创建快捷方式并将其放在桌面上,以便于查找和启动。 须知:控制台变量(CVAR)和设置 CVAR 是控制台变量。实际上有数百个控制台变量,但幸运的是,只有少数几个是创建功能正常的服务器真正需要的,而其他变量则用于操作诸如游戏设置(队伍、回合等)之类的便捷功能。据我所知,这些内容可用于三个不同的地方: 1. 在server.cfg文件中(稍后会详细说明) 2. 直接在控制台中 3. 作为服务器启动时的命令行参数(可能并非全部适用) 获取《传染病》完整且最新的控制台变量列表的最佳方法是进入游戏。打开控制台(如果不确定如何打开控制台,快速搜索一下应该能找到方法),然后输入cvarlist。如果想将其保存到文件中,可以输入cvarlist log cvarlist.txt,这会在你的《传染病》文件夹中创建一个名为cvarlist.txt的文件。但要注意,该文本文件没有格式,所有文本都在一长行中!不过它是CSV格式的,所以如果你知道如何将其导入Excel(或其他兼容CSV的程序),就可以创建一个格式整齐的列表。实用技巧:如果你想要特定部分的控制台变量,可以输入类似cvarlist sv_这样的命令,以仅获取以sv_开头的控制台变量列表。 注意:该列表会包含《传染病》未使用的控制台变量。其中肯定有许多控制台变量用于其他Source引擎游戏,例如《胜利之日》《反恐精英:起源》《求生之路1》和《求生之路2》等。通常很难明确哪些控制台变量可用于《传染病》或哪些是《传染病》特有的,因此才有本指南! 以下是一些常见、实用且重要的控制台变量的介绍。如果你需要《传染病》特定的控制台变量(cvar),可以查看相应部分。 速率/快照/帧率/滴答率控制台变量: 许多此类控制台变量无法正常工作,这与较新版本的Source引擎游戏有关。自从《求生之路1》以来,其中许多已被锁定或移除。 滴答率是一个高级但重要的概念。你无需成为这方面的专家,但了解它可以极大地帮助你排查问题或提升服务器性能与稳定性。 默认情况下,滴答率是锁定的,但《传染病》支持33(标准)和66。我不会详细介绍滴答率是什么——如果你感兴趣,可以查看开发者维基上的官方页面,其中解释了网络模型的工作原理。除了《求生之路》和《求生之路2》外,其他游戏的tickrate(服务器刷新率)均锁定为66。这两款游戏则锁定为30/33。请注意,虽然提高tickrate可以提升服务器“性能”,但也会占用更多资源。 注:tickrate只能通过启动参数进行设置。请前往相关部分了解更多信息。 FPS(每秒帧数)是大多数人都知道的概念,它不仅与图形相关。在过去,提升FPS是一种常见的操作,用于从服务器中榨取更多性能,但现在这已成为过去式。在我看来,这是件好事,因为它降低了搭建合适服务器的难度,减少了需要理解和调整的高级设置。 引用自Valve:这些更改的另一个影响是,所有橙盒(TF2、CS:S等)专用服务器都将以锁定帧率运行,类似于L4D/L4D2。fps_max控制台变量对服务器将不再起作用。 如今,你通常会看到帧率和tickrate相互匹配。当你在控制台模式下启动contagionds.exe时,你会看到它的帧率徘徊在30左右,这与33的标准tickrate相对应。 好吧,我明白了,但面对这一切我到底该怎么做呢?好问题,如今幸运的是,这可以归结为三个相关的控制台变量: sv_maxcmdrate sv_mincmdrate sv_maxrate sv_minrate 如果你真的想深入了解这些变量的作用,我会建议你参考之前关于tickrate/网络模型的链接,或者链接部分中的其他一些链接。归根结底,这些变量用于控制客户端和服务器发送/请求的数据包数量,以及发送的字节数。 幸运的是,随着Valve多年来的更新,你的服务器在默认设置下应该能正常运行,无需进行任何更改。如果你使用指南中的server.cfg设置,应该就能顺利运行。 基本思路是,maxcmdrate应设置为tickrate,即标准的33或66。虽然Source引擎游戏都共享相同的基本原理,但它们在配置/控制台变量方面存在差异。 我最大的不满是,特定游戏的信息往往没有集中跟踪或存储,而是分散在论坛、网站、相关平台、便签或其他人的脑海中。由于我最终总会为每个游戏积累相当于一本小型旅行词典的笔记,所以这次我想与其他人分享。 本指南的第一部分将作为设置一个可运行的《传染病》服务器的通用指南,分为3个步骤。后面的部分是额外信息,将深入探讨《传染病》特有的控制台变量和设置。因此,无论是新手还是有经验的服务器管理员,都应该能在这里找到一些有趣的内容。maxcmdrate 的默认值设为 66。 mincmdrate 通常设置为略低于 maxcmdrate 的值。我建议在 33 tickrate 时设为 30,在 66 tickrate 时设为 60。 maxrate 很重要。它定义了服务器向每个客户端发送的最大千字节每秒(以字节为单位)的数据量。相比硬件,你的上传速度更能限制服务器数量和/或可在服务器上游玩的人数。将其设为无限制通常被认为是不良做法,但也并非完全不可行。 mincmdrate 同样重要,甚至可能更重要。它定义了客户端允许设置的最小速率(使用 rate 控制台变量)。基本上,这控制着他们可以接收的千字节每秒的数据量。默认情况下,客户端将此值设置为10000(10 kb),因此即使将maxrate设置为例如80 kb/s,他们也无法从服务器可以发送的额外数据中获得任何好处。因此,我建议将minrate设置得更高(不确定《传染病》来回传输的确切数据量),但当然不能高于maxrate。 有一篇关于CSS的旧文章提到了带宽方面的内容,如果你对更多技术细节感兴趣的话,但它可能不能直接与《传染病》进行很好的比较。 标准/基准控制台变量: sv_pure: 有关sv_pure(以及相关的sv_consistency)的详细信息,请参考Valve的维基页面。在测试版中,sv_consistency设为1有时会因各种文件检查失败而将玩家踢出游戏。不过此问题现已修复,您无需再定义sv_consistency(实际上该指令已被弃用)。 mp_timelimit: 似乎仅影响“猎杀”游戏模式的回合间隔时间。 mp_roundlimit: 服务器更换地图前可进行的回合数。似乎仅影响“撤离”和“猎杀”模式。在“逃脱”模式中,一旦获胜就会更换地图。在“撤离”或“逃脱”模式中,失败后重新开始不会计入回合数,只有“胜利”才会计入回合限制。 地图循环由默认使用的mapcycle.txt文件定义。您可以通过控制台变量mapcyclefile更改使用的文件,也可以将其用作启动参数——如果您希望多个服务器使用不同的地图列表,这会很方便。有关如何使用此功能的更多详细信息,请参阅相应部分。了解一下:《传染病》专用控制台变量 有许多以cont开头的控制台变量,但它们似乎都是客户端专用,对服务器来说没什么意义。 难度由difficulty控制台变量定义,数值如下: 0(简单) 1(普通) 2(困难) 3(极限) 服务器端《传染病》专用控制台变量均以cg开头。这类变量数量太多,无法在此一一列出,但其中大部分用于在不同难度下修改友军伤害、僵尸生命值/伤害等各种属性。 不过有两个重要的变量: cg_infection_disabled:定义幸存者是否会因僵尸伤害而感染(进而在实际死亡前变成僵尸)。默认值为0。 cg_zombie_ai_only:定义是否允许玩家扮演僵尸。如果启用此功能,玩家死亡后不会变成僵尸,而是会以旁观者视角观看游戏剩余进程。默认值为0。 不同游戏模式的控制台变量(Cvar)通过前缀加下划线来区分: ce_ 对应逃生模式 cx_ 对应撤离模式 ch_ 对应猎杀模式 cpc_ 对应经典恐慌模式 cpo_ 对应目标恐慌模式 出于好奇,被称为【总统】的控制台变量似乎相当于《求生之路2》中的【导演系统】。 额外内容:托管多个服务器 如果想要托管多个服务器,你需要问自己几个问题: 我的上传速度是否足够,以避免所有服务器都出现延迟? 我的电脑在性能方面(CPU、内存等)能否承受?如果两个问题的答案均为是,则你需要执行以下操作: 端口: 你需要为每个想要创建的服务器开放/转发一个端口。良好的做法是使用间隔为2的端口号。例如,如果你的第一个服务器使用27015端口,那么下一个服务器应使用27017端口,以此类推。 配置文件: 服务器默认情况下始终使用server.cfg文件。虽然你可以让多个服务器共用同一个server.cfg文件,但也可以为它们分别设置各自的配置文件。方法是:在启动文件中使用服务器配置文件变量。例如,你可以创建server1.cfg文件,并在启动参数中添加+servercfgfile server1.cfg。 使用多个配置文件的好处是,你可以让服务器拥有多种不同的设置。请注意,如果你决定使用一个配置文件,应将主机名定义为启动参数,而非在配置文件中设置。当然,除非你希望所有服务器都使用相同的名称。 专业提示:server.cfg 会被你启动的所有服务器实例自动执行。你可以创建一个包含所有服务器应共享的通用控制台变量的 server.cfg,然后为每个服务器创建单独的配置文件并命名。之后,你可以在服务器启动时使用启动参数 exec 来执行特定的配置文件。 启动文件:无论如何,你都需要多个批处理文件来启动每个服务器。这里唯一必须更改的是端口,其他所有内容都可以保持不变。 故障排除:我的服务器未在服务器浏览器中显示!出现这种情况可能有多种原因,但有一些常见的检查事项: 端口转发 我遇到的最常见原因是端口转发问题。端口转发比较复杂,本身就可以单独写一篇指南,而且不同路由器的端口转发设置方法也不同(有些劣质路由器甚至不支持正常的端口转发)。 请确保你要使用的端口已转发到正确的IP地址,并且同时转发了TCP和UDP端口。根据路由器的不同,你可能可以根据计算机名称和/或IP来选择要转发端口的设备,注意不要将端口转发到错误的计算机上。内部和/或外部IP错误 确保在批处理文件中使用正确的内部IP地址。该IP地址必须指向你正在使用的机器,但同时要记住,如果你有多个网络接口,你的机器可能会有多个IP地址!请使用你已转发端口的那个IP地址。 这可能很难排查,因为没有明显的错误提示。你可能同时连接了无线网络和有线网络,并且端口已转发到有线网络,但你在批处理文件中使用的是无线IP。此时,一切似乎都会正常启动,服务器也会连接到Steam主服务器,但服务器将无法被他人看到。 至于外部IP,请确保在配置文件中使用hostip控制台变量定义正确的外部IP地址。这也不会给出明显的错误消息。如果你是少数外部IP经常变化的用户之一,你将不得不经常更改配置文件(这可不太有趣),或者研究动态DNS。我在这方面帮不了太多忙,因为我自己从未有过这样的需求。 错误的端口 确保你的批处理文件中定义了正确的端口(你转发的那个端口)。虽然不太容易弄错,但检查一下总是好的。即使端口没有转发,服务器仍然可以绑定(使用)该端口。控制台顶部附近会有一行显示绑定IP和端口的信息。如果端口已被占用(或找不到),应该会有错误消息。 局域网服务器设置 确保sv_lan设置为0。当然,我们始终欢迎建设性的反馈。希望我们能为《传染病》服务器管理员提供一份不错的参考资料。 本指南旨在为你提供关于Source服务器(尤其是《传染病》)的中级知识。指南中不含图片,并假定你有能力且愿意自行做一些准备工作。部分概念仅涵盖基础内容,如果你希望深入了解,通常会指引你前往可获取更多信息的地方。 开始之前,你应已了解以下内容: 端口,尤其是端口转发。 外部IP地址和内部IP地址的区别及用途。 使用SteamCMD下载/更新Source引擎服务器的方法。你可以在配置文件中进行设置,也可以在批处理文件中作为启动参数来操作。 注意:传染病服务器不支持XP系统,因此使用该系统或任何基于该内核运行的Windows Server版本都无法正常工作。 服务器软件、设置与安装: - 阀门开发者维基上的Source专用服务器页面 - 关于如何下载和更新srcds软件的SteamCMD页面 - 命令行参数 - 纯净模式(一致性)相关文章 端口转发: - 用于检查特定端口是否真正开放的网站 - 这是获取所有端口转发相关信息的权威网站故障排除: - 无法加入服务器?服务器未在主列表中显示? - 启动服务器时出现“无法分配专用UDP端口”错误消息 相关知识: - SRCDS论坛是获取所有与SRCDS相关内容的绝佳平台 - Valve开发者维基也是查找SRCDS相关内容的好去处 网络/ tickrate /速率: 注意:这些文章中的许多内容已过时!我链接它们只是为了那些对更高级的网络/引擎细节感兴趣的人。特别是像修改tickrate、pingboosting/FPS等概念在较新的SRCDS游戏中已不再适用(因此大多无关紧要,但可能值得一读)。Valve关于网络模型工作原理的页面 延迟、阻塞丢失和 ping 解释 关于如何优化服务器的旧(大部分已过时)文章 tickrate 解释 关于如何获得高 tickrate 和高速率的旧文章 更新日志 这是一个更新日志,我(和你)可以通过它记录我在指南中所做的更改。不幸的是,自从指南开始以来,我已经做了很多更改,我无法全部记住。 2014年4月15日: 根据我所阅读的内容和自己做的一些测试,对指南进行了首次修改。大部分仅测试版的观察结果已被删除,例如建议关闭 VAC 和将 sv_consistency 设置为 0。同时更新了启动参数下的地图列表。 添加了许多新的控制台变量。《传染病》中特定的内容太多,无法在此一一列出,但有一些实用的内容,等我梳理完后会列出来。已添加难度设置,这很不错,相关的新控制台变量(cvar)很简单,就是【difficulty】。没有比这更简单的了! 许多控制台变量已被移除,特别是所有特定游戏模式的变量。由于大多数有趣的变量会改变撤离模式的设置,我猜随着难度设置的引入,它们的移除是可以理解的。 还有一些其他变量也被删除了,例如【sv_maxvisibleplayers】。遗憾的是,我非常期待的【mapcyclefile】仍未实现,这使得无法正常托管多个不同游戏模式的服务器。我仍然不能完全确定时间限制和回合限制是如何运作的,也不清楚地图轮换具体是如何控制的。不过我决心尽快弄清楚。 我添加了关于使用exec启动参数执行额外配置文件可能性的说明。另外值得注意的是,仍然没有任何投票或MOTD相关的控制台变量/设置。已更新服务器配置文件,删除了冗余的控制台变量,并添加了一些新的变量。 仍有很多东西需要测试和修改。 2014年12月4日: 游戏已退出测试/抢先体验阶段!我将需要慢慢梳理新的和/或已更改的控制台变量、设置等。还必须测试并删除本指南中提及的所有与测试版相关的内容。24-03-2014: 令我十分惊讶的是,maplist.txt似乎确实不再被使用了。现在它终究还是使用mapcycle.txt。我的mapcycle和maplist文件内容完全相同,这就解释了为什么我之前没有发现这一点。这是一个改进,不过遗憾的是,mapcyclefile控制台变量(cvar)仍未被实现。这意味着仍然无法运行多个具有不同地图/游戏模式的服务器,因为游戏类型是由地图定义的。 有机会观察了mp_roundlimit的实际效果。据我所知,它只将“胜利”算作一局。因此,如果你玩的是撤离模式(Extraction),并且在一局中死亡或失败,那么就回合限制而言,这实际上并不算作一局。这是基于我将回合限制设置为4,并且让不同的队伍在巴洛广场地图上玩了一个半小时,期间从未更换过地图。对于“猎杀”模式,它的运作方式和以前一样,但由于每回合结束时总会有一个获胜者(这算作一个回合),所以不存在失败/胜利的动态机制。 这仍然引出一个问题:开发者说回合限制控制台变量已修复,到底是什么意思? 2014年16-13日: 为“猎杀”模式添加了一系列新的控制台变量。它们都与各种击杀等获得的分数有关。“撤离”模式有了自己的“玩家加入时间”等效变量。仍不确定它的确切作用。已确认mp_roundlimit在“猎杀”模式下正常工作(和以前一样),“撤离”模式仍不确定,我还没有测试“逃脱”模式。 我的理论是关于地图列表的。关于文件损坏的说法并不属实。服务器仅使用该文件中的地图(且按该顺序)。 已将《传染病》专用控制台变量导入server.cfg,并对其进行了全面重写和清理,使其更加美观。整洁的server.cfg意味着服务器运行更顺畅! 2014年12月15日: 距离上次更新已有很长时间,期间我没怎么玩《传染病》,游戏本身也没有太大变化。除了新地图(目前只有猎杀模式版本)外,主要是一些bug修复和稳定性改进。不过据我观察,多人游戏的稳定性似乎有了显著提升,干得好,开发者们!不过在最近的一次更新中提到了一件事,那就是mp_roundlimit“终于修复并可以正常工作了”。这很奇怪,因为我早在一月份就发现了这个控制台变量的实际作用,不过当时它似乎只对“猎杀”和“撤离”模式有影响。也许他们的意思是现在它也适用于“逃脱”模式了,但我还没有测试过。 我也不确定是否添加了新的控制台变量或更改了现有的变量,但我确实注意到启动参数servercfgfile突然不再被识别了。这将是非常不幸的,因为这是为每个服务器设置单独配置的主要方式。也许这是一个bug。此外,修改地图列表文件中的地图似乎不再影响可用地图或其轮换顺序,这非常令人遗憾,除非存在新的替代方法。我尝试修改地图循环文件,希望能解决问题,但也没有成功。这一点还需要进一步测试。 2014年1月25日: 终于弄清楚了mp_roundtime(回合时间)和mp_timelimit(时间限制)的用途。同时也搞明白了“playerjointime”相关控制台变量的作用。已更新控制台变量和传染病游戏专用控制台变量部分。 2014年1月5日: 对端口部分进行了全面修改,但我仍不能100%确定我的信息是否准确。问题在于,三篇不同的在线文章给出了三种不同的说法,因此实际上需要哪些端口以及不需要哪些端口还不完全清楚。对于如何将电脑设置为服务器,我有一个大致的想法。 你不会在这里找到的内容: 以上内容已有所涉及或至少有所暗示。但为了明确起见,你不会找到: 下载和设置服务器的详细分步说明。 一般或针对特定路由器的端口转发设置说明。 在Linux系统上设置服务器的任何说明或技巧。 如何处理租用的服务器。 Source引擎的详尽技术细节。 所有相关的Source和Contagion控制台变量的详细列表。 步骤1:开始准备(软件、端口和IP) 此步骤对于所有基于Source引擎的游戏基本相同。同时对控制台变量部分进行了些许更新,以说明如何使用cvarlist获取控制台变量的子部分。 再次修改了参数部分。将-game参数部分改得更为简单,以减少缺乏经验的管理员出现操作失误的可能性。 2013年12月30日: 发布了新补丁,但似乎并未直接影响服务器管理。之后需要检查是否有控制台变量被移除或添加。 修改了参数部分,更清晰地说明如果重命名《传染病》根文件夹或将批处理文件移动到其他位置,需要更改哪些路径。 2013年12月29日: 添加了我发现的cont控制台变量,不过它们似乎主要是客户端的。 终于抽出时间添加了故障排除部分。目前,这仅涉及无法查看或加入在线服务器的问题,因为这是人们最常遇到的典型问题。 此外,我还添加了一个部分,其中包含我找到的所有链接,这些链接指向各种文章,帮助我更好地理解如何运行专用服务器。 ExtractGPSUpdateTimer和ExtractionGPSUpdateDistance这两个控制台变量已从游戏中移除,因此我已将它们从控制台变量列表中删除。几周前发布了一个补丁,但除了移除这两个控制台变量外,没有其他直接影响服务器托管的显著更改。 此前: 该指南的阅读量已超过1000次,这相当不错。我没想到会这样!希望它能帮助人们成功托管服务器。评论区主要充满了人们遇到的问题(正如我所预料的)。我会尽我所能回答问题并寻找解决方案,但遗憾的是,我并非总能做到。令人惊讶的是,人们遇到的问题要么是我自己无法重现的(比如“-insecure”问题),要么是我以前从未遇到过的。当人们遇到我无法解决或找不到合适答案的问题时,我总是感到困扰。 终于完成了一篇关于Source引擎游戏服务器的指南,好处是我得以重新学习相关知识。我过去知道的很多内容实际上已经过时,有些甚至完全是错误的!关于设置和控制台变量的部分已进行了大量修改,以反映最新情况。希望没有太多人因为我的无知而摇头,或者因为我糟糕的解释而感到沮丧。《传染病》更新日志2 2017年3月17日: 最近重新启动了《传染病》,所以我决定查看一下指南以及专用服务器有哪些变化。结果发现变化不大。自从我上次更新以来,大部分改动都是针对渲染、AI、网格和导航的修复与优化。 我确实在指南中修改了一些错误,主要是与速率相关的内容。我还尝试了一些服务器设置,并查看了最新的控制台变量列表,但没有发现重大变化,因此本指南仍然非常适用。 2014年9月10日: 距离我上次查看本指南已经有相当长的一段时间了,但几乎没有更新的必要。除了两张新地图外,在服务器托管方面没有什么值得注意的变化。我已经好几个月没怎么玩这款游戏了,但幸运的是,这份指南的质量让我非常满意。主要的不一致之处已经得到修正,它可以作为一个不错的入门介绍,不会试图给出所有可能的答案。只要游戏的基本机制不发生变化,这份指南应该不需要频繁更新也能继续发挥作用。 由于Steam促销活动,这款游戏销量相当不错,这也反映在了指南的浏览量上。在短短几周内,指南的浏览量比之前稳定时增长了200倍。评分也从3星上升到了4星,对此我非常感激! 不久前,我还遇到了抄袭问题。有一个为其他Source引擎游戏制作过指南的人,也为【传染病】制作了一份指南。出于对其内容的好奇,我阅读了这份指南,突然发现其中很多页面都是逐字抄袭我自己的指南。当我就此与他对质时,他给出了一个含糊其辞的回答,暗示他只是把我的指南作为参考,想用自己的风格重新措辞。但不幸的是,这仍然算作抄袭。 在我还没来得及回应之前,他的指南突然被精简了,并且他提出要链接我的指南作为替代方案。由于他最初的回应带有一定敌意,还暗示他的指南打算比我的更好,所以我认为这种态度的转变是版主介入处理的结果。我没有再进一步追究此事(我也从未收到过任何管理员的回复,所以不确定到底发生了什么),但为了表示和解,我在自己的指南中链接了他的指南。他的指南更注重事实,包含大量截图,对某些内容的解释也更深入,而我只是简单提及。我不认为他的或我的指南是最好的——事实上,我建议你两篇都读一下,以全面了解相关内容。 2014年6月28日: 游戏进行了一些小更新,但没有什么重大变化。我对指南进行了轻微的结构调整,特别是重新撰写了控制台变量和启动部分。希望这能让内容更清晰一些。 2014年5月24日: 游戏在发布后更新相当频繁,有很多变化。我还需要花时间去全面了解并核实这些内容。本指南已更新,以反映许多重要内容。 66 tickrate(每秒传输帧数)机制已存在一段时间,但此前我遇到玩家一加入服务器就被踢出的问题,因此未更新指南。我自己的服务器仍存在此问题,但对许多其他服务器而言该机制运行良好,所以这应该是我这边的配置问题。指南现已更新有关切换tickrate的信息。 已推出两种新游戏模式:僵尸恐慌经典模式和僵尸恐慌目标模式。3张“猎杀”地图拥有经典恐慌模式版本,而“逃离”地图罗阿诺克警局则有目标恐慌模式版本。这两种模式的地图及相关控制台变量(cvar)的前缀分别为cpc和cpo。 除此之外,我主要修正了语法错误、更正了部分信息并调整了其他内容。我可能需要进行一次彻底的大修,因为我经常在多个页面提到相同的内容,而当某些内容发生变化时,我只在其中一个页面进行“修复”。 2014年4月18日: 正式发布后,开发团队迅速推出了多个热修复补丁,这一点非常值得肯定。这表明开发者们在倾听玩家反馈,并在努力修复问题和优化游戏。 最新更新中加入了一个非常有趣的改动,即添加了tickrate(服务器刷新率)参数。传统上,Source引擎的服务器刷新率在很长一段时间内都是固定的,因此看到这个参数的加入令人感到意外。以更高的刷新率(最高为66)运行游戏据说能提升游戏体验,但代价是会增加资源占用。不过《传染病》这款游戏对CPU的需求似乎不算太高,这对于那些想要尝试更高tickrate(每秒传输帧数)的玩家来说是个好消息。 我原本打算重写指南中关于tickrate的部分,但在三台服务器上测试后发现,我(以及其他所有人)一加入服务器就会被“控制台踢出”。只有将tickrate重置为标准值,这个问题才会消失。真有点遗憾,无论怎么调整设置似乎都没有效果:( 2014年4月16日: 更新日志的字数不够了,所以不得不开一个新的。 首先:我真傻。我一直对mapcyclefile(地图循环文件)抱怨不休,甚至还在Steam社区上发帖提问,结果后来才发现,这个功能其实在游戏脱离测试版后就已经实装了。对于已经了解这些内容的玩家,可以直接跳至控制台变量和服务器配置文件部分。 2:服务器文件 这需要你通过SteamCMD安装服务器软件。 该程序也用于更新服务器。 注意:《传染病》服务器的应用ID为:238430 3:端口转发 你需要确定服务器将要使用的端口,并转发该端口(同时支持TCP和UDP)。Steam通常使用27000至27020范围内的端口作为游戏端口。总之,指南已更新以反映这一点! 此外,已实现motdfile-cvar。不过目前没有默认的motd文件,而且我还没测试它是否真的能正常运行。提醒自己:测试一下! 除此之外,就是一些小的修改和更正。游戏上线后,指南的浏览量有所增加。目前还没有收到任何评论,我想这应该是个好现象。运行服务器成功所需开放的端口列表如下: 28852 TCP/IP 和 UDP(允许服务器连接到主服务器浏览器) 20560 UDP/IP(Steam 端口) 由于游戏使用 Steam 后端运行,若运行多个服务器,需确保开放额外端口。据了解,当托管第二个服务器时,它会首先尝试使用默认的 Steam 端口和默认的主服务器端口,由于这些端口已被占用,因此会向前移动一个端口(例如从 28852 移至 28853)。如果打算托管多个服务器,请记住这一点。 对于实际游戏端口,理论上可以选择任何端口,但实际上有许多标准端口已在使用中,不应尝试干扰这些端口。作为示例,我已经转发了端口27000-27050。这样我就有一个50个端口的范围,可以用于我所有的服务器(是的,我有那么多服务器)。 如果你只计划托管一个服务器,只需开放一个端口即可。 3:内部和外部IP地址 你的外部地址就像你家的地址。内部地址是你托管服务器的计算机的IP。为什么我们需要这两个地址?因为当客户端连接到你的服务器时,他们需要知道要去哪个“房子”(你的外部IP),然后要连接哪台计算机(内部IP)。这与端口转发密切相关。端口转发本质上是告诉你的路由器,当有流量通过这个端口进入时,将其发送到你网络中的这台特定计算机。你可以按以下方法轻松找到你的外部IP: 打开网页浏览器 打开谷歌并输入“what is my ip” 结果应该会显示:“Your public IP address is ” 获取内部IP有两种方法: 图形界面点击操作方式: 打开“网络和共享中心”(可通过开始菜单搜索或控制面板进入) 点击左侧的“更改适配器设置” 右键点击你的网卡并选择“状态” 点击“详细信息”,IP将显示在“IPv4地址”下方 稍快的命令提示符输入方式: 点击开始并输入“cmd” 打开命令提示符后输入“ipconfig” 找到你的网络适配器,IP将显示在“IPv4地址”下方 请妥善保存这两个IP,稍后会用到(server.cfg和启动参数)。




换一换 

























