Ubuntu18.04 饥荒联机版服务器搭建

一、更新软件源

更换清华源并更新

sudo mv /etc/apt/sources.list /etc/apt/sources.list.bac
sudo touch /etc/apt/sources.list
sudo cat>>/etc/apt/sources.list<<EOF
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
EOF
sudo apt-get update

二、安装饥荒联机版

下载所需环境和steamcmd,并安装游戏

sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update -y
sudo apt install lib32gcc1 libcurl4-gnutls-dev:i386 lib32stdc++6 lib32z1 screen -y
sudo apt install steamcmd -y
steamcmd +login anonymous +app_update 343050 validate +quit

在不更换安装路径的情况下,游戏安装在.steam文件夹下,文件结构如下:

.
├── appcache
├── config
├── depotcache
├── logs
├── registry.vdf
├── root -> /home/ubuntu/.steam
├── steam -> /home/ubuntu/.steam
├── steamapps
│      └── common
│               └── Don't Starve Together Dedicated Server
├── steamcmd
└── userdata

三、创建世界

1、创建存档

打开饥荒联机版,创建世界,选择好mod,完成设置后进入人物选择界面并退出
打开世界的本地存档,复制整个文件夹,如Cluster_1
在ubuntu用户目录下新建文件夹:

sudo mkdir -p .klei/DoNotStarveTogether

Cluster_1上传到DoNotStarveTogether文件夹下

2、修改服务器配置

进入Cluster_1目录下,修改cluster.ini

[GAMEPLAY]
game_mode = endless
max_players = 6
pvp = false
pause_when_empty = true


[NETWORK]
lan_only_cluster = false
cluster_intention = social  
cluster_password = 你的服务器密码
cluster_description =
cluster_name = 你的服务器名字
offline_cluster = false
cluster_language = zh
cluster_cloud_id = 9DA8F21B08003000

[MISC]
console_enabled = true

[SHARD]
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10888
cluster_key = defaultPass

在该文件中修改服务器的基本设置
在该目录下添加adminlist.txt
内容为刚刚获取的用户id,如:

KU_kkydyFNm

在该目录下添加cluster_token.txt
内容为刚刚获取的token,如:

pds-g^KU_kkydyFNm^bj/mEkoqXsedDM/k5e4zXdyES4QQx4zXdyE8spnY4IA=

服务器存档基本配置完毕,结构如下:

.
├── Cluster_1
│   ├── adminlist.txt
│   ├── Caves
│   │   ├── backup
│   │   ├── leveldataoverride.lua
│   │   ├── modoverrides.lua
│   │   └── save
│   ├── cluster.ini
│   ├── cluster_token.txt
│   └── Master
│       ├── backup
│       ├── leveldataoverride.lua
│       ├── modoverrides.lua
│       └── save
└── cluster.ini

3、添加mod

mod在存档创建时记录到了世界存档中,但服务器中没有安装这些mod

cd .steam/steamapps/common/Don\'t\ Starve\ Together\ Dedicated\ Server/mods/

该目录下有一个dedicated_server_mods_setup.lua文件

--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")
        --
--要添加的mod通过ServerModSetup添加在文件中,mod的id可以通过查找存档Cluster_1/Master和Caves文件夹中的modoverrides.lua文件
ServerModSetup("362175979")
ServerModSetup("378160973")
ServerModSetup("375859599")

保存退出

四、服务器启动

新建run_master.sh
若用户或安装路径不同,需要修改install_dir等参数,以下脚本同理

#!/bin/bash

install_dir=/home/ubuntu/.steam/steamapps/common/Don\'t\ Starve\ Together\ Dedicated\ Server
cluster_name="Cluster_1"
dontstarve_dir=/home/ubuntu/.klei/DoNotStarveTogether

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

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

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 "$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)

"${run_shared[@]}" Master | sed 's/^/Master: /'

新建run_caves.sh

#!/bin/bash
  
install_dir=/home/ubuntu/.steam/steamapps/common/Don\'t\ Starve\ Together\ Dedicated\ Server
cluster_name="Cluster_1"
dontstarve_dir=/home/ubuntu/.klei/DoNotStarveTogether

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

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

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 "$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)

"${run_shared[@]}" Caves | sed 's/^/Caves: /'

新建start-all.sh

#!/bin/bash
  
MasterName="Master"
CavesName="Caves"

Cavescmd="./run_caves.sh"
Mastercmd="./run_master.sh"

screen -dmS ${CavesName}
screen -x -S ${CavesName} -p 0 -X stuff "${Cavescmd}\n"

screen -dmS ${MasterName}
screen -x -S ${MasterName} -p 0 -X stuff "${Mastercmd}\n"
sudo chmod a+x run_caves.sh
sudo chmod a+x run_master.sh
sudo chmod a+x start-all.sh

测试服务器:

./start-all.sh
screen -ls

若出现:

There are screens on:
	32667.Master	(06/08/2022 10:05:55 PM)	(Detached)
	32661.Caves	(06/08/2022 10:05:55 PM)	(Detached)
2 Sockets in /run/screen/S-ubuntu.

则启动成功

posted @ 2022-08-10 15:22  ZiwenJ  阅读(128)  评论(0)    收藏  举报