Linux搭建饥荒专用服务器

1、安装环境依赖

Ubuntu:

sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386 lib32gcc1

CentOS:

sudo yum update

sudo yum -y install glibc.i686 libstdc++.i686 libcurl4-gnutls-dev.i686 libcurl.i686

2、安装SteamCMD

  • 新建目录
mkdir /home/SteamCMD/steamcmd
  • 下载 SteamCMD 安装文件并解压
#进入刚才新建的目录
cd /home/SteamCMD/steamcmd
#下载SteamCMD
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
#解压该文件
tar -zxvf steamcmd_linux.tar.gz

3、安装饥荒服务端

  • 启动SteamCMD
./steamcmd.sh

  • 接下来再接着执行以下代码代码:
#以公共账户登录steam
login anonymous

#指定游戏文件的安装目录
force_install_dir /home/SteamCMD/dstserver

#安装饥荒服务端
app_update 343050 validate

请耐心等待安装完成,完成后输入quit退出SteamCMD

  • 解决lib缺失

linux下饥荒的服务器似乎需要的组件跟现在的组件产生了名字上的差错
导致启动服务器会显示缺少关键的组件libcurl-gnutls.so.4,因此需要执行下面的命令来解决:

#进入lib32目录
cd /home/SteamCMD/dstserver/bin/lib32/

#创建lib链接
ln -s /usr/lib/libcurl.so.4 libcurl-gnutls.so.4

#轻量级应用服务器宝塔面板专用
#ln -s /usr/local/curl/lib/libcurl.so.4 libcurl-gnutls.so.4

4、饥荒服务端配置

此处利用客户端本地图形界面创建并配置世界,创建完成后将配置文件上传至服务端

  • 房间设置
  • 地上世界配置
  • 地下世界配置
  • mod配置

本地创建成功够进入打开游戏数据目录

刚才我们创建的世界在第3的位置,所以对应的是Cluster_3这个目录

打开Cluster_3

5、分离地上、地下世界

由于服务器性能原因,需要将地上与地下世界分开搭建

  • 修改房间配置文件中的以下内容
[SHARD]
shard_enabled = true
bind_ip = 0.0.0.0
master_ip = 你的主服务器的 IP (地上)

然后将文件夹命名为地上,再复制此文件夹,命名为地下。
最后地上删除 Caves 目录,地下删除 Master 目录,分开搭建并启动。

6、Mod 模组配置

Mod 的配置文件已经在提取到的文件夹中了,但是位于服务器的饥荒客户端还没有下载这些文件,所以我们需要进入到服务器的的饥荒安装目录,修改该目录下的 dedicated_server_mods_setup.lua 文件:

cd ~/dontstarvetogether_dedicated_server/mods
vi dedicated_server_mods_setup.lua

以下是我的mod配置


---在该文件中添加类似这样的内容,这串 ID 是 Mod 文件在 Steam 中的 ID
---可以在提取到的配置文件的 Master/modoverrides.lua 中找到
---然后添加到本文件中,一行一个
---ServerModSetup("362175979")

ServerModSetup("1301033176")
ServerModSetup("362175979")
ServerModSetup("378160973")

到此服务器基本配置都已经完成,我们可以将文件上传至服务器了。(上传位置/root/.klei/DoNotStarveTogether)

7、启动饥荒服务器

  • 创建启动脚本
cd /home/Steam && vi startDST.sh

脚本内容如下:

#!/bin/bash

steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/dontstarvetogether_dedicated_server"
cluster_name="MyDediServer"
dontstarve_dir="$HOME/.klei/DoNotStarveTogether"

function fail()
{
        echo Error: "$@" >&2
        exit 1
}

function check_for_file()
{
    if [ ! -e "$1" ]; then
            fail "Missing file: $1"
    fi
}

cd "$steamcmd_dir" || fail "Missing $steamcmd_dir directory!"

check_for_file "steamcmd.sh"
check_for_file "$dontstarve_dir/$cluster_name/cluster.ini"
check_for_file "$dontstarve_dir/$cluster_name/cluster_token.txt"
check_for_file "$dontstarve_dir/$cluster_name/Master/server.ini"
check_for_file "$dontstarve_dir/$cluster_name/Caves/server.ini"


check_for_file "$install_dir/bin"

cd "$install_dir/bin" || fail 

run_shared=(./dontstarve_dedicated_server_nullrenderer)
run_shared+=(-console)
run_shared+=(-cluster "$cluster_name")
run_shared+=(-monitor_parent_process $$)

#
"${run_shared[@]}" -shard Caves  | sed 's/^/Caves:  /' &
"${run_shared[@]}" -shard Master | sed 's/^/Master: /'

给启动脚本添加权限:

chmod u+x ./startDST.sh
  • 启动脚本文件
    nohup ./startDST.sh &
最后修改:2020 年 03 月 14 日 12 : 36 PM
如果觉得我的文章对你有用,请随意赞赏