目录

Ubuntu上架设饥荒游戏私人服务器

注意
本文最后更新于 2017-02-16,文中内容可能已过时。

引言

  今年年初入了Don't Starve的坑,一直摸爬滚打,经常挨饿、没HP……后面和三弟一起玩,终于活过了四季,如今除了打一些怪、BOSS的技术不如三弟外,生存是没什么问题的。   当初我们联机时用的是游侠对战平台,无奈秋天开局只玩到了冬天,整个游戏就卡得不得了,并不是网络的卡,而是饥荒客户端自带的服务器内部的问题。   不过好在,把客户端和服务器分离后,就非常顺畅了。   看着我的云主机,感觉它单单跑着这个博客网站有点闲得慌,于是就在它上面继续折腾,再跑一个饥荒服务器,结果效果出奇的棒,玩起来一点都不卡。   在架设饥荒服务器的过程中,我翻阅了很多很多资料,包括饥荒作者本人写的说明,摸索出了自己一套架设方案,这个方案不需要像网上别人那样要写一大堆配置文件,特将这个方案记录如下。   在继续之前,我希望读者有Linux日常使用的经验,至少懂命令行操作。

本文是基于最新版的饥荒服务器架设教程,我在2017年2月完成此次架设。由于Klei在一年多两年以前对饥荒服务器进行了一次大改版,网上有些旧版教程已经不适用,请注意。

正版授权

  哦,忘了说了,首先你要购买Steam游戏平台上的正版Don't Starve Together   既然喜欢,就为作者就贡献自己的一份力量呗。

架设

首先奉上饥荒游戏的作者Klei大神写的 官方文档,一切问题都可以在上面找到答案,感谢Klei创作了这么好的一个游戏。

配置Ubuntu运行环境

安装必要的库

Ubuntu 64位: sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386 Ubuntu 32位: sudo apt-get install libstdc++6 libgcc1 libcurl4-gnutls-dev

增加虚拟内存(可选)

使用命令free -m看看服务器的内存情况。要是内存小,又没有/swap交换分区的话,就要考虑一下了。

根据你的服务器内存情况,像我的服务器内存只有1G,跑个网站已经占了不少了,这样再跑个饥荒服务器是要垮掉的。

于是考虑利用剩余的硬盘空间,分配一块空间当做内存使用。虽然速度比不上调整服务器配置增加内存空间,但如今这个时代,存储很廉价,增加硬盘空间相比内存来得非常便宜,而且对于饥荒,并不影响游戏体验。

建立的办法需要一定的灵活性,如果你是为服务器新加一块硬盘,那么首先需要配置一下使硬盘在开机时自动挂载。

这里假设我的硬盘挂载在/mnt/mydisk/目录下。 如果是使用系统盘,在下面的dd命令中,请改一下of参数为你想要的虚拟内存文件的路径。

然后,使用df -h确认一下,想要分配多大的空间,以及目标硬盘上的空间是否足够。

指定虚拟内存为这块硬盘上的swapfile文件 dd if=/dev/zero of=/mnt/mydisk/swapfile bs=1M count=4096 后面的bs=1M count=4096参数是以1M为单位,分配4096个单位(总的来说就是4096*1M=4GB)的虚拟内存空间。

这个过程执行得比较久,因为要把这块空间全部以0来填充,请耐心等待。

然后创建虚拟内存文件并使其生效

mkswap /mnt/mydisk/swapfile
swapon /mnt/mydisk/swapfile

最后设置开机启动时自动挂载该交换分区 echo "/mnt/mydisk/swapfile swap swap defaults 0 0" >> /etc/fstab

为了确保配置生效,请重启一下服务器,然后再次使用free -m命令检查虚拟内存是否生效。

建立用户

为了安全,专门建立一个Linux用户,这里假设用户名为dst。并为其设置密码。

sudo useradd -m -s /bin/bash dst
sudo passwd dst

然后以dst用户登录Ubuntu系统。

sudo login dst

通常我们是用ssh工具比如(Putty)连接服务器的,而我建议给这个账号设置成以证书登录的方式,具体方法请参见Google或者百度。这样更安全更方便。

接下来的步骤全是以此用户操作,不再需要权限提升。

安装Steam平台和饥荒服务器

/home/dst目录下新建一个steamcmd目录,用来存放Linux版本的Steam平台。然后下载安装包。

mkdir ~/steamcmd
cd ~/steamcmd
wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz

然后解压并安装

tar -xvzf steamcmd_linux.tar.gz
./steamcmd.sh

安装成功后,命令行会进入Steam> 模式。下次有需要再进这个模式时,也一样执行steamcmd.sh这个脚本就好了。 然后在这个模式下,使用命令

login anonymous

以匿名身份登录Steam平台。然后

force_install_dir ../dstserver

指定游戏的安装目录为/home/dst/dstserver,方便以后操作。 最后,下载安装饥荒服务器

app_update 343050 validate

其中343050是Don’t Starve Together在Steam平台中的ID。 这个app_update命令在我的云主机上执行得非常艰难。原因是腾讯云主机所在的网络问题,Steam服务器在国外,经常连接不上,或者下载到一般速度变成0等。出现网络中断的错误提示时,请务必按然后回车多刷几次,我刷了十几次命令才成功一次,然而下载到一半又断了,然后继续刷十几次终于完整地下载完成了。

安装完成后,在/home/dst/dstserver下已经有文件了。这个目录就是我们服务器目录,服务器主程序在目录下面的bin目录的dontstarve_dedicated_server_nullrenderer

然后,我们进到服务器目录,先运行一次游戏服务器

cd ~/dstserver/bin
./dontstarve_dedicated_server_nullrenderer

让它生成一些默认的配置文件,这次运行肯定不会完全跑起来的,不要抱有什么期待……

[200] Account Failed (6): "E_INVALID_TOKEN"
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!! Your Server Will Not Start !!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!`

当看到这么强烈的感叹号霸占你的屏幕,就可以Ctrl+C了。

整个架设已经进行到一半了,加油↖(^ω^)↗

正版Token认证

刚刚我们启动时,无法启动的原因是因为我们没有给这个服务器设置正版Token认证。 首先在Windows或者MacOS上,运行我们的饥荒游戏客户端,登录游戏生成Token。

/posts/20170216210738/20170216200231.jpg
在弹出的网页框里
/posts/20170216210738/20170216200279.jpg

点击生成按钮后,上面会出现一个Token。Token一般是以pds开头的一行字符串,请完整准确无误地复制下来,结尾不可多一个空格、换行等。 同时请不要把这个Token告诉其他人,这是你购买正版的证明,如果泄露了,别人可以不用购买直接利用这个Token来架设服务器。

复制下来后,新建一个名为cluster_token.txt的文本文件,里面粘贴上刚才复制的内容。再次强调一遍请完整准确无误地粘贴上去,结尾不可多一个空格、换行等。同时文件名必须是这个cluster_token.txt不能变。

然后把这个文件通过你喜欢的方式比如FTP、SCP等,上传到Ubuntu服务器/home/dst/.klei/DoNotStarveTogether/Cluster_1目录下。 Cluster_1这个目录是我们刚才第一次运行时自动创建的。 上传完后,请务必检查这个文件的权限对于我们dst用户是rwx的。

另一种方式如果你是用ssh工具连接服务器,并且会vim操作的话,就更简单一点, 在Cluster目录下,使用vi cluster_token.txt,然后按Insert键,然后粘贴Token进去,然后按Esc输入:wq回车保存退出即可。

启动服务器

然后再去启动服务器,不用任何参数

cd ~/dstserver/bin
./dontstarve_dedicated_server_nullrenderer

稍等片刻,就会发现,服务器成功启动了。 然后在我们饥荒游戏里,正版登录进去后,按~打开控制台,输入c_connect("127.0.0.1")里面改为你服务器的IP,按回车就可以自动连上我们的服务器。 由于饥荒没有什么地方可以保存服务器信息,所以每次进自己的服务器时,都需要输入这句命令。 不过在Steam的服务器列表上,是会出现我们的服务器的,不过比较难搜索到就是了。有时候不设密码会有老外进来O(∩_∩)O哈哈~。 当然里面基本上是不怎么好玩的,因为还没有配置世界,全是以默认参数生成,也没有任何MOD。

/posts/20170216210738/20170216220283.jpg