杂谈:使用SteamCMD搭建七日杀(7 days to die, 7DTD)Linux版本专用服务器

Above all

在自己的VPS上搭建七日杀的专用服务器和小伙伴开黑是一件很有意思的事情……这篇杂谈主要是记述如何在VPS上使用steamcmd搭建 7dtd dedicated server
假设安装环境是Ubuntu Server LTS 16.04以及更新的系统

准备工作

steamcmd依赖于32位运行环境,因此需要安装32位的glibc和libstdc++等
在ubuntu系统上,运行如下命令进行安装

$ sudo apt install lib32gcc1 -y

如果使用的是CentOS或者RedHat,使用这条命令:

$ sudo yum install glibc.i686 libstdc++.i686 -y

依赖库安装完成后,创建一个普通用户,命名为steam,以免使用root运行导致安全隐患

$ sudo useradd -m steam

创建用户成功后,/home/steam/路径应当一起被创建,现在可以切换到新用户以便执行下一步操作

$ su - steam && cd ~

安装steamcmd

从这里开始的操作应该使用steam用户完成,所有的操作应该在steam用户的家目录下完成
现在开始使用wget下载steamcmd

$ wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

创建一个新路径以便解压上一步下载的文件

$ mkdir -p ./steamcmd/

解压文件到新文件夹

$ tar -xvzf steamcmd_linux.tar.gz -C ./steamcmd/

解压完成后,steamcmd的安装就算告一段落了

安装7DTD Dedicated Server

切换到刚刚新建的steamcmd路径下

$ cd /home/steam/steamcmd/

运行steamcmd.sh脚本,进入steamcmd环境中

$ ./steamcmd.sh

在该环境中,使用app_update命令安装7DTD Dedicated Server,该命令的格式如下:
app_update <app_id> [-beta <betaname>] [-betapassword <password>] [validate]
首先,登录steamcmd,这里可以使用自己的steam账户密码,也可以使用匿名登录:

Steam> login anonymous

指定安装目录,方便后续管理,这里最好使用绝对路径:

Steam> force_install_dir /home/steam/7dtd/

安装服务器,其中beta版本可以在自己的steam库存中查询得到:

Steam> app_update 294420 -beta latest_experimental validate

等待安装完成后,退出该环境:

Steam> quit

若应用有更新,可以使用完全相同的步骤进行更新
至此服务器应用已经安装到/home/steam/7dtd/目录下

编辑配置文件,准备启动服务器

在进行这一步之前,请保证VPS的26900端口(TCP/UDP)处于开放状态,否则服务器启动后可能无法被玩家连接到
切换到7DTD的安装目录,找到serverconfig.xml进行编辑:

$ nano ./serverconfig.xml

以下是较为重要的配置选项:

  • 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:以下均为领地石属性,不多赘述

编辑完该文件后,使用如下命令启动游戏服务器:

$ ./startserver.sh -configfile=./serverconfig.xml

如果需要在后台启动该游戏,可以使用nohup或者screen命令,也可将上述命令保存为bash script,方便启动

游戏存档与管理员

游戏的存档目录应该为~/.local/share/7DaysToDie/Saves/your_game_world/your_game_name/,目前该游戏尚无回档方法,可以对此目录进行备份,若需回档则使用备份覆盖该路径即可
同时,游戏可以添加额外的管理员,默认的管理员文件为~/.local/share/7DaysToDie/Saves/serveradmin.xml,若要添加额外的管理员,将该管理员的SteamID64按照文件中的示例添加到<admins><admins />标签之中即可;该示例如下:

<admins>
	<admin steamID="00000000000000000" permission_level="0" />
<admins />

同样可以在该文件中管理允许连接服务器的白名单和禁止连接服务器的黑名单,参照文件示例即可

加入游戏

在客户端中点击Join a Game,搜索刚才配置的ServerName即可,注意该搜索区分大小写

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章