आप एक खेल में "खुशबू ट्रेल्स" कैसे मॉडल कर सकते हैं?


11

कहते हैं कि आप एक 3D गेम बनाना चाहते हैं, और या तो खिलाड़ी हैं, या मोबाइल हैं, उनके सुगंधित ट्रेल्स का पालन करके अन्य इकाई को ट्रैक करने में सक्षम हैं। क्या कोई ज्ञात डेटा-संरचना है जो इस उपयोग के मामले से मेल खाती है?

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

मुझे लगता है कि यह एक सटीक संख्या के साथ शुरू करने की तरह है, और धीरे-धीरे कम से कम महत्वपूर्ण अंकों को खोना है, जब तक कि आप सबसे महत्वपूर्ण अंक को भी ढीला न करें। लेकिन यह वास्तव में मेरी मदद नहीं करता है, क्योंकि संस्था आईडी में आमतौर पर व्यक्तिगत आईडी के अलावा, इकाई प्रकार को शामिल करने के लिए एन्कोड नहीं किया जाता है।


बौना किला अगले रिलीज में कुछ ऐसा कर रहा है।
रसेल

जवाबों:


10

इसमें बहुत विविधता है कि आप यह कैसे कर सकते हैं; मैं "मेरे लिए स्पष्ट" विकल्पों का सुझाव देने जा रहा हूं, लेकिन बहुत सारी विविधताएं हैं जिन्हें डिजाइन किया जा सकता है। अस्वीकरण: मैंने वास्तव में ऐसा कुछ भी लागू नहीं किया है।

सबसे पहले, आपको एक डेटा संरचना की आवश्यकता होती है जो आपकी दुनिया को कवर करती है। यदि आप एक 3 डी अंतरिक्ष में एनपीसी आंदोलन कर रहे हैं, तो आपके पास शायद है, या अंततः आवश्यकता होगी, पैथफाइंडिंग उद्देश्यों के लिए ऐसी संरचना - कहें, एक नेविगेशन मेष। तो, चलो मान लेते हैं कि हम scents के लिए एक फ़ील्ड जोड़ सकते हैं।

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

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

ट्रैकिंग परिणाम प्राप्त करने के लिए, वर्तमान स्थान के लिए सूची में गंध ढूंढें, फिर अपने सभी पड़ोसियों के लिए भी ऐसा ही करें, और सबसे तेज़ गंध की दिशा में जाएं (यह वह दिशा नहीं है जो ट्रैकर अभी आया था)।

अतिरिक्त यथार्थवाद के लिए:

  • प्रसार: समय-समय पर प्रत्येक स्थान पर गंध का एक अंश अपने पड़ोसियों को हस्तांतरित करना। यह ट्रेल्स को भ्रमित करता है, लेकिन इसका मतलब यह भी है कि स्थिर चीजों को सूँघा जा सकता है (भोजन, शव, आदि ढूंढना)। (इस प्रकार की सूचनाओं पर पूरी तरह से कार्रवाई करने के लिए एआई का एक मान्यता प्राप्त प्रकार है - परिदृश्य इस बात की जानकारी प्रदान करता है कि किसी विशेष संसाधन को प्राप्त करने के लिए किस रास्ते पर जाना है, आदि मैं इसका नाम भूल जाता हूं।) मुख्य नुकसान समय व्यतीत होता है। हर जगह प्रसार की गणना।

  • मजबूत scents को कमजोर scents का पता लगाने से रोकना चाहिए; सबसे मजबूत खुशबू की ताकत से मांगे गए गंध की शक्ति को विभाजित करें, और यदि यह बहुत छोटा है तो असफल हो जाएं। यह जानबूझकर किसी के निशान को भ्रमित करने की अनुमति दे सकता है।


9

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

एक ट्यूटोरियल / स्पष्टीकरण मुझे मददगार लगा।

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