赞
踩
饥荒云服搭建需要一些很重要的前提,你的服务器是什么操作系统的?
这里说的云服,指的是Linux操作系统。
Linux操作系统衍生系统虽然说基本没差,但是红帽系列和Debian系列最大的差距正是饥荒云服搭建最大的差距:安装软件包命令的不同!
我们搭建饥荒专服的思路:
左边可以统称为红帽系列,右边可以统称为debian系列,所以安装软件时候需要区分自己是哪个操作系统
。
steamcmd客户端可以理解为我们自己电脑里边下载的steam客户端软件,只不过在linux里边是命令行客户端,即steamcmd客户端。
如同我们正常玩饥荒,首先我们需要下载steam平台或者wegame平台,再从steam平台下载饥荒游戏,然后配置世界设置,开始游戏。我们云服专服搭建也是这个流程。
其实,安装steamcmd客户端在steamcmd官网都有给出,强烈建议移步官网看下官网是如何指导安装steamcmd客户端的。
授人以鱼不如授人以渔:https://developer.valvesoftware.com/wiki/SteamCMD
为steamcmd客户端专门创建一个新用户可以更安全的执行
作为root用户,添加steam新用户(ubuntu建议指定shell即 -s /bin/bash)
sudo useradd -m steam -s /bin/bash
sudo passwd steam
进入steam用户家目录
su - steam && cd ~
# Ubuntu/Debian
sudo apt install steamcmd
# RedHat/CentOS
sudo yum install steamcmd
# 自动安装会下载到/usr/games/steamcmd
# 为了方便管理我们移动steamcmd到steam用户的目录下
# 这里的命令是链接过去,相当于我们告诉/home/steam/steamcmd指向/usr/games/steamcmd
sudo ln -s /usr/games/steamcmd /home/steam/steamcmd
手动安装我们需要下载一些依赖(可以理解为steamcmd客户端运行需要的一些源代码)。
# 1.用上面命令自动安装的就不用再执行这里的命令了
# Ubuntu/Debian (x86-64)
sudo apt-get install lib32gcc1
# RedHat/CentOS (x86-64)
sudo yum install glibc.i686 libstdc++.i686
# 2.安装好依赖,我们就可以下载steamcmd压缩包了,此处命令相同
mkdir ~/Steam && cd ~/Steam
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
这样我们就安装好了steamcmd客户端,接下来就是命令行的steam怎么下载软件并更新了。
我们已经安装好了steamcmd客户端,没错,上面自动安装的steamcmd和手动安装的steamcmd.sh文件就是。
# 1.启动steamcmd客户端 # 自动安装执行这个命令 cd ~ && steamcmd # 手动安装执行这个命令 cd ~/Steam/ && ./steamcmd.sh # 2.设置安装游戏目录(这里我把游戏放在/home/steam/dstserver/目录下) steam> force_install_dir ~/dstserver # 3.匿名登录steamcmd客户端 steam> login anonymous # 4.下载游戏(343050是饥荒专服在steam上的App ID,查看方式见文档最下面) steam> app_update 343050 validate # 提示:实际上启动+设置目录+登录+下载都可以一气呵成 # 自动安装的执行 cd ~ && steamcmd +force_install_dir ~/dstserver +login anonymous +app_update 343050 +quit # 手动安装的执行 cd ~/Steam && ./steamcmd.sh +force_install_dir ~/dstserver +login anonymous +app_update 343050 +quit
这样我们就下载好游戏了。剩下最后就是配置游戏启动了。
没有服务器令牌,我们是无法启动服务器的。服务器令牌谁的都可以,且可以保存很长时间不会失效,所以建议保存。用该令牌启动的服务器,令牌所属人为游戏管理员。
进入游戏界面 > 账号 > 游戏 > 服务器
没有的直接添加服务器即可。
我们将获取的token(就是一段字符串)先保存在文本中。
# 1.进入执行文件目录 cd ~/dstserver/bin64/ # 2.写入命令到 master.sh脚本 -- 用于启动主世界 echo "./dontstarve_dedicated_server_nullrenderer_x64 -console -cluster Cluster_1 -shard Master" >> master.sh # 3.写入命令到 caves.sh脚本 -- 用于启动洞穴 echo "./dontstarve_dedicated_server_nullrenderer_x64 -console -cluster Cluster_1 -shard Caves" >> caves.sh # 4.启动服务 sh master.sh & sh caves.sh & # CentOS启动可能出现下面错误 ./dontstarve_dedicated_server_nullrenderer_x64: error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory # 此时可以尝试使用下面命令(注意这里~/dstserver是我的安装目录) ln -s /usr/lib64/libcurl.so.4 ~/dstserver/bin64/lib64/libcurl-gnutls.so.4
没有添加令牌的token,服务将并不会真正运行,但是会给我们生成文档目录。
按 CTRL + C结束启动,或输入 c_shutdown()
执行关闭。
现在我们再进入生成的文档目录去添加令牌Token。
# 文档目录默认在: ~/.klei/DoNotStarveTogether
# 注意这里替换为自己的token即可
cd Cluster_1
echo "pds-g^KU_7muUzs2J^trM2m7pt52XEF7SOvVwT9KPpfZYqPUTWTJjqJFBqg1w=" > cluster_token.txt
# 这样我们就将token写入了cluster_token.ini文件了
再次启动游戏即可。
但是…
我们似乎没有设置游戏信息,我们无法搜索我们的游戏房间,因为我们还没有对我们的服务器房间进行命名
因此我们还需要编辑一份服务器配置信息的文件
文件目录同token
这次我们把可编辑的文件一次性配置完。
# 注意文件的路径:~/.klei/DoNotStarveTogether
# 进入到文档位置
cd ~/.klei/DoNotStarveTogether/Cluster_1
# 添加服务器配置文件(修改房间人数上限,游戏模式,房间名称和描述等)
touch cluster.ini
# 添加管理员文件
touch adminlist.txt
# 添加黑名单文件
touch blocklist.txt
# 添加白名单文件
touch whitelist.txt
配置项大概有如下的信息,我们可以自己修改。
当然
还有很多配置项等待你的探索…
这样,我们配置完再次启动,就可以在大厅搜到我们房间了。
饥荒最大的乐趣当然是模组了。
我们其实研究下下载的饥荒文件结构,不难发现有个文件夹就叫mods。
可以看到关于MOD的一些文件,我们可以通过vi
或者vim
命令编辑查看。
具体的内容就自己探索了。
这里我们说明MOD的配置,需要编辑的文件是dedicated_server_mods_setup.lua
设置格式里面有说明,截图看下效果即可。
我们可以在这里查看到饥荒专服的App ID。
我们可以通过URL方式获取MOD的ID用于配置专服的模组。
同样的我们可以用URL替换模组ID的方式查看是哪个模组崩溃了。
认真的人会发现,每次模组崩溃的时候,界面是提示了workshop-123456类似的信息的。
替换URL前缀
https://steamcommunity.com/sharedfiles/filedetails/?id=
专服Ping值的显示可能跟公网IP和端口配置有关。
饥荒通信协议是UDP这是我们为什么配置UPD防火墙端口规则的原因。
云服的管理其实是一件需要点耐心的事情,启动脚本或许可以让世界+洞穴作为一个脚本启动,这样让人感觉更加友好。
技术原文:https://cloud.tencent.com/developer/article/1856896
我写的管理脚本:饥荒云服管理脚本
GitHub链接:https://github.com/clcaod/DoNotStarveTogether.git
脚本
#!/bin/bash # # 饥荒专服启动脚本(一键启动世界+洞穴),文件放在/bin64目录下执行 # # 作者:曹曹曹曹老板来了 # 2022-03-26 # 文档名 CLUSTER_NAME="Cluster_1" MASTER="Master" # 世界 CAVES="Caves" # 洞穴 ###################################### # 窗口启动程序 # 全局变量: # CLUSTER_NAME: 文档名 # 参数: # NODE_NAME: 洞穴或者世界 # 返回值: # NULL ###################################### start(){ local NODE_NAME="$1" # 窗口名称 screen_name="${CLUSTER_NAME}"_"${NODE_NAME}" # 开启守护进程窗口 screen -dmS ${screen_name} # 给窗口发送的命令 cmd="./dontstarve_dedicated_server_nullrenderer_x64 -console -cluster ${CLUSTER_NAME} -shard ${NODE_NAME} $(printf \\r)" # 给窗口发送命令并执行 screen -x -S ${screen_name} -p 0 -X stuff "$cmd" } # 开启世界 start "${MASTER}" # 开启洞穴 start "${CAVES}"
原汁原味的信息会更加友好。
科雷饥荒社区官网:https://forums.kleientertainment.com/forums/forum/73-dont-starve-together/
饥荒百科:https://dontstarve.fandom.com/zh/wiki/Don%27t_Starve_中文維基?variant=zh
控制台/命令:https://dontstarve.fandom.com/zh/wiki/控制台/多人版饑荒中的命令
希望更多的学会如何学习,而不是学会这件事本身。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。