本文将介绍如何在Ubuntu云主机(阿里云ECS)上配置饥荒联机版服务器。主要过程在steamcommunity已经讲得很详细了。我提供了一个傻瓜脚本。但有一些细节操作方面需要进一步明确。
创建服务器
游戏的名字和密码分别在/home/dst/.klei/DoNotStarveTogether/MyDediServer/cluster.ini
这个文件下面的cluster_name
和cluster_password
字段上面。
出现./dontstarve_dedicated_server_nullrenderer: error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory
错误,需要安装32位的libcurl,apt-get install libcurl3-gnutls:i386
。
有关ClusterToken
网上有资料说可以在游戏主界面的个人资料里面找到自己的Token,但经过测试发现并没有。
这时候需要在游戏里面输入一下的命令行,应该得到下图的结果,然后可以在自己的.klei
文件夹里面找到一个cluster_token.txt
的文件。如果显示Attempt to call a nil value
这样的错误,可以尝试在Steam的库里面的工具里面下载Don’t Starve Together Dedicated Server。
1 | TheNet:GenerateClusterToken() |
有关不能在DST上面显示
这个可能是由于版本不对的缘故。应当及时更新。
有关ECS的额外须知
注意我们要在阿里云的安全组里面加入10999端口的UDP规则。
创建洞穴
出现Unhandled exception during server startup: RakNet UDP startup failed: SOCKET_PORT_ALREADY_IN_USE (5)
错误,注意Master世界和Caves世界的端口是不能冲突的。
有时候会出现洞穴地图被生成为地上的情况,这是因为原因是没有配置worldgenoverride.lua,或者照抄了Master里面的worldgenoverride.lua。
在另一台服务器上创建洞穴
我们需要在cluster.ini
文件里面指定主服务器的ip。
有时候我们在主世界看到洞穴入口被藤蔓封住,然后查看洞穴服务器的server_log.ini
发现以下log。注意设置阿里云的安全组和主服务器的cluster.ini
文件中的bind_ip
为0.0.0.0
。
1 | [00:05:35]: [Shard] Connection to master failed. Waiting to reconnect... |
Dedicated Server主要文件解析
~/.klei/DoNotStarveTogether/MyDediServer/cluster.ini
用于配置整个服务器的信息,包括在Steam平台上显示的游戏房间名字和密码等。~/.klei/DoNotStarveTogether/MyDediServer/cluster_token.txt
服务器主人的Token。在上面的ClusterToken章节讲过怎么设置了。~/.klei/DoNotStarveTogether/MyDediServer/
下的Master和Caves文件夹
分别是主世界和洞穴的世界。~/server_dst/bin
文件夹
存放有start.sh、restart.sh等文件,负责启动和重启服务器,关闭服务器则可以使用htop -u dst
,然后SIGTERM掉进程。~/server_dst/mods/dedicated_server_mods_setup.lua
和~/.klei/DoNotStarveTogether/MyDediServer/Master/modoverrides.lua
前者用来配置需要装的mod,后者用来给这个mod指定参数。一般mod配置是很麻烦的,首先需要验证这些mod不互相冲突,不会对服务器的性能造成较大负担。然后我们需要将这些mod的id注册到dedicated_server_mods_setup.lua里面。我们可以在steam上面创建一个ModCollection,然后直接添加这个ModCollection,从而避免手动输入每个mod的id。这里推荐我自己使用的Collection:1698005633。在设置完dedicated_server_mods_setup.lua之后可能启动后并没有加载mod,这是因为我们还需要设置modoverrides.lua。这里推荐我的配置。如果需要引入其他的模组,建议首先在自己电脑上配置后,然后可以白嫖本地的modoverrides.lua文件上的配置。~/.klei/DoNotStarveTogether/MyDediServer/Master/save
文件夹
保存游戏存档~/.klei/DoNotStarveTogether/MyDediServer/Master/worldgenoverride.lua
该文件用来配置DST的世界设置。
需要注意leveldataoverride.lua会覆盖worldgenoverride.lua,所以在新创建的Master世界的时候需要删除这个文件,不然怎么改worldgenoverride.lua都没有用。~/home/dst/.klei/DoNotStarveTogether/MyDediServer/adminlist.txt
用来加入管理员。
我们可以在server_log.txt里面查找Read save字段,找到一个KU_
开头的字段,加入这个文件里面即可。
备份恢复
一般来说备份MyDediServer文件夹即可在存档被意外删除后进行简单替换的恢复。在替换后应当chown或者chmod一下,不然会出现权限引起的core。
额外说明
出现问题可以查看server_log.txt,或运行start.sh看log。
特别注意要su到dst之后再sudo sh restart.sh
,不能在root下面搞,否则会到/root
里面搞事。