## 环境
全新安装的Ubuntu 22.04 LTS (GNU/Linux 5.15.0-27-generic x86_64)
<br/>
## 安装依赖
```shell
sudo apt update
sudo apt install lib32gcc-s1 # 看参考文章里是lib32gcc1,但新版本中apt提示替换成lib32gcc-s1了
```
<br/>
## 安装Steamcmd
```shell
mkdir ~/steamcmd
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -zxvf steamcmd_linux.tar.gz
./steamcmd.sh
```
<br/>
## 安装Left 4 Dead 2
匿名登录
```shell
Steam>login anonymous
```
指定下载目录
```shell
Steam>force_install_dir /home/当前用户名/l4d2
```
下载L4D2服务端
```shell
Steam>app_update 222860 validate
```
退出Steamcmd
```shell
Steam>quit
```
<br/>
## 开启0 lerp和128 tick
### 下载[SourceMod](https://www.sourcemod.net/downloads.php?branch=stable)和[Metamod](https://www.sourcemm.net/downloads.php)
```shell
cd ~
curl -O https://sm.alliedmods.net/smdrop/1.10/sourcemod-1.10.0-git6538-linux.tar.gz
curl -O https://mms.alliedmods.net/mmsdrop/1.11/mmsource-1.11.0-git1145-linux.tar.gz
tar -zxf sourcemod-1.10.0-git6538-linux.tar.gz
tar -zxf mmsource-1.11.0-git1145-linux.tar.gz
cp -R addons cfg l4d2/left4dead2/
```
### 下载[Tickrate-Enabler](https://github.com/Satanic-Spirit/Tickrate-Enabler)
>解压文件,然后分别根据服务器类型参考以下操作:
>
>1)、win系统服务器:移动tickrate_enabler.dll文件和tickrate_enabler.vdf到left4dead2/addons/目录下 (在addons目录下,新建名为tickrate_enabler的文件夹把tickrate_enabler.dll放进去也可以生效,但tickrate_enabler.vdf必须放在addons根目录下。好处主要是直观,找起来方便)。
>
>2)、Linux系统服务器(CentOS、Ubuntu之类的):移动tickrate_enabler.so文件和tickrate_enabler.vdf到left4dead2/addons/目录下 (在addons目录下,新建名为tickrate_enabler的文件夹把tickrate_enabler.so放进去也可以生效,但tickrate_enabler.vdf必须放在addons根目录下。好处主要是直观,找起来方便)。
但在测试下来Windows服务器上可以不安装这个mod,如果安装了反而会启动不起来。
### 修改配置文件
```shell
nano ~/l4d2/left4dead2/cfg/server.cfg
```
配置文件内容,不考虑防D和人数
```plains
hostname "local test" // 服务器名称
sv_consistency 0 //防止mod冲突
sm_cvar fps_max 300 //高于推荐的100素质,否则计算刻度会下降
sm_cvar sv_mincmdrate "128" //服务器CMD最小速率
sm_cvar sv_maxcmdrate "128" //服务器CMD最大速率
sm_cvar sv_minupdaterate "128" //服务器更新最小速率
sm_cvar sv_maxupdaterate "128" //服务器更新最大速率
sm_cvar sv_minrate "128000" //设置数据速率传输下限,0=无限制,手动设定30K,表示30tick
sm_cvar sv_maxrate "0" //设置数据速率传输上限.
sm_cvar sv_client_min_interp_ratio 0 //允许客户端设置cl_interp_ratio为任何值,此值为-1时会导致下面那行也就是sv_client_max_interp_ratio设置无效(官方文档说明)
sm_cvar sv_client_max_interp_ratio 2 //当最小值为-1时,本值无效
sm_cvar net_splitrate 1 //每帧可以发送的拆分数据包的片段数,默认为1,调大可能会导致choke增加,改动需谨慎
sm_cvar net_splitpacket_maxrate 100000 //Tickrate_Enabler所需参数 ,大神备注为网络调整,初步估计为配合高tick值的网络调整,官方解释为: Max bytes per second when queueing splitpacket chunks。
sm_cvar nb_update_frequency "0.01" //默认0.1;值越小,小僵尸和女巫的路径以及状态更新越频繁,非常吃服务器的CPU;但如果不设置小一些,客户端开启0 lerp后会出现僵尸和女巫闪烁前进的情况
```
运行时注释需去掉,解析时会出现问题,此处注释仅为方便理解。
<br/>
## 启动L4D2服务器
```shell
cd ~/l4d2 && ./srcds_run -game left4dead2 -tickrate 128 +exec server.cfg
```
<br/>
## 客户端配置
在`SteamLibrary/steamapps/common/Left 4 Dead 2/left4dead2/cfg`下添加配置文件,这里取名为lerp_0.cfg
内容为
```plains
cl_cmdrate "128"
cl_updaterate "128"
cl_interp 0
cl_interp_ratio 0
```
在游戏内想开启0 lerp的时候,只需要调出控制台,输入
```shell
exec lerp_0
```
即可开启
<br/>
## 其他
### 点击加入Steam组却跳转到错误的Steam组
下载这个[插件](https://www.sourcemod.net/vbcompiler.php?file_id=175670),放在addons文件夹中
相关讨论:
[sv_steamgroup fixer - AlliedModders (alliedmods.net)](https://forums.alliedmods.net/showthread.php?t=300683)
[Dedicated server sv_steamgroup is incorrect :: Left 4 Dead 2 综合讨论 (steamcommunity.com)](https://steamcommunity.com/app/550/discussions/0/1736636051411668365/?ctp=1)
<br/>
## 资料来源
[Ubuntu下搭建求生之路2服务器 -_Flower_For_Algernon的博客](https://blog.csdn.net/Flowers_for_Algernon/article/details/107501220)
[L4D2 Tickrate Enabler 服务器速率配置方法_- ZBzibing的博客](https://blog.csdn.net/ZBzibing/article/details/116126418)
[求生之路2 服务器设置100tick方法 - 哔哩哔哩 (bilibili.com)](https://www.bilibili.com/read/cv12184844)
[求生之路2 L4D2 服务器网络参数设置 - 哔哩哔哩 (bilibili.com)](https://www.bilibili.com/read/cv12114177)
[记录,整理] 使用Ubuntu创建一个求生之路2服务器