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