前言:科雷自带的服务器太卡了,遂决定自己本地开一个服务器,简单记录一下,万一以后如果需要用到。其中一、二、三都是为了解决饥荒联机的延迟、稳定问题,使用其中一种即可,四是如何搭建专属服务器(windows,饥荒服务器在本地完全可以搭建,单独开vps实在不必要,就不折腾了)。
相当稳定成熟的方案,推荐,延迟会比其他方案稍高。
master运行在10999,caves运行在10998,开辟两条frp隧道分别指向这两个端口,隧道会给予连接的地址和端口。(推荐sakura-frp)
Klei服务器会上传本地服务器的地址和端口,进洞穴或大厅联机时,Klei就会提供这个错误的地址和端口,真正的地址和端口由隧道给予,他们并不一致,因此有两个解决办法。
法一:安装“强制纠正ip端口”的服务端mod,它有一个“扩展配置”的依赖,应用扩展配置,再配置本mod,配置方式详见创意工坊详情作者置顶帖。(另外客户端也会被强制安装)。一定可以成功
法二:开专服,假设存档Cluster_1为根目录,./Master/server.ini和./Caves/server.ini中各有配置server_port=10999和server_port=10998,各自更改,使server_port、frp远程端口、frp本地端口三者一致。(按理说,ip也应该一致,所以还是需要IP纠正才对,但目前没测试过,建议法一)
联机的好友使用shift+~打开饥荒命令行,c_connect("地址",端口),填写指向mater(地上)的隧道地址和端口,即可联机。
如果ip端口纠正了,也可以大厅搜索。
注意:如果没有纠正ip端口,则进入洞穴需要使用c_connect()指令,内容添对应地址和端口,且不能在洞穴退出游戏。
和好友间搭建一个内网,如果能成功p2p打洞,延迟会低上不少。
组网工具有很多,譬如贝锐蒲公英,就不一一列举,以下以贝锐为例。在console(https://console.sdwan.oray.com/zh/main),建立网络,组网类型为对等组网(p2p),添加所有成员,设置密码,记录每一个成员的uid和其密码,这是登录凭证。
下载好组网工具客户端。贝锐下标准版即可,和好友分别使用不同的uid和密码登录客户端,可以查看好友的连接情况并ping查看延迟。让好友复制服务端(自己)的虚拟ip,替换c_connect()中的地址项,端口可以不做修改(如果开了纠正Mod记得关了,不然会崩溃)。
由于这是内网联机,大厅不会显示,ip端口都是对的不需要纠正,c_connect()的端口填写默认的10999即可。
P2P至少要求锥型Nat,不在运营商大内网(对称型Nat)下,即几乎要求有公网Ipv4,否则对等组网(p2p)会退化成中继转发,大概会增加20ms延迟,个人体感不如frp。
几乎是最宽松的p2p搭建方式了,打洞原理类似ipv4但是没有nat干扰。由于饥荒还未添加IPv6联机,因此用该方式需要端口转发。
现在没人陪我玩,不想折腾,先就此搁置。
前言:最简单的开服方式是去找鸽子鸽(一个开服工具,b站有大量视频),就不需要以下折腾了。
饥荒Don't Starve Together Dedicated自带开服工具Don't Starve Together Dedicated Server,在steam库里,勾选tool栏可以找到。
如果以下目录没找到,可能是没生成,建议在steam界面启动一次服务器后关闭。
在steam右键库里的饥荒->管理->浏览本地文件,将打开
./steam/steamapps/common/Don't Starve Together/
退到上一级目录common,存在饥荒服务器的文件夹,将打开
./steam/steamapps/common/Don't Starve Together Server/
当然,也可以在steam库里以相同的方式打开服务器的文件夹。这两个文件夹格式是一致的。
我们需要:
文件夹1:./steam/steamapps/common/Don't Starve Together/mods/
文件夹2:./steam/steamapps/workshop/content/322330/
文件夹3:./steam/steamapps/common/Don't Starve Together Server/mods/
文件4:./steam/steamapps/common/Don't Starve Together/bin/scripts/launch_preconfigured_servers.bat
文件夹1中存储着mod文件夹,格式为workshop-xxxx,文件夹2中一样存储mod文件夹,格式为xxxx,需要统一命名为workshop-xxxx,存入文件夹3.
(推荐用.bat或者命令行一键改名,或者使用mklink)
文件4是服务器的启动文件,更改最后两行 start "你喜欢的地上窗口名" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster 存档文件夹名 -console -shard Master
start "你喜欢的地下窗口名" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster 存档文件夹名 -console -shard Caves
打开游戏->创建游戏->随便选择一个已创建的世界->管理世界->打开世界文件夹,它将位于:
.\Documents\Klei\DoNotStarveTogether\一串数字id\Cluster_x\
退回到./Documents/Klei/DoNotStarveTogether/,该目录下将存放你的服务器存档,你可以选择将刚刚打开的Cluster_x复制到该目录下,并更名为在1.中所命名的存档文件夹名,这将是你的服务器存档。(又或者使用mklink /d将存档链接到该处)
我们假设存档文件夹名为Cluster_1,则记住路径
文件夹5:./Documents/Klei/DoNotStarveTogether/Cluster_1/
我们需要在文件夹5下写入两个文件:adminlist和cluster_token.txt。
打开游戏->账号,将进入Klei的账户登录界面,使用steam登录,选择饥荒联机版服务器,创建服务器,获得服务器token,同时查看你的账户,获得你的Klei id,将服务器token复制到cluster_token.txt,将Klei id 复制到adminlist。
注意adminlist没有后缀,如果需要添加好友为管理,请让好友自查Klei id,并添加进adminlist,每个id占一行。(实际上在好友进入游戏的时候,你可以在服务器看到他的Klei id)。
法一:
在游戏里,创建世界,配置好设置和mod,启动世界生成存档,关闭世界后将存档迁移到上述存档路径(记得改名)。
法二:
在存档根目录下,./cluster.ini是世界设置,配置世界模式、pvp、服务器密码等。
./Master/leveldataoverride.lua是地上资源配置,同理
./Caves/leveldataoverride.lua是洞穴资源配置。
./Master/modoverrides.lua是mod配置,如果需要更改,需要同步更代
./Caves/modoverrides.lua。
依旧在存档目录下,其中
./Master/server.ini, server_port = 10999 指定地上服务器监听端口,有需要可以更改该端口,地下同理。
整了个.bat,自动链接存档和mod,以及adminlist和cluster_token.txt文件,避免每次新增mod、替换存档,总得手操一下。本来还想要不再花点时间整个可视化界面,但是毕竟已经鸽子鸽这样的珠玉在前了,还不如一开始就用它呢,遂绝此念。
就这样吧,应该不会有人需要这样的杂乱的文章的帮助,用它为这些折腾画一个句号。嗯,以后再次感兴趣的话再拾起也方便。