7Days To Die服务器搭建指南
资源准备
- 放通26900-26905的端口(UDP&TCP)
- 安装SteamCMD
mkdir steamcmd
cd steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
#Ubuntu/Debian (x86-64)
sudo apt-get -y install lib32gcc1
#RedHat/CentOS (x86-64)
yum install -y glibc.i686 libstdc++.i686
准备服务端
mkdir 7Days
touch update.sh
chmod +x update.sh
vim update.sh
把以下内容写入
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
cd /home/steam/steamcmd
./steamcmd.sh +force_install_dir /home/steam/7Days +login anonymous +app_update 294420 validate +quit
安装服务端
./update.sh
touch run7Days.sh
chmod +x run7Days.sh
vim run7Days.sh
把以下内容写入
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
clear
echo -e "========================================================
** 发布网址: Cll66.CN **
** 微信: dylanchen24 **
** 作者: DylanC **
** 7Days 一键启动服务器 **
========================================================"
echo
function setup7Days() {
cd "/home/steam/7Days"
screen_name=$"7Days"
screen -dmS $screen_name
cmd=$"$ ./startserver.sh -configfile=./serverconfig.xml"
screen -x -S $screen_name -p 0 -X stuff "$cmd"
screen -x -S $screen_name -p 0 -X stuff $'\n'
}
setup7Days
再创建好关闭服务器的脚本
touch stop.sh
chmod +x stop7Days.sh
vim stop7Days.sh
将以下内容写入
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
clear
function quit7Days() {
screen_name=$"7Days"
screen -X -S $screen_name quit
}
quit7Days
设置服务端
cd 7Days
vim serverconfig.xml
这里给出设置的参考
<?xml version="1.0"?>
<ServerSettings>
<!-- GENERAL SERVER SETTINGS -->
<!-- Server representation -->
<property name="ServerName" value="BMXD_version_1"/> <!-- 显示在服务器列表的名字 -->
<property name="ServerDescription" value="A 7 Days to Die server"/> <!-- 服务器的描述信息,将显示在服务器列表的右边 -->
<property name="ServerWebsiteURL" value=""/> <!-- 服务器网站的网址将显示在服务器列表的右侧且可单点连接 -->
<property name="ServerPassword" value=""/> <!-- 设置服务器密码 -->
<property name="ServerLoginConfirmationText" value="BMXD@Nanyang" /> <!-- 如果设置,用户将在加入服务器期间看到该消息,并且必须在继续之前确认该消息。要对此窗口进行更复杂的更改,可以在XUi中更改“serverjoinrulesdialog”窗口 -->
<property name="Region" value="NorthAmericaEast" /> <!-- 此设置为显示服务器所在的服务器区域 -->
<property name="Language" value="English" /> <!-- 此服务器上玩家的主要语言。值:使用用户希望搜索的任何语言名称。应该是语言的英文名称 -->
<!-- Networking -->
<property name="ServerPort" value="26900"/> <!-- 你希望的服务器的端口设置,如果你想让同一局域网上的PC机找到它作为局域网服务器,请将其保持在26900到26905或27015到27020的范围内。 -->
<property name="ServerVisibility" value="2"/> <!-- 此服务器的可见性:2=公共,1=仅显示给朋友,0=未列出。因为你从来都不是专用服务器的朋友,所以只有当第一个播放器通过IP手动连接时,才可以将其设置为“1”。 -->
<property name="ServerDisabledNetworkProtocols" value=""/> <!-- 不应使用的网络协议。用逗号分隔。可能的值:LiteNetLib、SteamNetworking。如果用户和服务器之间没有NAT路由器,或者端口转发设置正确,则专用服务器应禁用蒸汽网络 -->
<property name="ServerMaxWorldTransferSpeedKiBs" value="512"/> <!-- 设置最大的连接网速,最大值(!)速度(以kiB/s为单位)如果客户机还没有世界,世界将在第一次连接时传输到客户机。最大值约为1300 kiB/s,即使设置了更高的值。 -->
<!-- Slots -->
<property name="ServerMaxPlayerCount" value="8"/> <!-- 服务器容纳玩家的最大插槽 -->
<property name="ServerReservedSlots" value="1"/> <!-- 服务器预留管理连接插槽,管理员使用 -->
<property name="ServerReservedSlotsPermission" value="100"/> <!-- 使用上述保留插槽所需的权限级别 -->
<property name="ServerAdminSlots" value="1"/> <!-- 即使服务器已达到服务器最大连接插槽,允许设置连接的管理员个数 -->
<property name="ServerAdminSlotsPermission" value="0"/> <!-- 使用上述管理员插槽所需的权限级别,注意这里是两个不同级别的权限 -->
<!-- Admin interfaces -->
<property name="ControlPanelEnabled" value="false"/> <!-- 启用/禁用web控制面板 -->
<property name="ControlPanelPort" value="8080"/> <!-- 控制面板网页的端口 -->
<property name="ControlPanelPassword" value="CHANGEME"/> <!-- 进入控制面板的密码 -->
<property name="TelnetEnabled" value="true"/> <!-- 启用/禁用远程登陆系统 -->
<property name="TelnetPort" value="8081"/> <!-- 远程登陆系统服务器的端口 -->
<property name="TelnetPassword" value=""/> <!-- 获取远程登陆系统接口入口的密码。如果没有设置密码,服务器将只监听本地环回接口 -->
<property name="TelnetFailedLoginLimit" value="10"/> <!-- 在一个远程客户端多次输入错误密码后,客户端将被阻止连接到远程登陆服务接口 -->
<property name="TelnetFailedLoginsBlocktime" value="10"/> <!-- 禁止再次连接将持续多长时间(秒) -->
<property name="TerminalWindowEnabled" value="true"/> <!-- 显示日志输出/命令输入的终端窗口(仅限Windows) -->
<!-- Folder and file locations -->
<property name="AdminFileName" value="serveradmin.xml"/> <!-- 服务器管理文件名。相对于“保存游戏”文件夹的路径 -->
<property name="UserDataFolder" value="" /> --> <!-- 使用此选项可以覆盖服务器存储所有生成数据的位置,包括RWG生成的世界。别忘了取消对条目的注释! -->
<property name="SaveGameFolder" value="" /> --> <!-- 使用此选项仅覆盖保存游戏路径。别忘了取消对条目的注释! -->
<!-- Other technical settings -->
<property name="EACEnabled" value="false"/> <!-- 启用/禁用简易防作弊功能 -->
<property name="HideCommandExecutionLog" value="0"/> <!-- 隐藏命令执行的日志记录。0=显示所有内容,1=仅从Telnet/ControlPanel隐藏,2=也从远程游戏客户端隐藏,3=隐藏所有内容 -->
<property name="MaxUncoveredMapChunksPerPlayer" value="131072"/> <!-- 覆盖每个玩家可以在游戏地图上发现的块数。每个播放器的最大地图文件大小限制为(x*512字节),未覆盖区域为(x*256平方米)。默认值131072意味着任何时候都可以覆盖最大32平方公里-->
<property name="PersistentPlayerProfiles" value="false" /> <!-- 如果禁用,玩家可以加入任何选定的个人资料。如果为真,他们将加入他们加入的最后一个配置文件 -->
<!-- GAMEPLAY -->
<!-- World -->
<!-- PWG不懂是啥意思 -->
<property name="GameWorld" value="PREGEN6k"/> <!-- “RWG”(请参阅下面的世界种子和世界大小选项)或Worlds文件夹中任何现有的世界名称(目前附带有“Navezgane”、“PREGEN01”等名称) -->
<property name="WorldGenSeed" value="asdf"/> <!-- 如果说RWG,这是新世界一代的种子。如果一个具有结果名称的世界已经存在,它将直接加载它 -->
<property name="WorldGenSize" value="6144"/> <!-- 如果是RWG,则控制所创建世界的宽度和高度。它还与世界种子结合使用,以创建内部RWG种子,因此即使使用相同的世界种子,也会创建一个唯一的地图名称。在2048到16384之间必须是2048的倍数,尽管生成/下载/加载大型地图需要很长时间 -->
<property name="GameName" value="My Game"/> <!-- 不管你想要什么游戏名称。这会影响保存游戏名称以及在世界上放置装饰(树等)时使用的种子。如果创建RWG世界,它不会控制世界的通用布局 -->
<property name="GameMode" value="GameModeSurvival"/> <!-- 游戏模式生存 -->
<!-- Difficulty -->
<property name="GameDifficulty" value="5"/> <!-- 0-5,0=最容易,5=最难 -->
<property name="BlockDamagePlayer" value="100" /> <!-- 玩家对方块造成的伤害有多大(整数百分比) -->
<property name="BlockDamageAI" value="100" /> <!-- AI(僵尸)对区块造成的损害程度(以整数计的百分比) -->
<property name="BlockDamageAIBM" value="100" /> <!-- AI(僵尸)在血月对方块造成多大伤害(占总数的百分比) -->
<property name="XPMultiplier" value="100000000" /> <!-- 经验增益乘数(整数百分比) -->
<property name="PlayerSafeZoneLevel" value="0" /> <!-- 如果一个玩家低于或等于这个等级,他将在产卵时创建一个安全区域(没有敌人) -->
<property name="PlayerSafeZoneHours" value="5" /> <!-- 这个安全区存在的时间是世界上的几个小时 -->
<!-- -->
<property name="BuildCreate" value="false" /> <!-- 作弊模式开/关 -->
<property name="DayNightLength" value="60" /> <!-- 设置游戏中一天的时间,游戏中一天是实时分钟数:60分钟 -->
<property name="DayLightLength" value="18" /> <!-- 设置游戏中一天的日照时间,在游戏中,太阳每天照耀18小时 -->
<property name="DropOnDeath" value="0" /> <!-- 设置死亡掉落:0=无,1=全部,2=仅工具带,3=仅背包,4=全部删除 -->
<property name="DropOnQuit" value="0" /> <!-- 设置退出游戏掉率:0=无,1=所有,2=仅工具带,3=仅背包 -->
<property name="BedrollDeadZoneSize" value="15" /> <!-- 睡袋死区的大小(框“半径”,即每边长度为给定值2倍的框),该区域内不会产生僵尸,任何接触睡袋死区的已清除卧铺卷在清除后也不会产生僵尸。 -->
<property name="BedrollExpiryTime" value="45" /> <!-- 床单所有者最后一次在线后,床单在现实世界中保持活动的天数 -->
<!-- Performance related -->
<property name="MaxSpawnedZombies" value="64" /> <!-- 此设置覆盖整个地图。整个地图上一次只能有这么多僵尸。更改此设置会对性能产生巨大影响。 -->
<property name="MaxSpawnedAnimals" value="20" /> <!-- 如果你的服务器有大量玩家,你可以增加这个限制来添加更多的野生动物。动物消耗的CPU不如僵尸多。注意:这不会导致更多动物任意产卵:生物群落产卵系统只在给定区域产卵一定数量的动物,但如果你有很多玩家分散在一起,那么你可能达到了极限,可以增加。 -->
<property name="ServerMaxAllowedViewDistance" value="12" /> <!-- 玩家可能要求的最大视距(6-12)。对内存使用和性能有很大影响。 -->
<!-- Zombie settings -->
<property name="EnemySpawnMode" value="true" /> <!-- 启用/禁用僵尸刷新 -->
<property name="EnemyDifficulty" value="0" /> <!-- 僵尸的模式:0=正常,1=野性 -->
<property name="ZombieFeralSense" value="0" /> <!-- 僵尸的攻击知觉:0-3(休息、白天、晚上、全部) -->
<property name="ZombieMove" value="0" /> <!-- 僵尸行动:0-4(步行、慢跑、跑步、短跑、噩梦) -->
<property name="ZombieMoveNight" value="3" /> <!-- 僵尸之夜:0-4(步行、慢跑、跑步、短跑、噩梦) -->
<property name="ZombieFeralMove" value="3" /> <!-- 僵尸野性移动:0-4(步行、慢跑、跑步、短跑、噩梦) -->
<property name="ZombieBMMove" value="3" /> <!-- 僵尸移动(完全搞不懂BM是啥意思):0-4(步行、慢跑、跑步、短跑、噩梦) -->
<property name="BloodMoonFrequency" value="7" /> <!-- 血月发生的频率(以天为单位)。设置为“0”表示没有血月 -->
<property name="BloodMoonRange" value="0" /> <!-- 实际的血月日可以随机偏离上述设置多少天。将该值设置为0将使血月恰好每N天发生一次,如血月频率中指定的那样 -->
<property name="BloodMoonWarning" value="8" /> <!-- 红色天数从血月日开始的小时数。将其设置为-1将使红色永远不会显示。 -->
<property name="BloodMoonEnemyCount" value="8" /> <!-- 这是在血月尸群中,每个玩家在任何时候都可以存活(同时繁殖)的僵尸数量,然而,在多人游戏中,超级僵尸 会覆盖这个数量。还要注意的是,你的游戏阶段设定了每一方僵尸的最大数量。较低的游戏阶段值会导致僵尸数量低于血月数设置。更改此设置会对性能产生巨大影响。 -->
<!-- Loot -->
<property name="LootAbundance" value="1000" /> <!-- 物资搜刮的倍数 -->
<property name="LootRespawnDays" value="7" /> <!-- 物资刷新的天数 -->
<property name="AirDropFrequency" value="72"/> <!-- 空投通常在游戏哪个时间段进行空投,0==从不空投 -->
<property name="AirDropMarker" value="true"/> <!-- 设置是否在地图/指南针中添加空投标记。 -->
<!-- Multiplayer -->
<property name="PartySharedKillRange" value="10000"/> <!-- 共享经验和僵尸积分的距离设置,你必须在距离之内才能获得团队共享杀死经验和任务团队杀死目标积分。 -->
<property name="PlayerKillingMode" value="3" /> <!-- 玩家杀戮设置(0=不杀戮,1=仅杀戮盟友,2=仅杀戮陌生人,3=杀戮所有人) -->
<!-- Land claim options -->
<property name="LandClaimCount" value="2"/> <!-- 设置玩家的可放置的领地石个数,每个玩家允许的最大土地使用权。 -->
<property name="LandClaimSize" value="41"/> <!-- 领地石大小设置(单位为块),领地石由密匙保护 -->
<property name="LandClaimDeadZone" value="15"/> <!-- 领地石相隔距离(除非你是其他玩家的朋友) -->
<property name="LandClaimExpiryTime" value="7"/> <!-- 玩家离线且领地石保护失效的真实天数 -->
<property name="LandClaimDecayMode" value="2"/> <!-- 控制离线玩家领地如何衰弱。0=慢速(线性),1=快速(指数),2=无(在宣称到期前提供全面保护)。 -->
<property name="LandClaimOnlineDurabilityModifier" value="400"/> <!-- 当玩家在线时,保护区块硬度增加多少。0表示无限(不会受到任何伤害)。默认值为4x -->
<property name="LandClaimOfflineDurabilityModifier" value="400"/> <!-- 当玩家离线时,保护区块硬度增加多少。0表示无限(不会受到任何伤害)。默认值为4x -->
<property name="LandClaimOfflineDelay" value="0"/> <!-- 玩家离开游戏后,土地所有权区域从在线状态过渡到离线状态的分钟数。默认值为0 -->
<property name="DynamicMeshEnabled" value="true"/> <!-- 是否启用动态网格系统 -->
<property name="DynamicMeshLandClaimOnly" value="true"/> <!-- 动态网格系统是否仅在玩家LCB区域处于活动状态 -->
<property name="DynamicMeshLandClaimBuffer" value="3"/> <!-- 动态网格LCB块半径 -->
<property name="DynamicMeshMaxItemCache" value="3"/> <!-- 有多少项可以同时处理,值越高,使用的内存就越多 -->
<property name="TwitchServerPermission" value="90"/> <!-- 在服务器上使用twitch集成所需的权限级别 -->
<property name="TwitchBloodMoonAllowed" value="false"/> <!-- 如果服务器在血月期间允许twitch操作。这可能会导致服务器延迟,在血月期间会产生额外的僵尸。 -->
<!-- There are several game settings that you cannot change when starting a new game.
You can use console commands to change at least some of them ingame.
setgamepref BedrollDeadZoneSize 30 -->
</ServerSettings>
不想看的可以参考以下较为重要的参数
- ServerName:你的服务器名字,不要太过简单,在客户端搜索时区分大小写
- ServerPassword:服务器登录密码
- ServerPort:连接端口,默认是26900,可以修改
- ServerVisibility:服务器可见性,可以根据需要设置为 0(私有)、1(仅朋友可见)和2(公开)
- ServerMaxPlayerCount:最大玩家数,可以设置的值为1、2、4、8等
- EACEnabled:是否开启EAC(EasyAntiCheat),可以设置为true(是)或者false(否)
PersistentPlayerProfiles:玩家档案不变性,如果设置为true(开启),则如果玩家有任何修改自己Profile的行为均会导致无法进入游戏,建议为false(关
闭)
- GameWorld:指定进行游戏使用的地图
- GameName:游戏存档的路径名,该属性用于区分存档
- GameDifficulty:游戏难度,可以设置为0(简单)-5(困难),共6等级
- BlockDamagePlayer:玩家方块伤害的乘法因子,默认为100,即100%
- BlockDamageAI:僵尸等AI造成方块伤害的乘法因子,默认为100,计算方式同上
- BlockDamageAIBM:BM意为BloodMoon,即血月当晚的AI造成方块伤害的乘法因子
- XPMultiplier:玩家获得经验的乘数因子,默认为100,即100%
- PlayerSafeZoneLevel:玩家新手保护可以持续到的最高等级,在此等级之前死亡无惩罚,默认为5
- BuildCreate:是否开启作弊模式
- DayNightLength:游戏中一昼夜持续的现实时间,单位为分钟
- DayLightLength:游戏中白天持续的小时数,按照游戏时间计算,默认为18小时,即6:00-22:00为白昼
DropOnDeath:死亡时掉落,可以选择0(无掉落),1(掉落所有物品),2(仅掉落腰带物品,即装备栏),3(仅背包掉落),4(删除所有,即死亡后
无法取回掉落物)
- DropOnQuit:退出时掉落,选项同上,但是没有4
- BedrollDeadZoneSize:睡袋安装区半径,默认为15,在这个区域内不会刷新僵尸
- MaxSpawnedZombies:同一时间所有玩家视野内生成活动僵尸的最大数目,默认为64
- MaxSpawnedAnimals:同一时间所有玩家视野内生成活动动物的最大数目,默认为50
- EnemySpawnMode:僵尸是否刷新,该选项控制搜刮过得房屋中僵尸是否会重生
- ZombieMove:僵尸在白天的移动速度,分为0-4五级
- ZombieMoveNight:僵尸在夜晚的移动速度,分级同上
- ZombieFeralMove:狂暴僵尸的移动速度,分级同上,似乎不受上述两个选项的影响
- ZombieBMMove:僵尸在血月当晚的移动速度,同上
- BloodMoonFrequency:血月频率,单位为游戏日,默认为7
- BloodMoonRange:血月的时间范围,默认为0,即血月当晚至第二天凌晨
- BloodMoonWarning:血月警告时间,默认为8,即血月当天早上八点钟
- BloodMoonEnemyCount:血月当晚生成的敌人数量,计算方法应该是玩家数乘上该选项的值
- LootAbundance:搜刮物品的数量奖励的乘数因子,默认为100,即100%
- LootRespawnDays:可搜刮物品的重生时间,默认是5,即五个游戏日后可以重复搜刮
- AirDropFrequency:空投频率,默认值为3,即每三天中午的12:40会有空投随机刷新在地图上(注意,第一次空投是第四天,以后每次空投天数是三的倍数加一)
- AirDropMarker:空投标记,设置为true即可在地图上显示空投位置
- PartySharedKillRange:和队友共享经验范围,单位是米
- PlayerKillingMode:PVP模式的设置,可以设置为0(PVE),1(仅队友之间有伤害),2(仅对陌生人有伤害),3(PVP)
- LandClaim-xxxxx:以下均为领地石属性,不多赘述
启动服务器
./run7Days.sh
存档
游戏的存档目录应该为~/.local/share/7DaysToDie/Saves
管理员
如果想添加管理员,可以编辑~/.local/share/7DaysToDie/Saves/serveradmin.xml
管理员的SteamID64
按照文件中的示例添加到<admins><admins />
标签之中即可
Telnet服务器
如果要查看服务器的feedback
telnet localhost 8081