คู่มือเกมแลค › การออกแบบการซิงก์
client authoritative Client-authoritative results
ID สาเหตุ sy-client-auth · ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม) · ร่วมกับ พัฒนาไคลเอนต์ (ทีมพัฒนาเกม)
เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →
ถ้าแต่ละคนตัดสินผลของตัวเอง จอของเราจะลื่น แต่ผลจะไม่ตรงกับจอของคนอื่นและโกงได้ง่าย
ทำไม ไคลเอนต์เป็นผู้กำหนดตำแหน่งและการโดน เซิร์ฟเวอร์แค่ส่งต่อ → ผลคือ สองคนต่างอ้างว่าตัวเองยิงโดนก่อน เซิร์ฟเวอร์ตรวจสอบไม่ได้ → บนหน้าจอ อีกฝ่ายวาร์ปหรือเดินทะลุกำแพง, “ยิงโดนแล้วแต่ไม่เข้า”
- อาการ
- วาร์ป, กดไม่ติด/โรลแบ็ค
- ปัจจัย
- ความหน่วง
- ใครเจอ
- ทั้งเซิร์ฟเวอร์
- เกิดเมื่อไร
- ตลอดเวลา
- ผู้รับผิดชอบ
- ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม) · ร่วมกับ พัฒนาไคลเอนต์ (ทีมพัฒนาเกม)
- งานฝั่งทีมพัฒนาเกม
- เซิร์ฟเวอร์: ผลที่สำคัญ (เช่น การโดน) ให้ตรวจเอง, การเคลื่อนที่ให้ตรวจความเร็วและระยะทาง ไคลเอนต์: เมื่อได้รับผลที่เซิร์ฟเวอร์ปฏิเสธหรือแก้มา ให้ย้อนกลับไปใช้ค่านั้น
- บนกราฟ
- สูงตลอดตั้งแต่แรก · จำนวนรายงานความเร็วการเคลื่อนที่ที่เป็นไปไม่ได้/รายงานการโดนที่ขัดกัน
- จุดที่ต้องดู
- ให้เซิร์ฟเวอร์บันทึกตำแหน่งและการโดนที่ไคลเอนต์รายงานไว้ตามจริง แล้วคำนวณความเร็วการเคลื่อนที่จากรายงานตำแหน่งที่ต่อกัน นับรายงานที่เกินความเร็วสูงสุด และรายงานที่สองคนต่างบอกว่าตัวเองยิงโดนก่อน
- สัญญาณว่าใช่
- เซิร์ฟเวอร์ส่งรายงานต่อให้ไคลเอนต์อื่นโดยไม่ตรวจสอบ และรายงานความเร็วที่เป็นไปไม่ได้หรือการโดนที่ขัดกันเกิดขึ้นสม่ำเสมอโดยไม่เกี่ยวกับแพตช์หรือพื้นที่
- สัญญาณว่าไม่ใช่
- เซิร์ฟเวอร์คำนวณหรือตรวจผลเองอยู่แล้ว: ไม่ใช่สาเหตุนี้ อาการวาร์ปในกรณีนั้นให้ดูแพ็กเก็ตหายหรือ interpolation buffer
- วิธีตรวจ
- ต้องมี log หรือเมตริกจากเซิร์ฟเวอร์/ไคลเอนต์เกม
แหล่งอ้างอิง
- Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization (Yahn W. Bernier, GDC 2001) Valve
การให้ไคลเอนต์รายงานผลทำได้เฉพาะเมื่อเชื่อใจไคลเอนต์ได้ จึงใช้ authoritative server เพราะกังวลเรื่องการโกง - Peeking into VALORANT's Netcode Riot Games
โมเดล server authoritative: เซิร์ฟเวอร์ไม่เชื่อสถานะเกมที่ไคลเอนต์เห็นเด็ดขาด - Distributed authority topologies (Netcode for GameObjects 2.5) Unity
ถ้าแบ่งอำนาจให้ไคลเอนต์ จะโกงได้ง่ายขึ้น และไม่มี simulation เดียวที่ควบคุมเอนทิตีทั้งหมด
สาเหตุที่ควรดูประกอบ
ชั้นเดียวกัน: การออกแบบการซิงก์
สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (วาร์ป)
ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง