生存类游戏 Don't Starve Together(饥荒联机版)Linux 专用服务器的搭建

生存类游戏 Don't Starve Together(饥荒联机版)Linux 专用服务器的搭建

四月 11, 2015
温馨提示:以下为赞助商广告,用以维持服务器费用,从而继续创作原创内容,敬请谅解

须知

  • Don't Starve Together , 下文简称为 DST ;

  • 本文仅针对 Steam 平台上的 DST ,启动后可以在服务器列表中找到所搭建的服务器;

准备

搭建

获取 token

  1. 运行 Steam
  2. 运行 DST
  3. ~ 键,输入指令:TheNet:GenerateServerToken(),回车

然后你会在你的用户文档相应位置找到 server_token.txt 文件,非常重要。

我是在 Windows 7 下生成这个文件的,然后拿到 Debian 7 系统上,通过 scp 命令放到服务器上的。

如果你也是这样,注意:请一定用 U盘/云盘 将这个文件拷贝转移,不要单纯的记住文本,在另一个 电脑/系统 上新建文本文件并写下;否则……(我被折腾惨了。。)

连接到服务器

DST 服务器端程序是用 Lua 编写的,在 Linux 上是运行在 32 位(i386)模式上。

我把它部署在 DigitalOcean 的 VPS 上,先后换个三个系统,才跑起来。

CentOS 7.0 x64

Debian 6.0 x64

前面用的两个 64 位系统,均跑不起来,最后使用了:

Debian 7.0 x32

到现在的情况就是:

  • 我的电脑: hugosdebian Debian 7.0 x64

  • 服务器 : Lamp Debian 7.0 x32

好了,「开始」:

在 Linux 下,SSH 连接到服务器:

1
2
3
4
5
6
7
8
9
10
11
12
13

root@hugosdebian:/home/hugo# ssh root@104.236.133.82

Linux Lamp 3.2.0-4-686-pae #1 SMP Debian 3.2.65-1+deb7u1 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Apr 10 02:43:14 2015 from 1.85.7.230
root@Lamp:~#

表明此时已经连接到了远程的服务器上,前方高能!!展现 Linux 命令行界面高效的时候到了! 「为何这么激动。。。」

下载服务器端程序

按照官方文档,开始下载程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo apt-get update
sudo apt-get install libgcc1
sudo apt-get install libcurl4-gnutls-dev:i386
sudo useradd -m steam
chmod a+rw `tty` # Note those are backticks, not single quotes
sudo su - steam
mkdir ~/steamcmd
cd ~/steamcmd
wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
./steamcmd.sh
login anonymous
force_install_dir /home/steam/steamapps/DST (or whatever absolute path you want)
app_update 343050 validate
quit

试运行

程序下载结束,准备运行:

1
2
cd /home/steam/steamapps/DST/bin/
screen -S "DST Server" ./dontstarve_dedicated_server_nullrenderer

打住,此处官网文档有一点小错误,当前用户为 "steam" , 应该使用 "root" 来运行它,所以先加一句再运行:

1
2
3
4

su - root
cd /home/steam/steamapps/DST/bin/
screen -S "DST Server" ./dontstarve_dedicated_server_nullrenderer

——————————小插曲—————————————

  • 因为我的服务器是 Debian 7.0 ,官方文档里额外说明了这个系统下存在 库的版本老旧 的问题,所以额外给了 Hack 方法,服务器非 Debian 7.0 的不用理会:
1
2
3
4
5
su - root
mkdir ~/dst_lib && cd ~/dst_lib
wget https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/libc.so.6
wget https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/libpthread.so.0
wget https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/librt.so.1

当然,它的运行略有不同:

1
2
cd /home/steam/steamapps/DST/bin/
screen -S "DST Server" bash -c 'LD_LIBRARY_PATH=~/dst_lib ./dontstarve_dedicated_server_nullrenderer'
  • screen 是一个 好用的[?] 命令行下多任务管理软件,可以自行安装。

——————————小插曲结束—————————————

刚刚第一次运行了,等待几秒,显示出运行结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@Lamp:~# cd /home/steam/steamapps/DST/bin/
root@Lamp:/home/steam/steamapps/DST/bin# screen -S "DST Server" bash -c 'LD_LIBRARY_PATH=~/dst_lib ./dontstarve_dedicated_server_nullrenderer'
......(中间好长,略)
......(中间好长,略)
[200] Account Failed (6): "E_INVALID_TOKEN"
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!! Your Server Will Not Start !!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
If you wish to run your server without authentication
Or if you wish to use your server for a LAN game
You must run it in 'lan mode'
Add the command line argument -lan

To generate a server_token from a game client, open console
open console with the tilda key (~)
Type: TheNet:GenerateServerToken()

喔,还没有写上 token ,好吧。

配置

  • token

logout命令 回到本地,用 scp 命令传输本地的 server_token.txt 文件到服务器的 ~/.klei/DoNotStarveTogether 目录下:

1
2
3
4

root@hugosdebian:/home/hugo# scp /home/hugo/downloads/server_token.txt root@104.236.133.82:~/.klei/DoNotStarveTogether

server_token.txt 100% 33 0.0KB/s 00:00

传输成功。

  • settings.ini

还应该打开同目录下的服务器配置文件 settings.ini,配置一下:

1
2
3
4
5
6
7

root@Lamp:~# cd .klei/DoNotStarveTogether/
root@Lamp:~/.klei/DoNotStarveTogether# ls
chat_log.txt log.txt save
root@Lamp:~/.klei/DoNotStarveTogether# vim settings.ini

......

具体如何配置,官网文档都有,主要就是这些:

1
2
3
4
5
6
7
8

default_server_name = Your unique server name
default_server_description = A very nice server description
server_port = 10999
server_password = password
max_players = 1 .. 64
pvp = true | false
game_mode = endless | survival | wilderness

vim,著名编辑器,自行安装。在命令行下写完东西后如何保存退出? 依次按 Esc+:wq+Enter ,「我也是新学的。。」

再运行

再运行一次,哦,成功了。

「不要问我显示什么就算成功了,反正你的 screen 不终止就对了。 」

=_=|什么鬼…

去看看服务器列表

http://my.jacklul.com/dstservers

服务器在此列中,就说明已经成功入驻 DST on Steam 了。