ข้ามไปเนื้อหาหลัก

~20 นาทีCloud VPS · dedicated server แยกแอป · โหลดแบบ anonymous

เปิดเซิฟ Barotrauma เรือดำน้ำของแก๊งเรา

ตั้งเซิร์ฟเพื่อให้แคมเปญเดินต่อได้ทุกคืน — เรือ เงิน และลูกเรืออยู่ที่เซิร์ฟ ไม่ต้องรอใครมาเป็นโฮสต์

  1. 01เช่า VPS แล้ว SSH เข้าเครื่อง
  2. 02ลง SteamCMD แล้วโหลด app 1026340
  3. 03สตาร์ทครั้งแรกให้ไฟล์ตั้งค่าเกิดขึ้น
  4. 04แก้ serversettings.xml (อ่านกับดักก่อน)
  5. 05เปิดพอร์ต 27015/udp แล้วให้เพื่อนเข้า
  6. 06ทำ systemd ให้รัน 24/7
  7. 07ตั้งแคมเปญให้เก็บความคืบหน้าข้ามคืน
  8. 08(เสริม) ลงม็อดกับเรือจาก Workshop

เหตุผลที่คนตั้งเซิร์ฟ Barotrauma แทบจะมีข้อเดียว คืออยากให้แคมเปญเดินต่อได้ — ตอนให้เพื่อนคนหนึ่งเป็นโฮสต์ เรือ เงิน และลูกเรือทั้งหมดอยู่บนเครื่องคนนั้น วันไหนเขาไม่ว่าง ทั้งวงก็เล่นต่อไม่ได้ พอย้ายขึ้นเซิร์ฟแล้วของทุกอย่างอยู่ที่เดิม ใครว่างก่อนเข้ามาก่อนได้

ข่าวดีของเกมนี้คือผู้พัฒนาแยกตัวเซิร์ฟออกเป็นแอปของตัวเองและเปิดให้โหลดแบบไม่ต้องล็อกอินบัญชี — ขั้นตอนเลยสั้นกว่าเกม Steam ส่วนใหญ่ในลิสต์เรา

01

เช่า VPS แล้ว SSH เข้าเครื่อง

VPS-02 (2 vCPU / RAM 4 GB / NVMe 60 GB — 350฿/เดือน) พอดีกับกลุ่ม 4–12 คน เลือก Ubuntu 22.04 หรือ 24.04 แล้วต่อเข้าไป:

$ ssh root@IP-ของคุณ
root@bkk:~$ apt update && apt upgrade -y
root@bkk:~$ dpkg --add-architecture i386 && apt update
root@bkk:~$ apt install -y lib32gcc-s1 ca-certificates curl

ยังไม่คุ้นกับ SSH? อ่านพื้นฐาน VPSก่อนได้ — อธิบายทุกคำสั่งที่ใช้ซ้ำในไกด์ฝั่ง VPS ทั้งหมด

02

ลง SteamCMD แล้วโหลด app 1026340

ตัวเลขนี้สำคัญ — 1026340 คือแอป Barotrauma Dedicated Server ซึ่งเป็นคนละแอปกับตัวเกม (ตัวเกมคือ 602960) ถ้าใส่เลขผิด คุณจะได้ไฟล์เกมทั้งก้อนที่รันเป็นเซิร์ฟไม่ได้

root@bkk:~$ useradd -m -s /bin/bash baro && su - baro
baro@bkk:~$ mkdir -p ~/steamcmd ~/baro && cd ~/steamcmd
baro@bkk:~$ curl -sL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxf -
baro@bkk:~$ ./steamcmd.sh +force_install_dir /home/baro/baro \
+login anonymous +app_update 1026340 validate +quit
Success! App '1026340' fully installed.

+login anonymous คือจุดที่เกมนี้ต่างจาก DayZ หรือ CS2 —ไม่ต้องเอาบัญชี Steam ที่ซื้อเกมมาใส่บนเครื่องเซิร์ฟเลยคำสั่งชุดเดิมนี้ใช้ซ้ำได้ทุกครั้งที่เกมออกอัปเดต

เว็บทางการของ Barotrauma ที่ barotraumagame.com สำหรับตรวจเวอร์ชันล่าสุดของตัวเกม
barotraumagame.com — เวอร์ชันเซิร์ฟกับตัวเกมต้องตรงกัน
03

สตาร์ทครั้งแรกให้ไฟล์ตั้งค่าเกิดขึ้น

serversettings.xml ยังไม่มีจนกว่าเซิร์ฟจะรันครั้งแรกและปิดลงหนึ่งรอบ — เพราะฉะนั้นขั้นนี้คือเปิดแล้วปิด เพื่อให้ไฟล์เกิด:

baro@bkk:~$ cd ~/baro && ./DedicatedServer
Server started
# รอสัก 10 วินาทีให้ขึ้น Server started แล้วกด Ctrl+C
baro@bkk:~$ ls ~/baro/serversettings.xml
/home/baro/baro/serversettings.xml
04

แก้ serversettings.xml

อ่านก่อนแก้: Barotrauma จะเขียนทับไฟล์นี้ทั้งไฟล์ตอนปิดเซิร์ฟด้วยค่าที่อยู่ในหน่วยความจำ ถ้าคุณแก้ไฟล์ตอนเซิร์ฟยังรันอยู่ ทุกอย่างที่พิมพ์ไปจะหายตอน shutdown — นี่คือสาเหตุอันดับหนึ่งที่คนบ่นว่า “ตั้งค่าไม่ติด” ต้องปิดเซิร์ฟให้สนิทก่อนแก้เสมอ

<serversettings
name="เรือดำน้ำแก๊งเรา"
password="รหัสเข้าเซิฟ"
MaxPlayers="12"
Port="27015"
QueryPort="27016"
IsPublic="false" <!-- เซิร์ฟกลุ่มเพื่อน ไม่ต้องขึ้นลิสต์ -->
GameMode="Campaign"
AllowSpectating="true"
AutoRestart="true"
/>

ตั้ง IsPublic="false" ไว้สำหรับเซิร์ฟกลุ่มเพื่อน แล้วให้ทุกคนเข้าตรงด้วย IP — ถ้าเปิด public เซิร์ฟจะขึ้นในลิสต์สาธารณะและมีคนแปลกหน้าเข้ามาเรื่อย ๆ ซึ่งกับเกมที่ทุกคนถือสว่านและปืนอยู่บนเรือลำเดียวกัน มักจบไม่สวย

05

เปิดพอร์ต 27015/udp แล้วให้เพื่อนเข้า

root@bkk:~$ ufw allow 27015/udp
root@bkk:~$ ufw allow 27016/udp # query port สำหรับให้เซิร์ฟขึ้นลิสต์
root@bkk:~$ ufw status | grep 2701

ฝั่งผู้เล่น: เปิดเกม → Join Server → แท็บ Direct Connectแล้วกรอก IP-ของคุณ:27015 ใส่รหัสถ้าตั้งไว้

เข้าไม่ได้? ไล่ทีละข้อในหน้าเพื่อนเข้าเซิร์ฟไม่ได้ — สำหรับเกมนี้ สาเหตุที่เจอบ่อยที่สุดคือเวอร์ชันเกมไม่ตรงกันเพราะ Steam อัปเดตตัวเกมของผู้เล่นอัตโนมัติ แต่เซิร์ฟไม่อัปเดตเองจนกว่าคุณจะสั่ง

06

ทำ systemd ให้รัน 24/7

สร้าง /etc/systemd/system/barotrauma.service:

[Unit]
Description=Barotrauma Dedicated Server
After=network.target
[Service]
User=baro
WorkingDirectory=/home/baro/baro
ExecStart=/home/baro/baro/DedicatedServer
Restart=always
RestartSec=15
[Install]
WantedBy=multi-user.target
root@bkk:~$ systemctl enable --now barotrauma
root@bkk:~$ journalctl -u barotrauma -f

จำกับดักจากขั้นที่ 4 ไว้ด้วย — เวลาจะแก้ค่า ต้อง systemctl stop barotrauma ก่อน แก้ไฟล์ แล้วค่อย systemctl start barotrauma ห้ามแก้ระหว่างที่ service ยังรัน

07

ตั้งแคมเปญให้เก็บความคืบหน้าข้ามคืน

ตั้ง GameMode="Campaign" ไว้ตั้งแต่ขั้นที่ 4 แล้ว ที่เหลือทำในเกม: เข้าเซิร์ฟ → กดปุ่มจัดการเซิร์ฟ (ไอคอนประแจ) → Campaign → New Campaignเลือกเรือเริ่มต้นและระดับความยาก แล้วเซฟจะถูกเก็บไว้ที่เครื่องเซิร์ฟ

สิ่งที่ควรตั้งตั้งแต่คืนแรก — ให้คนที่ไว้ใจได้เป็นแอดมินสองสามคน แล้วตกลงกันเรื่องเงินกลางก่อน เพราะในแคมเปญ ทุกคนใช้กระเป๋าเดียวกัน เซิร์ฟไทยที่ล่มส่วนใหญ่ไม่ได้ล่มเพราะเทคนิค แต่ล่มเพราะมีคนเอาเงินกลางไปซื้อของส่วนตัวจนหมด

backup: โฟลเดอร์เซฟอยู่ที่ ~/baro/Multiplayer/สั่ง tar czf ~/backup-$(date +%F).tar.gz ~/baro/Multiplayer/ ก่อนอัปเดตเกมทุกครั้ง — ตั้งเป็น cron รายวันได้ตามพื้นฐาน VPS

08

(เสริม) ลงม็อดกับเรือจาก Workshop

เกมนี้ไม่มีระบบให้ผู้เล่นโหลดม็อดตามเซิร์ฟอัตโนมัติแบบ Factorio หรือ GMod —ทุกคนต้องมีม็อดชุดเดียวกันเวอร์ชันเดียวกัน ไม่งั้นเข้าเซิร์ฟไม่ได้ วิธีที่ใช้ได้จริง:

  1. ตั้งคอลเลกชันบน Steam Workshop คอลเลกชันเดียว แล้วให้ทุกคนกด subscribe ทั้งคอลเลกชัน
  2. บนเครื่องคุณ ม็อดที่โหลดมาจะอยู่ในโฟลเดอร์ WorkshopMods ของเกม
  3. อัปโฟลเดอร์ม็อดพวกนั้นขึ้นไปวางในตำแหน่งเดียวกันบนเซิร์ฟด้วย scp
  4. เปิดใช้งานม็อดจากหน้าจัดการเซิร์ฟในเกม แล้ว restart

ข้อควรรู้: SteamCMD จะอัปเดตแค่ตัวเซิร์ฟ ไม่แตะม็อด — เวลาผู้สร้างม็อดปล่อยเวอร์ชันใหม่ ผู้เล่นจะได้ของใหม่อัตโนมัติแต่เซิร์ฟยังเป็นของเก่า แล้วทุกคนจะเข้าไม่ได้พร้อมกัน ต้องอัปม็อดขึ้นเซิร์ฟใหม่เองทุกครั้ง

Steam Workshop ของ Barotrauma — แหล่งโหลดม็อดและเรือสำหรับเซิร์ฟ
Steam Workshop ของ Barotrauma — ตั้งคอลเลกชันเดียวแล้วให้ทุกคน subscribe ตามจะจัดการง่ายที่สุด

คำถามที่เจอบ่อย

ต้องล็อกอินบัญชี Steam เพื่อโหลดเซิร์ฟไหม

ไม่ต้อง — ผู้พัฒนาแยกตัว dedicated server ออกเป็นแอปของตัวเอง (app 1026340) และเปิดให้โหลดแบบ anonymous ผ่าน SteamCMD ได้เลย ไม่ต้องใส่บัญชีที่ซื้อเกมลงบนเครื่องเซิร์ฟ ซึ่งปลอดภัยกว่าเกมอื่นหลายเกมที่ยังต้องล็อกอินจริง

แก้ serversettings.xml แล้วค่าหายกลับเป็นเดิมทุกที

เพราะแก้ตอนเซิร์ฟยังรันอยู่ — Barotrauma จะเขียนทับ serversettings.xml ด้วยค่าที่อยู่ในหน่วยความจำตอนปิดเซิร์ฟ ค่าที่พิมพ์ลงไประหว่างนั้นจึงถูกทับหมด วิธีที่ถูกคือสั่งหยุดเซิร์ฟให้สนิทก่อน แล้วค่อยแก้ไฟล์ แล้วค่อยสตาร์ทใหม่

Barotrauma ใช้สเปกเท่าไหร่

เซิร์ฟไม่หนักเท่าเกม 3D — 3–4 GB เอาอยู่สำหรับกลุ่ม 4–12 คน แต่เกมจำลองน้ำ ไฟฟ้า และสิ่งมีชีวิตทุกตัวแบบละเอียดในรอบเดียว ความแรงของ CPU ต่อคอร์จึงมีผลกับความลื่นมากกว่าจำนวนคอร์ ถ้าจะขยับแพ็ก ดูตัวนี้ก่อน RAM

เพดานผู้เล่นเท่าไหร่ถึงจะยังสนุก

ตั้งได้มากกว่านั้น แต่ 16 คนคือเพดานที่เกมออกแบบมาจริง ๆ และในทางปฏิบัติ 6–10 คนคือช่วงที่สนุกที่สุด เพราะทุกคนยังมีหน้าที่ของตัวเองบนเรือ พอเกินนั้นจะเริ่มมีคนไม่มีอะไรทำ

เล่นแคมเปญยาวบนเซิร์ฟได้ไหม

ได้ และเป็นเหตุผลหลักที่คนตั้งเซิร์ฟกันเลย — แคมเปญบนเซิร์ฟจะเก็บเรือ เงิน ของ และลูกเรือไว้ที่เครื่องเซิร์ฟ ไม่ผูกกับเครื่องใครคนใดคนหนึ่ง ใครว่างก่อนก็เข้ามาเล่นต่อได้ ต่างจากการให้เพื่อนคนหนึ่งเป็นโฮสต์ซึ่งพอคนนั้นไม่ว่าง ทั้งวงก็เล่นต่อไม่ได้

พร้อมสั่งแล้ว? ดูสเปก VPS ที่เหมาะกับ Barotrauma

หรือกลับไปดูไกด์ทั้งหมด 34 หน้า

เซิร์ฟแลค = ย้ายเครื่องแรงกว่าให้ฟรีเริ่ม 150฿/เดือน · ดาต้าเซ็นเตอร์กรุงเทพ ping 5–20 ms

เปิดเซิร์ฟเลย