คู่มือเกมแลค › L1 โปรเซสเกมฝั่งไคลเอนต์
extrapolation มากเกินไป (dead reckoning) Over-extrapolation / dead reckoning
ID สาเหตุ cg-extrap · ผู้รับผิดชอบหลัก พัฒนาไคลเอนต์ (ทีมพัฒนาเกม)
เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →
ระหว่างที่แพ็กเก็ตไม่มา เกมแสดงตัวละครให้เคลื่อนที่ต่อด้วยความเร็วล่าสุด แล้วดึงกลับเมื่อรู้ว่าผิด
ทำไม แพ็กเก็ตขาดหาย เกมจึงให้เคลื่อนที่ต่อไปตามทิศทางและความเร็วล่าสุด → ผลคือ ความจริงอีกฝ่ายหยุดหรือเปลี่ยนทิศไปแล้ว → บนหน้าจอ ตัวละครอีกฝ่ายเดินไปไกลแล้ววืดไปอยู่ตำแหน่งจริงทันที หรือเดินทะลุกำแพง ถ้าช่วงห่างการมาถึงของแพ็กเก็ตไม่สม่ำเสมอ จะวิ่งนำไปแล้วถูกดึงกลับซ้ำ ๆ จนดูเหมือนสั่น
อาการ วาร์ป , กระตุก
ปัจจัย แพ็กเก็ตหาย, จิตเตอร์
ใครเจอ เราคนเดียว
เกิดเมื่อไร สุ่มเป็นครั้งคราว
ผู้รับผิดชอบ ผู้รับผิดชอบหลัก พัฒนาไคลเอนต์ (ทีมพัฒนาเกม)
งานฝั่งทีมพัฒนาเกม จำกัดเวลา extrapolation (เช่น 200–250 ms), เมื่อผิดให้ค่อย ๆ ปรับเข้าหาตำแหน่งจริงอย่างนุ่มนวล
ตัวเลขที่ควรรู้ ถ้าความเร็ว 6 เมตรต่อวินาที ผิดไปแค่ 300 ms ก็คลาดไป 1.8 เมตร
บนกราฟ พุ่งแบบสุ่มเป็นครั้งคราว · เวลา extrapolation, ระยะที่ต้องแก้ตำแหน่ง
จุดที่ต้องดู บันทึกเวลาที่วาดตัวละครอื่นด้วย extrapolation และระยะที่แก้ตำแหน่งหลังแพ็กเก็ตใหม่มาถึง สัญญาณว่าใช่ ทุกช่วงที่แพ็กเก็ตขาด เวลา extrapolation ยาวขึ้นโดยไม่มีเพดาน และหลังจากนั้นระยะแก้ตำแหน่งกลายเป็นหลายเมตร สัญญาณว่าไม่ใช่ extrapolation ถูกตัดสั้นแล้วแต่ยังวาร์ป: แพ็กเก็ตหายหรือความหน่วงสูงเอง ให้ดูฝั่งเน็ตและเส้นทาง วิธีตรวจ ต้องมี log หรือเมตริกจากเซิร์ฟเวอร์/ไคลเอนต์เกม
แหล่งอ้างอิง Interpolation and extrapolation (Netcode for Entities 6.5) Unity extrapolation ที่ให้เคลื่อนที่ต่อในทิศทางและความเร็วเดิมเมื่อสแนปช็อตถัดไปมาไม่ทันนั้นผิดบ่อย จึงต้องมีเพดาน (ค่าเริ่มต้นของ Unity คือ 20 ทิก หรือราว 1/3 วินาทีที่ 60 Hz) Peeking into VALORANT's Netcode Riot Games ถ้าเดาเพื่อเติมข้อมูลที่มาช้าหรือหายไปแล้วผิด จะคลาดจากเซิร์ฟเวอร์ ตัวละครจึงกระโดดหรือถูกแก้ตำแหน่งแบบลื่นไถล
สาเหตุที่ควรดูประกอบ
ชั้นเดียวกัน: L1 โปรเซสเกมฝั่งไคลเอนต์
สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (วาร์ป)
ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง