ฉันกำลังพยายามใช้ระบบฟิสิกส์ของลูกค้า / เซิร์ฟเวอร์โดยใช้ Bullet แต่ฉันมีปัญหาในการทำให้สิ่งต่าง ๆ ตรงกัน
ฉันใช้สถานะภาพเคลื่อนไหวที่กำหนดเองซึ่งอ่านและเขียนการแปลงจากวัตถุเกมของฉันและทำงานได้ในเครื่อง แต่ฉันได้ลองวิธีที่แตกต่างกันสองวิธีสำหรับเกมเครือข่าย:
- วัตถุแบบไดนามิกบนไคลเอนต์ที่อยู่บนเซิร์ฟเวอร์ (เช่นไม่ใช่เศษเล็กเศษน้อยและสิ่งที่ไม่สำคัญอื่น ๆ ) ทำด้วยจลนศาสตร์ ทำงานได้อย่างถูกต้อง แต่วัตถุไม่เคลื่อนไหวอย่างราบรื่นมาก
- วัตถุเป็นแบบไดนามิกทั้งบน แต่หลังจากแต่ละข้อความจากเซิร์ฟเวอร์ที่วัตถุได้ย้ายฉันตั้งค่าความเร็วเชิงเส้นและเชิงมุมเป็นค่าจากเซิร์ฟเวอร์และเรียก btRigidBody :: ดำเนินการต่อไปเปลี่ยนด้วยการแปลงบนเซิร์ฟเวอร์ ฉันยังเรียก btCollisionObject :: เปิดใช้งาน (จริง); เพื่อบังคับวัตถุให้อัปเดต
ความตั้งใจของฉันกับวิธีที่ 2 คือโดยทั่วไปแล้วให้ทำตามวิธีที่ 1 แต่การจี้กระสุนเพื่อทำคำทำนายของคนยากจนแทนที่จะทำเองเพื่อทำให้วิธีที่ 1 ราบรื่น แต่ดูเหมือนจะไม่ทำงาน (เพราะเหตุผลที่ไม่ชัดเจน 100% ถึง ฉันยังก้าวผ่านกระสุน) และบางครั้งวัตถุก็จบลงในที่ต่าง ๆ
ฉันกำลังมุ่งหน้าไปในทิศทางที่ถูกต้องหรือไม่? กระสุนดูเหมือนว่าจะมีรหัสการแก้ไขของตัวเอง นั่นช่วยให้ฉันทำวิธีที่ 1 ได้ดีขึ้นหรือไม่ หรือรหัสวิธีที่ 2 ของฉันใช้งานไม่ได้เพราะฉันตั้งใจที่จะทำเช่นนั้น?
แก้ไข: ปัญหาอีกประการหนึ่งของวิธีที่ 1 ฉันเพิ่งสังเกตเห็นว่าการตอบสนองการชนจะเป็นวิธีการปิดสำหรับการชนกับวัตถุที่ไม่ตรงกัน บางครั้งร่างกายจลนศาสตร์ของสิ่งที่ยิงไปไม่สิ้นสุดเนื่องจากพวกเขาไม่สามารถเคาะกลับ