拥有一台服务器

  • 首先,当然是有一台已经装好Debian的服务器(1Mbps带宽大概对应2~4人,一个存档2核就够,棱镜+勋章至少得3G内存),不建议Ubuntu,一些依赖似乎无法安装。
  • 安装之后可能用到的包:
1
2
sudo apt update
sudo apt install tmux btop htop fish ranger git

配置基础环境(steamcmd, dst服务器):

  • 一行行复制运行,注意是否报错
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sudo dpkg --add-architecture i386 # If running a 64bit OS
sudo apt-get update
sudo apt-get install lib32gcc1 # If running a 64bit OS

sudo apt-get install lib32stdc++6 # If running a 64bit OS
sudo apt-get install libgcc1 # If running a 32bit OS
sudo apt-get install libcurl4-gnutls-dev:i386
sudo useradd -m steam
sudo su - steam
mkdir ~/steamcmd
cd ~/steamcmd
wget <https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz>
tar -xvzf steamcmd_linux.tar.gz
./steamcmd.sh
force_install_dir /home/steam/steamapps/DST (or whatever absolute path is wanted)
login anonymous
app_update 343050 validate
quit
cd /home/steam/steamapps/DST/bin/
./dontstarve_dedicated_server_nullrenderer

  • 最后一句尝试启动服务器,会生成一些简单的配置,如无报错则基本环境已经配置好。

克隆MrOrange的服务器管理脚本,给予执行权限:

1
2
3
cd ~
git clone https://github.com/qspidy/dst-dedicated-server-admin-scripts.git
chmod +x dst-dedicated-server-admin-scripts/dst*

生成并上传cluster_token.txt

  • 本地DST控制台运行TheNet:GenerateClusterToken()生成令牌文件cluster_token.txt,位置在C:/Users/<yourusername>/Documents/Klei/DoNotStarveTogether(大概,也可能在某个子文件夹),然后上传至服务器/home/steam/.klei/DoNotStarveTogether/目录。该文件相当于身份认证,即只有买了这游戏的人才能创服务器(当然也可以白嫖其它人的)。

常规开服步骤

创建新世界

  • 在本地DST游戏中创建新世界,配置想要的模组,世界类型等等。

上传存档文件夹

  • 找到新世界的存档文件夹(游戏里存档设置页有“打开世界文件夹”选项),通常叫Cluster_xx,把Cluster_xx文件夹上传到服务器的存档目录/home/steam/.klei/DoNotStarveTogether/

修改相应配置(主要是cluster.ini)

  • 打开服务器新世界存档文件夹Cluster_xx里的cluster.ini文件,修改相应的配置,主要是修改人数。
  • [可选]直连端口在Cluster_xx/Master/server.ini里可以查看和修改。同时开不同的存档需要修改Cluster_xx/Master/server.iniCluster_xx/Caves/server.ini里的server_port,以及cluster.ini里的master_port,以避免端口冲突。

启动和维护

启动dst服务器(这里假设存档文件夹为Cluster_12 ):

1
2
3
./dst-dedicated-server-admin-scripts/dst_start.sh -C 12
# 如要进行服务器交互和查看输出(默认 dst-12 为对应的tmux会话名)
tmux attach -t dst-12

完全关闭dst服务器:

1
./dst-dedicated-server-admin-scripts/dst_shutdown.sh -C 12

生成备份文件:

1
./dst-dedicated-server-admin-scripts/dst_backup_cluster.sh -C 12

单独更新dst服务器和mods:

1
2
./dst-dedicated-server-admin-scripts/dst_update_modlist.sh 12
./dst-dedicated-server-admin-scripts/dst_update.sh

(更新中)发送服务器指令(如保存世界、踢出某人):

1
2
3
4
5
# 保存世界
./dst-dedicated-server-admin-scripts/albin/tmux_send.al dst-12 c_save()

# 踢出某人
./dst-dedicated-server-admin-scripts/albin/tmux_send.al dst-12 c_kill("player_id")
  • 常用指令(大概):c_save() , c_shutdown() , c_announce("message") , c_regenerateworld() , c_rollback() , c_listallplayers() , c_kill("player_id") .
  • 打印当前世界信息(天数、季节、时段)指令: TheNet:Announce("Current day: "..TheWorld.state.cycles.." Season: "..TheWorld.state.season..", Phase: "..TheWorld.state.phase)

查看跟踪日志:

  • 查看跟踪当前服务器日志:tail -f ~/.klei/DoNotStarveTogether/Cluster_12/Master/server_log.txt
  • 查看跟踪当前服务器聊天日志:tail -f ~/.klei/DoNotStarveTogether/Cluster_12/Master/server_chat_log.txt

参考链接:

  1. Guides/Don’t Starve Together Dedicated Servers - FANDOM
  2. Dedicated Server Quick Setup Guide - Linux
  3. DEDICATED SERVER QUICK SETUP (Windows) | Don’t Starve Together
  4. Dedicated Server配置项和命令行参数详解