
l4d2是发行于2009年的老游戏,搭建l4d2服务器本身没有难度,难点在于学习linux的基础操作,学会搭建纯净服务器只是入门,后续还要学习调整服务器各项参数、添加插件等。本文内容较多,可用浏览器的搜索功能(快捷键 Ctrl+F)进行查找
对于新手的建议:① 对自己充满信心,对教程充满信任。游戏发行十几年了网上教程一大堆,你在百度、B站、CSDN等网站能搜到的热门教程都没啥大问题,选一篇你看的顺眼的就行 ② 完全依照教程步骤进行,不要漏看任何一句话,99%的失败原因都是没有按教程操作 ③ 同时参考多个教程进行搭建是大忌。如同你在A\B\C三家买了零件组装电脑,出了问题后你自己没有排查故障的能力,A\B\C三家也不乐意帮你检查其他家提供的零件是否故障
本文使用debian-11系统(也适用于debian-12 和 ubuntu系统),另外还有在CentOS 7系统下搭建l4d2服务器的专栏
2.x章节 ==> 搭建服务器前的准备工作
3.x章节 ==> 搭建服务器的详细步骤(含插件)
4.x章节 ==> 服务器的日常使用方法
4.3章节 ==> MetaMOD和SourceMOD插件的用法
4.4章节 ==> 服务器更换地图关卡或游戏模式
4.5章节 ==> 服务器开启作弊
5.x章节 ==> 服务器设置60tick/100tick
6.x章节 ==> 服务器保持后台运行的方法(screen)
7.1章节 ==> 服务器常见故障的处理办法
7.2章节 ==> server.cfg的补充指令
7.3章节 ==> MetaMOD和SourceMOD的故障处理
7.4章节 ==> lerp相关说明
7.5章节 ==> 对net_graph网络参数的说明
7.6章节 ==> 服务器端插件获取渠道
7.7章节 ==> 服务器端插件的安装方法
7.8章节 ==> 添加第三方地图到服务器
7.9章节 ==> 查看地图的关卡名
7.10章节 ==> 更新l4d2服务器
7.11章节 ==> WinSCP和Putty使用方法
7.12章节 ==> 云服务器的安全组设置
7.13章节 ==> Debian的防火墙相关命令
7.14章节 ==> Debian的常用命令
7.15章节 ==> Debian系统大版本升级
8.x章节 ==> 服务器浏览窗口的使用方法
带公网IP的电脑或云服务器,安装debian-11 x64版本的系统(也适用于debian-12 和 ubuntu系统)
注:
① 没有公网IP,则搭建的服务器只能在局域网内使用,解决办法是内网穿透
② 服务器硬盘可用空间最好不低于15G(l4d2服务器文件约9.5G,其他空间预留给游戏更新包、插件、Mod、第三方地图)
③ 建议安装无图形化界面的debian系统以节省资源开销,提高服务器性能
④ 有些云服务器提供的系统镜像是旧版本debian,例如我使用的百度云轻量应用服务器只提供debian-10.8版本系统镜像,可参考本文7.15章节升级到最新版,也可参考我的视频教程第2节
以下是常用的3个插件,均下载linux版本,注意分辨 “l4d” 和 “l4d2”
SourceMOD 下载地址:https://www.sourcemod.net/downloads.php?branch=stable
MetaMOD 下载地址:http://metamodsource.net/downloads.php?branch=stable
Tickrate Enabler 下载地址:https://github.com/accelerator74/Tickrate-Enabler/releases/tag/build
注:
① SourceMOD和MetaMOD是大多数插件运行的基础,强烈建议安装
② Tickrate Enabler 用于解锁服务器最高30tick的限制,不需要可不装

SourceMOD下载页面

MetaMOD下载页面

Tickrate-Enabler下载页面
WinSCP用途:① windows与debian之间传输插件、地图、Mod等文件 ② 如果不喜欢使用linux命令的话,可以在WinSCP里进行新建文件夹、解压文件、编辑文档等操作
Putty用途:通过ssh连接debian系统
WinSCP下载页面:https://winscp.net/eng/docs/lang:chs
WinSCP中文语言包下载页面:https://winscp.net/eng/translations.php
Putty下载页面(仅下载putty.exe即可):https://www.putty.be/latest.html
注:
① WinSCP和Putty使用方法在本文7.11章节。同类型的软件组合还有Xshell和Xftp
③ 另外也推荐使用FinalShell来代替WinSCP和Putty,FinalShell免费版的功能就够用了
FinalShell下载页面:http://www.hostbuf.com/t/988.html
FinalShell相比其他终端的优点是能方便的监控CPU、内存、磁盘和网络等资源的使用情况
也可参考我的另一专栏:ssh终端推荐
使用Putty连接到debian,以root用户登陆,首先更新apt源列表,命令:apt update

更新apt源列表 并 升级现有的软件
注:
① root用户本身具有管理员权限,因此以root用户执行命令时不需要加sudo,当然,将命令写成sudo apt update也没问题
② 对于国内的云服务器,例如百度云轻量应用服务器提供的系统镜像的apt源默认是百度镜像源,这样执行apt upgrade升级命令时的下载速度会很快。如果是从debian官网下载的系统镜像,它的apt源一般在国外,因此下载速度较慢,请自行搜索更换apt源的方法,也可以参考本文7.15.2-7.15.4章节的方法更换为清华软件源
安装命令:sudo apt install lib32gcc-s1

安装SteamCMD所需的依赖
安装vim命令:sudo apt install vim -y
注:
① debian自带的vi和nano也可用于编辑文本,我习惯用vim
② 用WinSCP连接debian系统后,直接双击文件调用自带编辑器编辑文本更方便
新建一个普通权限的用户aaa,命令:adduser aaa
然后输入两次密码,会提示填Full Name等信息,直接按回车键略过,最后输入y确认
注:
有些人觉得新建普通用户没啥用就跳过此步骤,全程用root用户来操作,表面上也能正常运行服务器,实则暗藏了很多隐患

新建一个普通用户aaa
作为普通用户,aaa有时需要执行一些需较高权限的命令,切换root用户又麻烦,所以执行以下操作后,在aaa的命令前加sudo即可暂时拥有管理员权限
① 在root用户下安装sudo,命令:apt install sudo
② 给sudoers文件添加“写”权限,命令:chmod u+w /etc/sudoers
③ 使用vim编辑sudoers文件,命令:vim /etc/sudoers
先按i键进入编辑模式,将光标移到要改写的位置输入内容,写完后按键盘esc键退出编辑模式,输入:wq执行保存和退出操作(w代表保存,q代表退出)

在sudoers里添加用户aaa

vim编辑器的 保存并退出 命令
④ 撤销sudoers文件的“写”权限,命令:chmod u-w /etc/sudoers
注:
其实root用户可以直接编辑sudoers文件,最后用:wq! 强制保存并退出即可,无需修改sudoers的写权限,但考虑到linux系统版本众多可能有不适用的情况,所以两种方式任选一种即可
安装wget命令:sudo apt install wget -y
注:
wget相当于windows系统下的迅雷,就是一个下载工具,接下来要用wget下载SteamCMD安装包
① 从用户root切换到用户aaa,命令:su aaa
② 在/home/aaa路径下新建Steam文件夹,SteamCMD相关的东西都放这里,命令:mkdir /home/aaa/Steam
注:SteamCMD相当于windows系统下的steam客户端,只不过它没有图形化界面,只能通过输入命令来执行各种操作
③ 打开Steam文件夹,命令:cd /home/aaa/Steam
④ 下载SteamCMD安装包,命令:sudo wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
此时可能需要输入用户aaa的密码
⑤ 解压并删除SteamCMD安装包,命令:tar xvf steamcmd_linux.tar.gz && rm steamcmd_linux.tar.gz

解压并删除压缩包
⑥ 保持当前路径/home/aaa/Steam,继续安装SteamCMD,命令:./steamcmd.sh
安装完成后,命令行会变成以Steam>开头

安装SteamCMD
注:
接下来3.8章节的操作均是在Steam>后输入命令
① 指定服务器端的l4d2的安装目录,命令:force_install_dir /home/aaa/Steam/l4d2-ds
如果输入过程中写错字,要删除字母时出现 ^H^H^H 的情况,需要按住 Ctrl 或 Shift 键再删除
② 匿名登录steam,命令:login anonymous
此步骤如出现报错请见下方 “注③”
③ 下载并校验l4d2,命令:app_update 222860 validate
要下载的游戏文件大小约9.2G
④ 下载和校验完成后退出Steam>,命令:quit 或 exit

下载并校验l4d2服务器文件

下载并校验完成
注:
① 如果下载时报错,错误代码0x2,可多次重试下载或改天再试,可能是网络问题
② 如果下载时报错:Error! app '222860' state is 0x202 after update job.,错误代码0x202,原因是安装l4d2的磁盘分区可用空间不足
③ 大约从2024年11月起,使用匿名账户下载L4D2服务器时会报错:ERROR! Failed to install app '222860' (Invalid platform)
解决办法:使用个人steam账号(确认此账号已购买L4D2)登录SteamCMD后再下载,原来的 login anonymous 替换为 login abc 123 ,其中 abc 替换为自己的steam账户名,将 123 替换为steam密码。如果有绑定steam手机令牌,接下来会显示 Two-factor code: ,这里填上验证码即可登录,登录后再输入命令 app_update 222860 validate 继续下载安装L4D2服务器
(根据我搭建CS2服务器的经验,使用个人账户下载游戏服务器时,有可能将已订阅的创意工坊文件一起下载,浪费硬盘空间,如果发现你下载的L4D2服务器文件远大于10G,可能就是这个原因,不过我简单测试了一下,暂时未出现此问题)
① 按本文2.2章节提供的网址下载SourceMOD和MetaMOD的linux版插件,然后解压
② 以安装SourceMOD为例,解压后得到addons和cfg两个文件夹,将这两个文件夹里的所有东西通过WinSCP分别传输到debian系统/home/aaa/Steam/l4d2-ds/left4dead2/路径下的addons和cfg中即可
③ 同样的操作也适用于安装MetaMOD


cfg文件夹里的sourcemod文件夹
注:
SourceMOD和MetaMOD有一些文件是相同名称的,如果传输过程中有提示文件重复,选择全部覆盖(一般情况下,重复的文件夹是默认自动合并其中的内容,而重复的文件是默认自动用新文件替换旧文件)
需要修改插件的配置文件,命令:vim /home/aaa/Steam/l4d2-ds/left4dead2/addons/sourcemod/configs/admins_simple.ini
在文档末端另起一行,写入:
"STEAM_x:x:xxxxxx" "99:z"
保存并退出,对应steamID的玩家就有管理员权限了

为玩家添加插件的管理员权限
注:
① 这里的STEAM_x:x:xxxxxx要替换为自己的steamID
② 如果还要添加更多的管理员,再另起一行按同样格式进行书写
③ 99:z指的是权限大小,一般不需要调整权限,照抄就行
④ 有两种获取steamID的方法
方法一:打开l4d2游戏进入任意地图关卡,控制台输入status就会显示玩家的steamID
方法二:在浏览器中登录steam网站,打开个人资料页面,将地址栏的网址复制到查询网站的搜索框即可搜索出steamID,SteamID查询网址:https://steamid.io/lookup/

查看steamID
server.cfg文件里包含服务器的各种设置选项
① 将当前目录切换到cfg文件夹,命令:cd /home/aaa/Steam/l4d2-ds/left4dead2/cfg
② 新建server.cfg文件并编辑它,命令:vim server.cfg
写入以下内容(//代表注释,可以不写)
rcon_password "" //在引号内填写远程管理密码,引号内不填即为不设密码。使用rcon的两个必要条件:① 在服务器端开放游戏端口的tcp协议 ② 在l4d2服务器启动项里添加一条 +ip 0.0.0.0
sv_password "" //在引号内填写服务器密码,引号内不填即为不设密码
sv_allow_lobby_connect_only 0 //不允许从大厅选择组服务器来连接
sv_tags hidden //在服务器浏览列表的中隐藏(防止别人恶意攻击服务器)
//coop合作;versus对抗;survival生还者;realism写实;scavenge清道夫
sv_gametypes "coop,versus,survival" //设定服务器可用的游戏模式
sm_cvar mp_gamemode coop //设定当前游戏模式为合作战役
z_difficulty Normal //游戏难度:easy简单;normal普通;hard高级;impossible专家
sv_region 4 //设定服务器地区为亚洲
sv_lan 0 //非局域网
sv_consistency 0 //关闭模型(MOD)冲突
motd_enabled 1 //玩家进入服务器自动打开[今日消息]界面
sv_cheats 0 //关闭作弊 注:
① 以上是基础的开服配置指令,更多指令在本文7.2章节
② 任何涉及 sm_cvar 的命令,例如 mp_gamemode,其生效的前提是l4d2服务器已安装MetaMOD和SourceMOD插件。其他更换游戏模式的方法在考本文4.4章节
③ 暂不清楚 sv_password 的用法。如果是在隐藏服务器前提下设置密码,会导致所有玩家连接不上l4d2服务器;如果是在公开服务器前提下设置密码,任何玩家不用密码也能连接到l4d2服务器
④ 可从V社的wiki查看l4d2可用的游戏模式,网址:https://developer.valvesoftware.com/wiki/L4D2_Gamemodes.txt_File
使用srcds_run配合启动项来启动l4d2服务器,
① 打开srcds_run文件所在目录,命令:cd /home/aaa/Steam/l4d2-ds
② 启动l4d2服务器,命令:
./srcds_run -game left4dead2 -insecure +hostport 27015 -condebug +map c1m2_streets +exec server.cfg -nomaster
稍等片刻,看到Connection to Steam servers successful. VAC secure mode disabled.,代表l4d2服务器启动完成
① 新建一个启动脚本,命令:vim /home/aaa/Steam/l4d2-ds/start.sh
写入以下内容后保存并退出:
/home/aaa/Steam/l4d2-ds/srcds_run -game left4dead2 -insecure +hostport 27015 -condebug +map c1m2_streets +exec server.cfg -nomaster
② 给start.sh赋予可执行权限,命令:chmod +x start.sh
③ 运行start.sh启动l4d2服务器,命令:./start.sh
注:
① 服务器启动项说明
-game left4dead2 //指定游戏为求生之路2
-insecure //禁用 VAC(-secure是启用VAC)
+hostport 27015 //服务器端口默认是27015,可更改端口号
+condebug //在left4dead2文件夹下生成console.log的记录文件
+exec server.cfg //服务器启动时自动执行server.cfg
-nomaster //隐匿服务器的公网IP(防止别人恶意攻击服务器)
+map c1m2_streets //设置默认打开的地图,这里c1m2_streets是官方地图关卡的名称
-tickrate 100 //设置服务器为100tick 其他启动项说明
-port 27015 //与 +hostport 功能相同,按自己喜好来选择用哪个启动项指定端口
+mp_gamemode coop //指定游戏模式为:战役模式
+ip 0.0.0.0 //具体作用不明确,但使用rcon的前提是要有这个启动项
+ip x.x.x.x //与 +ip 0.0.0.0 功能相同,将x.x.x.x替换为自己服务器的ip ② 每个启动项之间只能有一个空格,连续的空格会使后面的启动项失效
③ 需要检查debian的防火墙和云服务器的安全组是否开放了27015端口的udp协议,参考本文7.12和7.13章节
④ 服务器常见故障处理办法在本文7.1章节
⑤ 服务器端更新l4d2的方法在本文7.10章节
⑥ 官方战役各地图的名称,可查看V社的wiki,网址:
https://developer.valvesoftware.com/wiki/Zh/Left_4_Dead_2
在服务器端输入命令:quit 或 exit
玩家连接服务器进入地图后会显示一个今日消息的显示窗口(按H键打开),此内容保存在服务器端的motd.txt中,文件所在路径为:/home/aaa/Steam/l4d2-ds/left4dead2
如需自定义内容,建议在同路径下新建一个motd1.txt文档,将要展示的内容写在里面,同时在服务器端的server.cfg中添加一条指令:motdfile "motd1.txt"
注:
① 今日消息的内容有字数限制,超出限制的部分不显示
② 如文本显示乱码,需要将motd1.txt以utf-8编码进行保存
③ 今日消息不仅能显示文本,也能显示图片和网页,B站其他UP主有视频教学
启动方法在本文3.12章节
玩家打开l4d2游戏,打开控制台,输入服务器ip地址和端口号,指令:connect xx.xx.xx.xx:27015
注:将xx.xx.xx.xx替换为服务器的公网IP,同时将27015替换为启动项里指定的端口号
有插件管理员权限的玩家可以按键盘的【Y】键打开游戏内聊天框,输入命令 !admin 或 /admin 打开插件的功能菜单。也可以绑定键盘快捷键,例如绑定到键盘的【N】键,命令:bind n "say !admin"
注:
如果输入!admin没有出现菜单,可能的原因有
① !admin命令要使用英文感叹号
② 插件没安装好,MetaMOD和SourceMOD相关内容在本文7.3章节
③ 没有设置插件管理员权限,按本文3.10章节的步骤进行配置
更换地图关卡的命令格式:map 地图关卡名
示例:map c1m2_streets
更换游戏模式的命令格式:map 地图关卡名 游戏模式
示例:map c1m2_streets survival
以上命令需要在l4d2服务器端输入,运行命令后服务器会与所有玩家断开连接,需要重连
注:
① 网上可查到官方地图的名称,查询第三方地图关卡名称的方法在本文7.9章节
② 切换游戏模式时要注意所选地图是否支持此模式,例如官方图c1m3_mall不支持survival模式
更换地图关卡的命令格式:rcon map 地图关卡名
示例:rcon map c1m2_streets
更换游戏模式的命令格式:rcon map 地图关卡名 游戏模式
示例:rcon map c1m2_streets survival
以上命令需要在游戏内控制台输入,运行命令后服务器会与所有玩家断开连接,需要重连
注:
使用rcon命令前需要先在控制台输入rcon密码,rcon的具体用法在本文7.1.4章节
更换地图关卡的命令格式:changelevel 地图关卡名
示例:changelevel c1m2_streets
此命令需要在l4d2服务器端输入,运行命令后玩家自动进入新地图关卡,无需重连
注:
此命令仅用于更换地图关卡,不能更换游戏模式
有SM插件管理员权限的玩家可以按Y键打开游戏内聊天框,输入!admin打开菜单更换地图关卡和游戏模式。如果有安装切换游戏模式的插件,也可以在游戏聊天框输入命令(一般是!mode)切换游戏模式
参考本文3.12章节,在启动项中分别用 +map 和 +mp_gamemode 指定地图关卡和游戏模式
参考本文3.11章节,在server.cfg中,使用 sm_cvar mp_gamemode 指定游戏模式
注:
此方法可能存在bug,例如survival模式下的c1m2关卡,正常情况下玩家应在武器商店开始关卡,但异常情况下会在安全屋内开始关卡,解决方法是通过SM插件来投票重新开始此关卡,具体操作是【!admin】-->【4.其他功能】-->【2.更改模式】-->【1.重启章节】-->【1.确认】
启动l4d2服务器后,在l4d2服务器端输入命令:sv_cheats 1
有插件管理员权限的玩家在游戏内控制台使用指令:sm_cvar sv_cheats 1
知道rcon密码的玩家在游戏内控制台使用命令:rcon sv_cheats 1
注:
① 通过观察三种方法的命令格式可以发现规律,在l4d2服务器端通常是直接输入控制台命令,而在游戏端的控制台输入则需要在命令前添加 sm_cvar 或 rcon
② 在服务器开启作弊后(sv_cheats=1)玩家是无法解锁成就的。如果确实需要降低游戏难度来解锁成就,一些服务器插件能代替实现作弊指令的效果,或者借助 sm_cvar 也可以在不开启作弊的前提下使用某些作弊指令,例如无限子弹命令:sm_cvar sv_infinite_ammo 1,开启无敌命令:sm_cvar god 1
① 按本文2.2章节下载 linux版Tickrate Enabler压缩包,然后解压得到一个addons文件夹
② 将addons文件夹内所有文件通过WinSCP传输到debian路径/home/aaa/Steam/l4d2-ds/left4dead2/addons文件夹内
打开debian的路径/home/aaa/Steam/l4d2-ds/left4dead2/cfg/,找到server.cfg
如果是设置60tick,则在server.cfg里新增以下指令:
sm_cvar net_splitpacket_maxrate 30000
sm_cvar nb_update_frequency 0.024
sm_cvar tick_door_speed 1.3
sm_cvar fps_max 0
sm_cvar sv_minrate 60000
sm_cvar sv_maxrate 60000
sm_cvar sv_mincmdrate 60
sm_cvar sv_maxcmdrate 60
sm_cvar sv_minupdaterate 60
sm_cvar sv_maxupdaterate 60
sm_cvar sv_client_min_interp_ratio -1
sm_cvar sv_client_max_interp_ratio 2 如果是设置100tick,则在server.cfg里新增以下指令:
sm_cvar net_splitpacket_maxrate 50000
sm_cvar nb_update_frequency 0.024
sm_cvar tick_door_speed 1.3
sm_cvar fps_max 0
sm_cvar sv_minrate 100000
sm_cvar sv_maxrate 100000
sm_cvar sv_mincmdrate 100
sm_cvar sv_maxcmdrate 100
sm_cvar sv_minupdaterate 100
sm_cvar sv_maxupdaterate 100
sm_cvar sv_client_min_interp_ratio -1
sm_cvar sv_client_max_interp_ratio 2 参照本文3.12章节,在启动项里添加一项:-tickrate 60 或 -tickrate 100
玩家打开自己的l4d2游戏安装路径:\Steam\steamapps\common\Left 4 Dead 2\left4dead2\cfg,在cfg文件夹中新建一个autoexec.cfg文件,写入以下命令:
rate 30000
cl_cmdrate 100
cl_updaterate 100 在autoexec.cfg中继续添加以下两条指令:
cl_interp_ratio 0
cl_interp 0 注:
客户端较低的lerp值配合服务器端的100tick可以有效降低游戏延迟,关于lerp的说明在本文7.4章节
此部分内容在我的另一篇专栏:screen 软件介绍和用法
① 可能是Tickrate Enabler版本过旧造成的(2021年l4d2有一次大更新),按本文2.2章节提供的网址安装的最新版本Tickrate Enabler插件即可解决
② 正常情况下l4d2服务器启动成功,最后一句是:Connection to Steam servers successful. VAC secure mode disabled.,某次启动l4d2服务器后的最后一句变成:Master server communicatiion disabled.,向上翻看启动日志,看到一个提示(见下图),我误以为是缺少了什么文件导致的启动失败,在网上找了半天也没个解决办法,后来又过了一天再次启动l4d2服务器就恢复正常了,因此我猜测是l4d2服务器与steam之间的网络连接故障造成的启动失败

l4d2启动失败,提示只能在局域网使用
① 检查connect 公网ip:端口号是否写错,是否使用的是默认27015端口
② 是否在l4d2服务器端的server.cfg里设置了服务器连接密码,不设密码再试试
③ 检查debian的防火墙是否有开启udp协议的端口,或者云服务器控制台的安全组有没有开放相应的udp协议的端口
特别说明:
linux的防火墙和云服务器的安全组是两个不同的东西,都要开放相应的端口。如果linux的防火墙是关闭状态或linux系统未安装防火墙,只开放安全组也是可以的。另外如果云服务器还安装了宝塔面板之类的工具,也要检查一下它自带的防火墙功能
④ 如果玩的是第三方地图,玩家的addons文件夹里没有对应的地图文件,且地图版本号要与服务器端的地图版本号一致
⑤ 注意本文3.12章节,每个启动项之间只能有一个空格,连续的空格会使后面的启动项失效,导致服务器某些功能缺失甚至服务器启动失败
⑥ 尝试更新一下l4d2服务器(保证游戏端和服务器端都是官方最新版本)
⑦ 暂不清楚盗版l4d2游戏端是否能连接正版l4d2服务器。正版l4d2经常打折,史低4.2元
可能是第三方插件造成的,可以将addons文件夹重命名为addon,这样所有插件都会失效,此时再运行l4d2服务器,若能恢复正常,则需要挨个排查已安装的插件。
若仍不能进入地图的下一章节,使用sv_cheats 0关闭作弊再试
通过百度百科搜索RCON可以了解其功能,使用前需要在l4d2服务器的server.cfg中设置rcon密码。例如将rcon密码设置为1234,即:rcon_password "1234"
知道rcon密码的玩家可以在l4d2游戏控制台输入:rcon_password "1234",然后就可以通过控制台输入命令来远程控制l4d2服务器。例如打开作弊,即:rcon sv_cheats 1
① 如果输入rcon命令后控制台提示:Bad RCON password,可能是没有预先在控制台输入rcon密码 或 输入的rcon密码不正确
② 如果输入rcon命令后控制台提示:Unable to connect to remote server (ip:27015),则需要在debian的防火墙或云服务器的安全组里开放27015端口的tcp协议(如果l4d2服务器使用的不是27015端口,则开放自定义的端口的tcp协议);另外启动l4d2服务器时要有 +ip 启动项,详情请看本文3.12章节
③ 如果输入rcon命令后控制台提示:Lost RCON connection, please retry command (UNKNOWN ERROR),可能是网络原因,多试几次
sm_cvar sv_forcepreload 1 //强制所有客户端预加载
sm_cvar sv_client_predict 1 //强制所有客户端进行预测
sm_cvar survivor_burn_factor_easy 0 //关闭简单难度的火焰伤害
sm_cvar survivor_burn_factor_normal 0 //关闭普通难度的火焰伤害
sm_cvar survivor_burn_factor_hard 0 //关闭高级难度的火焰伤害
sm_cvar survivor_burn_factor_expert 0 //关闭专家难度的火焰伤害
sm_cvar survivor_allow_crawling 1 //倒地后可以移动(默认不可移动)
sm_cvar survivor_crawl_speed 100 //倒地后的移动速度为100
sm_cvar survivor_limp_health 25 //设置血量低于25后为减速状态(默认40)
sm_cvar survivor_revive_duration 2 //救起队友需要2秒(默认5秒)
sm_cvar first_aid_kit_use_duration 2 //使用急救包需要2秒(默认5秒)
sm_cvar ammo_smg_max 900 //冲锋枪备弹量(默认650)
sm_cvar ammo_assaultrifle_max 900 //步枪备弹量(默认360)
sm_cvar ammo_shotgun_max 500 //单喷备弹量(默认72)
sm_cvar ammo_autoshotgun_max 500 //连喷备弹量(默认90)
sm_cvar ammo_huntingRifle_max 500 //1代狙备弹量(默认150)
sm_cvar ammo_sniperrifle_max 500 //2代狙备弹量(默认180)
sm_cvar ammo_m60_max 900 //M60备弹量(默认0)
sm_cvar ammo_grenadelauncher_max 100 //榴弹发射器备弹量(默认30)
sm_cvar rescue_min_dead_time 10 //玩家死亡10秒后复活在任意房间(默认60s)
sm_cvar director_afk_timeout 60 //设置玩家60s无操作自动闲置(默认45秒)
sm_cvar sb_all_bot_game 1 // 防止人数不足而自动关闭
sm_cvar sb_melee_approach_victim 1 //启用bot使用近战武器(默认0不启用)
sm_cvar sb_max_team_melee_weapon 4 //设置能使用近战武器的bot数量(默认0)
sm_cvar sb_temp_health_think_factor 0.4 //设置血量低于40后bot使用医疗包(默认0.5)
sm_cvar allow_all_bot_survivor_team 1 //所有玩家死亡后bot继续游戏(默认0) 注:
① 参考V社的wiki,网址:https://developer.valvesoftware.com/wiki/List_of_L4D2_Cvars
② 如果server.cfg里添加了上述指令,在启动l4d2服务器时会提示一些Unknown command "sm_cvar",这个可以忽略。如果删除指令前的sm_cvar会导致指令失效,因为其中大部分指令生效的前提是sv_cheats 1
MetaMOD是SourceMOD功能实现的基础,所以MetaMOD没有正常运行时,SourceMOD和其他大多数插件都会失效
当MetaMOD故障时,可以打开/addons/metamod/bin目录,找到metamod-fatal.log,里面会显示故障原因
故障示例:

MetaMOD故障示例
因为MetaMOD无故障时不会生成此文件,这里拿csgo服务器里的MetaMOD故障日志做示范
很明显是找不到libstdc++.so.6导致的故障,接下来以它为关键词在网上搜索解决方法即可
如果MetaMOD能正常运行,在启动l4d2服务器后可查看MetaMOD的菜单,命令:meta
查看MetaMOD下的所有已安装插件,命令:meta list
查看MetaMOD的版本信息,命令:meta version

MetaMOD菜单
大多数插件都是安装在SourceMOD下的,如果插件出现故障,可以打开/addons/sourcemod/logs目录,查看名称含有errors的log文件,里面会显示故障原因
故障示例:

SourceMOD故障示例
通过错误日志可以判断是nextmap.smx插件与l4d2游戏不兼容,因为这个插件是安装SourceMOD时自带的,是为起源引擎相关游戏编写的通用插件,出现不兼容情况也可以理解,用l4d2专用的换图插件代替即可,当然也可以不作任何处理,忽略此故障
如果SourceMOD能正常运行,在启动l4d2服务器后可查看SourceMOD的菜单,命令:sm
查看SourceMOD下的所有已安装插件,命令:sm plugins list
查看SourceMOD的版本号,命令:sm version

SourceMOD菜单
客户端一般指的是玩家所用的windows电脑,以修改50 lerp为例,在控制台输入以下两条指令(或者将指令添加到autoexec.cfg中)
cl_interp_ratio 1;
cl_interp 0.05; 注:
① cl_interp的默认值是0.1(即100 lerp),最大值0.5(即500 lerp) 最小值0(即0 lerp),数值越大,HitBox和贴图的偏离度就越大
② cl_interp_ratio的默认值是2,最低为0
想要0~10 lerp的把此值设为0,其他情况下把值设成1
③ 多数玩家的lerp值设为0或50,这个依自己实际游戏体验来设置;据说lerp值不合适会导致僵尸卡顿、瞬移(B站有视频详解lerp和rate这些参数,可以去搜索看看)
玩家在l4d2游戏中打开网络参数信息,控制台指令:net_graph 1
如果这些参数信息影响视线,可以使用以下指令调整其位置:
net_graphpos 3 //此参数控制其在水平方向的位置(1偏右、2居中、3偏左)
net_graphheight 1030 //此参数控制其在垂直方向的位置,与电脑屏幕显示分辨率有关
以下是对网络参数的解释

网络参数注解
rate 客户端每秒接收数据包大小的上限,默认值为10000(Byte字节)
cl_updaterate 客户端每秒向服务器请求刷新的次数,默认值为20 (即20tick)。如果值过大,超过了服务器的tick值的那部分算是浪费资源
cl_cmdrate 客户端每秒向服务器汇报的次数上限,默认值为30(即30tick),最大值为100。如果值过大,超过了服务器的tick值的那部分算是浪费资源
从SourceMOD论坛获取,论坛网址:https://www.sourcemod.net/plugins.php
下图以夜视仪插件为例,下载完解压得到smx格式的夜视仪插件

SourceMOD论坛
在论坛搜索夜视仪插件

下载夜视仪插件
网上搜索大佬们制作的插件整合包
常用的有望夜插件整合包和豆瓣酱插件整合包
① 在B站搜索求生之路2插件的视频能找到一些up主的游戏QQ群,可以从群里找各种功能的插件和插件整合包
② 我使用的豆瓣酱插件整合包是从维爱社区-求生之路论坛获取的,插件整合包的发布网址:http://l4d.vihh.net/forum.php?mod=viewthread&tid=75422
(没有下载链接?因为整理、搬运不易,请在论坛注册个账号顺便给贴主点个好评吧)
从各渠道获取的插件一般包含addons和cfg文件夹,按文件路径将其传输到l4d2服务器端的addons和cfg文件夹里对应路径即可完成安装,如果得到的插件没有addons文件夹,可按文件拓展名来分别放在l4d2服务器端的对应目录
【.smx】 插件的核心部分,安装位置为:\left4dead\addons\sourcemod\plugins
【.cfg】 配置文件,安装位置为:\left4dead\cfg\sourcemod
【.sp】 源码,可以不用安装,安装位置为:\left4dead\addons\sourcemod\scripting
【.txt】 安装位置为:\left4dead\addons\sourcemod\gamedata 注:
① 一般在cfg格式的文件中可以找到插件的使用说明和参数调整说明
② 按文件拓展名一个一个传输到服务器相应路径有些麻烦,可参考下图,直接将同名文件合并即可完成插件安装

豆瓣酱插件整合包——用法示例
第三方地图下载网站:https://www.gamemaps.com/
(多年前用过,不知道这网站是否还在运营,别的地图网站我也不知道,自己在B站搜索吧)
下载后解压得到vpk格式的地图文件
打开debian的路径/home/aaa/Steam/l4d2-ds/left4dead2/addons/,将vpk格式的地图文件通过WinSCP传输到addons文件夹
参照本文4.4章节更换到第三方地图
如果服务器提示找不到地图,或用插件更换地图时找不到对应地图关卡,可能是地图文件名含有特殊字符,例如“.”。经测试空格、汉字不会影响服务器识别地图
以地图“广州增城”为例,地图名中含有“Lv7.3”,把它改成“v7_3”就能被服务器识别了,这个只修改服务器端的地图名,游戏端不用修改
注:玩家也要在自己的l4d2游戏安装目录中的addons文件夹中放入相同版本的vpk地图文件,否则玩家会连接不上服务器
地图解包软件GCFScape的下载地址:https://nemstools.github.io/pages/GCFScape-Download.html
在GCFScape中打开vpk格式的地图文件,找到missions文件夹,打开里面的txt文档,即可找到每个关卡的名称

解包查看地图关卡名
① 打开debian的路径/home/aaa/Steam,找到steamcmd.sh(如果没有,则按本文3.7章节的步骤重新下载),同路径下新建一个脚本用来更新l4d2,命令 :vim update-l4d2.sh
写入以下内容后保存并退出:
#!/bin/bash
./steamcmd.sh +force_install_dir /home/aaa/Steam/l4d2-ds +login anonymous +app_update 222860 +quit 然后给脚本赋予可执行权限,命令:sudo chmod +x update-l4d2.sh
② 当l4d2游戏端需要更新时,l4d2服务器端也需要更新
打开debian的路径/home/aaa/Steam,运行更新脚本,命令:./update-l4d2.sh

更新l4d2服务器
① 下载安装WinSCP
② 打开WinSCP语言包下载页面,找到Simplified Chinese,点击Download得到chs.zip
③ 将chs.zip解压得到WinSCP.chs文件
④ 将WinSCP.chs复制到WinSCP的安装目录,覆盖原有的WinSCP.chs文件即可完成汉化
① 在Putty官网下载得到putty.exe
② 将putty.exe放在合适位置,建议放在WinSCP的安装目录里
③ 运行WinSCP,打开【选项】菜单,在左侧找到【应用程序】,填写putty.exe的路径

WinSCP调用Putty
① 运行WinSCP,点击【新建会话】-【新建站点】

WinSCP连接服务器端的方法
② 同理,可以再添加一个站点,方便以root用户来登陆debian
在WinSCP登陆debian后,在菜单栏打开Putty

通过WinSCP打开Putty
因为新建站点时已经保存过用户名和密码,打开Putty后会自动登陆aaa或root账户
注:
① 在Putty里,用鼠标拉黑的内容自动复制到剪切板,在其他地方直接粘贴即可
② 如需向Putty里复制内容,先将输入光标移动到合适位置,鼠标右键即可粘贴

使用WinSCP传输文件
如果把debian系统比喻成家,那debian自带防火墙UFW就是家的大门,而云服务器提供的安全组就相当于在家的四周又建了一圈围墙,所以在传输数据过程中要保证游戏数据能顺利通过围墙和大门,同时围墙和大门要拒绝其他试图通过的数据
以我使用的百度轻量应用服务器为例,它的安全组(或叫防火墙)默认是允许所有数据通过的,所以要先删除它默认的规则,然后新增两项规则,一条规则用于放行22端口的tcp协议通信,另一条规则用于放行27015端口的udp协议通信

百度轻量应用服务器的安全组/防火墙控制页面
debian的防火墙名为UFW(Uncomplicated Fire Wall)
sudo ufw status //查看防火墙状态
//inactive是关闭,active是开启
sudo ufw disable //关闭防火墙
sudo ufw enable //开启防火墙
sudo ufw reload //重启防火墙
sudo ufw allow 端口号 //开放指定端口号
sudo ufw delete allow 端口号 //关闭指定端口
sudo ufw allow 端口号/协议 //开放指定端口号的指定协议
//开放27015端口的udp协议示例:sudo ufw allow 27015/udp
sudo ufw delete allow 端口号/协议 //关闭指定端口号的指定协议
sudo ufw deny 端口号 //不允许访问指定端口号
sudo ufw allow from 192.168.1.1 //允许某个ip地址访问本机所有端口
sudo ufw delete allow from 192.168.1.1 //禁止某个ip地址访问本机所有端口 因为百度、腾讯、阿里这些大厂售卖的云服务器都默认开启安全组,使用安全组管理端口就不用去记忆复杂的linux命令,所以linux自带的防火墙可以关闭,也可以直接卸载防火墙
① 检查debian版本,命令:cat /etc/debian_version
② 检查linux系统版本,命令:lsb_release -a
③ 检查linux内核版本,命令:uname -mrs
④ 安装neofetch展示系统详细信息,命令:sudo apt install neofetch
运行neofetch命令:neofetch
如今neofetch已停更,可使用fastfetch代替

一个比较美观的系统信息展示工具
① 查看debian的磁盘整体占用情况,命令:df -hl
② 查看l4d2服务器的整体大小:du -h --max-depth=0 /home/aaa/Steam/l4d2-ds
③ 查看l4d2服务器中addons文件夹的大小,命令:du -h --max-depth=0 /home/aaa/Steam/l4d2-ds/left4dead2/addons
④ 查看l4d2服务器中addons里每个文件的大小,命令:du -h --max-depth=0 /home/aaa/Steam/l4d2-ds/left4dead2/addons/*
① 运行free命令:free -h
② 每5秒刷新一次内存占用情况,命令:free -h -s5
③ 关闭每5秒刷新方法:键盘Ctrl+C
① 运行top命令:top
使用键盘按键(注意字母的大小写)可以改变显示形式:
【space】立即刷新
【Q】 退出top
【1】 切换显示不同CPU的负载率
【M】 按内存占用排序
【P】 按cpu占用排序
【m】 切换内存占用显示形式
【t】 切换cpu占用显示形式
【c】 切换显示命令名称和完整命令行
【i】 不显示闲置(Idle)或无用(Zombie)进程
【d】 指定更新间隔 ② 退出top方法:键盘Ctrl+C
【重要声明】大版本升级有风险,如果你的debian系统还有其他用途,不要按本文操作升级(因为我的linux水平不高,只能保证把我自己的debian升级成功),如果是在云服务器新装的debian系统,可以尝试升级,升级中如果出现故障可以随时快速的重装系统
使用root用户登陆debian,依次使用以下命令(//代表注释)
sudo apt update //更新apt列表
sudo apt upgrade //升级现有的软件
sudo apt --purge autoremove //升级后清除多余的包
sudo systemctl reboot //重启debian
备份命令:sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
更新方法一
(这里的buster、bullseye是debian版本代号,如果搞不懂就用方法二)
将sources.list文件内容里的所有buster替换为bullseye
命令:sudo sed -i 's/buster/bullseye/g' /etc/apt/sources.list
然后用vim将sources.list文件内容里的bullseye/updates改为bullseye-security
更新方法二
参考清华源的使用帮助页面:https://mirrors.tuna.tsinghua.edu.cn/help/debian/

debian更换清华软件源
命令:sudo apt update
命令:sudo apt upgrade
升级期间可能会弹出声明,输入:q退出声明
如果遇到Restart services during package upgrades without asking?选择yes

升级过程中会出现一些声明(导致升级自动停止)

此界面选择yes

关于ssh配置的选项
命令:sudo systemctl reboot
检查debian版本是否为11.8,命令:cat /etc/debian_version
在l4d2游戏中打开控制台,输入指令:openserverbrowser,选择自定义后稍等片刻,在刷出来的列表里找服务器名称里带“纯净”的服务器,双击即可进入,这样也挺好的,何必费时费力自己搭服务器

搜索纯净战役第三方服务器