मैं बुलेट का उपयोग करके क्लाइंट / सर्वर भौतिकी प्रणाली को लागू करने की कोशिश कर रहा हूं, हालांकि मुझे चीजों को सिंक करने में समस्या आ रही है।
मैंने एक कस्टम मोशन स्टेट लागू किया है जो मेरे गेम ऑब्जेक्ट्स से ट्रांसफॉर्म को पढ़ता है और लिखता है और यह स्थानीय रूप से काम करता है लेकिन मैंने नेटवर्क गेम के लिए दो अलग-अलग तरीकों की कोशिश की है:
- क्लाइंट पर डायनामिक ऑब्जेक्ट जो सर्वर पर भी हैं (उदाहरण के लिए रैंडम मलबे और अन्य महत्वहीन सामान नहीं) कीनेमेटिक बनाए जाते हैं। यह सही ढंग से काम करता है लेकिन वस्तुएं बहुत आसानी से नहीं चलती हैं
- ऑब्जेक्ट दोनों पर गतिशील होते हैं, लेकिन सर्वर से प्रत्येक संदेश के बाद कि वस्तु को स्थानांतरित कर दिया है मैंने सर्वर से मानों को रैखिक और कोणीय वेग सेट किया है और btRigidBody कॉल करें :: सर्वर पर परिवर्तन के साथ आगे बढ़ें। मैं btCollisionObject भी कहता हूं: सक्रिय (सच्चा); वस्तु को अद्यतन करने के लिए बाध्य करना।
विधि 2 के साथ मेरा इरादा मूल रूप से विधि 1 करने का था, लेकिन एक गरीब आदमी की भविष्यवाणी करने के लिए बुलेट को हाईजैक करने की बजाय मेरी विधि 1 को सुचारू करने के लिए, लेकिन यह काम नहीं करता है (उन कारणों के लिए जो 100% स्पष्ट नहीं हैं मुझे भी बुलेट के माध्यम से कदम) और वस्तुओं को कभी-कभी अलग-अलग स्थानों पर समाप्त होता है।
क्या मैं सही दिशा में जा रहा हूं? लगता है कि बुलेट का अपना इंटरपोलेशन कोड बिल्ट-इन है। क्या इससे मुझे विधि 1 को बेहतर बनाने में मदद मिल सकती है? या मेरा तरीका 2 कोड काम नहीं कर रहा है क्योंकि मैं गलती से पेट भर रहा हूं?
संपादित करें: विधि 1 के साथ एक और समस्या मैंने अभी देखी है कि टकराव की प्रतिक्रिया गैर-सिंक्रनाइज़ ऑब्जेक्ट्स के खिलाफ टकराव के लिए बंद हो जाएगी। काइनेटिक पिंड कभी-कभी अनन्तता के लिए शूट का सामान होते हैं क्योंकि उन्हें वापस खटखटाया नहीं जा सकता।