เซิร์ฟเวอร์เกมทางการของ Steam สำหรับ Counter-Strike: Global Offensive พอใช้สำหรับวัตถุประสงค์ส่วนใหญ่ อย่างไรก็ตาม คุณไม่ได้ควบคุมมัน หากคุณสร้างเซิร์ฟเวอร์ของตัวเอง คุณจะสามารถ:
- ตั้งกฎของตัวเอง เช่น เวลาแมตช์, Freeze time, Max players, Friendly fire, เป็นต้น แต่ระวังอย่าละเมิดกฎสำคัญ โดยเฉพาะข้อนี้
- เล่นแมตช์ส่วนตัวกับเพื่อน
- จัดการแข่งขัน/ทัวร์นาเมนต์
- เล่นบน Custom Maps
ทำไมต้องสร้าง Game Server บน Linux?
บางคนอาจคิด "ทำบน Windows บนคอมพิวเตอร์ตัวเองง่ายกว่านะ?" ก่อนอื่น หากคุณโฮสต์เกมบนคอมพิวเตอร์บ้าน ปกติเพียงพอแค่เกม Local Network ส่วนใหญ่ ISP ให้คุณภาพ Download ไม่錯แต่ Upload ไม่ดีนัก เซิร์ฟเวอร์จะ Lag, Jittery และประสบการณ์เล่นเกมไม่สม่ำเสมอ ดีกว่าเช่าเซิร์ฟเวอร์จาก Cloud Provider ที่น่าเชื่อถือ หากต้องการเกมราบรื่น
แม้ Cloud Services หลายแห่งให้โฮสต์ Windows เป็น OS นี่ก็ไม่เหมาะสม Windows ใช้ RAM มาก ที่คุณควรใช้โฮสต์เกมแทน นำไปสู่ต้นทุนเพิ่มขึ้น คุณยังต้องจ่าย License รายชั่วโมง เพิ่มต้นทุนอีก และสำคัญสุด ขั้นตอนตั้งค่า Game Server (srcds daemon) ค่อนข้างเหมือนกันบน Windows และ Linux หมายถึง ไม่ได้ง่ายกว่าบน OS ของ Microsoft
นี่คือตัวอย่างระบบ Debian ใช้ RAM แค่ 56.7MB
ข้อกำหนด Game Server
CS:GO Game Servers ไม่ demanding มาก Virtual Private Servers จะทำได้ (ไม่ต้อง Dedicated) ข้อกำหนดขั้นต่ำ:
- 2GB RAM
- Two Virtual Cores/CPUs "Intensive Compute" Instances อาจตอบสนองดีกว่า ลอง Normal Compute ก่อน แล้วอัปเกรดเป็น Intensive หากสังเกต Server Lag
- พื้นที่จัดเก็บอย่างน้อย 40GB
- Debian เป็น OS คุณอาจใช้ระบบแจกจ่ายอื่นได้ หากอยากจริงๆ แต่ Debian จะให้ประสบการณ์ไม่มีปวดหัว คำแนะนำในบทความนี้เฉพาะ Debian
- หาก VPS Provider ให้ตั้งค่า Firewall ผ่าน Web Interface Control Panel ปิดมันสำหรับ Instance นี้
- ตั้งค่า Instance ใช้ SSH Key-based Authentication ถ้าจะใช้ Password ใช้ Password ที่แรงมาก! ส่วนใหญ่เซิร์ฟเวอร์ถูกบุกเพราะ Password อ่อนหรืออ่อนมาก SSH Key-based Authentication ป้องกันได้
- หากยังไม่มี Steam Account สร้างที่นี่
VPS ราคาถูกและน่าเชื่อถือได้ที่ Linode หรือ DigitalOcean
อัปเกรดและ Reboot Instance
เมื่อตั้งค่า Instance เสร็จ Login เป็น Root ผ่าน SSH หาก Provider อนุญาต Login แค่ Regular User พร้อม Sudo ใส่คำสั่งนี้หลัง Login:
sudo -i #ใส่แค่ถ้ายังไม่ใช่ ROOT!
ตรวจสอบให้แน่ใจว่าแพ็กเกจทั้งหมดทันสมัย:
apt update && apt upgrade
Reboot กรณีซอฟต์แวร์สำคัญต้อง Reload (Kernel, Systemd Init Process, ฯลฯ)
systemctl reboot
Login กลับเป็น Root (หรือ Regular User แล้วกลายเป็น Root ด้วย sudo -i หากจำเป็น)
ติดตั้ง steamcmd
เปิดใช้งาน 32-bit Support:
dpkg --add-architecture i386
ติดตั้งแพ็กเกจต่อไปนี้:
apt install software-properties-common
เปิดใช้งานการติดตั้ง Closed-source, Non-free Software Packages:
add-apt-repository contrib add-apt-repository non-free
รีเฟรชข้อมูลตัวจัดการแพ็กเกจ:
apt update
ติดตั้ง steamcmd:
apt install steamcmd
กด TAB เลือก "OK" ใน Prompt แรก แล้วเลือก "I AGREE" ใน Prompt ถัดไปพร้อม License Agreement ไม่งั้นการติดตั้งจะ Abort
ติดตั้ง Byobu ซึ่งคุณจะใช้เพื่อให้กระบวนการ CS:GO Server ทำงานต่อไปแม้หลังออกจาก SSH Session:
apt install byobu
ติดตั้ง CS:GO Dedicated Server
รันภายใต้ Root Account เป็นความคิดไม่ดี ดังนั้นสร้าง Regular User ก่อน ซึ่งจะรัน Dedicated Server Daemon:
adduser --gecos "" --disabled-login cstrike
Login เป็น User นี้:
su - cstrike
สั่ง steamcmd Utility ติดตั้งไฟล์ที่จำเป็นทั้งหมดในไดเรกทอรี "CSGO":
steamcmd +force_install_dir ~/CSGO/ +login anonymous +app_update 740 validate +quit
จะใช้เวลานาน เพราะไฟล์เกมดาวน์โหลดมากกว่า 20GB+ หากกระบวนการถูก Interrupt ให้รันคำสั่งข้างต้นอีกครั้ง (หลัง Login กลับเป็น Root แล้ว Login เป็น User "cstrike" ด้วย su - cstrike) มันจะต่อจากที่หยุดไว้
ลงทะเบียน GSLT
ขณะดาวน์โหลด ก็สามารถลงทะเบียน Game Server Login Token ที่จำเป็น ได้ ไปที่หน้าจัดการบัญชี Game Server ของ Steam เลื่อนลงถึงเนื้อหาต่อไป:
ใช้ "730" เป็น App ID สำหรับ Memo พิมพ์อะไรก็ได้ Code จะถูกสร้างขึ้น ซึ่งคุณต้องการในคำสั่งอนาคต ดูตัวอย่าง Login Token ในรูปถัดไป
เปิดใช้งาน CS:GO Dedicated Server
เปิดใช้งาน Byobu ให้ Auto-launch เมื่อ User "cstrike" Login:
byobu-enable
เริ่ม Byobu Session:
byobu
Bug Notice: บน SSH Client ของ Windows สตริง "1;0c" อาจปรากฏบนบรรทัดคำสั่ง ลบสตริงนี้ก่อนดำเนินต่อหากเกิดขึ้น
เริ่มกระบวนการ Daemon เซิร์ฟเวอร์ Counter-Strike: Global Offensive คำสั่งถัดไปเป็นตัวอย่าง: คุณต้องแทนที่ GSLT ท้ายที่สุดใน +sv_setsteamaccount B382BB13C7AAAFDE8272247F87586106 ลบสตริงที่เริ่มด้วย "B382" และเพิ่ม Game Login Token ของคุณที่สร้างในขั้นตอนก่อน
~/CSGO/srcds_run -game csgo -net_port_try 1 +game_type 0 +game_mode 0 +mapgroup mg_active +map de_dust2 +sv_setsteamaccount B382BB13C7AAAFDE8272247F87586106
-net_port_try 1 และ +sv_setsteamaccount เป็นพารามิเตอร์คำสั่งที่จำเป็นทั้งคู่ ส่วนพารามิเตอร์อื่นๆ คุณเปลี่ยนตามต้องการ สำหรับข้อมูลวิธีเริ่ม Game Modes ต่างๆ เช่น Deathmatch หรือ Arms Race ดูหน้า Wiki นี้
กด F6 เพื่อ Detach จาก Byobu Session และทิ้ง Server รันอยู่ หรือกด Ctrl + C เพื่อปิด Server
เมื่อเชื่อมต่อกลับภายหลังเป็น Root ไปยังเซิร์ฟเวอร์ของคุณ เพื่อ Restore Byobu Session ให้ Login กลับเป็น User "cstrike":
su - cstrike
หาก Session ไม่เปิดอัตโนมัติ ให้พิมพ์:
byobu
เริ่มเกมและเชื่อมต่อเซิร์ฟเวอร์
เมื่อเริ่มเซิร์ฟเวอร์สำเร็จ คุณจะเห็นข้อความแบบนี้ในเทอร์มินัล:
Connection to Steam servers successful. Public IP is 203.0.113.8
คัดลอก IP Address
เปิด Counter-Strike: Global Offensive บนคอมพิวเตอร์ของคุณ
มุมซ้ายบน คลิก Drop-down List ที่เขียน "OFFICIAL MATCHMAKING"
เลือก "Community Server Browser" คลิกแท็บ "Favorites" แล้วมุมขวาล่าง คลิก "Add a Server"
วาง Public IP ของ VPS คลิก "Refresh" หาก Game Server ไม่อยู่ในรายการ Double Click เข้าไป
สรุป
ยินดีด้วยสำหรับการสร้าง CS:GO Game Server ของคุณ คุณจะต้องตั้งค่าเกมตามความชอบของคุณและเพื่อน หน้าที่ลิงก์ก่อนหน้านี้เป็นจุดเริ่มต้นที่ดีสำหรับเรียนรู้ Command Line Options สำหรับ srcds Game Daemon และวิธีตั้งค่า "autoexec.cfg" และ "server.cfg" เพื่อปรับตั้งค่าเกม ขอให้สนุก!