美文网首页
在Linux上搭建饥荒服务器

在Linux上搭建饥荒服务器

作者: 柠檬果然酸 | 来源:发表于2022-01-25 11:18 被阅读0次

    在网上教程的帮助下,经过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上搭建饥荒服务器

          本文链接:https://www.haomeiwen.com/subject/qsebhrtx.html