如果玩游戏和开独服都在同一台电脑上,这里就可以使用游戏本身来创建、管理独立服务器的存档(包括 mod),更加方便直观。简单地说 ,独立服并没有什么特别之处,只是用它可以独立开服而不依赖游戏本身,更加稳定,并且可以多开世界。
最近在隔壁 STT 的安(拉)利(坑)下,入了 Steam 联机版饥荒。然而宿舍网并不好,两人在线联机延迟卡顿不能忍,游戏内开本地服却又莫名崩溃,就这样弃坑不好吧 щ(゚Д゚щ) 于是趁着 STT 去运动减肥的间隙,趁借机发挥下死鱼折腾精神,搞了个本地局域网独立服。
¶0x00. 需要软件
Linux Steam (用于安装饥荒游戏)
饥荒联机版本体
¶0x01. 创建独服存档
独服存档实际上与游戏存档通用,所以这里用游戏本身来创建和管理存档,更加方便直观。
进入游戏新开存档,比如在第五个槽位新开,记住是第五个,设一个存档名以便同普通存档区分开。现在可以自己定制世界、添加 mod 等。完成后点击开始,世界生成完毕后再点取消。
获取独服授权口令(server token,在游戏主界面点击账户详情,生成后复制下来。具体操作细节搜索网络便可知)
在
$HOME/.klei/DoNotStarveTogether/Cluster_5
中新建cluster_token.txt
,写入上面获得的授权码。(第五个,所以是Cluster_5
,*nix 系统注意区分文件名大小写)
¶0x02. 独服使用方法
Steam 安装饥荒联机版(DST)时,已经自带了一份独立服务器程序,无需再去工具库中另外安装。
可以在 home
目录新建 dedicated_server.sh
#!/bin/sh
install_dir="$HOME/.local/share/Steam/steamapps/common/Don't Starve Together"
# 饥荒默认安装目录,可在 steam 查看实际目录
cluster_name="Cluster_5"
# 要用存档的目录名,按需修改。这里是第五个,同上
dontstarve_dir="$HOME/.klei/DoNotStarveTogether"
# 默认存档位置 $HOME/.klei/DoNotStarveTogether
fail(){
echo "错误: $@" >&2;
exit 1
}
check(){
if [ ! -e "$1" ]; then
fail "丢失文件: $1";
fi
}
check "$dontstarve_dir/$cluster_name/cluster.ini"
check "$dontstarve_dir/$cluster_name/cluster_token.txt"
check "$dontstarve_dir/$cluster_name/Master/server.ini"
check "$dontstarve_dir/$cluster_name/Caves/server.ini"
# 如果不开洞穴,去掉上一行
check "$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 Master | sed 's/^/Master: /' &
"${run_shared[@]}" -shard Caves | sed 's/^/Caves: /'
# 如果不开洞穴,去掉上一行以及上面的符号“&”
保存后添加可执行权限 chmod +x dedicated_server.sh
,现在运行 dedicated_server.sh
即可正常启动独服,无需 steam 或游戏本体。Ctrl+C 停止运行。
¶0x03. 管理独服存档
只需使用游戏本身进行管理,像正常的存档一样即可,比如添加 Mod 、回滚之类,最后点击一下运行再取消以便保存修改。注意:管理独服存档前,务必停止正在运行的那个存档!
¶0x04. 其他
¶a. 如何移植存档
DST 的兼容性很好,存档可以跨设备跨平台使用。比如我和 STT 玩,用我开的 Linux 本地独服,但存档是从他 Windows 版 DST 中直接复制来的。
- 一个存档就是类似于
Cluster_*
的一个目录。存档名称查看目录中cluster.ini
文件里的cluster_name
值。 - 如果从其他人那里拷贝存档,安装的 mod 不一致则会有兼容问题,最好把 mod 文件也一并复制来。mod 位于游戏安装目录的
mods
中,类似于workshop-*
的一个目录即为一个 mod,mod 同样跨平台通用。 - 使用复制来的存档,可能会出现 Token 过期问题。
¶b. Token 过期
独服运行后出现类似提示: [200] Account Failed (6): "E_EXPIRED_TOKEN"
,并拒绝加载。需要重新获取授权码并更新存档中的 cluster_token.txt
文件
¶c. 找不到 LAN 服务器
本地路由需要允许相应 udp 流量,在存档目录的 cluster.ini
文件中查看 master_port
主端口。另一种情况,如果独服和游戏在同一台主机上运行,则主机必须从外部获取到一个 IP 地址(局域网内网 IP 也行,不一定要联网),这可能是独服程序的一个臭虫。
¶d. 游戏无法执行管理员命令
klei 官方目前出于种种考虑,不支持 LAN 独服设置管理员,在 LAN only 的独服中,玩家在游戏中不能执行远程管理命令。但独服的 -console
选项仍可用,上面 dedicated_server.sh
中即包含 -console
启动项,要执行命令,在运行独服的终端里输入完回车即可。
参考 Klei 论坛原帖:forums.kleientertainment.com