कैसलवानिया बॉट

यह क्या है


CastlevaniaBot NES Nintaco एमुलेटर के लिए एक प्लगइन है जो कि कैसलवानिया में खेलता है। यदि आप इसे स्प्लैश स्क्रीन पर चलाते हैं, तो प्लगइन पूरे गेम से शुरू से अंत तक जाएगा। या आप इसे खेल में कहीं भी चला सकते हैं ताकि यह इसके भाग से गुजरे।


इस लेख में मैं आपको बताऊंगा कि केटलवानिया को पारित करने में सक्षम एक बॉट कैसे बना सकता है, और आप एनईएस पर किसी भी गेम के लिए कुछ समान कैसे बना सकते हैं।



ज्ञान आधारित संरचना


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

CastlevaniaBot स्थितियों की एक विस्तृत श्रृंखला से निपटने के लिए रणनीतियों के एक सेट तक पहुंच है। उनमें से ज्यादातर एक विशिष्ट प्रकार की गेम ऑब्जेक्ट्स के साथ काम करने के लिए डिज़ाइन किए गए हैं। उदाहरण के लिए, एक कंकाल नियंत्रण रणनीति है, मछली लोगों के लिए एक और, मोमबत्तियाँ तोड़ने के लिए, दिलों को इकट्ठा करने के लिए, और इसी तरह।

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

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

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

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



8-बिट दुनिया की योजना बनाना


ऐसी परियोजनाओं पर काम करते समय, मैं मुख्य रूप से कार्य को सरल बनाना चाहता हूं। मैंने कल्पना की कि अगर कोई दुश्मन, मोमबत्तियाँ, या स्तर पर इकट्ठा करने के लिए आइटम नहीं थे, तो क्या होगा। इस मामले में जो कुछ भी आवश्यक होगा, वह शुरुआत से अंत तक के स्तर तक पहुंचाना है। मैंने सोचा - अगर मैं बॉट को सिखा सकता हूं कि यह कैसे करना है, तो रास्ते में कई दुश्मनों को नष्ट करना कितना मुश्किल होगा?

बॉट को स्थानांतरित करने के लिए सिखाने के लिए, मुझे टाइल पृष्ठभूमि के नक्शे और स्तरों को कैसे व्यवस्थित किया जाता है, इसकी समझ की आवश्यकता है। खेल में छह स्तर होते हैं, जिनमें से प्रत्येक एक बॉस के साथ समाप्त होता है।


प्रत्येक स्तर को 3 या 4 चरणों में विभाजित किया गया है। आमतौर पर चरणों को लकड़ी के दरवाजों से अलग किया जाता है, जो खिलाड़ी की पीठ के पीछे एक क्रेक के साथ खुलते हैं।


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

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


प्रत्येक चरण में पृष्ठभूमि के एक या अधिक क्षैतिज स्क्रॉल बार होते हैं, जिन्हें मैं "उप-चरण" कहता हूं। यदि आप ऊपर या नीचे जाने वाली सीढ़ियों के साथ स्क्रीन से बाहर निकलते हैं, तो खेल एक उप-चरण से दूसरे तक जाता है, और लंबवत स्क्रॉल नहीं करता है।


खेल चक्र संख्या, चरण संख्या और उप-चरण संख्या को ट्रैक करने के लिए खेल 3 बाइट्स का उपयोग करता है। सामान्य मोड (सामान्य मोड) में खेल चक्र का मान 0 है; 1 और उसके बाद के संस्करण मुश्किल मोड का संकेत देते हैं। खेल चक्र के बावजूद, चरणों में हमेशा 0 से 18 तक की संख्या होती है। और उप-चरणों में हमेशा 0 या 1 का मान होता है, क्योंकि चरणों में कभी 2 से अधिक क्षैतिज धारियां नहीं होती हैं। कैसलवानियाबोट यह जानने के लिए इन बाइट्स को ट्रैक करता है।

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

Nintaco के मानचित्र निर्माता

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


केवल 5 महत्वपूर्ण प्रकार की टाइलें हैं, और प्रत्येक स्तर पर उनकी एक अलग उपस्थिति है। मैंने उन्हें अलग-अलग 16 × 16 छवि फ़ाइलों में कॉपी और पेस्ट किया। फिर मैंने छवियों के संगत सेट के साथ प्रत्येक उप-चरण में प्रत्येक टाइल की तुलना करते हुए एक कार्यक्रम लिखा। इसलिए मुझे सभी उप-चरणों के लिए मैट्रिक्स प्रकार की टाइलें मिलीं।

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



पथ खोज


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

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


इसी तरह, अगर साइमन सीढ़ियों पर है, तो वह एक टाइल को दो संभावित दिशाओं में से एक में स्थानांतरित कर सकता है।


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

बाएं और दाएं चलने के अलावा, सीढ़ियों से उतरते और चढ़ते हुए, साइमन दूसरी टाइल पर जा सकते हैं। और वह टाइल की सतह के 16 पिक्सल में से शुरू होकर, बाएं या दाएं कूद सकता है। ग्राफ़ में किनारों की संख्या को कम करने के लिए (और लुकअप तालिका का आकार), मैंने केवल पाँच संभावित प्रतिकर्षण बिंदुओं पर विचार किया:


"कुछ भी नहीं" ऑपरेशन को जोड़ते हुए, मुझे 15 ऑपरेशन मिले। वे सभी सरल हैं ताकि बॉट आसानी से खेल के निष्पादन के दौरान उनके निष्पादन के लिए आवश्यक बटन प्रेस के अनुक्रम को निर्धारित कर सकें।

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

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

क्षैतिज गति को सीमित करना बाधाओं की मान्यता को सरल करता है। यदि चरित्र के सामने एक पिक्सेल में एक दीवार है, और यदि आवश्यक हो तो आंदोलन को रोक देता है, तो गेम की जाँच करता है। परीक्षण सिर के स्तर से नीचे किया जाता है, जो क्षैतिज आंदोलन के साथ हस्तक्षेप किए बिना सिर को कम छत से गुजरने की अनुमति देता है।

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

साइमन का स्प्राइट 16 पिक्सेल चौड़ा है, और फिर भी यह अपने मध्य बिंदु से अधिकतम pixels 4 पिक्सेल तक ब्लॉक पर मंडरा सकता है। अगर आप थोड़ा और आगे बढ़ेंगे, तो यह नीचे गिर जाएगा।


यह दिलचस्प है कि अगर वह प्लेटफ़ॉर्म छोड़ता है और 1 क्षैतिज और 8 ऊर्ध्वाधर पिक्सेल प्रति फ्रेम की गति से ठीक 1 टाइल गिरता है, तो वह लैंडिंग पर ब्लॉक पर बिल्कुल खड़ा नहीं होगा। उसका एक पैर दीवार के अंदर 2 पिक्सल की गहराई तक रहेगा।


उसके बाद, वह दीवार से बाहर निकलने में सक्षम होगा, लेकिन इसमें नहीं जाएगा।

साइमन कूदने के दौरान दिशा नहीं बदल सकता है। बटन ए दबाने के बाद, वह परबोला के साथ एक निश्चित रास्ता बनाता है।


शीर्ष पर, साइमन 36 पिक्सल बढ़ाता है, जो उसे प्लेटफार्मों 2 टाइलों पर कूदने की अनुमति देता है। और "परबोला" का शीर्ष आश्चर्यजनक रूप से सपाट है। ऐसा लगता है कि यह 9 पूर्ण फ्रेम के लिए अंतरिक्ष में जमा करता है, संभवतः हवा में कोड़े के वार को सरल बनाने के लिए। यदि साइमन के पास उतरने के लिए कुछ नहीं है, तो परबोला आंदोलन तब तक जारी रहता है जब तक वह अपनी मूल ऊंचाई पर नहीं लौट जाता। उसके बाद, यह 8 फ्रेम प्रति फ्रेम की गति से गिरना शुरू कर देता है, अर्थात, मंच से गिरने की समान गति के साथ।

जब चरित्र के सिर के ऊपर एक मंच होता है, तो कूदने की अनुमति नहीं होती है।


अन्यथा, वह प्लेटफॉर्म टाइल्स में आंशिक रूप से "कूदता है"।


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


सीढ़ियां आपको प्लेटफार्मों के बीच स्वतंत्र रूप से लंबवत स्थानांतरित करने की अनुमति देती हैं।


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


स्तर 4 मोबाइल प्लेटफार्मों पर, खिलाड़ी आमतौर पर कम फांसी वाले स्टैलेक्टाइट्स के नीचे क्राउच करता है। हालांकि, आप उनके खिलाफ उठ सकते हैं और आराम कर सकते हैं। ऐसी स्थिति में, खेल क्षैतिज आंदोलन को प्रतिबंधित करता है, जल्दी से साइमन को पानी के जाल में खींच लेता है।


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

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

कुछ उप-चरणों में, स्तंभ पूरी तरह से कनेक्ट नहीं होते हैं। उदाहरण के लिए, स्तर 4 पर, मंच रसातल को पार करने का एकमात्र तरीका है। इस तरह के उप-चरणों में, तालिका में प्रत्येक द्वीप के चारों ओर घूमने के तरीके होते हैं, लेकिन उनके बीच नहीं।


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




खेल राज्य


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

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


यह तकनीक काम करती है और आम तौर पर अन्य खेलों पर लागू होती है, लेकिन इसमें कई कमियां हैं। ओएएम में स्प्राइट्स का क्रम लगातार बदल रहा है। यदि एक ही समय में स्क्रीन पर एक ही प्रकार के दुश्मन के कई उदाहरण हैं, तो उन्हें ट्रैक करने का एकमात्र तरीका उनकी निकटता का निर्धारण करना है, पिछले फ्रेम से निर्देशांक के साथ अंतिम स्प्राइट निर्देशांक की तुलना करना है।


कुछ गेम ऑब्जेक्ट्स में बार-बार स्प्राइट्स शामिल होते हैं, जैसे बोन टावर्स।


मूविंग प्लेटफॉर्म में 4 बार दोहराते हुए एक स्प्राइट होता है।


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


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


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


यह भी ध्यान देने योग्य है कि हार्डवेयर सीमाओं के कारण, एनईएस केवल 8 स्प्राइट्स प्रति रास्टर लाइन प्रदर्शित कर सकता है। चूँकि स्प्राइट्स की प्राथमिकता आंशिक रूप से OAM में उनके सूचकांकों पर निर्भर करती है, प्रत्येक फ्रेम में क्रम को एक बदलाव से बचने के लिए यादृच्छिक रूप से मिश्रित किया जाता है जो एक स्प्राइट को लगातार अदृश्य बनाता है। कई स्प्राइट्स बारी-बारी से चमकते हैं, धीरे-धीरे उनकी प्राथमिकता बदल रहे हैं। यह पलक OAM से स्प्राइट के पढ़ने को प्रभावित नहीं करता है। डेटा अभी भी वहाँ है, लेकिन उत्सर्जित हार्डवेयर इसे प्रदर्शित नहीं करता है। यह स्प्राइट बनाते समय ब्लिंकिंग के साथ ऊपर वर्णित स्थिति से भिन्न होता है। इसके अलावा, निंटाको के पास एक विकल्प है जो हार्डवेयर की चमक को काफी कम कर देता है।


और अंत में, खेल राज्य का एक छोटा हिस्सा पीपीयू नाम तालिकाओं से पढ़ा जाता है - एक मेमोरी क्षेत्र जिसमें सभी पृष्ठभूमि डेटा होते हैं। इसमें विनाशकारी ब्लॉकों की जांच करना और स्तर 2 पर "क्रश" के पदों को ट्रैक करना शामिल है।




हेयूरिस्टिक स्टेट मशीन


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

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

लक्ष्य से दूर जा रहे हैं और आगे बढ़ रहे हैं मानक क्रियाएं पथ खोज एल्गोरिथ्म द्वारा बनाई गई तालिका से संचालन का उपयोग करके की जाती हैं। उदाहरण के लिए, मोमबत्ती की रणनीति पुस्तकालय विधि routeAndFace का उपयोग routeAndFace , जो न केवल साइमन को कुछ निर्दिष्ट निर्देशांक तक ले जाती है, बल्कि उन्हें मारने के बाद बाएं या दाएं routeAndFace है। इसके अलावा, मोमबत्तियों की ऊंचाई के आधार पर, व्हिप मारने से पहले रणनीति एक कूद या स्क्वाट करती है। मोमबत्तियों से गिरने वाली वस्तु हवा में बनाई जाएगी और धीरे-धीरे जमीन पर गिरेगी। पिकअप की रणनीति सिमोन को सीधे उसके नीचे स्थित टाइल के पास पहुंचाती है, इससे पहले कि वह जमीन को छू ले।

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



मृत्यु


इस खंड में, मैं कास्टवानियाबोट द्वारा उपयोग की जाने वाली रणनीतियों के बारे में विस्तार से वर्णन करूंगा, पूरे वाकथ्रू पर टिप्पणी करूंगा।

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


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

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


महल में प्रवेश करने के बाद कैसलवानियाट भूत और मोमबत्तियों को देखता है। भूतों के करीब आने तक मोमबत्तियां और गढ़ी गई चीजें पूर्वता लेती हैं।


अक्सर ऐसा लगता है कि कोड़ा दुश्मनों को बिना छुए नष्ट कर देता है। मुझे गेम के रोम में एक टकराव आयत तालिका मिली, इसलिए कैसलवनबोट को ठीक से पता है कि कुछ व्हिप के दायरे में है। और जब से टक्कर आयतों अक्सर स्प्राइट्स की सीमाओं से परे थोड़ा फैलता है, कोड़ा "अदृश्य" हिट कर सकता है।

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

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


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


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

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

सीढ़ियों पर चढ़ने और मोमबत्तियों को नष्ट करने के बाद, पवित्र जल बनाया जाता है - सभी माध्यमिक हथियारों का सबसे मूल्यवान। कैसलवानियाबॉट इसके लिए एक खंजर का आदान-प्रदान करके इसका चयन करता है।


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


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


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

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

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

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

हालांकि कैसलवानियाब नियतत्ववाद से बचने का प्रयास करता है, फिर भी उसने गतिरोध से एक अवधारणा को उधार लिया: क्षति को बढ़ावा देता है । 50% मामलों में, कैसलवनबोट पूरी तरह से लाल मछली पर वापस कूदकर मानव मछली के तहखाने से गुजरने से बचता है, जो इसे अन्यथा अनुपयोगी मंच पर फेंक देता है।


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


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

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


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


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

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


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


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


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


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


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


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


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


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


स्तर 2 आमतौर पर कैसलवनिया के साथ समाप्त होता है जो तुरंत मेडुसा को पवित्र जल की अंतहीन धारा से मार देता है। हालांकि, वह किसी अन्य प्रकार के द्वितीयक हथियार के साथ काम करने के लिए तैयार है।


स्तर पर 3 जंपर्स दिखाई देते हैं। कोस्टवानियाबॉट उन्हें कोड़े की सीमा में कूदने की प्रतीक्षा करके प्रतिक्रिया करता है। यदि कूदने वाले खिलाड़ी कूदते हैं, तो कैसलवनबॉट विपरीत दिशा में आगे बढ़ता है और जमीन को छूने से पहले उन्हें कोड़े से मारता है।


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


कैसलवनबॉट कौवे के उड़ने का इंतजार करता है। फिर, खिलाड़ी के सापेक्ष रवेन की ऊंचाई के आधार पर, वह सटीक गणना करता है कि कूदने के बाद कोड़े से कब मारा जाए।


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


ममियों के स्थान के ठीक सामने, कैसलवनबोट पैसे के एक छिपे हुए बैग की उपस्थिति को ट्रिगर करने के लिए मंच पर छोड़ दिया जाता है। वह केवल ब्याज के लिए ऐसा करता है, क्योंकि वह इसे किसी भी तरह से नहीं उठा सकता है।


इसके बाद, कैसलवनबोट जानबूझकर उन मोमबत्तियों को मारता है जिनसे खंजर गिरता है। क्रोनोमीटर के मामले में, वह ऐसा करता है ताकि बाद के कार्यों के दौरान संयोग से इसे न उठाया जा सके।


और अंत में, ममियों को पवित्र पानी से बारिश से हराया जाता है।


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

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


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


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

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

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

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


जब स्तर के अंतिम चरण में जाते हैं, तो कैसलवनबोट पूरी तरह से अस्थि ड्रैगन की उपेक्षा करता है।


लेकिन वह अगले दो को जल्दी कोड़े से मारता है।


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


5 के स्तर पर, कैसलवनबोट फिर से सफेद कंकालों के साथ काम करता है। लेकिन इस बार, वह रणनीति विविधताओं का उपयोग करता है जो शायद ही कभी स्तर 3 पर देखे जाते हैं। जहां वे दिखाई देते हैं, उसके आधार पर, कैसल्वनबोट पवित्र पानी फेंकता है और फिर कंकालों को आग की लपटों में खींचने के लिए वापस कदम रखता है। सीढ़ियों के पास, वह कंकालों के नीचे से गुजरता है ताकि उन्हें यह निर्देशित किया जा सके कि उन्हें कहाँ होना चाहिए।


स्तर 5 पर, पुनर्जन्म लाल कंकाल पहले दिखाई देते हैं। कैसलवनबोट उन पर आखिरी हिट के समय को ट्रैक करता है, ताकि यह पता चल सके कि लाल हड्डियों के माध्यम से जाना कब सुरक्षित है।


स्टेज 14 का पहला कमरा पूरी तरह से एक विशाल रणनीति द्वारा संसाधित है। कैसलवानियाबोट पहले जम्पर को मारता है। फिर वह कुल्हाड़ी फेंकने के लिए निचली नाइट का इंतजार करता है, कुल्हाड़ी को कोड़े से मारता है और धीरे-धीरे निचली सीढ़ियों पर चढ़ता है। यह स्क्रीन के पीछे निचले नाइट को धक्का देता है, जो उसके गायब होने की ओर जाता है। फिर वह इंतजार करता है जब तक कि ऊपरी क्षेत्र कुल्हाड़ियों से मुक्त न हो जाए, मोमबत्तियों को मारता है और दिखाई देने वाली वस्तुओं को इकट्ठा करता है। फिर वह ऊपरी नाइट की ओर जाने वाली सीढ़ियों के आधार पर पहुंचता है। जब शीर्ष नाइट कुल्हाड़ी उच्च फेंकता है, तो उसके बाद कैसलवानियाबोट चलता है। यह ऊपरी नाइट को बाईं ओर और लगभग पूरी तरह से स्क्रीन से धकेलता है, लेकिन इसे नष्ट नहीं करता है। कैसलवनबोट लौटने वाली कुल्हाड़ी के नीचे झुकता है, और संभवतः दूसरे परित्यक्त कुल्हाड़ी के नीचे, और फिर अंत में सीढ़ियों से अगले उप-चरण तक पहुंचता है। हुर्रे!


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


5 स्तर की सीढ़ियों से ऊपर, कैसलवनबोट को अक्सर सीढ़ियों के ऊपर या नीचे से लाल कंकाल के दूर जाने का इंतजार करना पड़ता है। स्तर के अंत की ओर, हड्डी टॉवर इस कार्य को और भी कठिन बना देता है। कंकाल कैसे स्थानांतरित करने का निर्णय लेते हैं, इस पर निर्भर करते हुए, कैसल्वनबोट सीढ़ियों से नीचे और ऊपर तक चलता है जब तक कि यह गुजर नहीं सकता।


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


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


यदि कोई पवित्र पानी नहीं है, तो गलियारे के ठीक सामने कैसलवानियाबोट एक बूमरैंग ले सकता है। परिस्थितियों के एक सफल सेट के साथ, वह इसका उपयोग शूरवीरों को नष्ट करने के लिए करता है, साथ ही साथ हथियार उन्नयन भी प्राप्त करता है।


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


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


पुल के ऊपर से गुजरने की गारंटी नहीं है। यह सब इस बात पर निर्भर करता है कि विशाल चमगादड़ कितने अनुकूल होंगे।

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


जब कैसलवनबॉट ड्रैकुला के टॉवर तक पहुंचता है, तो वह फिर से मोमबत्तियां बनाने के लिए कई बार सीढ़ियों पर चढ़ और कम कर सकता है, जो आपको कम से कम 20 दिलों को इकट्ठा करने की अनुमति देता है।


ड्रैकुला के कक्षों में सबसे दाहिनी मोमबत्तियाँ पवित्र पानी देती हैं, जो ड्रैकुला के दूसरे रूप से लड़ने के लिए आवश्यक है।

ड्रैकुला के पहले रूप को हराने के लिए सिर को 16 वार करने होते हैं। कैसलवानियाबट कई बार ड्रैकुला के पास पहुंचता है, वह आग के गोले के साथ शूट करने के लिए इंतजार करता है, और फिर गेंदों पर कूदता है और ड्रैकुला के सिर को कोड़े से मारता है।


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


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




फ़ाइलें


CastlevaniaBot_2018-12-09.zip

फ़ाइल .zipमें शामिल है:

  • src - स्रोत वृक्ष
  • CastlevaniaBot.jar — .
  • lgpl-2.1.txt — .



लांच



  • Nintaco — NES.
  • Castlevania (U) (PRG1) [!].nes — ROM .


  1. Nintaco Castlevania (U) (PRG1) [!].nes .
  2. CastlevaniaBot.jar .zip .
  3. Run Program, Tools | Run Program...
  4. JAR , Find JAR....
  5. Load JAR, .
  6. Run.

Copyright © 2018 meatfighter.com

. / LGPLv2.1.

Source: https://habr.com/ru/post/hi432784/


All Articles