अंतरिक्ष युद्ध सिम में प्रकाश सूचना प्रसार की मॉडलिंग गति


29

मैं एक स्पेस कॉम्बैट सिम पर काम कर रहा हूं जो अपेक्षाकृत विशाल क्षेत्रों (अंतरिक्ष का एक घन ~ 20 प्रकाश मिनट एक तरफ) पर होता है और यथार्थवादी भौतिकी का उपयोग करता है। जिन प्रमुख तत्वों को मैं मॉडल करना चाहता हूं, उनमें से एक युद्ध की जगह पर सूचना की प्रसार गति है - यानी, यदि प्लेयर A अपनी मुख्य ड्राइव को युद्ध के स्थान के एक तरफ संलग्न करता है, तो प्लेयर B इसे देखने से पहले 20 मिनट की देरी करता है और उस पर प्रतिक्रिया कर सकते हैं

यहां तक ​​कि अपेक्षाकृत छोटे युद्ध स्थानों के लिए यह एक महत्वपूर्ण कारक है जिसमें गति शामिल है। 30kps करने वाला एक 500 मीटर लंबा जहाज 1/60 वें सेकंड में अपनी पूरी लंबाई से खुद को विस्थापित करने जा रहा है, इसलिए यहां तक ​​कि एक प्रतिद्वंद्वी को कुछ सेकंड के प्रकाश के कुछ ही दूरी पर लक्षित करने से हल्के अंतराल से प्रभावित होने वाले हैं।

मैंने इसे पहले नहीं देखा है, और मैं सोच रहा हूं कि क्या यह मॉडलिंग के लिए कुछ सर्वोत्तम अभ्यास हैं। अभी मैं प्रत्येक घटना को टाइमस्टैम्प कर रहा हूं और इसे एक स्थान के साथ चिह्नित कर रहा हूं, इसे एक कतार में रख रहा हूं, और फिर यह देखने के लिए प्रत्येक टिक चेक करेगा कि क्या खेल की दुनिया में कोई भी वस्तु प्रकाश शंकु के किनारे पर नई है और घटना को जोड़ रही है उनके सेंसर कतार में। मैं सभी वस्तुओं द्वारा पहले से ही समझी जाने वाली किसी भी घटना को हटाकर इसे (लेकिन अभी तक नहीं) अनुकूलित कर सकता हूं जो संभवतः इसे समझ सकता है, लेकिन फिर भी, मुझे लगता है कि यह बहुत ही तेजी से बोझिल हो रहा है, और बहुत कुछ खाएं साइकिल में अगर सेंसिंग सेंस की सैकड़ों वस्तुएं हैं (जो कि बहुत रूटीन है)।

क्या ऐसे डेटा मॉडल हैं जो इसके लिए बेहतर अनुकूल होंगे कि मुझे जांच करनी चाहिए?


7
जवाब नहीं, लेकिन मैं कहूँगा कि एक साफ सवाल क्या है!
टिम होल्ट

वाह! खेल ज्यादातर विज़ुअलाइज़ेशन के बारे में हैं। मुझे यह जानने की आवश्यकता है कि जब आप पिक्सेल बहुत बड़े होते हैं, तो आप विरोधियों की कल्पना कैसे करते हैं? सरल HUD संकेतक? एक पाठ मोड साहसिक खेल? कृपया मुझे ज्ञान दो!
जोनास बिस्ट्रॉम

1
आप कहते हैं कि आपका मॉडल शारीरिक रूप से सही है। क्या वह न्यूटनियन या सापेक्षवादी है? इस तरह के तराजू पर एक बड़ा फर्क पड़ सकता है।
मसलक

1
ऐसा नहीं है कि यह प्रश्न का उत्तर देता है, लेकिन हो सकता है कि A धीमी गति के प्रकाश को देखने से आपको कुछ विचार मिलेंगे।
माइकल पानकोव

@ JonasByström - लंबी दूरी का दृश्य बहुत जटिल है, और मैं इसे साफ करने की कोशिश कर रहा हूं। मूल रूप से, मैं उम्मीद कर रहा हूं कि यह एक संभावित दृष्टिकोण होगा जहां लक्ष्य भविष्य में होगा, प्रकाश अंतराल और आपके जहाज कंप्यूटर के लक्ष्य के अधिकतम डेल्टा-वी के अनुमानों के आधार पर। अभी यह कम से कम भयानक है, हालांकि :)
जॉन बिस्नेकर

जवाबों:


9

बस यहां विचार मंथन ...

दिलचस्प बात यह है कि इस मामले में नेटवर्क लैग आपका दोस्त है। जैसा कि आप कुछ डेटा पैकेट के लिए होने में देरी चाहते हैं, कम से कम अगर यह ड्राइंग के बारे में है। लेकिन बेस लैग के बजाय प्रत्येक खिलाड़ी सामान्य रूप से सिर्फ अपने नेटवर्क की गति से प्रभावित सभी डेटा पैकेट के लिए होगा, आपको प्रत्येक इवेंट के लिए प्रत्येक खिलाड़ी के लिए लाइट-स्पीड देरी के आधार पर विशिष्ट अंतराल लागू करने की आवश्यकता है।

आमतौर पर सर्वर एक ही समय में सभी ग्राहकों को अपडेट भेज देता है, लेकिन आपको प्रत्येक घटना के लिए "लाइट लैग" की गणना करने के लिए सर्वर की क्या जरूरत है (दर्शक की दूरी के आधार पर), और तब तक अपडेट न भेजें। पहर।

इसलिए हर घटना के लिए, घटना और प्रत्येक खिलाड़ी के बीच समय की देरी की गणना करें, फिर उस घटना को कतार में रखें जब तक कि देरी होने तक उस खिलाड़ी को ड्राइंग के लिए नहीं भेजा जाए।

यह ईवेंट बदलने के बाद खिलाड़ी की स्थिति या गति के प्रभाव को संबोधित नहीं करता है, लेकिन आप संभावित रूप से उन ईवेंट को समायोजित कर सकते हैं जो खिलाड़ी परिवर्तनों के आधार पर कतारबद्ध किए गए थे। एक खिलाड़ी समय के साथ करीब आना, घटना को करीब ले जाना शुरू कर देता है। खिलाड़ी दूर चला जाता है, समय में दूर चला जाता है।

दर्शक और घटना के बीच आंदोलन डेल्टा के आधार पर, डॉपलर शिफ्ट को मिश्रण में फेंकना एक दिलचस्प बात होगी।


मैं पहले से ही बदलती स्थिति और गति को मॉडल बनाता हूं। पैमाने के बावजूद, खेल में वस्तुओं को आम तौर पर प्रकाश की गति का एक सराहनीय अंश नहीं मिलता है, इसलिए घटनाएं अपेक्षाकृत आसानी से आगे निकल जाती हैं, लेकिन अगर रिसीवर उस क्षेत्र में हो तो प्रत्येक टिक पर एक जांच हो। घटना, इसलिए यदि आप एक अच्छी क्लिप पर या दूर की ओर बढ़ रहे हैं तो यह कुछ टिकों द्वारा इसे प्रभावित कर सकता है। डॉपलर वास्तव में दिलचस्प होगा, हालांकि! देखने के लिए कुछ। :-)
जॉन बिस्नेकर

2
कुछ के बारे में पता होना चाहिए, यदि आप इस पद्धति का उपयोग करते हैं, तो पैकेट को स्कैन करने वाला कोई भी व्यक्ति पहले जानकारी प्राप्त करने में सक्षम नहीं होगा। ईव ऑनलाइन क्लॉक्ड जहाजों के साथ कुछ ऐसा ही करता है। जब किसी क्षेत्र में कोई भी जहाज चलता है तो सभी क्लाइंट को सूचित किया जाता है, लेकिन जब एक क्लोक्ड जहाज चलता है तो ग्राहकों को कुछ भी नहीं बताया जाता है। अन्यथा, हालांकि ग्राहक जहाज नहीं दिखाता है, पैकेट होगा।
रे ब्रिटन

5

सवाल यह है: आपको अपनी विलंबित छवि की कितनी सटीक आवश्यकता है कि यह वास्तव में कैसे खेला जाए? यदि आप 100% सटीकता की तलाश कर रहे हैं, तो आपको प्रत्येक टिक पर मानचित्र पर प्रत्येक ऑब्जेक्ट की क्रियाओं या स्थिति को सहेजने की आवश्यकता होगी, जैसा कि आप कहते हैं, उन्हें दूरी के आधार पर देरी पर फिर से खेलना। यदि आप पिनपॉइंट सटीकता के बारे में इतना ध्यान नहीं रखते हैं, जिसकी आपको शायद ही कभी खेलों में आवश्यकता होती है, तो आप अंतराल पर राज्य को बचा सकते हैं और जब विलंब होता है, तो उनके बीच एक्सट्रपलेशन कर सकते हैं। आप समान अपडेट सेव न करके ऑप्टिमाइज़ कर सकते हैं।

वैकल्पिक रूप से, आप सभी आंदोलन को वेक्टर कर सकते हैं और एक सार्वभौमिक पर्यवेक्षक से शुरू किए गए समय के साथ प्रत्येक वस्तु के लिए एक रास्ता बचा सकते हैं। तब आप केवल प्रत्येक पर्यवेक्षक के लिए किसी वस्तु की अपेक्षित स्थिति की गणना कर सकते हैं जो सार्वभौमिक समय के आधार पर स्थानीय समय काउंटर पर आधारित पथ नोड्स को सहेजता है। जब एक पथ नोड का टाइमस्टैम्प सभी प्रासंगिक वस्तुओं के लाइटकॉन के पीछे चला जाता है जिसे आप इसे छोड़ देते हैं।

संपादित करें: ऊपर माना जाता है कि आप एक निरपेक्ष पर्यवेक्षक (मैं खिलाड़ी मान लेता हूं) को बुनियादी सापेक्षता पर धोखा देने जा रहा हूं। यह आपको समय के फैलाव के कुछ और दिलचस्प पहलुओं से रूबरू कराएगा, लेकिन मॉडलिंग करना अपने आप में एक परियोजना होगी> _>

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.