คู่มือเกมแลค › การออกแบบการซิงก์
โครงสร้างแบบโฮสต์ (หัวห้อง) Listen server / host advantage
ID สาเหตุ sy-host · ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม) · ร่วมกับ พัฒนาไคลเอนต์ (ทีมพัฒนาเกม), อินฟราเซิร์ฟเวอร์ (ทีมอินฟรา)
เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →
ถ้า PC ของผู้เล่นคนหนึ่งทำหน้าที่เป็นเซิร์ฟเวอร์ เน็ตและสเปก PC ของคนนั้นจะกำหนดฟีลการเล่นของทุกคน
ทำไม PC ของหัวห้องทำหน้าที่เป็นเซิร์ฟเวอร์ (P2P, listen server) → ผลคือ ถ้าเน็ตหรือ PC ของหัวห้องช้า จะส่งผลไปถึงทุกคน ส่วนหัวห้องปิง 0 → บนหน้าจอ หัวห้องได้เปรียบคนเดียว ถ้าหัวห้องออก ทุกคนค้างหรือหลุด
- อาการ
- กระตุก, ค้าง, หลุด
- ปัจจัย
- ความหน่วง, การหยุดชะงัก
- ใครเจอ
- บางจุด/บางแชนแนล
- เกิดเมื่อไร
- สุ่มเป็นครั้งคราว
- ผู้รับผิดชอบ
- ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม) · ร่วมกับ พัฒนาไคลเอนต์ (ทีมพัฒนาเกม), อินฟราเซิร์ฟเวอร์ (ทีมอินฟรา)
- งานฝั่งทีมพัฒนาเกม
- เซิร์ฟเวอร์: เปลี่ยนไปใช้ dedicated server ที่รับหน้าที่ตัดสินผล ระหว่างนั้นให้เลือกคนที่เน็ตและ PC ดีเป็นหัวห้องตอนจับคู่ ไคลเอนต์: รองรับการย้ายโฮสต์ (host migration), ตอนจับคู่ให้วัดปิงกับผู้เล่นคนอื่น ความเร็วอัปโหลด และสเปก PC แล้วส่งไป
- งานฝั่งทีมอินฟรา
- เตรียมเครื่องเซิร์ฟเวอร์/อินสแตนซ์สำหรับ dedicated server, วางไว้ใกล้พื้นที่ที่มีผู้เล่นมาก
- บนกราฟ
- สูงเฉพาะบางกลุ่ม · จำนวนการแจ้งแลค/การหลุดแยกตามหัวห้อง
- จุดที่ต้องดู
- บันทึกความเร็วอัปโหลดของหัวห้อง (โฮสต์), RTT ระหว่างผู้เล่นแต่ละคนกับหัวห้อง, เฟรมไทม์ของ PC หัวห้อง และเวลาที่หัวห้องออก ลงใน log ของแมตช์ แล้วจัดกลุ่มการแจ้งแลคและการหลุดตามหัวห้อง ผู้เล่นเองก็ตรวจได้โดยเล่นใหม่กับคนกลุ่มเดิมแต่เปลี่ยนแค่หัวห้อง
- สัญญาณว่าใช่
- แลคและการหลุดกระจุกอยู่ในห้องของหัวห้องบางคน เมื่อความเร็วอัปโหลดของหัวห้องคนนั้นต่ำหรือเฟรมไทม์ยาว ผู้เล่นทุกคนแย่ลงพร้อมกัน และถ้าไม่มีการย้ายโฮสต์ ทุกคนหลุดทันทีที่หัวห้องออก
- สัญญาณว่าไม่ใช่
- แย่เฉพาะผู้เล่นในพื้นที่เดียวกันโดยไม่เกี่ยวกับหัวห้อง: น่าจะเป็นปัญหาเน็ตหรือเส้นทาง ถ้าเป็นโครงสร้าง dedicated server ไม่ใช่สาเหตุนี้
- วิธีตรวจ
- ต้องมี log หรือเมตริกจากเซิร์ฟเวอร์/ไคลเอนต์เกม
แหล่งอ้างอิง
- Networking Overview for Unreal Engine Epic Games
โฮสต์ของ listen server ได้เปรียบกว่าไคลเอนต์อื่น และรับทั้งงานเซิร์ฟเวอร์และการเรนเดอร์จึงมีโหลดสูง - Distributed authority topologies (Netcode for GameObjects 2.5) Unity
เมื่อเจ้าของเซสชันออก จะเลือกเจ้าของใหม่จากไคลเอนต์ที่เหลืออัตโนมัติ - A Survey and Taxonomy of Latency Compensation Techniques for Network Computer Games (ACM Computing Surveys, 2022) ACM
เกม P2P ก็มองเป็นโครงสร้าง client-server ที่โฮสต์ทำหน้าที่เซิร์ฟเวอร์ควบคู่ไปด้วยได้
สาเหตุที่ควรดูประกอบ
ชั้นเดียวกัน: การออกแบบการซิงก์
สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (กระตุก)
ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง