Ubuntu Server 搭建饥荒服务端
平台:腾讯云
主机:标准型 S2 1核 2GB 50GB 1Mbps
操作系统:Ubuntu Server 16.04.1 LTS 64位
1.本地准备
配置部分进行部分修改,原内容已经迁移至文章末尾。现在对配置文件的获取将通过饥荒客户端获得(原内容是手写配置文件,比较麻烦)。
(1)获取 UserID
点击个人资料(见上图的中的 1),在打开的界面中找到 UserID 值,记录下来(该值为你在饥荒中的玩家 ID )。
(2)配置地图
点击创建世界(见上图中的 2),进入图形化世界地图配置界面。如下图所示:
首先,指定游戏风格:共四种类型,除了影响到服务器中世界图标外无其他作用。在指定完毕之后,进入到世界基本属性设置界面:
在这里,主要修改名称、描述和密码。他们影响到世界列表中服务器描述内容,而密码则是服务器的钥匙。接下来配置地上和洞穴部分:
地上,对应 Master 部分,在该选项卡中可以具体的定制世界属性,比如指定世界大小,而当在服务器性能不足时调整世界大小也是一种选择。
洞穴,对应 Caves 部分,在这里需通过图形化界面获取到饥荒的所有属性配置,所以这里勾选添加洞穴。在服务器上再通过命令手动指定是否启动地下。
(3)安装 Mod
无 Mod ,不饥荒(请根据服务器性能量力而行)。
首先在 Steam 创意工坊订阅好你所需要的 Mod ,然后在服务端 Mod 处勾选需要激活的 Mod ,见下图 1;同时对于提供了设置的 Mod ,可以点击螺丝图标配置其属性,见下图 2。
接下来,点击创建世界完成配置文件的生成,等待服务器启动,当出现人物选择界面时,无需进入游戏,直接点击断开即可。
(5)获取配置文件
对于 Windows 端的饥荒,此时的配置文件应该存放于文档目下的 Klei 目录里:
C:\Users\你的用户名\Documents\Klei\DoNotStarveTogether
具体到目录(存档)则是:Cluster_X
,X 取决于当前地图存档数量。
复制该存档到桌面,删除一些无用的文件,确保删除后的文件结构为:
.
└── Cluster_1
├── Caves
│ ├── server.ini
│ ├── modoverrides.lua
│ └── leveldataoverride.lua
├── cluster.ini
├── cluster_token.txt
└── Master
├── server.ini
├── modoverrides.lua
└── leveldataoverride.lua
(6)简要的配置
需要为服务器指定管理员,在 Cluster_1 目录下,新建
adminlist.txt
文件,将前面获取到的 UserID 复制到该文件。因为在选择 MOD 时,是已经在创意工坊下载好了,但是在服务器端,服务器还未下载,所以需要先告诉饥荒需要下载的内容 。
新建 dedicated_server_mods_setup.lua
文件(不放在 Cluster_1 目录里,另有他用),然后打开 Master 目录中的 modoverrides.lua 文件,在该文件中能够看到形如 ["workshop-347079953"]
之类的字符,记录下后面的那串数字(数字对应的是 Mod 在创意工坊中的 ID)。
在 dedicated_server_mods_setup.lua 文件中写入 ServerModSetup("347079953")
。一行一个,把 modoverrides 中的按照这种形式写入到该文件中。
2.服务器操作
登录服务器,这里推荐 Xshell ,在其官网可以下载到免费的家庭/学生版本。
(1)安装环境依赖
sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386 lib32gcc1
(2) 下载 Steam 客户端
mkdir ~/steamcmd
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
(3)安装饥荒服务端
./steamcmd.sh
此时进入 steam>
应用,在该模式下通过匿名账户登录,然后指定安装目录,最后再安装饥荒服务端:
login anonymous
force_install_dir ../dontstarvetogether_dedicated_server
app_update 343050 validate
quit
(4)解决 lib 缺失
mkdir -p ~/dontstarvetogether_dedicated_server/bin/lib32
ln -s /usr/lib/libcurl.so.4 libcurl-gnutls.so.4
(5)上传配置文件
首先,创建游戏文件夹:
mkdir -p ~/.klei/DoNotStarveTogether
然后,通过 FTP 之类软件将步奏一中所准备的文件夹整体上传到 DoNotStarveTogether 目录下(也就是前文提到的 Cluster_1 文件夹)。
接下来上传 MOD 配置文件,还记得另有他用的 dedicated_server_mods_setup.lua 文件吗,将它上传到 ~/dontstarvetogether_dedicated_server/mods
目录下(覆盖文件)。
FTP 类软件推荐使用 XFtp ,与 Xshell 是同一家公司产品,两个应用之间可以非常方便的互相调用。
(6)制作启动脚本
回到家目录 cd ~
,在该目录下创建 vim startDST.sh
脚本,内容如下:
#!/bin/bash
steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/dontstarvetogether_dedicated_server"
cluster_name="Cluster_1"
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: /'
赋于启动权限:
chmod +x ./startDST.sh
注意:
脚本中最后两行代表了启动Caves和Master,两个实例大约共需要1.2G左右的内存,如果只玩地上部分,可以将含有Caves一行删除。
脚本中的 cluster_name=”Cluster_1” ,指的是存档的名称,通过修改这个值就可以启动不同的存档啦。
(7)启动游戏
利用 screen 命令启动一个新窗口,便于后台运行
screen -S DST
启动脚本文件
./startDST.sh
可通过 Ctrl + A + D
进入后台,通过 screen -r DST
返回窗口。
如果需要验证服务器的状态可以去资料中的第 7 个的网站。
参考资料:
饥荒联机独立服务器搭建教程(三):配置篇 <—有关地图配置的部分已过时
饥荒联机版服务端MOD及更多设置 <—如果想打MOD可以参考
Don’t Starve Together Server List <—在线验证服务器运行状况
老文章 - 仅供参考
2018.04.15 对配置部分进行修改,原内容已经迁移至文章末尾。附:该部分内容事实上仍然可以参考使用。缺点是需要手写配置,较为麻烦。
(1)获取cluster_token、UserID
打开饥荒联机版,点击游戏界面右下账户打开个人信息界面:
点击Generate Server Token获取cluster_token,同时也记录UserID值。
(2)游戏配置文件(本地进行)
在本地新建
MyDediServer
目录。在 MyDediServer 目录下新建
cluster_token.txt
文件,将上一步获取到的cluster_token复制到文件内。在 MyDediServer 目录下新建
adminlist.txt
文件,将上一步获取到的UserID复制到文件内。在 MyDediServer 目录下新建
cluster.ini
文件,内容如下:
[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
在 MyDediServer 目录下新建
Caves
和Master
目录在 Caves 目录下新建
server.ini
文件,内容如下:
[NETWORK]
server_port = 11001
[SHARD]
is_master = false
name = Caves
[STEAM]
master_server_port = 27019
authentication_port = 8769
[ACCOUNT]
encode_user_path = true
- 在 Caves 目录下新建
worldgenoverride.lua
文件,内容如下:
return {
override_enabled = true,
preset = "DST_CAVE",
}
- 在 Master 目录下新建
server.ini
文件,内容如下:
[NETWORK]
server_port = 11000
[SHARD]
is_master = true
[STEAM]
master_server_port = 27018
authentication_port = 8768
[ACCOUNT]
encode_user_path = true
- 在 Master 目录下新建
worldgenoverride.lua
文件,内容如下:
return {
override_enabled = true,
preset = "SURVIVAL_TOGETHER",
}
截止到目前,你应该拥有的目录结构为:
.
└── MyDediServer
├── adminlist.txt
├── Caves
│ ├── server.ini
│ └── worldgenoverride.lua
├── cluster.ini
├── cluster_token.txt
└── Master
├── server.ini
└── worldgenoverride.lua