获得一个服务器
我选的是阿里云学生免费体验的服务器 ubuntu 4核(vCPU) 8 GiB 3Mbps 带宽
饥荒
安装工具
sudo apt-get update #更新软件源
sudo apt-get upgrade #更新软件
sudo apt-get install dos2unix #转换格式工具
sudo apt-get install screen #窗口化运行依赖
安装Steam
mkdir steamcmd #创建安装目录
wget -P ~/steamcmd https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz #下载安装到指定的目录
cd steamcmd #进入文件所在目录
tar -xvzf steamcmd_linux.tar.gz #解压压缩包
./steamcmd.sh #运行安装脚本
等待几分钟完成后出现“:steam>”说明安装成功并已经进入Steam
安装/更新饥荒服务器端
在Steam内输入命令
force_install_dir /root/dontstarvetogether #指定安装目录
login anonymous #以匿名账户登录
app_update 343050 validate #安装饥荒服务器端并验证文件
quit #安装完成后退出Steam
如果报错可是试试先执行这些命令再重试
sudo apt-get update #更新软件源
sudo apt-get upgrade #更新软件
sudo apt-get install libstdc++6 libgcc1 libcurl4-gnutls-dev #Steam所需依赖
sudo apt-get install lib32stdc++6 lib32gcc1 #32位软件依赖
sudo apt-get install libsdl2-2.0-0:i386 #解决Steam缺少SDL库报错
sudo apt-get install libcurl3-gnutls:i386 #解决缺少库依赖
开放端口
登录云服务器管理控制台
打开安全组
像这样配置,其他的随意,然后保存(这里不清楚饥荒使用的是udp还是tcp所有都添加了)
在弹出的对话框中选的刚才保存的安全组
配置MOD
在网上也看了很多教程,发现配置mod的方法都很麻烦每个mod代码都要手动输入。下面我介绍一个稍微方便些的方法。
- 在Steam创意工坊订阅你想使用的MOD。
- 在MOD详情界面点击添加到合集。建议创建一个专属合集。
- 将所有想使用的MOD都加入合集之后,在合集详情页面空白处右键“复制网页URL”。
- 在浏览器粘贴复制的链接,记住链接最后的十位数字。后面会用到。
- 执行以下命令
vim /root/dontstarvetogether/mods/dedicated_server_mods_setup.lua
#在新的一行加上“ServerModCollectionSetup("xxxxxxxxx")”。x替换为上面合集链接最后的十位数字。直接保存。
创建并上传存档
- 打开本地电脑上的饥荒联机版,按你的需求创建世界,注意创建世界时启用的MOD要和你添加在合集里的一样。创建完成后进入到选人界面就可以直接断开。但不要退出游戏。
- 回到主界面点击左下角“账户信息”,记住账号ID(KU_ 开头)在打开的网页上部点击“游戏”,之后点击下方“饥荒的游戏服务器”。添加新服务器,名称随意。完成后会在上方服务器列表看到新注册的服务器,其中含有一串乱码一样的Token,记住它,后面会用到。现在可以退出游戏了。
- 回到桌面打开文件资源管理器,定位到以下路径:C:\Users\YourUserName\Documents\Klei\DoNotStarveTogether\(一串数字)
(也可以在游戏中点下方的数据打开这个文件夹)
使用filezille 上传其中的“Cluster_1”存档存档到 ~/.klei/DoNotStarveTogether/ - 在存档文件夹内新建两个个TXT格式文档,分别命名为“adminlist.txt”(服务器管理员名单)、“cluster_token.txt”(服务器所有者)。
- 将账户ID复制到“adminlist.txt”。将Token复制到“cluster_token.txt”。
使用记事本打开“cluster.ini”,编辑世界设置。
以上设置供参考。官方教程
之后进入Master文件夹,编辑“server.ini”文件第二行“server_port =xxxxx”,将xxxxx修改为第二步配置安全组是开放的端口号。例:“server_port =10999”。
返回上一层目录,进入Caves目录进行相同操作,但是注意两个不同的“server.ini”文件内所填写的端口号不可以相同。不然会堵塞端口无法连接。
在桌面新建TXT文本文档,复制以下代码进去并保存为“xxx**.sh**”。名字随意,注意格式就好。
(这个文件会先检查需要的文件是否存在,都存在就回自动开启地面和洞穴的服务器)
#!/bin/bash
steamcmd_dir="$HOME/steamcmd" #Steam安装目录
install_dir="$HOME/dontstarvetogether " #饥荒安装目录
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: /'
将上面创建的“.sh”格式启动脚本上传到任意目录。
回到控制台,登陆后输入以下命令试运行:
chmod u+x ~/xxx.sh #赋予脚本运行权限
dos2unix xxx.sh #转换文件编码
screen -S xxx.sh #开启独立窗口
./xxx.sh #启动服务器
等候一段时间,MOD数量决定启动时间。如果命令行最后一行出现“Sim paused”,即代表开服成功。按下Ctrl+A+D退出窗口即可。如需要重启服务器,参考下面的命令即可。
screen常用命令
screen -ls #列出所有窗口。输出格式为 PID.窗口名
screen -r xxxx #x替换为PID或窗口名,回到窗口
Ctrl + C #结束当前程序
Ctrl + D #结束当前窗口