飢荒服務器搭建
環境:基於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要返回上次的會話使用這個