求生之路2服务器搭建(Linux-CentOS)
KOFXIII
编辑于 2026年04月26日 23:22
收录于文集
共3篇

1 前言&目录

1.1 前言

        l4d2是发行于2009年的老游戏,搭建l4d2服务器本身没有难度,难点在于学习linux的基础操作,学会搭建纯净服务器只是入门,后续还要学习调整服务器各项参数、添加插件等。本文内容较多,可用浏览器的搜索功能(快捷键:Ctrl+F)进行查找

        对于新手的建议: 对自己充满信心,对教程充满信任。游戏发行十几年了网上教程一大堆,你在百度、B站、CSDN等网站能搜到的热门教程都没啥大问题,选一篇你看的顺眼的就行  完全依照教程步骤进行,不要漏看任何一句话,99%的失败原因都是没有按教程操作 同时参考多个教程进行搭建是大忌,搭建过程中有问题要善于在网上搜索解决办法,或者问AI

        本文使用的是CentOS 7系统,另外还有在Debian系统下搭建l4d2服务器的专栏

1.2 目录

  • 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章节 ==> CentOS防火墙相关命令

  • 7.12章节 ==> CentOS的常用命令


2 准备工作

2.1公网IP的电脑或云服务器,安装CentOS_7.x x64版本的系统

注:

没有公网IP,则搭建的服务器只能在局域网内使用,解决办法是内网穿透​

服务器硬盘可用空间最好不低于15G(l4d2游戏文件约9.5G,其他空间预留给游戏更新包、插件、Mod、第三方地图)

建议安装无图形化界面的CentOS以节省资源开销,提高服务器性能

2.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下载页面

2.3 下载安装WinSCPPutty软件

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

注:

B站有WinSCP+Putty的使用教学(或者我的另一篇Debian专栏​第7.11章节有介绍)。同类型的软件组合还有Xshell和Xftp

另外也推荐使用FinalShell来代替WinSCP和Putty,FinalShell免费版的功能就够用了

FinalShell下载页面:http://www.hostbuf.com/t/988.html

FinalShell相比其他终端的优点是能方便的监控CPU、内存、磁盘和网络等资源的使用情况

也可参考我的另一篇专栏:ssh终端推荐​


3 搭建服务器

3.1 使用Putty连接到CentOS,以root账户登录后,首先更新CentOS的软件库,命令:yum update

注:如果下载速度非常慢,可能是CentOS系统默认的yum源在国外,可以将yum源仓库改为国内的源以提高下载速度,例如:清华源、中科大、华为源、阿里云镜像站

3.2 安装SteamCMD所需的依赖库,命令:yum install glibc.i686 libstdc++.i686

注:不同linux版本对应的命令不同,x64和x86的也不同

3.3 在CentOS里,以root管理员身份新增一个普通用户,命令:adduser steam

再修改指定用户steam的密码,命令:passwd steam

在窗口提示New password:之后输入新密码99999(窗口不会显示输入的内容,但其实是有输入的),在提示Retype new password:之后重复输一次新密码99999,看到提示passwd: all authentication tokens updated successfully.代表已修改好密码

然后切换到普通用户steam,命令:su steam

最后切换到用户steam的根目录,命令:cd

注:

这里“steam”和“99999”只是示例,可自定义用户名和密码

有些人觉得新建普通用户没啥用就跳过此步骤,全程用root用户来操作,表面上也能正常运行服务器,实则暗藏了很多隐患

3.4 将SteamCMD的安装包下载到用户steam的根目录,命令:wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

下载完后进行解压,命令:tar xvf steamcmd_linux.tar.gz

解压完成后删除安装包,命令:rm steamcmd_linux.tar.gz

然后保持当前路径,继续安装SteamCMD,命令:./steamcmd.sh

下载完成后,命令行会变成以Steam>开头

注:

如果提示bash: wget: command not found,则需要用命令su root切换到root账户再安装wget下载工具,命令:yum install wget -y,安装之后再切换回steam账户的根目录

接下来的3.5~3.7步骤均在是Steam>后输入命令

3.5 指定服务器端的l4d2的安装目录,命令:force_install_dir /home/steam/l4d2server

如果输入过程中写错字,要删除字母时出现 ^H^H^H 的情况,需要按住 Ctrl 或 Shift 键再删除

3.6 匿名登录steam,命令:login anonymous

注:大约从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服务器

仅初次安装L4D2服务器时需登录自己的steam账户,后续游戏服务器的日常更新可以匿名登录,这样更便捷

(根据我搭建CS2服务器的经验,使用个人账户下载游戏服务器时,有可能将已订阅的创意工坊文件一起下载,浪费硬盘空间,如果发现你下载的L4D2服务器文件远大于10G,可能就是这个原因,不过我简单测试了一下,暂时未出现此问题)

3.7 安装以及校验l4d2,命令:app_update 222860 validate

要下载的游戏文件约9.2G。如出现报错请见下方“注②”

等下载完后退出steam>,命令:exit quit

注:

如果下载时报错:Error! app '222860' state is 0x202 after update job.,原因是l4d2服务器所在磁盘分区的可用空间不足,查看硬盘可用空间的方法在本文7.12.2章节

② 如果下载时报其他错误,先以报错内容为关键字在网上搜索解决方法,如果搜索不到,可以继续尝试下载或改天再下载,大概率是网络问题

3.8 理论上l4d2服务器已安装完成,接下来安装MetaMOD和SourceMOD这两个基础插件

如果不想安装任何插件,请略过3.9~3.11步骤,直接从3.12步骤继续配置服务器

如果需要安装插件,就将下载好的linux版插件压缩包进行解压,同时使用WinSCP软件连接到CentOS,方便下个步骤将解压后的插件传输到服务器端

3.9 在CentOS里,输入命令:ls /home/steam/l4d2server/left4dead2

找到一个名为cfg的文件夹,这个文件夹存放的是服务器各种配置文件,先不管它

另外再新建一个addons文件夹,命令:mkdir /home/steam/l4d2server/left4dead2/addons

注:addons文件存放的是第三方插件和第三方地图文件

3.10 以安装SourceMOD为例,根据本文2.2章节下载安装包,解压后得到addonscfg两个文件夹,将这两个文件夹里的所有东西分别通过WinSCP传输到服务器端/home/steam/l4d2server/left4dead2/路径下的addonscfg文件夹

同样的操作也适用于安装MetaMOD

注:

传输过程中提示文件重复,选择全部覆盖

 安装Tickrate Enabler,需要将解压后得到的两个文件tickrate_enablertickrate_enabler.vdf也直接传输到服务器端addons文件夹中

3.11 安装插件后,就需要设置管理员权限来管理插件

在CentOS里,修改插件的配置文件,命令:vim /home/steam/l4d2server/left4dead2/addons/sourcemod/configs/admins_simple.ini,按下键盘的 i 键进入编辑模式,将光标移动到文档末端,按下键盘的Enter键另起一行,写入:

代码块
JavaScript
自动换行
复制代码
"STEAM_x:x:xxxxxx" "99:z"
复制成功

然后按下键盘的Esc键,再输入:wq即可保存并退出

注:

这里的STEAM_x:x:xxxxxx要替换为自己的steamID

如果还要添加更多的管理员,再另起一行按同样格式进行书写

99:z指的是权限大小,一般不需要调整权限,照抄就行

 获取steamID有两种方法

方法一:打开l4d2游戏进入任意地图关卡,控制台输入status就会显示玩家的steamID

方法二:浏览器中登录steam网站,打开个人资料页面,将地址栏的网址复制到查询网站的搜索框即可搜索出steamID,SteamID查询网址:https://steamid.io/lookup/

查询steamID

3.12 在CentOS里,在cfg文件夹里新建一个server.cfg文件,命令:vi  /home/steam/l4d2server/left4dead2/cfg/server.cfg,按下键盘的i键进入编辑模式,写入以下内容(双斜杠 // 代表注释内容,可以不写,建议也写上)

代码块
JavaScript
自动换行
复制代码
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)冲突
sv_cheats 0 //关闭作弊
motd_enabled 1 //玩家进入服务器自动打开[今日消息]界面
复制成功

写入完成后按下键盘的Esc键,再输入:wq即可保存并退出

注:

以上是基础的开服配置命令,更多命令在本文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

3.13 启动l4d2服务器

在CentOS里,打开srcds_run文件所在目录,命令:cd /home/steam/l4d2server

接下来有两种方式启动l4d2服务器

方式一(不推荐):使用srcds_run配合启动项来启动l4d2服务器,在Putty中输入命令:

代码块
JavaScript
自动换行
复制代码
./srcds_run -game left4dead2 -insecure +hostport 27015 -condebug +map c2m1_highway +exec server.cfg -nomaster
复制成功

稍等片刻,看到Connection to Steam servers successful.   VAC secure mode disabled.,代表l4d2服务器启动完成

方式二(推荐):新建一个启动脚本,命令:vim /home/steam/l4d2server/start.sh,写入:

代码块
JavaScript
自动换行
复制代码
/home/steam/l4d2server/srcds_run -game left4dead2 -insecure +map c1m2_streets -condebug +exec server.cfg -nomaster
复制成功

写入后保存并退出

再给脚本赋予可执行权限,命令:chmod +x start.sh

最后运行此脚本启动l4d2服务器,命令:./start.sh

注:

 服务器启动项说明

代码块
JavaScript
自动换行
复制代码
-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
复制成功

    其他启动项说明

代码块
JavaScript
自动换行
复制代码
-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
复制成功

② 需要检查CentOS的防火墙和云服务器的安全组是否开放了27015端口的udp协议,参考本文7.11章节,不同云服务器供应商的的安全组设置方法略有不同,请自行在网上搜索

注意!注意!注意!

linux的防火墙和云服务器的安全组是两个不同的东西,都要开放相应的端口。如果linux的防火墙是关闭状态,只开放安全组也是可以的。另外如果云服务器还安装了宝塔面板之类的工具,也要检查一下它自带的防火墙功能

注意每个启动项之间只能有一个空格,连续的空格会导致后边的启动项失效

 服务器常见故障处理方法在本文7.1章节

服务器端更新l4d2的方法在本文7.10章节

官方战役各地图的名称,可查看V社的wiki,网址:

https://developer.valvesoftware.com/wiki/Zh/Left_4_Dead_2

3.14 关闭l4d2服务器,在服务器端输入命令:quit 或 exit

3.15 自定义今日消息内容

玩家连接服务器进入地图后会有一个今日消息的显示窗口(按H键打开),此内容保存在服务器端的motd.txt中,文件所在路径为:/home/steam/l4d2server/left4dead2

如需自定义内容,建议在同路径下新建一个motd1.txt文档,将要展示的内容写在里面,同时在服务器端的server.cfg中添加命令:motdfile "motd1.txt"

注:

今日消息的内容有字数限制,超出限制的部分不显示

 如文本显示乱码,需要将motd1.txt以utf-8编码进行保存

今日消息不仅支持文本,也支持显示图片和网页,B站其他UP主有视频教学


4 日常使用

4.1 启动服务器,启动方法在本文3.13章节

4.2 玩家打开l4d2游戏,打开控制台,输入服务器ip地址和端口号,命令:connect xx.xx.xx.xx:27015

注:xx.xx.xx.xx替换为服务器的公网IP,同时将27015替换为启动项里指定的端口号

4.3 服务器安装MetaMOD和SourceMOD插件并且已经设置过管理员权限后,有权限的玩家可以按键盘的【Y】键打开游戏内聊天框,输入命令:!admin/admin打开插件的功能菜单。也可以绑定键盘快捷键,例如绑定到键盘的【N】键,命令:bind n "say !admin"

注:如果输入!admin没有出现菜单,可能的原因有

!admin命令要使用英文感叹号

插件没安装好。MetaMOD和SourceMOD相关内容在本文7.3章节

没有设置管理员权限,按本文3.11章节的步骤进行配置

4.4 更换地图关卡或游戏模式

方法一:

更换地图关卡的命令格式: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.13章节,在启动项中分别用 +map+mp_gamemode 指定地图关卡和游戏模式

方法六:

参考本文3.12章节,在server.cfg中,使用 sm_cvar mp_gamemode 指定游戏模式

注:

此方法可能存在bug,例如survival模式下的c1m2关卡,正常情况下玩家应在武器商店开始关卡,但异常情况下会在安全屋内开始关卡,解决方法是通过SM插件来投票重新开始此关卡,具体操作是【!admin】-->【4.其他功能】-->【2.更改模式】-->【1.重启章节】-->【1.确认】

4.5 开启作弊

方法一:启动l4d2服务器后,在Putty输入命令: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


5 服务器设置60tick / 100tick

5.1 服务器端需要的配置

5.1.1 在服务器端安装Tickrate Enabler插件,安装方法在本文3.10章节

5.1.2 在CentOS里,打开路径/home/steam/l4d2server/left4dead2/cfg/,找到server.cfg

如果是设置60tick,则在server.cfg里新增以下命令:

代码块
JavaScript
自动换行
复制代码
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里新增以下命令:

代码块
JavaScript
自动换行
复制代码
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
复制成功

5.1.3 启动l4d2服务器时,在启动项里添加一项:-tickrate 60-tickrate 100

5.2 客户端需要的配置

5.2.1 客户端指的是玩家玩游戏所用的windows电脑,打开steam安装路径:\Steam\steamapps\common\Left 4 Dead 2\left4dead2\cfg,新建一个autoexec.cfg文件,写入以下命令后保存即可

代码块
JavaScript
自动换行
复制代码
rate 30000
cl_cmdrate 100
cl_updaterate 100
复制成功

5.2.2 设置客户端的lerp值,在autoexec.cfg中继续添加以下两条命令:

代码块
JavaScript
自动换行
复制代码
cl_interp_ratio 0
cl_interp 0
复制成功

注:客户端较低的lerp值配合服务器端的100tick可以有效降低游戏延迟,关于lerp的说明在本文7.4和7.5章节


6 保持l4d2服务器后台运行

此部分内容转移到另一篇专栏:screen 介绍和用法​


7 补充说明

7.1 服务器常见故障的处理办法

7.1.1 无法启动l4d2服务器或l4d2服务器反复自动重启

 如果有安装Tickrate Enabler插件,可能是Tickrate Enabler版本过旧造成的(2021年l4d2有一次大更新),按本文2.2章节提供的网址获取的新版本即可解决

l4d2服务器缺少依赖库或重要文件。这种故障因素比较复杂,一般能从l4d2服务器启动日志里查到什么文件读取失败或找不到某个依赖库,根据日志报错提示再网上搜索对应解决办法

7.1.2 玩家无法连接到l4d2服务器

检查connect 公网ip:端口号是否写错,是否使用的是默认27015端口

是否在l4d2服务器端的server.cfg里设置了服务器连接密码sv_password,不设密码再试试

检查是否开放端口

特别说明:

linux的防火墙和云服务器的安全组是两个不同的东西,都要开放相应的端口。如果linux的防火墙是关闭状态或linux系统未安装防火墙,只开放安全组也是可以的。另外如果云服务器还安装了宝塔面板之类的工具,也要检查一下它自带的防火墙功能

如果玩的是第三方地图,玩家的addons文件夹里没有对应的地图文件,且地图版本号要与服务器端的地图版本号一致

尝试更新一下l4d2服务器(保证游戏端和服务器端都是官方最新版本)

注意本文3.13章节里的各种启动项,每项之间只能有一个空格,连续的空格会导致后面的启动项失效,导致服务器某些功能缺失甚至服务器启动失败

暂不清楚盗版l4d2游戏端是否能连接正版l4d2服务器。正版l4d2经常打折,史低4.2元

7.1.3 无法进入地图的下一章节

可能是第三方插件造成的,可以将addons文件夹重命名为addon,这样所有插件都会失效,此时再运行l4d2服务器,若能恢复正常,则需要挨个排查已安装的插件,若仍不能进入地图的下一章节,使用sv_cheats 0关闭作弊再试

7.1.4 RCON无效

通过百度百科搜索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),则需要在CentOS的防火墙或云服务器的安全组里开放27015端口的tcp协议(如果l4d2服务器使用的不是27015端口,则开放自定义的端口的tcp协议);另外启动l4d2服务器时要有 +ip 启动项,详情请看本文3.13章节

如果输入rcon命令后控制台提示:Lost RCON connection, please retry command (UNKNOWN ERROR),可能是网络原因,多试几次

7.2 server.cfg的补充指令

代码块
JavaScript
自动换行
复制代码
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

7.3 MetaMOD和SourceMOD插件故障的处理

7.3.1 MetaMOD

MetaMOD是SourceMOD功能实现的基础,所以MetaMOD没有正常运行时,SourceMOD和其他大多数插件都会失效。

当MetaMOD故障时,可以打开/addons/metamod/bin目录,找到metamod-fatal.log,里面会显示故障原因

故障示例:

因为MetaMOD无故障时不会生成此文件,这里拿csgo服务器里的MetaMOD故障日志做示范

MetaMOD故障示例

很明显是找不到libstdc++.so.6导致的故障,接下来以它为关键词在网上搜索解决方法即可

如果MetaMOD能正常运行,在启动l4d2服务器后,输入命令:meta

可以看到MetaMOD的菜单

查看MetaMOD下的所有已安装插件,命令:meta list

查看MetaMOD的版本信息,命令:meta version

MetaMOD菜单

7.3.2 SourceMOD

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

故障示例:

SourceMOD故障示例

通过错误日志可以判断是nextmap.smx插件与l4d2游戏不兼容,因为这个插件是安装SourceMOD时自带的,是为起源引擎相关游戏编写的通用插件,出现不兼容情况也可以理解,用l4d2专用的换图插件代替即可,当然也可以不作任何处理,忽略此故障

如果SourceMOD能正常运行,在启动l4d2服务器后,输入命令:sm

可以看到SourceMOD的菜单

查看SourceMOD下的所有已安装插件,命令:sm plugins list

查看SourceMOD的版本号,命令:sm version

SourceMOD菜单

7.4 客户端修改lerp

客户端一般指的是玩家玩游戏所用的windows电脑,以修改50 lerp为例,在控制台输入以下两条命令(或者将命令添加到autoexec.cfg中)

代码块
JavaScript
自动换行
复制代码
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这些参数,可以去搜索看看)

7.5 验证lerp和100tick是否设置成功

玩家在l4d2游戏中打开网络参数信息,控制台命令:net_graph 1

如果这些参数信息影响视线,可以使用以下命令调整其位置

代码块
JavaScript
自动换行
复制代码
net_graphpos 3 //此参数控制其在水平方向的位置(1偏右、2居中、3偏左)
net_graphheight 1030 //此参数控制其在垂直方向的位置,与电脑屏幕显示分辨率有关
复制成功

以下是对网络参数的解释

网络参数注解

rate 客户端每秒接收数据包大小的上限,默认值为10000(Byte字节)

cl_updaterate 客户端每秒向服务器请求刷新的次数,默认值为20 (即20tick)。如果值过大,超过了服务器的tick值的那部分算是浪费资源

cl_cmdrate 客户端每秒向服务器汇报的次数上限,默认值为30(即30tick),最大值为100。如果值过大,超过了服务器的tick值的那部分算是浪费资源

7.6 服务器端的插件获取渠道

方法一: 从SourceMOD论坛获取,论坛网址:https://www.sourcemod.net/plugins.php

下图以夜视仪插件为例,下载完解压得到smx格式的夜视仪插件

在论坛搜索夜视仪插件

下载夜视仪插件

方法二: 大佬们制作的插件整合包

常用的有望夜插件整合包豆瓣酱插件整合包

在B站搜索求生之路2插件的视频能找到一些up主的游戏QQ群,可以从群里找各种功能的插件和插件整合包

我使用的豆瓣酱插件整合包是从维爱社区-求生之路论坛获取的,插件整合包的发布网址:

http://l4d.vihh.net/forum.php?mod=viewthread&tid=75422

(没有下载链接?因为整理、搬运不易,请在论坛注册个账号顺便给贴主点个好评吧)

7.7 服务器端的插件安装方法

从各渠道获取的插件一般包含addonscfg文件夹,按文件路径将其传输到l4d2服务器端的addons和cfg文件夹里对应路径即可完成安装,如果得到的插件没有addons文件夹,可按文件拓展名来分别放在l4d2服务器端的对应目录

代码块
JavaScript
自动换行
复制代码
【.smx】 插件的核心部分,安装位置为:\left4dead\addons\sourcemod\plugins
【.cfg】 配置文件,安装位置为:\left4dead\cfg\sourcemod
【.sp】 源码,可以不用安装,安装位置为:\left4dead\addons\sourcemod\scripting
【.txt】 安装位置为:\left4dead\addons\sourcemod\gamedata
复制成功

注:

一般在cfg格式的文件中可以找到插件的使用说明参数调整说明

 按文件拓展名一个一个传输到服务器相应路径有些麻烦,可参考下图,直接将同名文件合并即可完成插件安装

豆瓣酱插件整合包——用法示例

7.8 添加第三方地图到服务器

7.8.1 下载第三方地图,常用的地图下载网站:https://www.gamemaps.com/

下载后解压得到vpk格式的地图文件

7.8.2 在CentOS里,打开路径/home/steam/l4d2server/left4dead2/addons/,将vpk格式的地图文件通过WinSCP传输到addons文件夹中即可

7.8.3 操作服务器打开第三方地图,方法在本文4.4章节

如果服务器提示找不到地图,或用插件更换地图时找不到对应地图关卡,可能是地图文件名含有特殊字符,例如“.”。经测试空格、汉字不会影响服务器识别地图

以地图“广州增城”为例,地图名中含有“Lv7.3”,把它改成“v7_3”就能被服务器识别了,这个只修改服务器中的地图名,玩家电脑里的地图名不用修改

注:玩家也要在l4d2游戏安装目录中的addons文件夹中放入相同版本的vpk地图文件,否则玩家会连接不上服务器

7.9 查看地图的关卡名

7.9.1 下载安装windows版本的地图解包软件GCFScape,下载地址:https://nemstools.github.io/pages/GCFScape-Download.html

7.9.2 在GCFScape中打开vpk格式的地图文件,找到missions文件夹,打开里面的txt文档,即可找到每个关卡的名称

解包查看地图关卡名

7.10 更新l4d2服务器

7.10.1 在CentOS里,打开路径/home/steam,找到steamcmd.sh(如果没有,则按本文3.4章节的步骤重新下载),新建一个脚本用来更新l4d2,命令 :vim l4d2server_update.sh,写入:

代码块
JavaScript
自动换行
复制代码
#!/bin/bash
./steamcmd.sh +force_install_dir /home/steam/l4d2server +login anonymous +app_update 222860 +quit
复制成功

然后保存并退出,再给脚本赋予可执行权限,命令:chmod +x l4d2server_update.sh

7.10.2 当服务器端l4d2需要更新时,服务器端的l4d2也需要更新

在服务器端打开路径/home/steam,然后运行此脚本,命令:./l4d2server_update.sh

注:还有一种方法是在l4d2的启动项里添加更新命令,每次运行l4d2服务器的同时会检查更新,不过现在l4d2几乎不再更新,这种方法只会增加l4d2服务器的启动时间

7.11 CentOS的防火墙相关命令

代码块
JavaScript
自动换行
复制代码
su root //切换到root账户才能配置防火墙

firewall-cmd --state //查看防火墙状态
firewall-cmd --list-all //查看防火墙所有开放端口
firewall-cmd --zone=public --list-ports //查看防火墙指定空间的所有开放端口

systemctl enable firewalld.service //开机启用防火墙
systemctl disable firewalld.service //开机禁用防火墙
systemctl start firewalld.service //开启防火墙
systemctl stop firewalld.service //关闭防火墙
systemctl restart firewalld.service //重启防火墙
firewall-cmd --reload //重新加载防火墙使配置生效

firewall-cmd --zone=public --add-port=27015/tcp --permanent //开启27015 TCP端口
firewall-cmd --zone=public --add-port=27015/udp --permanent //开启27015 UDP端口

firewall-cmd --zone=public --remove-port=27015/tcp --permanent //关闭27015端口TCP
firewall-cmd --zone=public --remove-port=27015/udp --permanent //关闭27015端口UDP
复制成功

7.12 CentOS的常用命令

7.12.1 查看CentOS版本,命令:cat /etc/redhat-release

7.12.2 查看磁盘占用情况

查看CentOS的磁盘整体占用情况,命令:df -hl

查看l4d2服务器的整体大小:du -h --max-depth=0 /home/steam/l4d2server

查看l4d2服务器中addons文件夹的大小,命令:du -h --max-depth=0 /home/steam/l4d2server/left4dead2/addons

查看l4d2服务器中addons里每个文件的大小,命令:du -h --max-depth=0 /home/steam/l4d2server/left4dead2/addons/*

7.12.3 查看内存占用情况

运行free命令:free -h

每5秒刷新一次内存占用情况,命令:free -h -s5

关闭每5秒刷新方法:键盘Ctrl+C

7.12.4 查看资源占用情况,命令:top

使用键盘按键(注意字母的大小写)可以改变显示形式:

代码块
JavaScript
自动换行
复制代码
【space】立即刷新
【Q】 退出top
【1】 切换显示不同CPU的负载率
【M】 按内存占用排序
【P】 按cpu占用排序
【m】 切换内存占用显示形式
【t】 切换cpu占用显示形式
【c】 切换显示命令名称和完整命令行
【i】 不显示闲置(Idle)或无用(Zombie)进程
【d】 指定更新间隔
复制成功