0x00:前言
《饥荒》是由Klei Entertainment开发的一款动作冒险类求生游戏,游戏讲述的是关于一名科学家被恶魔传送到了一个神秘的世界,玩家将在这个异世界生存并逃出这个异世界的故事。
近期饥荒又更新了出了 海洋,玩家终于可以脱离陆地生存,来到大海生存,建造海上实验室了。
本文为博主在Linux下搭建《饥荒》联机版服务端的笔记。
需要准备的工具:
- 公网服务器 & 有公网IP的家庭网络
- 服务器系统:64位Linux系统
- SteamCmd (安装教程)
- 配置要求:1H2G
- 带宽要求:8Kbytes / 玩家 / s
0x01:配置并安装环境
- 添加包管理源
dpkg --add-architecture i386
apt update
- 安装所需相关包
apt install lib32gcc1 lib32stdc++6 libcurl4-gnutls-dev:i386 screen
- 更新GLIBC版本
饥荒服务端的正常运行,需要GLIBC2.15以上版本的支持。
安装图文详细教程请见这篇文章:点击跳转。
# 安装编译环境
apt install mlocate build-essential wget bison
# 下载GLIBC
cd /usr/src/
wget http://mirror.bjtu.edu.cn/gnu/libc/glibc-2.20.tar.gz
tar zxvf glibc-2.20.tar.gz
mkdir build
cd build
# 编译安装
../glibc-2.20/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make -j4
make install
- 更新GLIBCXX版本
饥荒服务端的正常运行,需要GLIBCXX 3.4.15以上版本的支持。
安装图文详细教程请见这篇文章:点击跳转。
cd /usr/src/
# 进入src目录
###################32位Linux的操作###################
wget http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6_4.7.2-5_i386.deb
# 解压
ar -x libstdc++6_4.7.2-5_i386.deb && tar xvf data.tar.gz
cd usr/lib/i380-linux-gun
# 复制新的libstdc++.so.6文件
cp libstdc++.so.6.0.17 /usr/lib
cd /usr/lib
# 删除原来的软链
rm -f libstdc++.so.6
# 创建新的软链
ln -s libstdc++.so.6.0.17 libstdc++.so.6
###################64位Linux的操作###################
wget http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6_4.7.2-5_amd64.deb
# 解压
ar -x libstdc++6_4.7.2-5_amd64.deb && tar xvf data.tar.gz
cd usr/lib/x86_64-linux-gnu/
# 复制新的libstdc++.so.6文件
cp libstdc++.so.6.0.17 /usr/lib64/
cd /usr/lib64/
# 删除原来的软链
rm -f libstdc++.so.6
# 创建新的软链
ln -s libstdc++.so.6.0.17 libstdc++.so.6
#####################################################
# 检查软链情况
ll libstdc*
# 查看安装情况
strings /usr/lib/libstdc++.so.6 | grep GLIBCXX #32位Linux查看方式
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX #64位Linux查看方式
- 放行防火墙端口
服务端要求防火墙放行以下端口
模式 | 端口 | 作用 | |
---|---|---|---|
udp | 10089 | 服务器监听端口 | |
udp | 11000 | 饥荒客户端通讯端口(主世界) | |
udp | 11001 | 饥荒客户端通讯端口(洞穴) | |
udp | 27018 | Steam服务器列表端口(主世界) | |
udp | 27019 | Steam服务器列表端口(洞穴) |
0x02:下载饥荒服务端
为了您服务器的安全,本文强烈建议不要使用root用户开启服务端
- 为饥荒服务端创建用户
useradd -m dst
- 切换到用户
su - dst
- 启动SteamCmd
- 登录
login anonymous
- 设置安装目录
force_install_dir /home/dst/dstserver/
- 下载服务端文件
app_update 343050 validate
下载时长一般需要5-10分钟左右时间(视服务器带宽而定)
当出现以上提示后,即服务端下载已经完成!
如果出现Error! App '343050' state is 0x402 after update job.
则只需要再输入一次下载指令重试即可。
- 退出SteamCmd
quit
0x03:配置服务器
- 获取开服密钥与基本配置文件
①.访问klei个人中心点击跳转。
②.选择Steam平台登录
③.在顶部导航栏点击【游戏】
④.点击【饥荒联机版的游戏服务器】
⑤.生成Token
⑥.进入基础配置页面
⑦.填写基本信息,下载配置文件
下载完成后,我们将得到一个压缩包。内容如下:
- 修改配置文件
修改【cluster.ini】,自定义服务器信息。
[MISC]
max_snapshots = 6 # 最大快照数,决定了可回滚的天数
console_enabled = true # 是否开启控制台
[SHARD]
shard_enabled = true # 服务器共享,要开启洞穴服务器的必须启用
bind_ip = 0.0.0.0 # 服务器监听的地址,当所有实例都运行在同一台机器时,可填写 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 = sm@rtf0xt35t # 连接密码,每台服务器必须相同,会被 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 = false # 能不能攻击其他玩家,能不能给其他玩家喂屎
game_mode = survival # 游戏模式,可选 survival, endless or wilderness,与玩家死亡后的负面影响有关
pause_when_empty = true # 没人服务器暂停,刷天数必备
vote_kick_enabled = false # 投票踢人
- 配置Mod下载列表
饥荒服务端通过一个名为【dedicated_server_mods_setup.lua】的文件确认需要下载哪些 Mod。
该文件存放在【/home/dst/dstserver/mods/】中。
官方给的配置文件内容如下
--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")
编写文件有俩种方式
①.想要安装的Mod不多的,可以直接获取单个Mod的创意工坊的ID。
如图获得的创意工坊ID为【1892210190】,在配置文件末尾填上以下内容。ServerModSetup("1892210190")
②.安装的Mod较多,则创建一个合集,将Mod添加到合集中,并在配置文件里填写创意工坊合集的ID。
如图获得的创意工坊合集ID为【2001708048】,在配置文件末尾填上以下内容。ServerModCollectionSetup("2001708048")
以下为个人常用的几个Mod
ServerModSetup("375859599")
ServerModSetup("347079953")
ServerModSetup("378160973")
ServerModSetup("556027744")
ServerModSetup("375850593")
ServerModSetup("462434129")
ServerModSetup("382177939")
编写完成后,将其保存。
- 配置服务端启用Mod
上一个文件存放的是服务端需要下载的Mod列表,Mod是否启用则是由【modoverrides.lua】决定的。
按照以下方式填写文件
return {
["workshop-XXX"] = { enabled = true }
}
--XXX为创意工坊ID
以上方文件为例,给出对应的配置信息:
return {
["workshop-375859599"] = { enabled = true },
["workshop-347079953"] = { enabled = true },
["workshop-378160973"] = { enabled = true },
["workshop-556027744"] = { enabled = true },
["workshop-375850593"] = { enabled = true },
["workshop-462434129"] = { enabled = true },
["workshop-382177939"] = { enabled = true }
}
完成后将文件分别在【Master】和【Caves】文件夹中各放一份。
- 通过WinSCP上传配置文件到服务器中
①.创建存档文件夹
mkdir -p ~/.klei/DoNotStarveTogether/
②.通过WinSCP或者SFTP将整个【MyDediServer】文件夹上传到【~/.klei/DoNotStarveTogether/】文件夹中
上传后文件列表如下
0x04:运行服务器
- 创建运行脚本
cd ~/dst/bin/
# 创建主世界服务端运行脚本
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
# 添加执行权限
chmod +x dst_*
- 启动服务器
# 创建主世界Screen
screen -S Master
# 启动主世界服务端
./dst_Master.sh
## 按Ctrl + a + d将Screen进程切至后台
# 创建主世界Screen
screen -S Caves
# 启动洞穴服务端
./dst_Caves.sh
## 按Ctrl + a + d将Screen进程切至后台
到此,服务端已经可以被玩家连接。
0x05:参考文档
饥荒联机独立服务器搭建教程(三):配置篇:http://blog.ttionya.com/article-1235.html
Dont Starve Together Dedicated Servers:https://0w0.tech/oFdDVcDa
不错不错,我喜欢看 www.jiwenlaw.com