การปรับใช้เครือข่ายให้ราบรื่น


13

เรากำลังทำนักกีฬาคนแรกที่ทวีคูณ ลูกค้าส่งตำแหน่งไปยังเซิร์ฟเวอร์ในอัตราคงที่ (ปัจจุบันอยู่ที่ 10Hz) เซิร์ฟเวอร์จะส่งข้อความเดียวที่เกี่ยวข้องกับตำแหน่งของผู้เล่นทุกคนในอัตราเดียวกัน (10Hz)

ตามที่คาดไว้การเคลื่อนไหวค่อนข้างเร็วเนื่องจากเกม 60fps ได้รับการอัพเดทเพียง 10 ครั้งต่อวินาที วิธีที่ดีที่สุดในการทำให้การเคลื่อนไหวนี้ราบรื่นคืออะไร? วิธีที่ชัดเจนที่สุดคือการสอดแทรกระหว่างสองแพ็กเก็ตล่าสุดเพื่อให้การแก้ไขเสร็จสิ้นเมื่อเรารับแพ็กเก็ตใหม่ แต่สิ่งนี้จะเพิ่มความล่าช้า 100ms ทันทีสำหรับผู้เล่นทุกคน

อีกวิธีหนึ่งคือใช้ความเร็วและความเร่งที่อนุมานจากแพ็คเก็ตสุดท้ายเพื่อทำนายว่าผู้เล่นอยู่ที่ไหนก่อนที่แพ็กเก็ตต่อไปจะมาถึงอย่างไรก็ตามหากการทำนายผิดผู้เล่นจะมีแนวโน้มที่จะกระโดดทันทีที่แพ็กเก็ตใหม่ได้รับ .

ไม่มีใครรู้ว่าชื่อ AAA แก้ปัญหานี้ได้อย่างไร

คำตอบ:


9

พวกเขาทำสิ่งที่คุณเพิ่งพูดไป - อย่างใดอย่างหนึ่งในสองวิธีที่หรือประนีประนอมระหว่างพวกเขา (เช่นยอมรับการหน่วงเวลาเล็กน้อยและการสอดแทรกหากทำได้และคาดการณ์เมื่อ ping เกินการหน่วงเวลานั้น) แทนที่จะกระโดด (เรียกอีกอย่างว่า 'การหัก') กลับสู่ตำแหน่งที่ถูกต้องคุณมักทำการประมาณระหว่างการทำนายผิด และค่าที่ถูกต้องปรับให้เรียบถ้าเป็นไปได้ คุณยังจัดการการแก้ไขในอดีตเพื่อลดจำนวนการแก้ไขที่คุณต้องใช้

นี่เป็นคำถามที่พบบ่อยและมีลิงก์หลายบัญญัติซึ่งคุณอาจพบที่อื่นใน gamedev.stackexchange.com หากคุณค้นหาและพวกเขารวมถึงต่อไปนี้:

สิ่งที่โปรแกรมเมอร์ทุกคนจำเป็นต้องรู้เกี่ยวกับระบบเครือข่ายเกม (สิ่งนี้จะสรุปสิ่งต่างๆในลิงค์ถัดไปสองอัน)

แหล่งเครือข่ายผู้เล่นหลายคน

สถาปัตยกรรมเครือข่ายไม่จริง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.