前一陣子我家小孩週末晚上不睡覺,都在玩殭屍毀滅工程(Project Zomboid)這個極仿真而且沈浸感十足的殭屍生存遊戲,為了學會教小孩(X),我也買了四人套餐跟他們一起玩(◎)。
開始玩之後,一開始真的是各種摔鍵盤、摔滑鼠,瘋狂問候遊戲開發者他全家(說好的教小孩呢?)。為了作到完整的沈浸感,這遊戲世界裡的所有物理都非常接近真實,例如看書是一頁一頁看,而一本書就是220頁厚。為了增加技能,常常需要帶著一本厚重的書逛充滿殭屍的世界,一個累了跑不動,就會被三兩隻殭屍抓去當下酒菜。
「簡單,重新開始,技能點都會回復,再去闖關一次就好。」我知道你一定是這麼想,抱歉喔,在這個充滿惡意的遊戲裡,那個被抓去當下酒菜吃掉的小人人,才有那些技能,您現在是重新開始控制的是一個新人,所有技能全部需要重新學習!
玩到後來,大致理解這個遊戲之後,進階玩家就會為了保有一定程度的遊戲性,開始自己架設遊戲伺服器或是玩沙盒模式,並且把裡面的參數改到比較不浪費時光。
例如會掛上日誌模組用來傳承技能、閱讀速度增加到非人的程度,每0.01秒就可以看完一頁、或是為了快樂的修車時光,裝上各種汽機車模組、或是喜歡煮飯的朋友也會裝上Sapph’s cooking來煮義大利牛肉餃之類的神奇食物之類。伺服器改到自己滿意之後,會不會想要邀請朋友們一起線上開趴?例如放火燒殭屍營火晚會?
本文要教你如何在Azure上面架設幾乎免費的殭屍毀滅工程(後稱「殭毀」)的伺服器,把燒殭屍的快樂(?)傳給其他人。
安裝Project Zomboid殭毀伺服器的基礎知識
由於要設定Azure又是一大篇,如果還是不會設定的朋友,請移步以下文章學會設定:
AutoGPT安裝指南:Microsoft Azure Docker安裝法
由於殭毀這個遊戲很吃記憶體和SSD磁碟的速度,另外,這遊戲玩下去很容易忘記睡覺時間,我們這裡的設定是:
「基本」
資源群組:PZcool3c_group
虛擬機器名稱:PZcool3c
區域:(Asia Pacific)East Asia
影像:Ubuntu Server 22.04 LTS - x64 第2代
大小:Standard_B2ms (具備2個vCPU、8GB的主記憶體)「管理」
自動關機
啟用自動關機:Yes
關機時間:下午10:00:00
時區:(UTC+08:00)台北
關機之前的通知:No
關於伺服器記憶體的規劃,大概是每個人1GB記憶體的要求。但是如果有8GB的話,按照網路上的網民回報大概可以撐起7-8人左右。筆者實際測試過,建議還是一次直上8GB,免得你玩殭毀玩著玩著,朋友知道你開了一個超級容易玩的伺服器,就會蜂擁而至了。
讀者可以按照自己的需求調整,例如怕存檔爛掉的話,可以啟用備份,這樣系統會自動每天備份。如果不幸發生什麼意外,也可以隨時回復到某一個確定是好的那一天。不過備份是要收費的。
另外,您需要在「網路」->「新增輸入連接埠規則」設定,修改
目的地連接埠範圍 = 16261,16262,8766,8767
通訊協定 = UDP
動作 = 允許
優先順序 = 310
名稱 = PZServer
▲很多免費服務的Azure,速度又快,是架設遊戲伺服器的首選之一。
▲使用B2ms可能對剛開始架伺服器的朋友們來說,稍微大了點,貴了點,但是考慮到未來要搬遷伺服器要耗費的功夫,還是一開始就架的大一點比較實際。
▲您需要在「網路」->「新增輸入連接埠規則」設定
▲目的地連接埠範圍 = 16261,16262,8766,8767 。通訊協定 = UDP
Project Zomboid伺服器架設
殭毀的獨立伺服器架設邏輯是這樣的:你準備另外一台機器跑Steam,然後在Steam裡面執行殭毀伺服器。只不過呢,殭毀獨立伺服器是不需要購買遊戲也可以執行的免費內容。搞懂這個邏輯之後,我們接下來的流程大概就是先安裝上Linux用的命令列Steam、裝上殭毀獨立伺服器、然後用本機的「建立伺服器」來準備設定檔、將設定檔丟去伺服器執行,就搞定了。
首先,我們需要登入上一個步驟建立的Azure伺服器。
ssh azureuser@20.255.255.255
請用自己的IP,你用我的伺服器是無法連線的
然後在命令列輸入
sudo dpkg --add-architecture i386 ; sudo apt update ; sudo apt install -y software-properties-common ; sudo apt-add-repository non-free ; sudo apt update ; sudo apt install -y steamcmd
接下來,我們會看到steamcmd的EULA使用者授權合約畫面,請您一直按「PageDown」或「↓」沿路往下看完合約之後,按「Tab→」之後就可以按「Enter」同意合約。然後下個畫面是按「↓」選擇「I AGREE」-> 「Tab→」-> 「Enter」。
接下來,我們需要新增一個叫做「pzuser」的使用者,並且取消這個使用者的密碼、並且新增一個 「/opt/pzserver」 目錄並更換登入身份為「pzuser」
sudo adduser --disabled-password pzuser ; sudo mkdir /opt/pzserver ; sudo chown pzuser:pzuser /opt/pzserver ; sudo su - pzuser
接下來剪貼以下文字進終端機,用來新創一個叫做「update_zomboid.txt」的設定檔。
cat >$HOME/update_zomboid.txt <<'EOL'
// update_zomboid.txt
//
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once
@NoPromptForPassword 1
force_install_dir /opt/pzserver/
//for servers which don't need a login
login anonymous
app_update 380870 validate
quit
EOL
接下來,實際用steam客戶端安裝殭毀伺服器。
steamcmd +runscript $HOME/update_zomboid.txt ; mkdir -p ~/Zomboid/Server
這個步驟大約需要5分鐘上下。接下來伺服器就安裝好了。
▲steamcmd的EULA使用者授權合約畫面,請您一直按「PageDown」或「↓」沿路往下看完合約之後,按「Tab→」之後就可以按「Enter」同意合約。
▲按「↓」選擇「I AGREE」-> 「Tab→」-> 「Enter」。
▲新增pzuser使用者、然後準備環境。
▲新增steam用的殭毀伺服器安裝設定檔。
準備Project Zomboid伺服器的設定檔
接下來,您可以開始準備殭毀伺服器的設定檔,最快的方法還是在本機先嘗試開一個伺服器,並且裝上自己喜歡的模組、工作坊,以及調整一些自己喜歡調整的參數,例如可以關掉殭屍的重生、將閱讀速度提升到每頁只須0.01秒,或是加強殭屍的力量和速度,來衝一把「屍速列車」等級難度也可以。
你需要做的是在殭毀裡面「建立伺服器」->並且設定伺服器記憶體 -> 「管理設定」-> 「建立新的設定」
輸入新設定的名稱 = servertest (***這個非常重要,一定要設定這個名稱!)
全部設定完成之後,可以先試玩看看。覺得設定好之後,就可以將設定檔案用以下指令複製到Azure上面:
scp servertest.ini servertest_SandboxVars.lua servertest_spawnregions.lua servertest_spawnpoints.lua azureuser@104.255.255.255://tmp/
請將104.255.255.255改成你的Azure伺服器IP
然後再進Azure的終端機輸入以下指令:
cp /tmp/servertest.ini /tmp/servertest_SandboxVars.lua /tmp/servertest_spawnregions.lua /tmp/servertest_spawnpoints.lua ~/Zomboid/Server/
如果您有設定一些工作坊或是模組,不用擔心,伺服器會自動安裝,而且也會要求客戶端要安裝才能加入。
▲要準備伺服器用的設定檔案,您需要先在本機「建立伺服器」
▲然後點選管理設定。
▲建立新的設定
▲新設定的名稱最好是「servertest」,不然後面要改名比較麻煩。
▲如果您有設定一些工作坊或是模組,不用擔心,伺服器會自動安裝,而且也會要求客戶端要安裝才能加入。
▲如果伺服器需要客戶端新增或更新模組,就會在加入伺服器前被要求安裝。
啟動Project Zomboid殭毀伺服器
啟動伺服器很簡單,只要執行以下指令:
cd /opt/pzserver ; ./start-server.sh
第一次系統會提示設定資料庫管理員密碼,你可以輸入「admin」-> 「ENTER」兩次來繼續下一步。
等到看到
LOG : Network , 1685286297437> 2,572,411> *** SERVER STARTED ****
LOG : Network , 1685286297437> 2,572,411> *** Steam is enabled
LOG : Network , 1685286297437> 2,572,411> Server is listening on port 16261 (for Steam connection) and port 16262 (for UDPRakNet connection)
LOG : Network , 1685286297437> 2,572,411> Clients should use 16261 port for connections
未來第二次執行伺服器就不需要輸入遊戲管理員密碼了。
另外,要關閉伺服器只要輸入「CTRL」+「C」,或是在Azure Portal上面直接關閉伺服器,大部分情況下不會爛掉的。怕的話你還是可以設定snapshot備份。
大功告成,只要您在殭毀遊戲內選擇「加入伺服器」,並且輸入IP位址、偏好的使用者名稱及密碼即可。
▲第一次啟動殭毀伺服器,會被要求要輸入資料庫管理員密碼
▲伺服器啟動完成,可以從遊戲中加入了。