चोक-पॉइंट्स पर भीड़ से निपटने की रणनीतियाँ


9

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

डोरवे टक्कर की समस्या

तीन गेंदों ने छवि के निचले हिस्से के पास अपनी यात्रा शुरू की, उनका लक्ष्य था जहां गुलाबी गेंद रुक गई है। रास्ते में दीवार पर चोक-बिंदु पर लाल और हरे रंग की गेंदें अटक गई हैं।

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

ऐसी स्थितियों को हल करने के लिए आमतौर पर किन तरीकों का इस्तेमाल किया जाता है? शायद किसी प्रकार की प्राथमिकता वाली कतार प्रणाली काम करेगी, हालाँकि मैं इसे 2 से अधिक वस्तुओं के बीच प्राथमिकता तय करने के लिए एक बार जटिल होते हुए देख सकता हूँ।


मैं स्टीयरिंग क्राउड मैनेजमेंट से भी निराश हूं। क्या आप प्रश्न में "आवेग आधारित आंदोलन" के बारे में कुछ लिंक जोड़ सकते हैं?
क्रॉम्स्टर

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

जवाबों:


3

प्रत्येक चल ऑब्जेक्ट को एक अनन्य इंडेक्स असाइन करें और कम इंडेक्स वाले एजेंट को स्थानांतरित करने से उच्च इंडेक्स के साथ ऑब्जेक्ट को प्रतिबंधित करें। यह 'पुराने' ऑब्जेक्ट को 'नए' को न्यूड करने की अनुमति देगा, लेकिन इसके विपरीत और कतार से कम उपरि नहीं है। अनिवार्य रूप से, सूचकांक एक आंदोलन प्राथमिकता के रूप में कार्य करता है।


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

मैंने मास या टीम पर विचार नहीं किया था; मेरे उत्तरों को पैच करने के लिए आपके ट्वीक तार्किक तरीके से लगते हैं।
पिकालेक

2

पथ खोज में समय जोड़ें

यहाँ एक पेपर है जो उस समय के क्यूब के बारे में बात करता है: http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Applications_files/coop-path-AIWisdom.pdf

यहाँ छवि विवरण दर्ज करें

और यहाँ एक उद्देश्य-सी कार्यान्वयन है: http://allatra-i.com/ASIPathFinder

यहाँ छवि विवरण दर्ज करें


1
मैंने इसके बारे में पहले पढ़ा है और इसे लागू किया है। यहां तक ​​कि कई धागे के साथ यह मेरी स्थिति में ज्यादा उपयोग नहीं है। एक आरटीएस गेम में सैकड़ों चलती हुई इकाइयाँ और मानचित्र-ग्रिड हो सकते हैं जो एक तरफ 500 वर्ग से अधिक हैं। प्रत्येक इकाई के लिए समय आधारित पथों की गणना करने के लिए ओवरहेड बस बहुत अधिक है। बस जोड़ने के लिए, मैं यह नहीं कह रहा हूँ कि रकाराज का उत्तर गलत है, यह एक बहुत साफ एल्गोरिथ्म है। मैं सिर्फ यह कह रहा हूं कि यह जिन स्थितियों में उपयोगी है, वे इसकी जटिलता से सीमित हैं।
तेरह

फिर मैं पूरी तरह से समझने और इसे लागू करने के बजाय प्रत्येक मोड़ को खोजने के लिए अपने पूरे पथ को फिर से चलाता हूं, लेकिन मुझे लगता है कि मुझे अंततः
रक्का रेज

0

दरअसल, मुझे नहीं लगता कि आपको इसे ठीक करना चाहिए। अगर (मैं अनुमान लगा सकता हूं) तीर संकेत देते हैं कि किसी भी क्षेत्र में, किसी भी क्षेत्र में (शायद "द्वि-रेखीय" या इसी तरह, या किसी और तरह से "0 से अधिक" एनालॉग ") की तरह, किसी भी क्षेत्र पर लागू किए गए बल वैक्टर को इंगित करें, तो ठीक है व्यवहार शारीरिक रूप से सही है और आपको एक अच्छा व्यवहार करने के लिए खुद को बधाई देना चाहिए।

2 गोले एक अच्छे संतुलन में हैं, क्योंकि वे वहां बैठते हैं और एक-दूसरे से नफरत करते हैं। जाहिरा तौर पर, अगर वे दाएं से थोड़ा आगे बढ़ते हैं, तो दाईं ओर "बल तीर", दाएं हिस्से को थोड़ा अधिक प्रभावित करता है (और बाईं ओर के गोले के विपरीत, थोड़ा कम), और इसलिए वे वापस संतुलन की ओर बढ़ते हैं। इसे इस तरह का होना चाहिए है।

Imho, क्या तय किया जाना चाहिए दीवार, या क्षेत्र आकार, या खुद buildstones के बीच कुछ और है। आपने एक असंभावना पैदा कर दी है और उस स्थिति में सही व्यवहार तदनुसार है एक गतिरोध (शब्दों के दुरुपयोग के लिए खेद है, मुझे आशा है कि आप उन्हें वैसे भी :-))।

शायद इसके बजाय निकटतम बाएँ / दाएँ बल के तीर को अक्षम करें, या उन्हें किसी अन्य तरीके से व्यवस्थित करें जो सममित नहीं है और संतुलन के लिए प्रोत्साहित नहीं करता है ?

मुझे लगता है कि यह कृत्रिम रूप से ठीक करने के लिए एक बुरा तय होगा ... बहुत जल्दी बालों को मिलेगा।


इस सवाल का जवाब नहीं है। मैं आपकी प्रेरणा को समझता हूं, लेकिन अंततः सवाल यह है कि स्थिति से कैसे निपटा जाए। हम गेमप्ले के इरादों को नहीं जानते हैं, इसलिए निर्णय लेना यह एक समस्या है या फाइबल्स पर निर्भर नहीं है। दीवार को बदलने से चोकेपॉइंट का उद्देश्य बदल सकता है। सवाल एक वैध समस्या है जिसे हल किया जा सकता है।
फेलिसिर

मेरा उत्तर मूल रूप से है: (पुनः) बलों को व्यवस्थित करें या परिदृश्य में कुछ और फिर से व्यवस्थित करें, लेकिन भौतिक विज्ञान सॉल्वर से हाथापाई न करें (" इम्हो, क्या तय किया जाना चाहिए दीवार, या गोलाकार आकार, या बिल्डस्टोन के बीच कुछ और खुद। ")। सवाल है " ऐसी स्थितियों को हल करने के लिए आमतौर पर किन तरीकों का इस्तेमाल किया जाता है?" मुझे लगता है कि मेरी ए बहुत "आम तौर पर इस्तेमाल की जाने वाली विधि" है और समस्या का बहुत समाधान है। उदाहरण के लिए ऑनलाइन मिनीगॉल्फ गेम (जो क्यू बहुत याद दिलाता है) गेंदों को चोक करते हैं, अगर पर्यावरण ऐसा होने के लिए बुला रहा है। इराटिक भौतिकी एक बुरा तरीका है, इमो।
स्टॉर्मविंड

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

जैसा कि आप देख रहे हैं, मैं भी जवाब में बलों को फिर से व्यवस्थित करने का प्रस्ताव करता हूं। उस के बाद थोड़ा बचा हुआ लगता है :-)।
स्टॉर्मविंड

दीवारों को फिर से व्यवस्थित करना या गोलाकार आकार बदलना मेरे मामले में व्यवहार्य नहीं है, हालांकि यह दूसरों में हो सकता है। स्क्रीनशॉट एक आरटीएस इंजन के डिबग मोड से है। कई अलग-अलग इकाई आकार हैं और खिलाड़ी द्वारा दीवारों को वसीयत में रखा जा सकता है। आपके द्वारा देखे जाने वाले तीर मेरे तेज़ प्रवाह फ़ील्ड एल्गोरिथम द्वारा उत्पन्न होते हैं। वे सामान्यीकृत वैक्टर हैं जो चल इकाइयों की यात्रा की दिशा को प्रभावित करने के लिए उपयोग किए जाते हैं। वैक्टर की लंबाई में बदलाव करना संभव नहीं है क्योंकि समूह की सभी चल इकाइयों में एक ही फ्लो फील्ड होता है।
तेरह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.