饥荒服务器搭建
环境:基于Ubuntu18.4 64bit 1核2G的轻量应用服务器(5M的带宽)
工具:使用WinSCP(文件传输软件) 和PowerShell
使用的账户是admin 非root账户
1. 安装依赖项
sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386
2. 安装steamcmd
steamcmd的详细安装可以参考 : https://developer.valvesoftware.com/wiki/SteamCMD#Linux
以下是简要安装的命令
mkdir -p ~/steamcmd/
cd ~/steamcmd/
wget "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz"
tar -xvzf steamcmd_linux.tar.gz
3. 下载服务器设置
可以直接访问:https://accounts.klei.com/account/game/servers?game=DontStarveTogether
或者从游戏的主菜单下面的账户点击访问kei官网,然后点击头部菜单的“游戏”,找到饥荒联机版的游戏服务器。
可以选择添加新服务器,或者选择已有的。然后就是填写表单内容再点下载设置,会自动下载MyDediServer.zip文件到本地。里面包含基本的配置文件和token令牌数据。
4. 移动相关文件到服务器
mkdir -p .klei/DoNotStarveTogether #创建属于饥荒的目录,路径不按照规范好像会出错
- 或者使用winscp直接像在window那样创建目录,(WinSCP默认隐藏.开头的文件夹,可以使用
Ctrl+Alt+H
显示出来) - 将
MyDediServer.zip
压缩包里的MyDediServer
文件夹用WinSCP上传到刚刚创建的目录下
5. 创建运行脚本
-
在当前账号根目录(~ 我的是/home/admin)下创建文件run_dedicated_servers.sh
-
复制如下代码到shell脚本里 (使用WinSCP就像Windows创建txt一样简单)
#!/bin/bash steamcmd_dir="$HOME/steamcmd" install_dir="$HOME/dontstarvetogether_dedicated_server" cluster_name="MyDediServer" 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" ./steamcmd.sh +force_install_dir "$install_dir" +login anonymous +app_update 343050 +quit 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 Caves | sed 's/^/Caves: /' & "${run_shared[@]}" -shard Master | sed 's/^/Master: /'
-
赋予脚本执行权限
chmod u+x ~/run_dedicated_servers.sh
-
运行
~/run_dedicated_servers.sh
脚本来启动服务器
6. 添加服务端 Mod/模组
使用默认设置(懒得改配置)
-
创建一个自动下载和更新 Mod 的脚本( lua 脚本)
cd ~/dontstarvetogether_dedicated_server/mods
vi dedicated_server_mods_setup.lua
不用vi也可以用WinSCP创建文件并复制下面的代码
-
样例内容,已忽视上面自带的注释,数字是mod在创意工坊中的id
这些大概是死亡不掉落,从骨头复活,快速采集,地窖,自动打开们,Forge Item Pack,无限帐篷,血条功能等
ServerModSetup("1271089343") ServerModSetup("2110246021") ServerModSetup("2303923229") ServerModSetup("1860955902") ServerModSetup("2069206134") ServerModSetup("2074508776") ServerModSetup("1221281706") ServerModSetup("785009843") ServerModSetup("375859599") ServerModSetup("382177939") ServerModSetup("375850593") ServerModSetup("356930882") ServerModSetup("458587300") ServerModCollectionSetup("1271089343") ServerModCollectionSetup("2110246021") ServerModCollectionSetup("2303923229") ServerModCollectionSetup("1860955902") ServerModCollectionSetup("2069206134") ServerModCollectionSetup("2074508776") ServerModCollectionSetup("1221281706") ServerModCollectionSetup("785009843") ServerModCollectionSetup("375859599") ServerModCollectionSetup("382177939") ServerModCollectionSetup("375850593") ServerModCollectionSetup("356930882") ServerModCollectionSetup("458587300")
-
在
modsettings.lua
中的相关内容,以强制开启mod。已忽视自带注释(如果没有该文件,可以先启动一次服务器,再来配置)ForceEnableMod("workshop-1271089343") ForceEnableMod("workshop-2110246021") ForceEnableMod("workshop-2303923229") ForceEnableMod("workshop-1860955902") ForceEnableMod("workshop-2069206134") ForceEnableMod("workshop-2074508776") ForceEnableMod("workshop-785009843") ForceEnableMod("workshop-1221281706") ForceEnableMod("workshop-375859599") ForceEnableMod("workshop-375850593") ForceEnableMod("workshop-382177939") ForceEnableMod("workshop-356930882") ForceEnableMod("workshop-458587300")
7. 服务端相关指令
TheNet:Kick(userid)--踢出用户ID为“userid”的玩家
TheNet:Ban(userid)--禁止用户ID为“userid”的玩家加入
c_save() --立即保存当前世界(一般会在每天早上自动保存)
c_reset(true) --true保存并重新加载世界;false不保存直接重新加载当前世界。
c_regenerateworld() 重置世界
c_shutdown(true) true保存并关闭当前世界; false不保存直接关闭当前世界
TheNet:SetAllowIncomingConnections(true|false) --true允许他人加入;false阻止任何人加入。
c_announce("内容") 公告
TheWorld.net.components.clock:OnUpdate(163060) 跳过时间 X为多少天
TheWorld:PushEvent("ms_nextphase") 跳过时间阶段
c_rollback(X) 回档x天 x为你要回档的天数
TheWorld:PushEvent("ms_forceprecipitation") 开始下雨
TheWorld:PushEvent("ms_forceprecipitation", false) 雨停了
8. 使用tmux,退出shell终端仍保持会话
- 安装tmux
sudo apt install tmux
-
tmux new -s jihuang
# 创建一个会话,名字叫jihuang - 在这个会话中执行一些代码,后 先按
Ctrl+B
,完全放开键盘,再D
-
tmux attach-session -t jihuang
# 下次打开shell要返回上次的会话使用这个
-1 参考
- https://www.bilibili.com/read/cv8428713
- https://www.bilibili.com/read/cv4488136
- https://tieba.baidu.com/p/4239164899