僵尸毁灭工程服务器搭建

背景

最近准备和女朋友玩僵毁联机,翻了下以前的笔记,太老了,更新一下。
对linux不熟悉建议使用Debian或者ubuntu系统,centos属实没必要。

环境信息

系统:Debian 10
内存:4G
端口开放:
16261 UDP (PZ服务器)
8766 TCP (貌似不需要)

注:如果vps没重要信息的话建议切换到root用户操作。

安装命令解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 更新一下源
apt update

# 安装一下必要的运行库
apt install -y lib32gcc1 libsm6 libxext6 libxrender-dev
# 如果上面的lib32gcc1报错,运行下面这个
apt install -y lib32gcc-s1 libsm6 libxext6 libxrender-dev

# 新建一个文件夹存放游戏 路径随意
mkdir /usr/local/games

# 新建一个文件夹存放steam
mkdir /usr/local/etc/steam && cd /usr/local/etc/steam

# 下载steam
wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz

# 解压安装包
tar -xvzf steamcmd_linux.tar.gz

# 启动steam
./steamcmd.sh

# 设置一下安装路径(可选)
force_install_dir /usr/local/games

# 登录你的steam,僵毁我看steam官网文档上说不支持匿名下载(确信108600是不行的)
login 你的用户名 密码

# 下载僵毁
# 下载最新的版本,unstable可以换成steam上你看到的其他分支(国内机器经常断联多跑几次)
app_update 108600 -beta unstable validate
# 也可以下载默认版本
或者app_update 108600 validate 默认的

# 下载完成后退出
exit

# 查看游戏的下载位置,运行下面这个找找到底装哪里去了
find / -name ProjectZomboid

# 进入路径
cd 屏幕上显示的路径

# 进入游戏目录并运行开服脚本,然后按提示输入管理员密码就行了
cd projectzomboid && ./start-server

# 最后去游戏里面应该就可以搜到了

下载安装出现的问题

1. linux32/steamcmd: No such file or directory

原因:缺库
解决办法:apt-get install lib32gcc1
参考

2. error while loading shared libraries: libSM.so.6: cannot open shared object file: No such file or directory

原因:缺库
解决办法:apt-get install -y libsm6 libxext6 libxrender-dev

3.SteamAPI_Init() failed; create pipe failed.Message: ‘Fatal Error’, Detail: ‘Steam must be running to play this game (SteamAPI_Init() failed).

原因1:steam要运行在后台
~~ 解决办法:
将ProjectZomboid64.json里面的参数修改~~
“-Dzomboid.steam=1”
改为
“-Dzomboid.steam=0”
参考~~

原因2:你运行错了文件(比如我),开服应该运行start-server.sh这个文件

4.Package ‘lib32gcc1’ has no installation candidate

原因:库不同,装个兼容的
apt-get install -y lib32gcc-s1

5.Sys_LoadModule failed to load: /root/.steam/sdk64/steamclient.so

原因1:大概率是没有指定下载位置导致运行缺库
先创建这个文件夹:mkdir /root/.steam/sdk64
找到steamclient.so文件在哪
find / -name steamclient.so
复制linux64路径下的那个文件到目标地区
cp /usr/local/etc/steam/linux64/steamclient.so /root/.steam/sdk64/steamclient.so
回到ProjectZomboid的目录下执行./projectzomboid.sh

原因2:运行的文件错误(比如我),开服应该是start-server.sh

6. 开服成功但是搜索不到

原因很多,大概以下几点:

  1. servertest.ini文件的Open没设为true
  2. 主机厂商安全组策略
  3. start-server.sh这个文件的Dzomboid.steam参数改为1(卡了我一晚上,如果有关键字Steam is not enabled应该就是这个原因。)
  4. 其他原因:可以尝试直接通过ip地址和服务器端口进行连接

设置后台启动方式

方法一

nohup 命令
缺点:不好关

方法二:

WorkingDirectory和ExecStart改为你的路径,不清楚的find一下就行,一次性复制下面所有代码并执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cat >/usr/lib/systemd/system/zomboid.service <<'EOL'
[Unit]
Description=Project Zomboid Server
After=network.target

[Service]
PrivateTmp=true
Type=simple
User=root
WorkingDirectory=/usr/local/etc/steam/steamapps/common/ProjectZomboid/projectzomboid/
ExecStart=/usr/local/etc/steam/steamapps/common/ProjectZomboid/projectzomboid/start-server.sh

[Install]
WantedBy=multi-user.target
EOL

之后就可以通过这些命令启动重启了

1
2
3
4
5
6
7
8
9
10
11
# 启动
systemctl start zomboid.service

# stop a server
systemctl stop zomboid.service

# restart a server
systemctl restart zomboid.service

# 查看状态,执行后按q可以退出
systemctl status zomboid.service

配置沙盒参数

官方参考

servertest.ini 文件

servertest_SandboxVars.lua

servertest_spawnpoints.lua

servertest_spawnregions.lua

ProjectZomboid64.json