饥荒服务器搭建
1. 游戏介绍
《饥荒:联机版》是一款多人联机沙盒生存类游戏。多人联机时需要房主开房作为服务器,但是这样只有房主在线时,其他人才能进入房间。并且由于网络或配置的问题,其他人可能会出现延迟、丢包甚至掉线的糟糕游戏体验。因此使用独立的服务器来开服,可以大大提升游戏体验。
2. 服务器选择
饥荒游戏只吃单核性能,因此加钱购买多核服务器收效甚微。因此购买单核1G内存的云服务器足以,国内可以考虑腾讯云和阿里云的学生机器。上行带宽官方给出的数据是8Kbytes / player / s
,所以1M带宽足以。
系统选择上优先考虑饥荒官方教程中的Debian/Ubuntu,以减少不必要的麻烦。
3. 依赖安装
搭建饥荒服务器需要:
- SteamCMD
- Don’t Starve Together
- screen
3.1. SteamCMD需要的依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
# 需要root权限或者使用sudo
# 对于Debian/Ubuntu 64位系统:
apt-get install lib32gcc1
# RedHat/CentOS 32位系统:
yum install glibc libstdc++
yum -y install glibc.i686
yum install libcurl.so.4
yum install libstdc++.so.6
# RedHat/CentOS 64位系统:
yum install glibc.i686 libstdc++.i686
3.2. Don’t Starve Together需要的依赖
1
2
3
4
5
6
7
8
# 同样需要root权限或者使用sudo
# 对于Debian/Ubuntu 64位系统
dpkg --add-architecture i386
apt-get update
apt-get install lib32gcc1
apt-get install lib32stdc++6
apt-get install libcurl4-gnutls-dev:i386
3.3. 下载SteamCMD
建议使用非root账户来运行游戏服务器
1 |
|
4. 运行Don’t Starve Together
1 |
|
运行完成后会在~/.klei/DoNotStarveTogether/
中生成MyDediServer
目录,这是存档和配置的目录,包括地上和洞穴
5. 服务器配置
5.1. token文件
服务器运行需要token文件,token需要到游戏中生成,在电脑中打开饥荒游戏客户端。
得到token后在服务器中~/.klei/DoNotStarveTogether/MyDediServer
目录下创建cluster_token.txt
文件,并将token复制进去。
5.2. 配置游戏设置
直接在配置文件中配置世界设置过于麻烦,建议直接启动游戏创建一个存档,设置好世界和模组的设置。然后打开游戏本地存档,一般是在文档/Klei/DoNotStarveTogether/
中,找到创建存档中Master
文件夹中leveldataoverride.lua
和modoverrides.lua
文件,复制的服务器中~/.klei/DoNotStarveTogether/MyDediServer/Master
目录中,如果需要开启洞穴,则需要将洞穴中的文件同样复制的Caves
中。
5.3. 服务器配置
服务器相关配置文件在~/.klei/DoNotStarveTogether/MyDediServer/cluster.ini
文件中。配置文件详解:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32[MISC]
max_snapshots = 6 # 最大快照数,决定了可回滚的天数
console_enabled = true # 是否开启控制台
[SHARD]
shard_enabled = true # 服务器共享,要开启洞穴服务器的必须启用
bind_ip = 127.0.0.1 # 服务器监听的地址,当所有实例都运行在同一台机器时,可填写 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 = dst # 连接密码,每台服务器必须相同,会被 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 = server_name # 游戏房间名称
cluster_description = description # 游戏房间描述
lan_only_cluster = false # 局域网游戏
cluster_intention = madness # 游戏偏好,可选 cooperative, competitive, social, or madness,随便设置,没卵用
[GAMEPLAY]
max_players = 16 # 最大游戏人数
pvp = true # 能不能攻击其他玩家,能不能给其他玩家喂屎
game_mode = survival # 游戏模式,可选 survival, endless or wilderness,与玩家死亡后的负面影响有关
pause_when_empty = false # 没人服务器暂停,刷天数必备
vote_kick_enabled = false # 投票踢人
独立配置文件 ~/.klei/DoNotStarveTogether/MyDediServer/Master/server.ini
:
1
2
3
4
5
6
7
8
9
10
11[SHARD]
is_master = true /false # 是否是 master 服务器,只能存在一个 true,其他全是 false
name = caves # 针对非 master 服务器的名称
id = ??? # 随机生成,不用加入该属性
[STEAM]
authentication_port = 8766 # Steam 用的端口,确保每个实例都不相同
master_server_port = 27016 # Steam 用的端口,确保每个实例都不相同
[NETWORK]
server_port = 10999 # 监听的 UDP 端口,只能介于 10998 - 11018 之间,确保每个实例都不相同
5.4. 模组配置
模组需要在游戏目录 /home/dst/server_dst/mods
中的 dedicated_server_mods_setup.lua
文件中添加每个模组,或者直接添加模组集合。建议在创意工坊中创建服务器模组集合,方便使用。
1 |
|
模组的配置则在 modoverrides.lua
,需要 Master
和 Caves
中各一份。上一步中已经将模组的配置文件复制了。
5.5. 可选配置文件
5.5.1 管理员设置
获取用户ID( KU_
开头的id)
1. 让该玩家加入游戏,再查看日志,在日志中找用户id。
2. 让该玩家点击游戏主页面的 Account
按钮(和获得 token
一样),在页面中会有用户id
在 ~/.klei/DoNotStarveTogether/MyDediServer/
中创建adminlist.txt
文件。并将上述得到的用户id,每行一个写入文件。
5.5.2 黑名单
将日志中的用户id写入到 blocklist.txt
文件中
5.5.3 白名单
需要先在 cluster.ini
配置文件中配置 whitelist_slots
,白名单席位会占用最大游戏人数。
将用户id写入到 whitelist.txt
中
6. 运行和维护脚本
目录 /home/dst/server_dst/bin
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
7. 游戏开服后修改世界配置。
游戏玩的正嗨,发现服务器没有关掉疾病。或者玩的太菜,死的太多,想调整四季的时长。都可以管理员通过在游戏内的按 ~
控制台来调整,按 Ctrl
键来修改Remote
和Local
,以下命令需要在 Remote
中运行。
1 |
|
然后重启服务器即可。
8. 写在最后
由于饥荒只吃单核性能,没有多核优化。随着游戏的进行,建筑、物品、怪物等数量的上升,到100多200天的时候不可避免的会出现卡顿,所以在游戏开始之前最好将游戏地图不要设置过大,资源怪物数量调小等,这样可以延缓卡顿来临的时间。当然最大的难点其实是如何找到和你一块玩饥荒那么多天的的朋友。
9. 参考
SteamCMD使用Wiki
Klei官方服务器教程 其一
Klei官方服务器教程 其二
饥荒联机独立服务器搭建教程(二):Linux篇
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!