导航
前言
L4D2虽然已经发行超过11年了,但是至今仍有很多玩家活跃在游戏中。这是一款真正的被mod续命的游戏,每天都有大量玩家制作的优质mod出现。
由于天朝的网络环境实在是太过复杂,大多数玩家的电脑并不能被分配公网IP。这就导致很多时候想要和朋友一起玩,但是却无法创建一个能被其他人找到并加入的主机。我甚至还遇到过明明两个人离得不远,却因为一个是中国移不动,另一个是中国信不过,导致延迟奇高,僵尸瞬移的情况。因此,选择一台合适的云服务器搭建L4D2独立服务器就显得尤为重要。
准备工作
- 一台云服务器,天朝境内最佳,香港次之,新加坡及日韩地区不得已而选之。
- SSH工具,如Putty、XShell、Windows Powershell等。
- 愿折腾的心,that's the most。
详细步骤
arch
就可以得到如下信息:
x86_64
当然,有时也可能得到:
x86 或 arm 或 arm64 或 i386 或 amd64
等等架构信息。如果是x86_64、x86、i386或者amd64,继续下面的内容就可以,如果不是这两种架构,这篇文章可以退出了:p。
可选操作:在下方选择你的服务器CPU架构,即可隐藏与你服务器架构不相符的内容,不选择则默认显示所有内容。
- 从软件仓库安装
首先尝试在软件仓库直接安装SteamCMD,部分软件源仓库内已经包含了SteamCMD。执行:
CentOS6、7、8通用:
sudo yum install steamcmd -y
仅CentOS8可用:
sudo dnf install steamcmd -y
若出现:
Installed
steamcmd-*.x86_64
Complete!
则说明你的可以直接从软件仓库安装,可以节省大量时间。
安装完成后链接可执行文件:
ln -s /usr/games/steamcmd steamcmd
之后便可以在任何地方使用steamcmd命令开启SteamCMD。
可选操作:选择你是否能从软件仓库安装,将根据情况隐藏对你无用的内容。
- 手动安装
如果你的软件仓库没有SteamCMD,则需要进行手动安装。
创建一个非root用户,防止恶意软件通过root权限注入恶意代码,在下方输入框输入你想取的用户名并点击确认(只允许输入英文字母、数字和下划线),后面的教程就会以该用户名作为示例。如不进行自定义,则默认以steam作为新建用户。
sudo useradd -m steam
切换至新用户steam。当前登陆用户为root或者有root权限的用户:
su steam
当前用户没有root权限:
sudo -iu steam
进入用户steam的家目录:
cd
32位CentOS6、7、8通用(仅限前面的架构显示为x86的机器):
sudo yum install glibc libstdc++ -y
仅32位CentOS8可用(仅限前面的架构显示为x86的机器):
sudo dnf install glibc libstdc++ -y
64位CentOS6、7、8通用(仅限前面的架构显示为x86_64或amd64的机器):
sudo yum install glibc.i686 libstdc++.i686 -y
仅64位CentOS8可用(仅限前面的架构显示为x86_64或amd64的机器):
sudo dnf install glibc.i686 libstdc++.i686 -y
为SteamCMD创建一个安装目录,在下方输入框输入你想要安装的位置(本页面最多支持五级目录,不需要的层级可以留空,更多级目录请自行记忆)并点击确认,后面的教程就会以该目录作为示例。如不进行自定义,则默认以/home/steam/SteamCMD作为SteamCMD安装位置。
mkdir /home/steam/SteamCMD && cd /home/steam/SteamCMD
下载并解压SteamCMD安装文件压缩包:
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
或
curl -sqL "https://media.st.dl.bscstorage.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
- 安装L4D2
可选/推荐步骤:安装Screen保持会话后台运行,防止终端会话意外中断导致SteamCMD及后续游戏安装失败:
CentOS6、7、8通用:
sudo yum install screen -y
仅CentOS8可用:
sudo dnf install screen -y
新建一个screen会话,命名为steam,然后运行SteamCMD:
screen -S steam
注意:在运行SteamCMD时可能出现点击退格键无法删除字符而是显示“^H”的情况,此时可以使用Ctrl+退格的组合按键删除字符。
通过软件仓库安装的SteamCMD,可使用以下指令:
steamcmd
通过软件仓库安装的SteamCMD,可使用以下指令:
./steamcmd.sh
为L4D2服务端设置安装目录,在下方输入框输入你想要安装的位置(本页面最多支持五级目录,不需要的层级可以留空,更多级目录请自行记忆)并点击确认,后面的教程就会以该目录作为示例。如不进行自定义,则默认以/home/steam/GameServers/L4D2作为L4D2服务端安装位置。
force_install_dir /home/steam/GameServers/L4D2
login anonymous
//此时需等待登录完成,待终端显示:
//Connecting anonymously to Steam Public...Connectivity test: result=Connected, in progress=0..OK
//Waiting for client config...OK
//Waiting for user info...OK
//后才可继续
app_update 222860 validate
然后耐心等待服务器文件下载安装并验证完成后,即可退出SteamCMD:
quit
当然,也可以选择只使用一条长命令完成上述指令:
对于从软件仓库安装的用户:
steamcmd +login anonymous +force_install_dir /home/steam/GaneServers/L4D2 +app_update 222860 +validate +quit
对于手动安装的用户:
./steamcmd.sh +login anonymous +force_install_dir /home/steam/GaneServers/L4D2 +app_update 222860 +validate +quit
此时,SteamCMD会在下载安装并验证完成后自动退出。
- 安装额外插件
个人推荐至少安装SourceMod和MetaMod插件,更多的插件可以自行搜索相关教程,或者等我有闲心情了再来更新相关教程(再次咕咕咕)
进入L4D2服务端文件夹,下载SourceMod和MetaMod并解压:
cd /home/steam/GameServers/L4D2/left4dead2 && wget https://sm.alliedmods.net/smdrop/1.10/sourcemod-1.10.0-git6529-linux.tar.gz && tar xvzf sourcemod-1.10.0-git6529-linux.tar.gz && wget https://mms.alliedmods.net/mmsdrop/1.11/mmsource-1.11.0-git1145-linux.tar.gz && tar xvzf mmsource-1.11.0-git1145-linux.tar.gz && wget http://dl.stanma.fun/res/other/l4d2-metamod.vdf -O /home/steam/GameServers/L4D2/left4dead2/addons/metamod.vdf
注:截稿时,SourceMod更新到1.10版本,MetaMod更新到1.11版本。如果你在安装时想要使用最新的版本,请自行前往SourceMod发布页和MetaMod发布页查找最新版本并下载。如果有可能我会手动更新上面指令中的最新版本地址。随缘随缘。
- 配置服务器和插件
首先需要给SourceMod配置一个管理员,用文本编辑器打开管理员配置文件:
vi /home/steam/GameServers/L4D2/left4dead2/addons/sourcemod/configs/admins_simple.ini
使用Steam ID Finder、Steam I/O之类的网站,查找到想要赋予管理员权限的Steam账号的32位ID,然后按“i”键或者“insert”键进入编辑模式,在文本最末端加入一行:
"[STEAM_0:1:506233690]" "99:z" # 千万不要忘记半角(英文)双引号,该命令是将该用户设置为超级管理员,自己改中括号里面的内容。示例中的ID为博主账号,你们原封不动抄过去的话,就等于把服务器的控制权交给我了。
完成编辑后依次输入"Esc"→":"→"w"→"q"退出并保存。
然后新建一个配置文件,作为服务器启动时默认的配置,在下方输入框输入你想取的配置文件名并点击确认,下面的教程就会以该配置文件名作为示例。如不进行自定义,则默认以server.cfg作为新建配置文件名。
vi /home/steam/GameServers/L4D2/left4dead2/cfg/server.cfg
同样地,进入编辑模式,然后输入配置。这里有一份简略版的配置可以拿去用,更详尽的配置文件可以参考此文件,有打算将其翻译并放在博客的计划(又双叒咕咕咕)。
sm_cvar hostname "这里随便填,你想让你的服务器名字显示什么就填什么"
sm_cvar sv_steamgroup "" //关联steam组,填入Steam组ID可以绑定到特定组,不绑定就留空
sm_cvar sv_steamgroup_exclusive "1" //1为组私有,0为公有
sm_cvar sv_region "4" // 服务器区域:0为美东,1为美西,2为南美,3为欧洲,4为亚洲,5为澳洲,6为中东,7为非洲,255为全球
sm_cvar sv_consistency "0" //一致性校验,1为开,0为关,开了之后要求游戏版本和服务器版本一致才可进入
sm_cvar rcon_password "" //控制台rcon远程密码
sm_cvar sv_allow_lobby_connect_only "0" //只能在游戏大厅连接,1为开,0为关,开了之后只能通过新建大厅才能搜索该服务器
sm_cvar z_difficulty "Normal" //游戏难度:Easy简单,Normal普通,Hard困难,impossible专家
sm_cvar sv_gametypes "both" //地图模式:coop合作,versus对抗,realism写实,survival生存,scavenge清道夫,both所有模式
sm_cvar mp_gamemode "both" //游戏模式:coop合作,versus对抗,realism写实,survival生存,scavenge清道夫,both所有模式
- 开启服务器并连接
在终端中输入:
bash/home/steam/GameServers/L4D2/left4dead2/srcds_run -game left4dead2 -insecure +ip xxx.xxx.xxx.xxx +hostport 27015 -condebug +exec server.cfg -nomaster
注释:
- "-insecure"选项指不开启VAC反作弊,可以防止误封,如果服务器需要防止玩家作弊,删除此条指令即可。
- "+ip xxx.xxx.xxx.xxx"指要绑定的IP地址,如果你是阿里云之类的VPS用户,你得到的会是内网IP,必须要在此填写你的内网IP地址,不然服务器启动后只能在局域网模式下工作。获取IP地址的方法很简单,终端输入"ifconfig"后查看网卡“eth0”后面的“inet”字段(不同VPS商家可能名称不一样,但是大同小异)。
- "+port 27015"非必填项,默认即是绑定27015端口,如果不想被其他人检测到你的服务器,可以改成其他65535以内的端口号,建议使用10000-65535中的端口,以免占用其他重要服务的端口。
- "-condebug"非必填项,是否开启控制台调试,即在控制台显示当前服务器运行状况,建议保留。
- "+exec xxx.cfg"加载服务器配置,即之前创建的配置文件。
当然,你也可以选择新建一个比如叫l4d2.sh的文件,把这一长串指令输入进去,以后只需要输入:
./l4d2.sh
就可以直接开启服务器了。
vola,大功告成。
收尾工作
服务器是跑起来了,但是如果没有screen的话,终端一断线,服务器也会关闭。这就体现了screen的好处了:p
一些常用的screen指令如下:
screen -ls //列出所有的会话及pid
screen -S xxx //新建一个名为"xxx"的会话
screen -r xxx 或 pid //恢复名为"xxx"或某个pid的会话
screen -R //恢复上一次挂起的会话
Ctrl a+d //将当前会话挂起到后台
screen -S -X xxx 或 pid //关闭一个名为"xxx"或某个pid的会话
也就是说,服务器开好之后,按Ctrl a+d将其挂到后台,或者直接关闭SSH连接,都不会让游戏服务器关闭,下次连接之后只需要输入指令就可以继续管理服务器。
打开L4D2客户端,在设置中开启控制台,"~"键呼出控制台,在其中输入:
connect xxx.xxx.xxx.xxx
注意:这里要输入的是你的VPS的公网IP地址,千万不要输成提供商给的内网IP地址了,不然是连不上的。如果嫌IP太长不好记,可以去绑定域名,不过这个就不是我要讲的东西了。
OK,享受游戏吧
发表回复