एआई को कस्टम-आकार के स्पेसशिप (आंदोलन के व्यवहार को प्रभावित करने वाले आकार) को स्थानांतरित करने के लिए


15

मैं एक नेटवर्क आधारित 3 डी -6 डीएफएफ स्पेस बेड़ा मुकाबला रणनीति गेम डिजाइन कर रहा हूं जो जहाज अनुकूलन पर बहुत निर्भर करता है। मुझे गेम को थोड़ा समझाने की ज़रूरत है, क्योंकि आपको प्रश्न सेट करने के लिए इसके बारे में थोड़ा जानना होगा।

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

खेल दो चरणों के आसपास घूमता है: आदेश और मुकाबला चरण। आदेश चरण के दौरान, आप विभिन्न जहाजों को कमांड करते हैं। जब सभी खिलाड़ी ऑर्डर चरण समाप्त कर लेते हैं, तो मुकाबला चरण शुरू होता है और जहाज के आदेश वास्तविक समय में कुछ समय के लिए हल हो जाते हैं, फिर कार्रवाई रुक जाती है और एक नया आदेश चरण होता है।

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

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

दोनों मामलों में, एआई यह कैसे तय करेगा कि कौन सा प्रोपेलर सबसे अच्छा (या कम से कम सबसे खराब नहीं) प्रक्षेपवक्र हासिल करने के लिए सक्रिय करे?

मैं हालांकि कुछ तरीकों के बारे में:

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

मैं वास्तव में यहाँ फंस गया हूँ। कोई विचार?


क्या आपने स्टीयरिंग व्यवहार में देखा है?
पत्थरबाज़

1
@stonemalal यकीन है। यहाँ समस्या यह है कि स्टीयरिंग व्यवहार आमतौर पर स्थिति और वस्तु के रोटेशन और कुछ बाधाओं (या कम से कम यही है जो मुझे वेब पर मिला है) का पूर्ण नियंत्रण मानकर मॉडलिंग की जाती है। यहां एआई का इकाई पर पूर्ण नियंत्रण नहीं है। , लेकिन केवल चीजों (प्रस्तावकों) पर जो इकाई को गतिमान बनाते हैं। मुझे इन स्टीयरिंग व्यवहारों को स्पेसशिप के वास्तविक नियंत्रण के साथ जोड़ने में परेशानी होती है।
19

यही कारण है कि स्टीयरिंग व्यवहार रेस कारों पर बहुत अच्छी तरह से काम नहीं करते हैं। स्टीयरिंग व्यवहार महान हैं, लेकिन वे हर चीज का सार्वभौमिक समाधान नहीं हैं।
दस

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

1
मुझे पता है कि यह सुपर पुराना है, लेकिन आप जो खोज रहे हैं, उसे किन्योडायनामिक मोशन प्लानिंग
mklingen

जवाबों:


4

क्षमा करें, आजमाया हुआ परीक्षण नहीं किया गया है, लेकिन क्या इसे गणितीय रूप से हल नहीं किया जा सकता है?

किसी भी प्रोपेलर और उसके ऑफसेट को द्रव्यमान के केंद्र से देखते हुए, आप गणना कर सकते हैं कि आप किस विमान को घुमा सकते हैं।

किसी भी आंदोलन के लिए, आप 1 या अधिक प्रोपेलर का उपयोग कर सकते हैं। प्रत्येक प्रोपेलर को यह देखने के लिए प्रेरित किया जा सकता है कि क्या उसका विमान लक्ष्य अभिविन्यास में योगदान कर सकता है, यह प्रोपेलर से योगदान के लिए कितना प्रयास करेगा (सीओएम से दूर प्रोपेलर अधिक मोड़ उत्पन्न करने के लिए कम ऊर्जा का उपयोग कर सकता है), और कितना करीब होगा। आप लक्ष्य के लिए oritentation। तब आप उस खोज स्थान पर A * भरते हैं जब तक कि आप कम लागत के साथ एक समाधान नहीं लेते हैं, जो कम से कम कुल ऊर्जा का उपयोग या सबसे तेज़ गति हो सकता है।

यह मानते हुए कि आप टर्न और मध्यम शक्ति को पूरा करते हैं, जैसा कि आप लक्ष्य के पास जाते हैं, शायद एक पीआईडी ​​नियंत्रक के साथ।

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

यह बहुत ही बैक-ऑफ़-द-लिफाफा है, लेकिन मुझे कोई बड़ी खामी नहीं दिखती है। बस बहुत सारी मेहनत और नंबर ट्विकिंग है। :)


यह मैं एक गणितीय समाधान के लिए देख रहा था whay है ... धन्यवाद! मुझे आशा है कि यह जितना आसान लगता है उतना आसान हो जाता है।
काओड

7

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

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

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

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


बिल्कुल नहीं, जो मैं देख रहा था, लेकिन अगर मुझे वास्तव में ज़रूरत है, तो यह चाल चल सकती है। विचार के लिए
अपवित्र

0

अंतरिक्ष में, आकार आंदोलन को प्रभावित नहीं करता है। खींचने के लिए कोई हवा नहीं।

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


GD.SE में आपका स्वागत है! इस सवाल का पहले से ही एक स्वीकृत उत्तर है और 2 साल पहले पूछा गया था - शायद आप साइट पर कुछ नए सवालों के जवाब दे सकते हैं।
ध्रुवीय

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

@ प्रश्नोत्तर पोस्टर यहाँ। मुझे उनका जवाब बहुत दिलचस्प लगा! मुझे खुशी है कि वह जवाब देने के लिए वापस आया, और मुझे लगता है कि वर्षों के बाद मूल्य जोड़ना एसओ के सबसे मूल्यवान भागों में से एक है।
kaoD

@ gnoll110 मैं यहाँ गलत हो सकता है। कोई खींचें नहीं, ठीक है, लेकिन कोण बड़े पैमाने पर केंद्र के साथ वेक्टर रूपों को प्रभावित करता है कि जहाज कैसे अनुवाद या घूमता है ... सही? उदा: द्रव्यमान के केंद्र के साथ एक इंजन इनलाइन, इसे द्रव्यमान के केंद्र से दूर ले जाने पर जहाज में एक घूर्णन घटक जोड़ देगा।
kaoD

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