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

คู่มือเกมแลค › L1 โปรเซสเกมฝั่งไคลเอนต์

ซิงก์นาฬิกาคลาดเคลื่อน Clock sync error

ID สาเหตุ cg-clock · ผู้รับผิดชอบหลัก พัฒนาไคลเอนต์ (ทีมพัฒนาเกม)

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

ถ้าเวลาเซิร์ฟเวอร์ที่ไคลเอนต์ประมาณไว้ผิด จังหวะ interpolation และการตัดสินคูลดาวน์จะคลาดกัน

ทำไม ตั้งเวลาให้ตรงกับเซิร์ฟเวอร์แค่ครั้งเดียวตอนเชื่อมต่อ แม้ปิงเปลี่ยนก็ไม่ปรับ → ผลคือ จังหวะที่ใช้ interpolate และเวลาที่คูลดาวน์หมดคลาดจากเซิร์ฟเวอร์ → บนหน้าจอ อีกฝ่ายหยุดแวบเป็นบางครั้ง คูลดาวน์หมดแล้วแต่สกิลถูกปฏิเสธ

อาการ
กระตุก, กดไม่ติด/โรลแบ็ค
ปัจจัย
ความหน่วง
ใครเจอ
เราคนเดียว
เกิดเมื่อไร
ยิ่งเปิดไว้นานยิ่งเป็น, สุ่มเป็นครั้งคราว
ผู้รับผิดชอบ
ผู้รับผิดชอบหลัก พัฒนาไคลเอนต์ (ทีมพัฒนาเกม)
งานฝั่งทีมพัฒนาเกม
ซิงก์เวลาเป็นระยะ (วัดเวลาไปกลับแล้วชดเชย), ค่อย ๆ ปรับเข้าหาแทนการเปลี่ยนกะทันหัน, วัดเวลาที่ผ่านไปด้วย monotonic clock แทนเวลาของ PC
บนกราฟ
ค่อย ๆ สูงขึ้น · ค่าคลาดเคลื่อนของเวลาเซิร์ฟเวอร์ที่ประมาณไว้
จุดที่ต้องดู
บันทึกผลต่างระหว่างเวลาเซิร์ฟเวอร์ที่ไคลเอนต์ประมาณไว้กับเวลาเซิร์ฟเวอร์ (หมายเลขทิก) ที่เซิร์ฟเวอร์ใส่มาในแพ็กเก็ต เป็นระยะ
สัญญาณว่าใช่
ค่าคลาดเคลื่อนโตขึ้นเรื่อย ๆ หลังเชื่อมต่อ หรือกระโดดทีเดียวตอนที่นาฬิกา PC ถูกปรับ และช่วงนั้นมีการแจ้งสกิลถูกปฏิเสธหรือหยุดแวบเพิ่มขึ้น
สัญญาณว่าไม่ใช่
ค่าคลาดเคลื่อนยังเล็กอยู่แต่สกิลถูกปฏิเสธ: ให้ดูฝั่งการตัดสินผลของเซิร์ฟเวอร์และความหน่วง
วิธีตรวจ
ต้องมี log หรือเมตริกจากเซิร์ฟเวอร์/ไคลเอนต์เกม
รายละเอียดเพิ่มเติม
ถ้าวัดเวลาที่ผ่านไปด้วยวันที่และเวลาของ PC (wall clock) ทันทีที่ Windows ปรับนาฬิกาตามเวลาอินเทอร์เน็ตหรือผู้ใช้เปลี่ยนนาฬิกา เวลาในเกมจะกระโดด เวลาที่ผ่านไปต้องวัดด้วยนาฬิกาที่ไม่ย้อนกลับ (monotonic clock เช่น Stopwatch)

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

  1. RFC 5905: Network Time Protocol Version 4: Protocol and Algorithms Specification IETF
    วิธีคำนวณดีเลย์ไปกลับและค่าคลาดเคลื่อนของนาฬิกาจากเวลาสี่จุดของคำขอและการตอบกลับ
  2. Acquiring high-resolution time stamps Microsoft
    QueryPerformanceCounter (ที่ Stopwatch ใช้) เป็นนาฬิกาสำหรับวัดเวลาที่ผ่านไปซึ่งไม่ซิงก์กับเวลาภายนอก ใช้เวลาของระบบเฉพาะเมื่อต้องการเวลา UTC
  3. Time synchronization (Netcode for Entities 6.5) Unity
    ประมาณเวลาเซิร์ฟเวอร์จากเวลาไปกลับ แล้วปรับเข้าหาโดยค่อย ๆ ปรับความเร็วการเดินของเวลา แทนการเปลี่ยนเวลาทีเดียวมาก ๆ

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

ชั้นเดียวกัน: L1 โปรเซสเกมฝั่งไคลเอนต์

สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (กระตุก)

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