ฉันจะซิงค์ไคลเอ็นต์และเซิร์ฟเวอร์เมื่อส่งการเปลี่ยนแปลงความเร็วของผู้เล่นได้อย่างไร


10

ฉันใช้การคาดการณ์ฝั่งไคลเอ็นต์ คำอธิบายส่วนใหญ่ถือว่าลูกค้าส่งข้อความเช่น " ย้ายผู้เล่นของฉันขึ้น 1 ตำแหน่ง " ถ้าฉันส่งข้อความเช่น " ตั้งค่าความเร็วผู้เล่นเป็น x " จะเป็นอย่างไร

กราฟิกอธิบาย  แสดงข้อความที่ส่งและตำแหน่งที่คำนวณบนไคลเอนต์และเซิร์ฟเวอร์เมื่อเวลาผ่านไป

บนไคลเอนต์โปรแกรมเล่นจะตั้งค่าความเร็วของตัวเอง (ตามการทำนายฝั่งไคลเอ็นต์) ก่อนที่เซิร์ฟเวอร์จะทำ ปัญหานี้ยังคงอยู่แม้จะพิจารณาความล่าช้าเฉลี่ย

ฉันจะจัดการสิ่งนี้ได้อย่างไร

คำตอบ:


8

คุณควรส่งข้อมูลที่ซ้ำซ้อนซึ่งหมายความว่าส่งตำแหน่งและความเร็ว แม้ว่าคุณจะไม่ซิงค์ความจริงที่ว่าคุณมีตำแหน่งและความเร็วช่วยให้คุณสามารถแก้ไขเส้นทางการเคลื่อนที่โดยใช้ฟังก์ชั่นการแก้ไข

จากนั้นใช้เทคนิคบางอย่างเช่นภาพเคลื่อนไหวล่าช้าการเร่งความเร็ว ฯลฯ อนุญาตให้ซ่อนเวลาแฝง

แก้ไข:ฉันถือว่าเซิร์ฟเวอร์มีสิทธิ์


ขอบคุณสำหรับคำตอบ. ใช่เซิร์ฟเวอร์มีสิทธิ์ แต่แม้ว่าฉันจะส่งข้อมูลซ้ำซ้อนด้วยความเร็วของฉันลูกค้าสามารถแก้ไขข้อผิดพลาดของเขา แต่ฉันมักจะอ่านสิ่งต่าง ๆ เช่น "ถ้าไคลเอนต์ / เซิร์ฟเวอร์ใช้รหัสที่ใช้ร่วมกันสำหรับเอนทิตีของพวกเขา ในกรณีของฉันพวกเขามักจะเกิดขึ้นเล็กน้อยซึ่งจะทำให้เกิดการพูดติดอ่างไปทั่ว
Blu3

1
@ user13842 ไคลเอนต์มักจะหลุดจากการซิงค์คุณควรแก้ไขตำแหน่งและความเร็วฝั่งไคลเอ็นต์อย่างที่ Thelvyn กล่าวตามที่เซิร์ฟเวอร์ส่งให้คุณ ในแบบที่คุณไม่ได้รับการเคลื่อนไหวที่พูดติดอ่างเว้นแต่ลูกค้าของคุณจะออกจากกันอย่างสมบูรณ์แล้วคุณจะต้อง snap ค่าเพราะการแก้ไขจะใช้เวลามากเกินไป
dreta

นี่คือเหตุผลหลักที่ใช้ฟังก์ชั่นการแก้ไข คุณไม่สามารถหลีกเลี่ยงความล่าช้าดังนั้นคุณต้องแก้ไขการเคลื่อนไหวอย่างราบรื่น ลูกค้าและเซิร์ฟเวอร์จำลองโลก แต่ลูกค้าต้องฟังเซิร์ฟเวอร์และดำเนินการแก้ไข เทคนิคบางอย่างที่ใช้ในระบบเครือข่ายของ Source Engine: developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
Thelvyn

มันถูกกล่าวถึงสั้น ๆ ใน google talk เช่นนี้ก็ควรจะได้รับความคิดในyoutube.com/watch?v=Prkyd5n0P7k#t=18m47s
dreta

ฉันได้พบวิธีแก้ไขปัญหาอื่นสำหรับปัญหานี้โดยเฉพาะ ฉันเพิ่มเวลาที่ไคลเอ็นต์ใช้อินพุตของเขากับแต่ละแพ็กเก็ต ความหมาย # 1 จะมีเวลา: 0 และครั้งที่สอง: 100 ตอนนี้เซิร์ฟเวอร์รู้ว่าลูกค้ากดปุ่มที่เวลา: 100 และไม่ก่อน
Blu3
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.