한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

คู่มือเกมแลค › การออกแบบการซิงก์

lag compensation มากเกินไป Excessive lag compensation

ID สาเหตุ sy-lagcomp-overreach · ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม)

เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →

ถ้าย้อนเวลาให้ผู้โจมตีไกลเกินไป ฝ่ายที่ถูกโจมตีจะโดนทั้งที่หลบไปแล้ว

ทำไม เซิร์ฟเวอร์ย้อนเวลาไกลเพื่อผู้โจมตีที่ปิงสูง แล้วจึงตัดสิน → ผลคือ บนจอของฝ่ายที่ถูกโจมตี เขาเข้าที่กำบังไปแล้ว → บนหน้าจอ “หลบหลังกำแพงแล้วยังโดน”, คนปิงสูงได้เปรียบ

อาการ
กดไม่ติด/โรลแบ็ค
ปัจจัย
ความหน่วง
ใครเจอ
เราคนเดียว, บางพื้นที่/บาง ISP
เกิดเมื่อไร
ตอนทำแอ็กชันบางอย่าง
ผู้รับผิดชอบ
ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม)
งานฝั่งทีมพัฒนาเกม
ตั้งเพดานการย้อนเวลา (เช่น 200–250 ms), ผู้โจมตีที่ปิงสูงกว่านั้นให้ย้อนได้ถึงเพดานเท่านั้น ส่วนที่เหลือให้ผู้โจมตียิงดักหน้าเอง
บนกราฟ
สูงเฉพาะบางกลุ่ม · เวลาที่ย้อนกลับต่อการโดนแต่ละครั้ง (แยกตามปิงของผู้โจมตี)
จุดที่ต้องดู
บันทึกเวลาที่ย้อนกลับ, RTT ของผู้โจมตี และเวลาเซิร์ฟเวอร์ที่ฝ่ายถูกยิงเข้าที่กำบัง ของการโดนแต่ละครั้งลงใน log การตัดสินของเซิร์ฟเวอร์ ใน dev build ลองวาด hitbox ที่ย้อนเวลาแล้วบนจอ (เอนจิน Source ใช้ sv_showlagcompensation)
สัญญาณว่าใช่
การโดนในเคสที่แจ้งว่า “หลบหลังกำแพงแล้วยังโดน” กระจุกอยู่ที่ผู้โจมตีที่ย้อนเวลานาน และเวลาที่ย้อนเพิ่มตามปิงของผู้โจมตีโดยไม่มีเพดาน
สัญญาณว่าไม่ใช่
โดนหลังกำแพงแม้ในการโดนที่ย้อนเวลาสั้น: น่าจะเป็นปัญหา hitbox หรือการตรวจการชน ถ้าฝ่ายที่ถูกยิงปิงสูง เป็นเพราะการเคลื่อนที่ของคนนั้นไปถึงเซิร์ฟเวอร์ช้า
วิธีตรวจ
ต้องมี log หรือเมตริกจากเซิร์ฟเวอร์/ไคลเอนต์เกม
รายละเอียดเพิ่มเติม
การตัดสินแบบย้อนเวลาเป็นแบบ “ยึดฝั่งผู้ยิง” และมีข้อเสนอข้อยกเว้นแบบ “ยึดฝั่งผู้ถูกยิง” คือไม่ย้อนเวลาถ้าฝ่ายที่ถูกยิงเข้าที่ปลอดภัยบนจอของตัวเองแล้ว

แหล่งอ้างอิง

  1. Peeking into VALORANT's Netcode Riot Games
    ถ้าการย้อนเวลาไม่มีเพดาน คนที่ดีเลย์ 500 ms จะยิงโดนได้แม้อีกฝ่ายเข้าที่กำบังไปแล้ว 0.5 วินาที จึงต้องตั้งเพดาน
  2. A Survey and Taxonomy of Latency Compensation Techniques for Network Computer Games (ACM Computing Surveys, 2022) ACM
    ปรากฏการณ์ “โดนยิงทั้งที่หลบเข้ามุมแล้ว (shot around the corner)”, เพดานการย้อนเวลาของเกม FPS เชิงพาณิชย์, ข้อเสนอเทคนิคที่ไม่ย้อนเวลาถ้าฝ่ายที่ถูกยิงอยู่ในที่ปลอดภัยแล้ว
  3. Source SDK 2013: player_lagcompensation.cpp Valve
    เพดานการย้อนเวลาของเอนจิน Source sv_maxunlag ค่าเริ่มต้น 1 วินาที (สูงสุด 1 วินาที), sv_showlagcompensation แสดง hitbox ที่ย้อนเวลาแล้วบนจอ

สาเหตุที่ควรดูประกอบ

ชั้นเดียวกัน: การออกแบบการซิงก์

สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (กดไม่ติด/โรลแบ็ค)

ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง