3

七日杀游戏私服搭建

 2 years ago
source link: https://wakzz.cn/2022/02/01/other/%E4%B8%83%E6%97%A5%E6%9D%80%E6%B8%B8%E6%88%8F%E7%A7%81%E6%9C%8D%E6%90%AD%E5%BB%BA/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

七日杀游戏私服搭建

祈雨的博客
2022-02-01

image

Linux环境准备

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

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。

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

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

# 创建用户
useradd webapp
passwd webapp

chown webapp:webapp /opt/
su - webapp

steam安装

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

cd /opt
mkdir steamcmd
cd steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
# 启动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,其中比较重要的配置如下:

<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端口(可以不开放,仅本地连接)

管理服务器

nohup ~/Steam/steamapps/common/7\ Days\ to\ Die\ Dedicated\ Server/startserver.sh -configfile=serverconfig.xml &
# 连接游戏Telnet
telnet 127.0.0.1 8081

# 关闭游戏
> shutdown

存档自动备份

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

# 安装crontab
yum install vixie-cron
yum install crontabs

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

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

#!/bin/bash

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

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

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

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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK