Above all
在自己的VPS上搭建七日殺的專用服務器和小夥伴開黑是一件很有意思的事情……這篇雜談主要是記述如何在VPS上使用steamcmd搭建 7dtd dedicated server
假設安裝環境是Ubuntu Server LTS 16.04以及更新的系統
準備工作
steamcmd依賴於32位運行環境,因此需要安裝32位的glibc和libstdc++等
在ubuntu系統上,運行如下命令進行安裝
$ sudo apt install lib32gcc1 -y
如果使用的是CentOS或者RedHat,使用這條命令:
$ sudo yum install glibc.i686 libstdc++.i686 -y
依賴庫安裝完成後,創建一個普通用戶,命名爲steam
,以免使用root
運行導致安全隱患
$ sudo useradd -m steam
創建用戶成功後,/home/steam/
路徑應當一起被創建,現在可以切換到新用戶以便執行下一步操作
$ su - steam && cd ~
安裝steamcmd
從這裏開始的操作應該使用steam
用戶完成,所有的操作應該在steam
用戶的家目錄下完成
現在開始使用wget下載steamcmd
$ wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
創建一個新路徑以便解壓上一步下載的文件
$ mkdir -p ./steamcmd/
解壓文件到新文件夾
$ tar -xvzf steamcmd_linux.tar.gz -C ./steamcmd/
解壓完成後,steamcmd的安裝就算告一段落了
安裝7DTD Dedicated Server
切換到剛剛新建的steamcmd
路徑下
$ cd /home/steam/steamcmd/
運行steamcmd.sh
腳本,進入steamcmd環境中
$ ./steamcmd.sh
在該環境中,使用app_update
命令安裝7DTD Dedicated Server,該命令的格式如下:
app_update <app_id> [-beta <betaname>] [-betapassword <password>] [validate]
首先,登錄steamcmd,這裏可以使用自己的steam賬戶密碼,也可以使用匿名登錄:
Steam> login anonymous
指定安裝目錄,方便後續管理,這裏最好使用絕對路徑:
Steam> force_install_dir /home/steam/7dtd/
安裝服務器,其中beta版本可以在自己的steam庫存中查詢得到:
Steam> app_update 294420 -beta latest_experimental validate
等待安裝完成後,退出該環境:
Steam> quit
若應用有更新,可以使用完全相同的步驟進行更新
至此服務器應用已經安裝到/home/steam/7dtd/
目錄下
編輯配置文件,準備啓動服務器
在進行這一步之前,請保證VPS的26900端口(TCP/UDP)處於開放狀態,否則服務器啓動後可能無法被玩家連接到
切換到7DTD的安裝目錄,找到serverconfig.xml
進行編輯:
$ nano ./serverconfig.xml
以下是較爲重要的配置選項:
- ServerName:你的服務器名字,不要太過簡單,在客戶端搜索時區分大小寫
- ServerPassword:服務器登錄密碼
- ServerPort:連接端口,默認是26900,可以修改
- ServerVisibility:服務器可見性,可以根據需要設置爲 0(私有)、1(僅朋友可見)和2(公開)
- ServerMaxPlayerCount:最大玩家數,可以設置的值爲1、2、4、8等
- EACEnabled:是否開啓EAC(EasyAntiCheat),可以設置爲true(是)或者false(否)
- PersistentPlayerProfiles:玩家檔案不變性,如果設置爲true(開啓),則如果玩家有任何修改自己Profile的行爲均會導致無法進入遊戲,建議爲false(關閉)
- GameWorld:指定進行遊戲使用的地圖
- GameName:遊戲存檔的路徑名,該屬性用於區分存檔
- GameDifficulty:遊戲難度,可以設置爲0(簡單)-5(困難),共6等級
- BlockDamagePlayer:玩家方塊傷害的乘法因子,默認爲100,即100%
- BlockDamageAI:殭屍等AI造成方塊傷害的乘法因子,默認爲100,計算方式同上
- BlockDamageAIBM:BM意爲BloodMoon,即血月當晚的AI造成方塊傷害的乘法因子
- XPMultiplier:玩家獲得經驗的乘數因子,默認爲100,即100%
- PlayerSafeZoneLevel:玩家新手保護可以持續到的最高等級,在此等級之前死亡無懲罰,默認爲5
- BuildCreate:是否開啓作弊模式
- DayNightLength:遊戲中一晝夜持續的現實時間,單位爲分鐘
- DayLightLength:遊戲中白天持續的小時數,按照遊戲時間計算,默認爲18小時,即6:00-22:00爲白晝
- DropOnDeath:死亡時掉落,可以選擇0(無掉落),1(掉落所有物品),2(僅掉落腰帶物品,即裝備欄),3(僅揹包掉落),4(刪除所有,即死亡後無法取回掉落物)
- DropOnQuit:退出時掉落,選項同上,但是沒有4
- BedrollDeadZoneSize:睡袋安裝區半徑,默認爲15,在這個區域內不會刷新殭屍
- MaxSpawnedZombies:同一時間所有玩家視野內生成活動殭屍的最大數目,默認爲64
- MaxSpawnedAnimals:同一時間所有玩家視野內生成活動動物的最大數目,默認爲50
- EnemySpawnMode:殭屍是否刷新,該選項控制搜刮過得房屋中殭屍是否會重生
- ZombieMove:殭屍在白天的移動速度,分爲0-4五級
- ZombieMoveNight:殭屍在夜晚的移動速度,分級同上
- ZombieFeralMove:狂暴殭屍的移動速度,分級同上,似乎不受上述兩個選項的影響
- ZombieBMMove:殭屍在血月當晚的移動速度,同上
- BloodMoonFrequency:血月頻率,單位爲遊戲日,默認爲7
- BloodMoonRange:血月的時間範圍,默認爲0,即血月當晚至第二天凌晨
- BloodMoonWarning:血月警告時間,默認爲8,即血月當天早上八點鐘
- BloodMoonEnemyCount:血月當晚生成的敵人數量,計算方法應該是玩家數乘上該選項的值
- LootAbundance:搜刮物品的數量獎勵的乘數因子,默認爲100,即100%
- LootRespawnDays:可搜刮物品的重生時間,默認是5,即五個遊戲日後可以重複搜刮
- AirDropFrequency:空投頻率,默認值爲3,即每三天中午的12:40會有空投隨機刷新在地圖上(注意,第一次空投是第四天,以後每次空投天數是三的倍數加一)
- AirDropMarker:空投標記,設置爲true即可在地圖上顯示空投位置
- PartySharedKillRange:和隊友共享經驗範圍,單位是米
- PlayerKillingMode:PVP模式的設置,可以設置爲0(PVE),1(僅隊友之間有傷害),2(僅對陌生人有傷害),3(PVP)
- LandClaim-xxxxx:以下均爲領地石屬性,不多贅述
編輯完該文件後,使用如下命令啓動遊戲服務器:
$ ./startserver.sh -configfile=./serverconfig.xml
如果需要在後臺啓動該遊戲,可以使用nohup
或者screen
命令,也可將上述命令保存爲bash script,方便啓動
遊戲存檔與管理員
遊戲的存檔目錄應該爲~/.local/share/7DaysToDie/Saves/your_game_world/your_game_name/
,目前該遊戲尚無回檔方法,可以對此目錄進行備份,若需回檔則使用備份覆蓋該路徑即可
同時,遊戲可以添加額外的管理員,默認的管理員文件爲~/.local/share/7DaysToDie/Saves/serveradmin.xml
,若要添加額外的管理員,將該管理員的SteamID64
按照文件中的示例添加到<admins><admins />
標籤之中即可;該示例如下:
<admins>
<admin steamID="00000000000000000" permission_level="0" />
<admins />
同樣可以在該文件中管理允許連接服務器的白名單和禁止連接服務器的黑名單,參照文件示例即可
加入遊戲
在客戶端中點擊Join a Game
,搜索剛纔配置的ServerName
即可,注意該搜索區分大小寫