七日杀游戏私服搭建

游戏安装

image

Linux环境准备

基于Centos7安装七日杀游戏服务器,配置为2核4G。首先安装常用的依赖环境,如下

1
2
3
4
5
6
7
8
9
10
11
12
yum install -y net-tools
yum install -y wget
yum install -y glibc.i686 libstdc++.i686
yum install -y gcc gcc-c++
yum install -y cmake
yum install -y ncurses-devel
yum install -y bison
yum install -y perl perl-devel
yum install -y pcre-devel openssl openssl-devel
yum install -y autoconf
yum install -y vim
yum install -y telnet

另外如果服务器内存低于8G强烈建议开启swap,七日杀游戏优化极差,亲测游戏初期4G内存还绰绰有余,但到游戏中期后期4G内存已经捉襟见肘甚至偶尔因为内存不足而炸服。因此强烈建议内存较低的服务器开启swap。

1
2
3
4
# 配置4G大小的swap分区
dd if=/dev/zero of=/var/swap bs=1024 count=4096000
mkswap -f /var/swap
swapon /var/swap

依赖环境安装完毕后创建非root用户,并使用该用户管理游戏安装,避免root权限泄漏。

1
2
3
4
5
6
# 创建用户
useradd webapp
passwd webapp

chown webapp:webapp /opt/
su - webapp

steam安装

https://developer.valvesoftware.com/wiki/SteamCMD:zh-cn

1
2
3
4
cd /opt
mkdir steamcmd
cd steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -

游戏安装

1
2
3
4
5
6
7
# 启动steamcmd
/opt/steamcmd/steamcmd.sh
# 登录steam账号
Steam> login 用户名

# 下载安装七日杀
Steam> app_update 294420 validate

配置

游戏参数配置

七日杀安装完毕后,默认游戏安装路径为~/Steam/steamapps/common/7 Days to Die Dedicated Server,存档位置默认为~/.local/share/7DaysToDie

由于七日杀的默认游戏配置部分参数不合理,建议修改,配置文件为~/Steam/steamapps/common/7 Days to Die Dedicated Server/serverconfig.xml,其中比较重要的配置如下:

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<ServerSettings>
<!-- 服务器自定义名称 -->
<property name="ServerName" value="7 day to die server"/>
<!-- 服务器密码 -->
<property name="ServerPassword" value="12345678"/>

<!-- 服务器端口号 -->
<property name="ServerPort" value="26900"/>
<!-- 服务器可见性,0:隐藏,1:仅好友展示,2公开: -->
<property name="ServerVisibility" value="2"/>
<!-- 玩家下载地图时最大网速,最大1300 (kiB/s) -->
<property name="ServerMaxWorldTransferSpeedKiBs" value="1024"/>

<!-- 最大玩家数量 -->
<property name="ServerMaxPlayerCount" value="12"/>


<!-- 地图,默认Navezgane,使用West Xuyofu Territory则生成随机地图 -->
<property name="GameWorld" value="West Xuyofu Territory"/>
<!-- 地图种子 -->
<property name="WorldGenSeed" value="asdf"/>
<!-- 地图大小,2048-16384 -->
<property name="WorldGenSize" value="6144"/> <!-- If RWG this controls the width and height of the created world. It is also used in combination with WorldGenSeed to create the internal RWG seed thus also creating a unique map name even if using the same WorldGenSeed. Has to be a multiple of 2048 between 2048 and 16384, though large map sizes will take long to generate / download / load -->

<!-- 游戏难度,0-5,0:最简单,5:最难 -->
<property name="GameDifficulty" value="2"/> <!-- 0 - 5, 0=easiest, 5=hardest -->
<!-- 玩家对方块的伤害比例,默认100% -->
<property name="BlockDamagePlayer" value="300" />
<!-- AI对方块的伤害比例,默认100% -->
<property name="BlockDamageAI" value="100" />
<!-- AI在血月期间对方块的伤害比例,默认100% -->
<property name="BlockDamageAIBM" value="100" />
<!-- 经验获取比例,默认100% -->
<property name="XPMultiplier" value="300" />

<!-- 游戏中昼夜时长(分钟),默认60分钟 -->
<property name="DayNightLength" value="60" />
<!-- 死亡物品掉落,0:不掉落,1:全部掉落,2:仅工具掉落,3:仅背包掉落:4:全部删除 -->
<property name="DropOnDeath" value="0" />
<!-- 下线物品掉落,0:不掉落,1:全部掉落,2:仅工具掉落,3:仅背包掉落:4:全部删除 -->
<property name="DropOnQuit" value="0" />

<!-- 全地图丧尸数量,默认64,该配置对性能影响巨大 -->
<property name="MaxSpawnedZombies" value="32" />
<!-- 全地图动物数量 -->
<property name="MaxSpawnedAnimals" value="50" />
<!-- 客户端最大视线距离(6-12),对内存使用和性能影响很大 -->
<property name="ServerMaxAllowedViewDistance" value="12" />

<property name="EnemySpawnMode" value="true" /> <!-- Enable/Disable enemy spawning -->
<!-- 丧尸难度,0:普通,1:困难 -->
<property name="EnemyDifficulty" value="0" />
<property name="ZombieFeralSense" value="0" /> <!-- 0-3 (Off, Day, Night, All) -->
<!-- 丧尸移动速度,0-4(步行、慢跑、跑步、冲刺、噩梦) -->
<property name="ZombieMove" value="0" />
<!-- 丧尸夜晚移动速度,0-4(步行、慢跑、跑步、冲刺、噩梦) -->
<property name="ZombieMoveNight" value="1" />

<property name="ZombieFeralMove" value="1" />
<!-- 丧尸血月移动速度,0-4(步行、慢跑、跑步、冲刺、噩梦) -->
<property name="ZombieBMMove" value="1" />
<!-- 血月频率,默认每7天 -->
<property name="BloodMoonFrequency" value="7" />

<!-- 战利品掉落倍率,默认100% -->
<property name="LootAbundance" value="300" />
<!-- 空投标记,默认false关闭 -->
<property name="AirDropMarker" value="true"/>

<!-- 玩家PVP模式,0:关闭,1:仅杀死盟友,2:仅杀死陌生人,3:杀死所有人 -->
<property name="PlayerKillingMode" value="0" />


</ServerSettings>

更多配置信息见七日杀wiki文档

防火墙配置

端口 协议 说明
26900 TCP serverconfig中指定端口
26900-26903 UDP 客户端连接端口
8081 TCP Telnet端口(可以不开放,仅本地连接)

管理服务器

启动游戏

1
nohup ~/Steam/steamapps/common/7\ Days\ to\ Die\ Dedicated\ Server/startserver.sh -configfile=serverconfig.xml &

管理游戏

1
2
3
4
5
# 连接游戏Telnet
telnet 127.0.0.1 8081

# 关闭游戏
> shutdown

存档自动备份

搭建游戏私服,必然需要对游戏存档进行自动备份,防止由于各种原因需要回档时有备份存档可以会用。

1
2
3
4
5
6
# 安装crontab
yum install vixie-cron
yum install crontabs

# 启动定时任务服务
service crond start

配置自动化备份脚本,将七日杀的存档自动打包复制到/home/webapp/backup路径下

1
2
3
4
5
6
#!/bin/bash

filename=$(date +%Y%m%d_%H%M%S).zip

# 七日杀存档备份
zip -r /home/webapp/backup/"$filename" /home/webapp/.local/share/7DaysToDie/Saves/

然后配置定时任务,设置每日凌晨4点执行一次备份脚本,配置如下:

1
2
# 配置定时任务
crontab -e
1
2
# 每日凌晨4点执行backup.sh脚本
0 4 * * * /home/webapp/backup/backup.sh