在Linux上搭建饥荒服务器

在网上教程的帮助下,经过2天努力我终于成功搭建了饥荒专用服务器。由于网上的教程有些简陋,所以我决定写一篇教程来分享我的经验,以帮助更多的想要搭建自己服务器的玩家。

准备工作

首先搭建服务器需要具备在字符界面进行操作的能力,什么是字符界面,如下图

上面截图中漆黑的面板就是没有安装图形界面的操作系统,所有的操作都要靠输入指令完成,所以想要搭建服务器需要具备一定的Linux相关的知识,如果你是计算机专业的那再好不过了,如果你不是的话那也没关系,我会把每一条命令的含义解释清楚。

购买服务器
当然也可以不用购买,你可以在自己的电脑上部署,只不过在自己电脑上部署的服务延迟为???,这是没有公网IP的缘故。操作系统推荐安装CentOS,因为这篇教程只针对CentOS系统。

开始搭建

安装 SteamCMD
SteamCMD 就是 Steam 客户端,只不过是命令行版本的客户端。另外虽然SteamCMD 也能下载游戏,但它下载的是游戏的服务端,而Steam下载的是游戏的客户端。这里贴上官方文档

1.创建 steam 用户

useradd -m steam

2.进入其主文件夹

cd /home/steam

3.安装

yum install steamcmd

4.链接 steamcmd 可执行文件

ln -s /usr/games/steamcmd steamcmd

运行 SteamCMD
1.切换成 steam 用户(因为官方建议不要用root角色运行,因为会带来安全风险)

su - steam

2.启动 SteamCMD

cd ~
steamcmd

运行了上面的命令后Bash 提示符会变成Steam>,那么就可以进行登陆操作了

登陆 Steam
1.匿名登陆

login anonymous

2.设置应用安装目录

force_install_dir ./dst/

3.安装饥荒联机版(服务端)

app_update 343050 validate

4.完成之后,输入quit从而正确地从 Steam 服务器内注销帐户

quit

启动饥荒
进入到饥荒安装目录/bin中,看到该目录下面有个dontstarve_dedicated_server_nullrenderer这个名字的文件,它就是游戏的启动器

启动游戏的命令如下(但先不要启动游戏,因为存档文件还没有准备)

dontstarve_dedicated_server_nullrenderer -cluster MyDediServer -shard Master

其中-cluster 指定存档文件名,-shard指定启动地面还是洞穴(Master地面 Caves洞穴)

准备存档文件
所有的存档文件统一放在/home/steam/.klei/DoNotStarveTogether目录下,先去Klei官网下载一份存档文件

1.进入官网并登陆,点击红圈框柱的按钮


2.添加新服务器,然后点击配置服务器按钮


3.点击下载设置,得到一个压缩包MyDediServer.zip

4.将压缩包解压到/home/steam/.klei/DoNotStarveTogether目录下,执行启动游戏命令

存档文件说明

MyDediServer内部文件说明

文件名 作用
Caves 洞穴相关
Master 地面相关
cluster.ini 服务器配置文件
cluster_token.txt 服务器token(从Klei官网获取)

cluster.ini文件配置项说明

[MISC]
max_snapshots = 6                  # 最大快照数,决定了可回滚的天数
console_enabled = true             # 是否开启控制台
 
[SHARD]
shard_enabled = true               # 服务器共享,要开启洞穴服务器的必须启用
bind_ip = 127.0.0.1                # 服务器监听的地址,当所有实例都运行在同一台机器时,可填写 127.0.0.1,会被 server .ini 覆盖
master_ip = 127.0.0.1              # master 服务器的 IP,针对非 master 服务器,若与 master 服务器运行在同一台机器时,可填写 127.0.0.1,会被 server.ini 覆盖
master_port = 10888                # 监听 master 服务器的 UDP 端口,所有连接至 master 服务器的非 master 服务器必须相同
cluster_key = dst                  # 连接密码,每台服务器必须相同,会被 server.ini 覆盖
 
[STEAM]
steam_group_only = false           # 只允许某 Steam 组的成员加入
steam_group_id = 0                 # 指定某个 Steam 组,填写组 ID
steam_group_admins = false         # 开启后,Steam 组的管理员拥有服务器的管理权限
 
[NETWORK]
offline_server = false             # 离线服务器,只有局域网用户能加入,并且所有依赖于 Steam 的任何功能都无效,比如说饰品掉落
tick_rate = 15                     # 每秒通信次数,越高游戏体验越好,但是会加大服务器负担
whitelist_slots = 0                # 为白名单用户保留的游戏位
cluster_password =                 # 游戏密码,不设置表示无密码
cluster_name = ttionya test        # 游戏房间名称
cluster_description = description  # 游戏房间描述
lan_only_cluster = false           # 局域网游戏
cluster_intention = madness        # 游戏偏好,可选 cooperative, competitive, social, or madness,随便设置,没卵用
 
[GAMEPLAY]
max_players = 16                   # 最大游戏人数
pvp = true                         # 能不能攻击其他玩家,能不能给其他玩家喂屎
game_mode = survival               # 游戏模式,可选 survival, endless or wilderness,与玩家死亡后的负面影响有关
pause_when_empty = false           # 没人服务器暂停,刷天数必备
vote_kick_enabled = false          # 投票踢人

摘抄自饥荒联机独立服务器搭建教程(三):配置篇

Master和Caves内部文件说明

文件名 作用 是否必须
backup 回档相关
save 存档相关
leveldataoverride.lua 世界配置
modoverrides.lua mode配置
server.ini 服务配置
server_chat_log.txt 聊天日志
server_log.txt 服务器日志

如果是新开一个存档的话只需要准备leveldataoverride.lua modoverrides.lua server.ini这三个文件就行了,其他的文件会自动生成

配置mode

网上教程非常多,我这里就不在详细讲解,我简单说一下

从已有的存档里复制
点击此电脑进入C:\Users\这里是你的用户名\Documents\Klei\DoNotStarveTogether目录,里面有饥荒存档,从存档拷贝一份modoverrides.lua到服务器上

服务器订阅并自动更新mode
进入饥荒安装目录/mods目录下,里面有个dedicated_server_mods_setup.lua文件,编辑这个文件订阅mode,ServerModSetup()里面传入的参数是mode的id

--There are two functions that will install mods, ServerModSetup and ServerModCollectionSetup. Put the calls to the functions in this file and they will be executed on boot.

--ServerModSetup takes a string of a specific mod's Workshop id. It will download and install the mod to your mod directory on boot.
    --The Workshop id can be found at the end of the url to the mod's Workshop page.
    --Example: http://steamcommunity.com/sharedfiles/filedetails/?id=350811795
    --ServerModSetup("350811795")

--ServerModCollectionSetup takes a string of a specific mod's Workshop id. It will download all the mods in the collection and install them to the mod directory on boot.
    --The Workshop id can be found at the end of the url to the collection's Workshop page.
    --Example: http://steamcommunity.com/sharedfiles/filedetails/?id=379114180
    --ServerModCollectionSetup("379114180")
ServerModSetup("1365023186")
ServerModSetup("1383795736")
ServerModSetup("375859599")
ServerModSetup("378160973")
ServerModSetup("458587300")
ServerModSetup("458940297")

保存后重启饥荒即可

制作启动脚本

启动命令太长了每次输入都不方便,制作一个shell脚本简化启动操作。进入到饥荒安装目录/bin目录下,创建两个文件dst_master.shdst_caves.sh,它们分别是地面的启动脚本和洞穴的启动脚本。编辑这两个文件,在里面分别写入

dst_master.sh

./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Master

dst_caves.sh

./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Caves

当然网上的帖子是这么操作的

echo "./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Master" > dst_master.sh
echo "./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Caves" > dst_caves.sh

其实本质上都一样,像echo 字符串 > 文件名这种命令的作用就是将echo后面跟的那一串字符串写入到指定文件中

利用screen工具开启多个窗口

首先介绍这个工具有什么用,这个工具是用来开启多个窗口的。在服务器上启动饥荒之后你会发现当前窗口被启动命令所占用,你无法输入其他命令,除非按住Ctrl+C退出,但是退出之后服务也跟着关闭了,所以需要借助screen工具开启多个窗口

网上的screen使用教程废话太多,我这里贴出几个常用的命令:

  • 创建一个新的窗口
    screen -S 窗口名称自己起
  • 退出窗口
    Ctrl+A+D
  • 查看窗口列表
    screen -ls
  • 恢复窗口
    screen -r 要恢复的窗口名
  • 删除窗口
    screen -S 要删除的窗口名 -X quit

利用screen工具开启两个窗口分别启动地面和洞穴服务

解决延迟为???的问题

首先需要解释下产生这种情况的原因,延迟多少是由Klei的服务器去检测的,如果Klei的服务器ping不通你的服务器,就会产生延迟为???的情况。

一般有两种可能

  • 如果你是在自己电脑上部署的饥荒服务端
    因为没有公网IP所以Klei那边无论如何都不可能检测到延迟,所以没法解决。

  • 如果你是在云服务器上部署的饥荒服务端
    开放服务器的安全组,TCP和UPD两种协议类型的1-65535端口全部开放
    关闭防火墙,命令systemctl stop firewalld

你可能感兴趣的:(在Linux上搭建饥荒服务器)