Ubuntu Server 搭建饥荒服务端


目录


一、解决环境依赖

安装必要的库文件

Ubuntu 64 位系统需要下载下列依赖文件:

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

二、安装 SteamCMD

新建目录 steamcmd

此目录用于 steam 程序的安装目录。

1
mkdir ~/steamcmd

下载 SteamCMD 安装文件

1
wget -P ~/steamcmd https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

解压压缩包

1
cd ~/steamcmd
1
tar -xvzf   ~/steamcmd/steamcmd_linux.tar.gz

四、安装饥荒服务端

启动 steamcmd

1
./steamcmd.sh

请耐心等待客户端安装,直到进入了: Steam> 命令行模式。

如有遇到安装进度不走,请使用 ctrl + c 强制退出重试。

使用公共账户登录steam

1
login anonymous

指定游戏文件的安装目录

1
force_install_dir ../dontstarvetogether_dedicated_server

安装饥荒服务端

1
app_update 343050 validate

此过程所需时间视网络情况而定,请耐心等待下载。

重要:在安装完成之后,使用 quit 命令退出 steam 程序

(1)成功安装所出现的标志:

Success! App '343050' fully installed.

(2)如果在安装过程中出现了:

Error! App '232250' state is 0x402 after update job

出现此类情况的原因是:Steam 存在网络连接问题。

解决方案则是执行 quit 先退出 Steam 程序。

重复步奏 3.安装饥荒服务端所有过程

解决一个 lib 缺失

1
cd ~/dontstarvetogether_dedicated_server/bin/lib32
1
ln -s /usr/lib/libcurl.so.4 libcurl-gnutls.so.4

五、配置饥荒服务端

获取 cluster_token 和 UserID

打开你的饥荒联机版,点击游戏界面中右下角的个人账户。

Account

之后选择 Generate Server Token 获取令盘。

并同时记录下令牌内容和 UserID 内容。

新建饥荒配置文件目录

饥荒的配置目录位于: ~/.klei/DoNotStarveTogether

该目录下存放的是游戏存档,我们手动创建一个存档目录:

1
mkdir -p ~/.klei/DoNotStarveTogether/MyDediServer
1
cd ~/.klei/DoNotStarveTogether/MyDediServer

配置主配置文件

新建 cluster.ini 文件,该文件定义了服务端的主要属性:

1
touch cluster.ini

在该文件中主要属性解释如下:

字段释义
max_players最大在线人数
game_mode游戏模式,可选:survival,endless,wilderness
pause_when_empty服务器内无玩家时暂停
vote_kick_enabled玩家投票踢人
max_snapshots最大存档回滚次数

请参照下列内容配置你的属性文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[GAMEPLAY]
max_players = 6
pvp = false
game_mode = endless
pause_when_empty = true
vote_kick_enabled = true

[NETWORK]
cluster_description = 服务器描述
cluster_name = 服务器名称
cluster_password = 服务器密码
cluster_intention = cooperative

[MISC]
max_snapshots = 6
console_enabled = true

[SHARD]
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10889
cluster_key = supersecretkey

配置令牌和服务器管理员

  • 配置令牌:

先新建 cluster_token.txt 文件,将此前获取到的 Token 复制到文件中。

1
touch cluster_token.txt

先新建 adminlist.txt 文件,将此前获取到的 UserID 复制到文件中

1
touch adminlist.txt

配置地上部分

请在 MyDediServer 目下新建 Master 目录:

1
mkdir Master
1
cd Master

配置独立配置文件,新建 server.ini 文件。

1
touch server.ini

文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
[NETWORK]
server_port = 11000

[SHARD]
is_master = true

[STEAM]
master_server_port = 27018
authentication_port = 8768

[ACCOUNT]
encode_user_path = true

配置地图文件,新建 worldgenoverride.lua 文件。

1
touch worldgenoverride.lua

文件内容如下:

1
2
3
4
return {
override_enabled = true,
preset = "SURVIVAL_TOGETHER",
}

配置地下部分

地下部分与地上部分极其相似,但是两个实例互相独立。

在 MyDediServer 目下新建 Caves 目录:

1
mkdir Caves
1
cd Caves

配置独立配置文件,新建 server.ini 文件。

1
touch server.ini

文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
[NETWORK]
server_port = 11001

[SHARD]
is_master = false
name = Caves

[STEAM]
master_server_port = 27019
authentication_port = 8769

[ACCOUNT]
encode_user_path = true

配置地图文件,新建 worldgenoverride.lua 文件。

1
touch worldgenoverride.lua

文件内容如下:

1
2
3
4
return {
override_enabled = true,
preset = "DST_CAVE",
}

六、起航 - 启动游戏

建立启动脚本。

先返回家目录,而后再创建启动脚本。

1
cd ~
1
touch startDST.sh

脚本内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash

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

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: /'

给启动脚本添加权限:

1
chmod +x ./startDST.sh

启动游戏

到此所有的配置过程结束,但是为了方便饥荒在后台运行。

这里我们需要利用 screen 命令。

利用 screen 命令创建一个新窗口,便于后台运行:

1
screen -S DST

那么,现在请启动脚本,开始游戏吧

1
./startDST.sh

注意 注意 注意:

在该启动脚本上,将同时在一台服务器上运行地上地下两个部分,而每一个实例大概需要 500-600M 内存,两个实例大约共需要 1.2G 左右内存,本实验所提供的服务器是不够运行两个部分的,所以如果想要在该试验中验证结果,请删除启动脚本的倒数第二行地下(洞穴)部分的代码。也就是下列所述内容:

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

饥荒是一个只支持单核的游戏,所以如果需要完整的运行地上、地下两部分,以及后期打上一些 Mod ,学生可以推荐:云+校园扶持计划 中的 1核 2G,1M 带宽服务器。

七、附录

1. 验证服务器

在线验证服务器运行的网站:Don’t Starve Together Server

2. 有关服务器配置

本教程中的饥荒服务器配置是采用手写的方式一步一步完成的,然而事实上我们可以借助饥荒客户端的游戏界面完成配置文件的生成。再通过 FTP 之类将配置文件上传到服务器中。

有关此操作的详细内容见:Ubuntu Server 搭建饥荒服务端