คู่มือเกมแลค › ปัญหาที่เกิดกับบางคนเท่านั้น
อาการกรอเร็วจากเซิร์ฟเวอร์ที่ประมวลผลทันทีที่ได้รับ Event-driven processing of bursty inputs
ID สาเหตุ pt-event-server · ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม) · ร่วมกับ พัฒนาไคลเอนต์ (ทีมพัฒนาเกม)
เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →
บนเซิร์ฟเวอร์ที่ประมวลผลและแจ้งผลทันทีที่แพ็กเก็ตมาถึง การกระทำของคนที่ช้าซึ่งมาถึงเป็นกลุ่มจะถูกรันทันทีต่อเนื่องกัน
ทำไม คำขอสกิลและการเคลื่อนที่ของคนที่ช้ามาถึงเป็นกลุ่ม → ผลคือ เซิร์ฟเวอร์รันตามลำดับทันทีที่ได้รับ และแจ้งทุกคนทันที → บนหน้าจอ คนอื่นเห็นคนนั้นใช้สกิลหลายสกิลในพริบตาเดียว หรือขยับเหมือนกดกรอ
- อาการ
- กรอเร็ว
- ปัจจัย
- จิตเตอร์
- ใครเจอ
- เห็นตัวละครบางตัวผิดปกติ
- เกิดเมื่อไร
- ตอนทำแอ็กชันบางอย่าง, ตลอดเวลา
- ผู้รับผิดชอบ
- ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม) · ร่วมกับ พัฒนาไคลเอนต์ (ทีมพัฒนาเกม)
- งานฝั่งทีมพัฒนาเกม
- เซิร์ฟเวอร์: รันตามช่วงห่างของเวลาอินพุตที่ติดมากับการกระทำ (ยอมรับเวลานั้นเฉพาะเมื่ออยู่ในช่วงที่อนุญาต) หรือรับการกระทำที่มาเป็นกลุ่มไว้แล้วรันทีละอย่างโดยเว้นช่วงห่างขั้นต่ำ (global cooldown), อย่าตรวจคูลดาวน์จากเวลาที่มาถึงอย่างเดียว (อินพุตปกติจะกดไม่ติด) ไคลเอนต์: ติดเวลาอินพุตให้การกระทำก่อนส่ง
- บนกราฟ
- สูงเฉพาะบางกลุ่ม · ช่วงห่างการรันการกระทำแยกตามผู้เล่น
- จุดที่ต้องดู
- บันทึกเวลาที่การกระทำของผู้เล่นแต่ละคนมาถึง, เวลาที่รัน และเวลาอินพุตที่ไคลเอนต์ติดมา (ถ้ามี) ลงใน log ของเซิร์ฟเวอร์ แล้วเทียบช่วงห่างการรันกับช่วงห่างอินพุต ดูช่วงห่างการมาถึงของแพ็กเก็ตจากผู้เล่นคนนั้นใน packet capture ฝั่งเซิร์ฟเวอร์ประกอบด้วย
- สัญญาณว่าใช่
- ช่วงห่างอินพุตปกติ แต่ช่วงห่างการมาถึงและการรันบนเซิร์ฟเวอร์อัดกันเหลือไม่กี่ ms และจังหวะที่อัดกันตรงกับเวลาที่คนอื่นแจ้งว่าเห็นอาการกรอเร็ว
- สัญญาณว่าไม่ใช่
- ช่วงห่างของเวลาอินพุตอัดกันตั้งแต่ต้น: น่าจะเป็นที่ไคลเอนต์หรือมาโคร ถ้าช่วงห่างการรันบนเซิร์ฟเวอร์สม่ำเสมอแต่ดูอัดกันเฉพาะบนจอคนอื่น น่าจะเป็นเน็ตของคนดู
- วิธีตรวจ
- ต้องมี log หรือเมตริกจากเซิร์ฟเวอร์/ไคลเอนต์เกม
แหล่งอ้างอิง
- Understanding Networked Movement in the Character Movement Component for Unreal Engine Epic Games
เซิร์ฟเวอร์คำนวณการเคลื่อนที่ทุกครั้งที่ได้รับ ServerMove และกำหนดช่วงเวลาจากผลต่างของ timestamp กับการเคลื่อนที่ก่อนหน้า ถ้าต่างจากเวลาเซิร์ฟเวอร์มากเกินไปจะทิ้งการเคลื่อนที่นั้น - Deterministic Lockstep Gaffer On Games
ถ้าใช้อินพุตทันทีที่มาถึง แม้ส่งที่ 60 Hz ช่วงห่างก็ไม่สม่ำเสมอ ผลจึงไม่สม่ำเสมอตาม
สาเหตุที่ควรดูประกอบ
ชั้นเดียวกัน: ปัญหาที่เกิดกับบางคนเท่านั้น
สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (กรอเร็ว)
ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง