Ubuntu上架设饥荒游戏私人服务器
引言
今年年初入了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。
在弹出的网页框里
点击生成按钮后,上面会出现一个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。