前提
本教程基于阿里云服务器搭建饥荒联机版服务器,使用的操作系统是64位的Ubuntu 16.04 LTS,饥荒联机版使用的平台是Steam平台,实现了饥荒服务器地上地下部分的搭建和mod的引入。
ps:关于作者为啥写这篇文章,因为网上的教程都有些过时了,我想提供一个最新的教程来给一些有需要的动手党。有时候看到一些网上的教程写得五花八门的,总是会萌生自己写一篇能够有代表性的教程的想法,也担心自己也写得渣渣 [可怜],但我会尽量写好来的。
基本步骤
- 安装依赖
- 安装SteamCMD、Steam客户端
- 安装饥荒联机版服务器软件
- 试运行服务器
- 配置存档与mod
- 运行服务器
- 测试服务器
步骤详细描述
1. 安装依赖
- Ubuntu 32位环境
sudo apt-get update
sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386
- Ubuntu 64位环境
sudo apt-get update
sudo apt-get install libstdc++6 libgcc1 libcurl4-gnutls-dev
如果是Centos或其他基于RHEL的Linux系统,安装依赖使用yum,方法类似。以下是参考:
- Centos 32位环境(参考,因为没试过)
yum -y install glibc.i686 libstdc++.i686 libcurl4-gnutls-dev.i686 libcurl.i686
- Centos 64位环境(参考,因为没试过)
yum -y install glibc libstdc++ libcurl4-gnutls-dev libcurl
2. 安装SteamCMD、Steam客户端
- 在家目录下新建steamcmd目录
mkdir ~/steamcmd
- 下载SteamCMD安装文件
wget -P ~/steamcmd https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
- 解压压缩包
tar -xvzf ~/steamcmd/steamcmd_linux.tar.gz
- 运行steamcmd.sh脚本安装Steam客户端并进入SteamCMD模式
cd ~/steamcmd
./steamcmd.sh
耐心等待Steam客户端安装,Steam客户端安装完成后会出现“:steam>”代表进入了SteamCMD模式。
如果出现问题多半是网络不好,重新运行脚本再试试。
3. 安装饥荒联机版服务器软件
- 使用匿名账户登录Steam
login anonymous
- 指定饥荒联机版服务器软件的安装目录到家目录下
force_install_dir ~/myDSTserver
- 安装饥荒联机版服务器软件
app_update 343050 validate
安装过程请耐心等待。
- 安装完成后,使用以下命令退出SteamCMD模式
quit
4. 试运行服务器
试运行服务器就是不带参数运行服务器软件,使其生成默认的配置文件,不用自己创建。
运行以下命令:
cd ~/myDSTserver/bin
./dontstarve_dedicated_server_nullrenderer
当看到如下提示时,按下Ctrl+C中断进程。
[200] Account Failed (6): "E_INVALID_TOKEN"
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!! Your Server Will Not Start !!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
当在家目录使用ls -al命令查看时,会发现存在.klei目录,其含有默认的配置文件,后续步骤再加以完善。
5. 配置存档与mod
- 在Steam上购买饥荒联机版
Steam上商店搜索Don`t Starve Together,付款后下载。
- 订阅mod
下载后在个人所有库中找到Don`t Starve Together点击打开游戏详情界面。
点击页面中的Workshop到创意工坊页面,如下图所示:
搜索想要的mod,譬如“Global Position”,点击Subscribe订阅。
点击Subscribe订阅mod后,Steam会下载mod到本地。
到本地mod安装目录中找到mod对应的id。譬如我订阅并下载了“Global Position”mod后,本地mod安装目录会出现“workshop-378160973”文件夹,此文件夹对应于“Global Position”mod,“378160973”为“Global Position”mod的id。
ps:Windows下,本地mod安装目录为:你的Steam安装目录steamappscommonDon't Starve Togethermods)。
订阅你想要的mod,记住它们的id,接下来的配置有需要。
- 创建本地存档,在本地存档中启动mod
Steam上打开饥荒联机版游戏,登录账户后点击本地游戏,创建一个本地存档,启动你想要加载的服务器mod,开始游戏,直到加载出角色选择界面,可以继续选择一个角色进入游戏世界界面后退出也可以直接退出。
- 复制本地存档
找到本地存档文件夹,复制一份到桌面用于后续操作。
ps:Windows下,本地存档文件一般在文档目录下Klei文件夹里,存档名为Cluster_X,X是存档编号。
我创建的本地存档对应的文件夹为Cluster_1,如下图所示:
- 从Klei官方添加服务器并获取服务器票据token
这一步获取用于修改上述文件的服务器票据token。
步骤如下:
1)登录https://accounts.klei.com/login,使用Steam账户登录后,可以见类似下图:
2)点击“游戏”,见类似下图:
3)继续点击“饥荒联机版的游戏服务器”,见类似下图:
4)点击“添加新服务器”,名字自定义。添加完成后,就会在上方的服务器列表中看到注册的服务器(譬如我注册了服务器“myDSTserver”),其含有一串token(譬如我用红色涂鸦遮住的部分),记住这串token,用于下面的操作。
- 修改复制的本地存档
在复制的本地存档文件夹中创建“cluster_token.txt”文件,将获取的token写入创建的“cluster_token.txt”文件。
- 上传本地存档到服务器
将复制的本地存档文件夹完整上传到服务器的~/.klei/DoNotStarveTogether目录下。上传完成的效果如下图所示:
- 修改饥荒联机版服务器软件的dedicated_server_mods_setup.lua
修改服务器的~/myDSTserver/mods目录下的dedicated_server_mods_setup.lua文件,添加已订阅并且将在服务器存档中启动的mod的id。添加效果如下:
红色框内的内容即为添加需要加载的服务器mod的配置项,其格式为:
ServerModSetup("mod_id") --mod_id是需要加载的服务器mod的id,即服务器存档将启动的mod的id
有多少需要加载的服务器mod,就有多少配置项。
ps:饥荒联机版服务器需要先下载服务器mod,然后才能在服务器存档中启动服务器mod。
至此,配置存档与mod完成。
6. 运行服务器
在真正运行服务器之前,需要先写一个服务器启动脚本。
脚本命名为startup.sh,放置于家目录下。
脚本代码如下:
#!/bin/bash
steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/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: /'
赋予脚本文件以执行权限:
chmod u+x ~/startup.sh
打开一个虚拟窗口:
screen -S myDSTserver
运行脚本:
./startup.sh
观察情况,若未发生错误,按下Ctrl+A+D最小化虚拟窗口,后台运行服务器。
至此,服务器就搭建完成了,下面进行服务器的测试。
7. 测试服务器
Steam上打开饥荒联机版,点击“浏览游戏”,查询搭建的服务器名字(服务器存档的名字)可以找到搭建的服务器。
ps:当饥荒联机版有更新时,饥荒联机版服务器软件也需要更新,不然可能会出现查询不到搭建的服务器的情况,如何更新饥荒联机版服务器软件参考上面的基本步骤的第三点。
至此,本教程结束,后续可能有相关补充。