【记录】饥荒联机版+个人云服务器搭建(2020.6.19)

写在前面

2020年真是不平凡的一年,没想到自己第一次想写一篇博客竟然是写给饥荒了。。。
说到底自己也就是个臭打游戏的2333
万万没想到这个假期竟然这么长,于是又想捞起个合家欢游戏和小伙伴们打打杀杀嗷。正好最近几天蒸汽平台饥荒打折,力度不错建议入。
言归正传嗷,本人小白一个,也是参考网上大佬们的教程搭建的,主要是参考这篇使用阿里云服务器搭建饥荒联机版服务器
我写这篇文章最主要的目的是想记录下整个过程以及过程中遇到的一些问题及解决方法
请注意,随着饥荒版本的更新,该方法未必可以适应将来的版本
如果您经过多次尝试后还是失败的话,还请另寻更新的教程,当然如果您愿意与我交流探讨那么我也十分欢迎,只是本人能力有限,还请不要抱太大希望了哈哈。

所需材料

  1. 饥荒联机版Steam版 需购买
    另,个人不太用Wegame,不清楚是否可以直接使用。
  2. 云服务器 这里使用的是阿里云的服务器操作系统是Ubuntu16.04,配置信息仅供参考。我用这套同时和5个小伙伴玩耍是没有问题的,还请自行酌情购买。我这个是年初的时候白嫖得来的半年我会说? 配置信息
  3. putty ,有了主菜,剩下的就是一些小工具了,putty用于SSH连接Linux服务器,毕竟服务器在云上呢,总得用点小手段是吧?我用的是putty0.72
  4. WinSCP, 与putty类似,但是可以直观的对云服务器进行界面化的文件管理,比较友好,在对存档以及mod管理时发挥较大作用。
  5. steamcommunity, 老司机都懂的,主要用于访问Steam社区,用于查找和订阅mod,当然如果你有别的途径那么也可以,只是使用时尽量找一个较新的版本,我现在用的是V10.7。

开始做菜!

1.进入属于自己服务器

当你购买了属于自己的服务器后,简单配置一下,需要记住自己用户名以及对应密码,还有一个专属的公网IP(重要!!!)
打开putty,在红框处输入你的专属公网IP,端口号port处为22,连接方式选择SSH接下来点击Open建立连接。Putty使用
在弹出的界面输入你要登录的用户名,回车,输入密码(输入密码是不显示的,盲打,打完点回车确认)
输入无误的话就进入到云服务器的终端了。

2.安装依赖

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命令时会要求输入密码。

3.安装SteamCMD及Steam客户端

在根目录下创建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模式

4.安装饥荒联机版服务器软件

在steamcmd模式下
以匿名帐户模式登录

login anonymous

个人信息确认完毕之后,指定饥荒联机版服务器软件安装

force_install_dir ~/myDSTserver

PS:该指令应当是将软件安装在“家目录”下的,也就是“~/myDSTserver”目录。但是在我安装的过程中,该指令将软件安装在了 “ ~/steamcmd/ ~/myDSTserver ”
一开始这个问题困扰了我,但其实这个问题不关键,只要你自己能知道最终是myDSTserver目录的位置即可。
此时应仍处于steamcmd模式下
更新软件

app_update 343050 validate

更新完成后,退出steamcmd模式

quit

至此,如果顺利的话,一大半的工作就完成了

5.试运行服务器

找到你的myDSTserver目录
如果严格按照我上面的步骤来的话,这个目录无非只有两种情况

  1. 在~/myDSTserver
  2. 在~/steamcmd/ ~/myDSTserver

对于第一种情况

cd ~/myDSTserver/bin
./dontstarve_dedicated_server_nullrenderer

对于第二种情况

cd ~/steamcmd/~/myDSTserver/bin
./dontstarve_dedicated_server_nullrenderer

哪个没报错就用哪个嘻嘻,如果正确启动了的话会输出大量信息,很好分辨的。

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!! Your Server Will Not Start !!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

当上述信息出现后,就可以按ctrl+c停止了,到这里很多必要的目录已经生成好了,接下来要做的就是把我们需要的东西补充到框架里去。

6.生成一个世界!

1.复制本地存档

打开WinSCP,登录与putty使用类似,主机名输入云服务器专属公网IP地址,输入用户名及对应密码即可登录。
登陆后界面如下
在这里插入图片描述
左边是本地文件目录,右侧是云服务器上的目录(比较清晰而且支持拖拽上传)
在云服务器界面按热键alt+ctrl+h可查看隐藏目录
在这里插入图片描述
图中有个名为.klei的目录,正是在前面的试运行服务器的时候生成的,依次打开:.klei——DoNotStraveTogether目录。此时可以看到一个Cluster_1文件夹。这里就是我们游戏世界的存档位置。
那么,是不是只要得到一个存档文件填替换掉就可以了呢?
打开下载好的饥荒联机版,登陆后选择创建世界,输入房间名称等信息,并对世界进行设置。(这里建议设置密码,不然可能会有不明真相的玩家进入这个世界,那样就不好了。。。)
创建本地
设置完毕后,生成世界,当进入到选择人物的时候就可以直接退了。这里的世界是部署在本地的,我们只取其设置内容就好。
不出意外的话,存档位置位于电脑的\Documents\Klei\DoNotStarveTogether\178275694中,这里我们直接将这个Cluster_1文件替换掉服务器中的/home/Username/.klei/DoNotStraveTogether/Cluster_1文件。

2.获取服务器Token

在联机版游戏界面点击“账户”选项
查看用户Klei码
图中的红框部分是属于你的Klei账户ID,每个玩家都有属于自己的ID,可以保存一下用于后续进行管理。
点击“游戏”——“饥荒联机版服务器”
获取token1
点击下方添加新服务器,得到一个类似上方红框中的一串代码,这个是不会过期的服务器票据token,复制一份。
获取token2
将复制的票据替换掉服务器文件Cluster_1中的cluster_token.txt中的内容后保存并关闭。
在这里插入图片描述

3.准备服务器启动脚本

服务器中回到主目录下,在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的世界,但是,有一说一,有无mod饥荒就是俩游戏(这也是我为什么选择steam平台)
这里就用到前面准备的steamcommunity了,启动服务,访问创意工坊。订阅你喜欢的服务器mod
访问创意工坊
订阅后,创意工坊内容会被下载到本地,默认保存位置在\steam\steamapps\common\Don’t Starve Together\mods
mod文件
记住你需要启动的mod文件,我们只需要其对应的编号就可以了。
这里可以再进入到创建世界界面,选择启用的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”的文件。
mod下载
对它进行编辑
详细设置
在文件中输入类似红框中的内容:

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日,我的服务器还可以正常运行。
本篇博客水平不高,如果诸位对步骤中的方法或操作有改进或者疏漏欢迎各位指出,共同学习。
感谢您的阅读。

  • 15
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值