整理以前的笔记时,发现还有个搭建求生之路2服务器的教程,索性就拿上来了~~~

前言

重要提示:虽然搭建服务器可以方便大家游玩,但是不确定具体原因,求生之路2的服务器极容易被DDOS攻击 ( 根据以前经历,更改公网IP可以短暂避免攻击,大致也就好个一两天而已 ) 。而防御DDOS攻击则需要花费太多,因此打算自己建服的小伙伴们对此要有心理准备 ( 此处应有炸服dog死? )。

搭建求生服务器大体和饥荒服务器相同,前面关于云主机的配置请参考:Linux系统下饥荒专用服务器搭建,需要注意的是云主机配置方面不需要像饥荒服务器那样需要那么大的内存了,1G内存就完全足够。

1.云主机的配置方面

求生之路2的进程大致占用500M内存,因此配置选择1G完全足够使用。

网络带宽方面根据tick和人数而定,由于好久没开过服了,具体占用数据也忘记了。如果打算60tick、4人游玩的战役服务器,1M的带宽应该是足够的。

安全组方面,饥荒服务器默认端口是10998和10999,而求生之路的默认端口为27015。在安全组配置中添加:


不太确定求生之路2网络使用的什么协议 ( 大部分游戏使用的是UDP,因为速度快 ),所以这里开放两种协议的27015端口。

2.下载并安装游戏

接下来在Xshell中操作Linux系统,下面命令按行敲入窗口中,按回车键执行。

首先更新yum ( Linux系统中安装软件包的工具 ) :

yum update
yum upgrade -y

安装游戏运行环境和常用工具

yum install glibc.i686 libstdc++.i686 libcurl.i686 vim screen p7zip -y

创建steam用户

useradd steam 
su steam
cd ~
mkdir steamcmd
cd steamcmd

下载并解压Steam的Linux客户端steamcmd

wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -zxvf steamcmd_linux.tar.gz

启动Steam客户端,并开始下载求生之路2服务器版 ( 求生之路2专用服务器ID为 222860)

./steamcmd.sh +login anonymous +force_install_dir /home/steam/l4d2 +app_update 222860 validate +quit

由于文件蛮大的,这里大概需要等半小时到一小时左右。

3.安装插件

插件下载 ( 提取码:uppe )

其中插件平台文件为sourcemod和mmsource,可以去官网直接下载:sourcemod,mmsource

然后下载VDF文件:( 网址 )

安装插件平台: ( tar为linux系统下的压缩文件,可以使用7z进行解压 )

打开sourcemod-1.9.0-git6281-linux.tar.gz -> sourcemod-1.9.0-git6281-linux.tar -> 提取,路径为( *\l4d2_plug\ )

打开mmsource-1.10.7-git970-linux.tar.gz -> mmsource-1.10.7-git970-linux.tar -> 提取,路径为( *\l4d2_plug\ )


安装解除tick限制插件:

打开tickrate_enabler.zip -> Package-l4d2 -> 提取,路径与上面相同 ( *\l4d2_plug\ )

安装l4d2toolz:( 忘记具体是干嘛的了?)

打开l4dtoolz(L4D2)-1.0.0.9h.zip -> 提取,路径选择addons ( *\l4d2_plug\addons\ )

安装自动换图插件:

按照压缩包中的说明操作即可。

其余插件:

可以使用望夜插件合集包,解压 ( 密码为:望夜 ) 选择需要的插件,直接拖入即可。

最终得到两个文件夹addons和cfg,打开Xftp工具:

左侧路径为上述两个文件夹的路径,右侧路径为/home/steam/l4d2/left4dead2:

直接将左侧文件夹拖拽入右侧,选择全部覆盖即可。由于steam用户没有添加密码,上传后默认为root用户,因此需要更改文件的所有者:

exit
chown -R steam:steam /home/steam 
su steam

4.自定义服务器

server.cfg可以对服务器进行一些自定义设置:参考

vim ~/l4d2/left4dead2/cfg/server.cfg

# 输入
hostname "你的服务器名"
sv_allow_lobby_connect_only "0" #允许大厅连接(在大厅选择最佳服务器时,有几率匹配到该服务器)
z_difficulty "Normal" #游戏难度
sv_cheats 1 #允许作弊
sm_cvar sb_all_bot_game 1 #防止人数不足自动挂壁
sm_cvar sv_region 4
sm_cvar mp_disable_autokick 1 #闲置自动踢人,关闭设置0
sm_cvar rcon_password "1234" #配合HLSW使用
#剩下配置可以百度server.cfg设置
#tick60-100配置
sm_cvar sv_minrate 100000
sm_cvar sv_maxrate 100000
sm_cvar sv_minupdaterate 100
sm_cvar sv_minupdaterate 100
sm_cvar sv_mincmdrate 100
sm_cvar sv_maxcmdrate 100
sm_cvar sv_client_min_interp_ratio 1
sm_cvar sv_client_max_interp_ratio 1
sm_cvar fps_max 0
sm_cvar net_splitpacket_maxrate 50000

开启60tick:

#启动命令中添加
-tick 60

修改服务器服务器消息logo:

图片对应文件为motd.txt和host.txt,host.txt为上边的小图,motd.txt为大图。

图片请使用PS自行修改,将修改后的图片上传至网络相册 ( 可以使用QQ空间相册 ),上传后进入相册,打开图片,右键复制图片链接,然后将粘贴到motd.txt和host.txt中即可。也可以使用服务器存储图片,但是需要会使用nginx之类的反向代理软件,此处不多说明。

设定管理员:

进入游戏,在控制台输入status,可以看到如下:

其中STEAM_xxx即为你的steamID

在服务器端编辑文件:

vim ~/l4d2/left4dead2/addons/sourcemod/configs/admins_simple.ini

#在最下面输入
"你的steamID" "99:z"

5.启动脚本

编写启动脚本

mkdir ~/l4d2_script
cd ~/l4d2_script
touch l4d2_run.sh
chmod a+x l4d2_run.sh
# 编辑脚本

vim l4d2_run.sh
# 输入
#!/bin/bash

cd ~/l4d2
screen -dmS "l4d2_server" ./srcds_run -game left4dead2 -condebug +exec server.cfg
# 保存退出

使用 screen -dmS 命令启动进程时,不会显示对应的控制台。如果需要使用控制台,则需要使用

# 恢复到地面世界进程
screen -r l4d2_server
# 隐藏控制台按下Ctrl+A然后按下Ctrl+D即可

启动游戏,运行脚本

~/l4d2_script/l4d2_run.sh

等服务器启动后,可以使用控制台或者服务器列表中搜索到服务器:

#控制台连接
进入游戏,先在设置中允许使用开发者控制台
然后按~启动控制台,输入connect 服务器ip:服务器端口号(27015)

#服务器大厅连接
启动控制台,然后输入openserverbrowser回车,然后查找你的服务器名即可

6.关于更新

编写更新脚本

touch ~/l4d2_script/update.sh
chmod a+x ~/l4d2_script/update.sh
vim ~/l4d2_script/update.sh

输入

#!/bin/bash

#更新游戏
~/steamcmd/steamcmd.sh +login anonymous +force_install_dir /home/steam/dst +app_update 222860 validate +quit

执行时需要关闭服务器。

7.关于三方图

嗯!三方图很重要,不过服务器端使用三方图稍微有点麻烦:

① 资源网站上下载三方图 ( 其实也可以直接用服务器直接下载,但是好多资源站不能使用wget直接下载,也没有仔细研究过怎么使用,暂时还是使用下载后上传的方式吧 );

② 解压三方图,安装到本地;

③ 然后使用7z压缩三方图,尽量选择 .7z 格式 ( 这个格式的压缩比还是挺不错的 );

④ 之后将压缩包丢到服务器的addons文件夹中,在服务器上修改文件所有者;

⑤ 使用命令解压

7z x 文件名.7z

重启服务器即可自动装载三方图。

如何启动三方图呢?方式也有很多种:

① 在服务器启动命令中添加:

+map 开图命令(可从三方站中找到)

② 在服务器控制台使用命令:

map 开图命令

③ 使用HLSW远程管理服务器开服:

需要下载HLSW软件 ( 提取码:7cem ),并且server.cfg中配置sm_cvar rcon_password参数

PS:需要注意端口号为27015,修改后无法连接(不知原因为何)

④ 自己编写换图插件:

使用方法参考:插件制作教程

#include <sourcemod>

public Plugin:myinfo = {
    name = "change map",
    author = "BayMin",
    description = "change map",
    version = "0.1",
    url = "http://www.sourcemod.net/"
}

public OnPluginStart( ){
        RegAdminCmd("sm_adminmap", newmap, ADMFLAG_GENERIC, "changemap");
}

public Action:newmap(client,args){
    new Handle:menu = CreateMenu(ModeMenuHandler);
    SetMenuTitle(menu,"切换地图");
    AddMenuItem(menu,"option1","地图切换");
    SetMenuExitButton(menu,true);
    DisplayMenu(menu, client, MENU_TIME_FOREVER);
}

public ModeMenuHandler(Handle:menu,MenuAction:action,client,itemNum){
    if ( action == MenuAction_Select ){
        switch (itemNum){
            case 0 : {
                MapMenuChoose1(client,0);
            }
        }
    }
}

public Action MapMenuChoose1(client,args){
    new Handle:menu = CreateMenu(MapMenuChooseHandler1);
    SetMenuTitle(menu,"请选择地图");
    AddMenuItem(menu,"option1","伦理问题2");
    AddMenuItem(menu,"option2","生化危机3");
    AddMenuItem(menu,"option3","维也纳的呼唤2");
    AddMenuItem(menu,"option4","再见了晨茗");
    AddMenuItem(menu,"option5","Faked");
    SetMenuExitButton(menu,true);
    DisplayMenu(menu, client, MENU_TIME_FOREVER);
}

public MapMenuChooseHandler1(Handle:menu,MenuAction:action,client,itemNum){
    if ( action == MenuAction_Select ){
        switch (itemNum){
            case 0 : {
                 ServerCommand("changelevel qe2_ep1"); 
            }
            case 1 : {
                 ServerCommand("changelevel re3m1"); 
            }
            case 2 : {
                 ServerCommand("changelevel l4d_viennacalling2_1"); 
            }
            case 3 : {
                 ServerCommand("changelevel msd1_town"); 
            }
            case 4 : {
                 ServerCommand("changelevel prooemium2"); 
            }
        }
    }
}

附 : 利用创意工坊中的mod实现admin管理功能

如果你使用过Admin System,会发现这个Mod比插件带的管理员功能好用太多了,但如何将Mod放入服务器并可以使用呢?因为Admin System可以给其他玩家增加管理员权限,所以我们可以利用这种方法向客户端添加服务器管理员。

① 首先下载Mod。我们在创意工坊订阅的Mod都会下载到游戏目录下addons -> workshop中,该文件夹中的文件是以创意工坊ID的形式命名的。

② 安装Mod。Admin System的ID为214630948,将对应文件拖入到服务器的addons文件夹中,就完成了Mod的安装。

③ 该mod会在游戏目录中生成一个ems文件夹,打开ems -> admin_system 里面有个 admin.txt ,该文件记录着管理员的SteamID,因此我们直接将整个文件夹拖入服务器的left4dead2文件夹中,就可以完成Mod的配置。

④ 接下来只需要重启服务器,然后进入测试Mod是否可用即可。

参考文档

Left 4 Dead 2 Dedicated Server Guide

插件制作教程


时至今日,你依旧是我的光芒。