2020年真是不平凡的一年,没想到自己第一次想写一篇博客竟然是写给饥荒了。。。
说到底自己也就是个臭打游戏的2333
万万没想到这个假期竟然这么长,于是又想捞起个合家欢游戏和小伙伴们打打杀杀嗷。正好最近几天蒸汽平台饥荒打折,力度不错建议入。
言归正传嗷,本人小白一个,也是参考网上大佬们的教程搭建的,主要是参考这篇使用阿里云服务器搭建饥荒联机版服务器。
我写这篇文章最主要的目的是想记录下整个过程以及过程中遇到的一些问题及解决方法
请注意,随着饥荒版本的更新,该方法未必可以适应将来的版本
如果您经过多次尝试后还是失败的话,还请另寻更新的教程,当然如果您愿意与我交流探讨那么我也十分欢迎,只是本人能力有限,还请不要抱太大希望了哈哈。
当你购买了属于自己的服务器后,简单配置一下,需要记住自己用户名以及对应密码,还有一个专属的公网IP(重要!!!)
打开putty,在红框处输入你的专属公网IP,端口号port处为22,连接方式选择SSH接下来点击Open建立连接。
在弹出的界面输入你要登录的用户名,回车,输入密码(输入密码是不显示的,盲打,打完点回车确认)
输入无误的话就进入到云服务器的终端了。
Ubuntu64位
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libstdc++6 libgcc1 libcurl4-gnutls-dev
Ubuntu32位
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386
前两条命令对软件列表进行更新,第三条用于安装依赖,逐条输入就可以了。执行sudo命令时会要求输入密码。
在根目录下创建steamcmd目录
mkdir ~/steamcmd
下载SteamCMD安装文件到新创建的目录
wget -P ~/steamcmd https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
解压压缩包
cd ~/steamcmd
tar -xf steamcmd_linux.tar.gz
可通过输入命令 “ls”查看当前目录下的文件,发现名为steamcmd.sh的脚本文件。
执行该脚本文件
./steamcmd.sh
安装完成后看到弹出“:steam>”字样,说明进入steamcmd模式
在steamcmd模式下
以匿名帐户模式登录
login anonymous
个人信息确认完毕之后,指定饥荒联机版服务器软件安装
force_install_dir ~/myDSTserver
PS:该指令应当是将软件安装在“家目录”下的,也就是“~/myDSTserver”目录。但是在我安装的过程中,该指令将软件安装在了 “ ~/steamcmd/ ~/myDSTserver ”
一开始这个问题困扰了我,但其实这个问题不关键,只要你自己能知道最终是myDSTserver目录的位置即可。
此时应仍处于steamcmd模式下
更新软件
app_update 343050 validate
更新完成后,退出steamcmd模式
quit
至此,如果顺利的话,一大半的工作就完成了
找到你的myDSTserver目录
如果严格按照我上面的步骤来的话,这个目录无非只有两种情况
对于第一种情况
cd ~/myDSTserver/bin
./dontstarve_dedicated_server_nullrenderer
对于第二种情况
cd ~/steamcmd/~/myDSTserver/bin
./dontstarve_dedicated_server_nullrenderer
哪个没报错就用哪个嘻嘻,如果正确启动了的话会输出大量信息,很好分辨的。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!! Your Server Will Not Start !!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
当上述信息出现后,就可以按ctrl+c停止了,到这里很多必要的目录已经生成好了,接下来要做的就是把我们需要的东西补充到框架里去。
打开WinSCP,登录与putty使用类似,主机名输入云服务器专属公网IP地址,输入用户名及对应密码即可登录。
登陆后界面如下
左边是本地文件目录,右侧是云服务器上的目录(比较清晰而且支持拖拽上传)
在云服务器界面按热键alt+ctrl+h可查看隐藏目录
图中有个名为.klei的目录,正是在前面的试运行服务器的时候生成的,依次打开:.klei——DoNotStraveTogether目录。此时可以看到一个Cluster_1文件夹。这里就是我们游戏世界的存档位置。
那么,是不是只要得到一个存档文件填替换掉就可以了呢?
打开下载好的饥荒联机版,登陆后选择创建世界,输入房间名称等信息,并对世界进行设置。(这里建议设置密码,不然可能会有不明真相的玩家进入这个世界,那样就不好了。。。)
设置完毕后,生成世界,当进入到选择人物的时候就可以直接退了。这里的世界是部署在本地的,我们只取其设置内容就好。
不出意外的话,存档位置位于电脑的\Documents\Klei\DoNotStarveTogether\178275694中,这里我们直接将这个Cluster_1文件替换掉服务器中的/home/Username/.klei/DoNotStraveTogether/Cluster_1文件。
在联机版游戏界面点击“账户”选项
图中的红框部分是属于你的Klei账户ID,每个玩家都有属于自己的ID,可以保存一下用于后续进行管理。
点击“游戏”——“饥荒联机版服务器”
点击下方添加新服务器,得到一个类似上方红框中的一串代码,这个是不会过期的服务器票据token,复制一份。
将复制的票据替换掉服务器文件Cluster_1中的cluster_token.txt中的内容后保存并关闭。
服务器中回到主目录下,在WinSCP中可右键——新建文件,文件名为“startup.sh”
编辑startup.sh文件,将下列文本复制进去,保存后退出。
#!/bin/bash
steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/steamcmd/~/myDSTserver"
cluster_name="Cluster_1"
dontstarve_dir="$HOME/.klei/DoNotStarveTogether"
function fail()
{
echo Error: "$@" >&2
exit 1
}
function check_for_file()
{
if [ ! -e "$1" ]; then
fail "Missing file: $1"
fi
}
cd "$steamcmd_dir" || fail "Missing $steamcmd_dir directory!"
check_for_file "steamcmd.sh"
check_for_file "$dontstarve_dir/$cluster_name/cluster.ini"
check_for_file "$dontstarve_dir/$cluster_name/cluster_token.txt"
check_for_file "$dontstarve_dir/$cluster_name/Master/server.ini"
check_for_file "$dontstarve_dir/$cluster_name/Caves/server.ini"
check_for_file "$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)
"${run_shared[@]}" Caves | sed 's/^/Caves: /' &
"${run_shared[@]}" Master | sed 's/^/Master: /'
好了,现在得到了服务器启动脚本,但是还不能马上启动它,需要对其权限进行修改
回到putty窗口,在主目录下
chmod u+x ~/startup.sh
此时,就可以通过服务器启动脚本开启服务器了
./startup.sh
不出意外的话,稍候片刻,就可以在游戏中搜索到服务器啦。
上述步骤可以帮助生成一个纯净无mod的世界,但是,有一说一,有无mod饥荒就是俩游戏(这也是我为什么选择steam平台)
这里就用到前面准备的steamcommunity了,启动服务,访问创意工坊。订阅你喜欢的服务器mod
订阅后,创意工坊内容会被下载到本地,默认保存位置在\steam\steamapps\common\Don’t Starve Together\mods
记住你需要启动的mod文件,我们只需要其对应的编号就可以了。
这里可以再进入到创建世界界面,选择启用的mod并回到世界
还是一样,回到世界,加载进入到游戏后就可以推出了。
再查看本地存档文件中的Cluster_1文件,可以看到两个文件夹,Master和Cave分别对应游戏中的主世界和洞穴。查看主世界Master文件,可以看到图中的两个文件
其中一个是对世界一些选项的设置,另一个是对mod文件的配置。
将这两个文件拖拽到服务器中对应位置进行覆盖;
Cave文件夹中的也是一样覆盖服务器中对应文件。
我们打开modoverrides.lua文件可以查看它的内容
以红框中的设置为例,workshop后接的数字为该mod对应的编号,该mod设置末尾的enable=true表示该mod是启用状态。
记住这些已启用mod的编号,因为这只是设置,还需要一步用于将这些mod下载到服务器中后续才能启用。
我们打开服务器中/myDSTserver/mods目录,可以看到一个名为“dedicated_server_mods_setup.lua”的文件。
对它进行编辑
在文件中输入类似红框中的内容:
ServerModSetup("378160973") --globalpositions
ServerModSetup("666155465") --showme
ServerModSetup("1207269058") --healthbarDYC
其中“–”将每一行语句分成两部分,第一部分中的数字即为需要服务器下载的服务器mod编号,“–”后的为对该mod的简要说明,用于辨识,这并不重要。
需要添加几个mod,就要有几行语句,每行一个。编辑完毕后保存并退出。
到这里,主要配置终于结束啦。
回到putty,回到主目录下,运行命令
./startup.sh
稍等片刻,就可以搜索到服务器了
可以看到模组已经成功添加了。
虽然到这里服务器已经成功启动了,但是这时putty还不可以关闭,否则服务器会被关闭,我们需要这个执行脚本的命令始终开启,这样服务器才是一直工作的。
我选择使用nohup命令,因为nohup默认不再将日志输出到终端,所以后台的情况我们是不清楚的,因此前面先直接启动,看到服务器可以正常工作后再使用这个命令。
首先ctrl+z把正在执行的脚本停止
nohup ./startup.sh &
这样开启服务器的脚本就会挂在后台了,此时关闭putty窗口也不会影响服务器的工作了。
结束,下机。
通过上述步骤搭建的服务器存在一些弊端,如:
1.当你想要重启服务器时,首先需要将启动脚本停止,否则会出现端口占用的情况。但是当使用nohup指令后重新打开putty,jobs指令也无法查看后台任务。
解决办法:输入指令
ps aux|grep ./startup.sh
就可以查看到任务了,再通过kill指令杀掉进程就可以重启了。(土方法)
2.当游戏有更新时,出现找不到服务器的问题。
解决方法:参考配置过程中的步骤更新联机版服务器软件
首先进入steam模式,然后依次输入如下代码对服务器进行更新
cd ~/steamcmd
./steamcmd.sh
login anonymous
force_install_dir ~/myDSTserver
app_update 343050 validate
quit
完成后退出,再重新启动服务器应该就好了。
3.需要对mod进行增删管理时,建议可以拿本地创建世界的存档中的两个文件直接对服务器存档直接覆盖,方法比较简单。
截止2020.6.19日,我的服务器还可以正常运行。
本篇博客水平不高,如果诸位对步骤中的方法或操作有改进或者疏漏欢迎各位指出,共同学习。
感谢您的阅读。