पायथन की आर्केड लाइब्रेरी आपके प्रोजेक्ट में गेम के स्तर को लागू करने का एक सीधा और प्रभावी तरीका प्रदान करती है।
खेल विकास एक रोमांचक और रचनात्मक प्रक्रिया है जो आपको अपने कल्पनाशील विचारों को जीवन में लाने की अनुमति देती है। गेम डिज़ाइन करते समय, प्रमुख तत्वों में से एक जो खिलाड़ी के अनुभव को काफी बढ़ा सकता है, वह गेम स्तरों का कार्यान्वयन है।
स्तर संरचना, प्रगति और चुनौतियाँ प्रदान करते हैं, जिससे खिलाड़ियों को खेल के विभिन्न चरणों में नेविगेट करते समय उपलब्धि और जुड़ाव की भावना मिलती है।
एक सरल गेम बनाएं
शुरू करने से पहले, सुनिश्चित करें कि आपके पास है आपके डिवाइस पर पाइप इंस्टॉल हो गया है. इंस्टॉल करने के लिए इस कमांड का उपयोग करें आर्केड पुस्तकालय:
पिप इंस्टाल आर्केड
एक बुनियादी गेम बनाएं जहां खिलाड़ी बाएं और दाएं घूम सके।
इस आलेख में प्रयुक्त कोड इसमें उपलब्ध है गिटहब रिपॉजिटरी और यह आपके लिए एमआईटी लाइसेंस के तहत उपयोग करने के लिए निःशुल्क है।
उपयोगकर्ता इनपुट को संभालने और तदनुसार गेम स्थिति को अपडेट करने के लिए आर्केड लाइब्रेरी की क्षमताओं का उपयोग करें। नामक एक नई फ़ाइल बनाएँ Simple-game.py और नीचे दिया गया कोड जोड़ें:
आयात आर्केड
स्क्रीन_चौड़ाई = 800
स्क्रीन_ऊंचाई = 600कक्षामेरा खेल(आर्केड. खिड़की):
डीईएफ़__इस में__(खुद):
सुपर().__init__(स्क्रीन_चौड़ाई, स्क्रीन_ऊंचाई, "मेरा खेल")
आर्केड.सेट_बैकग्राउंड_रंग (आर्केड.रंग. सफ़ेद)
self.player_x = SCREEN_WIDTH // 2डीईएफ़on_draw(खुद):
आर्केड.स्टार्ट_रेंडर()
आर्केड.ड्रॉ_रेक्टेंगल_फिल्ड (स्वयं.प्लेयर_एक्स, 50, 50, 50, आर्केड.रंग. नीला)डीईएफ़on_key_press(स्वयं, कुंजी, संशोधक):
अगर कुंजी == आर्केड.कुंजी। बाएं:
self.player_x -= 10
एलिफ़ कुंजी == आर्केड.कुंजी। सही:
self.player_x += 10डीईएफ़on_key_release(स्वयं, कुंजी, संशोधक):
अगर कुंजी == आर्केड.कुंजी। बाएं या कुंजी == आर्केड.कुंजी। सही:
उत्तीर्णडीईएफ़मुख्य():
खेल = MyGame()
आर्केड.रन()
अगर __नाम__ == "__मुख्य__":
मुख्य()
नीचे आउटपुट है:
एकाधिक स्तर बनाएं
अब, कई स्तरों को जोड़कर गेम का विस्तार करें। प्रत्येक स्तर की अपनी अनूठी विशेषताएं होंगी, जो खिलाड़ी के लिए अलग-अलग चुनौतियाँ प्रदान करेंगी। आप अतिरिक्त स्तरों को शामिल करने के लिए पिछले कोड को संशोधित कर सकते हैं। यहाँ एक उदाहरण है:
कक्षापहला चरण:
डीईएफ़__इस में__(खुद):
self.player_x = SCREEN_WIDTH // 2डीईएफ़अद्यतन(खुद):
उत्तीर्णडीईएफ़खींचना(खुद):
आर्केड.ड्रॉ_रेक्टेंगल_फिल्ड (स्वयं.प्लेयर_एक्स, 50, 50, 50, आर्केड.रंग. नीला)कक्षालेवल दो:
डीईएफ़__इस में__(खुद):
self.player_x = SCREEN_WIDTH // 2डीईएफ़अद्यतन(खुद):
उत्तीर्णडीईएफ़खींचना(खुद):
आर्केड.ड्रॉ_रेक्टेंगल_फिल्ड (स्वयं.प्लेयर_एक्स, 50, 50, 50, आर्केड.रंग. लाल)कक्षामेरा खेल(आर्केड. खिड़की):
डीईएफ़__इस में__(खुद):
सुपर().__init__(स्क्रीन_चौड़ाई, स्क्रीन_ऊंचाई, "मेरा खेल")
आर्केड.सेट_बैकग्राउंड_रंग (आर्केड.रंग. सफ़ेद)
self.levels = [लेवलवन(), लेवलटू()]
स्वयं.वर्तमान_स्तर= 0डीईएफ़on_draw(खुद):
आर्केड.स्टार्ट_रेंडर()
स्व.स्तर[स्वयं.वर्तमान_स्तर].खींचना()डीईएफ़on_key_press(स्वयं, कुंजी, संशोधक):
अगर कुंजी == आर्केड.कुंजी। बाएं:
self.levels[self.current_level].player_x -= 10
एलिफ़ कुंजी == आर्केड.कुंजी। सही:
self.levels[self.current_level].player_x += 10डीईएफ़on_key_release(स्वयं, कुंजी, संशोधक):
अगर कुंजी == आर्केड.कुंजी। बाएं या कुंजी == आर्केड.कुंजी। सही:
उत्तीर्णडीईएफ़अद्यतन(स्वयं, डेल्टा_समय):
स्व.स्तर[स्वयं.वर्तमान_स्तर].अद्यतन()डीईएफ़मुख्य():
खेल = MyGame()
आर्केड.रन()
अगर __नाम__ == "__मुख्य__":
मुख्य()
स्तरों के बीच संक्रमण
स्तरों के बीच एक सहज संक्रमण बनाने के लिए, पता लगाएं कि खिलाड़ी एक विशिष्ट सीमा को कब पार करता है। तुम कर सकते हो खिलाड़ी की गतिविधि पर नज़र रखें, और एक बार जब खिलाड़ी सीमा पार कर जाए, तो आप अगले स्तर पर जा सकते हैं। नामक एक नई फ़ाइल बनाएँ ट्रांज़िशन-बीच-लेवल्स.पी.ई और नीचे दिए गए अपडेट के साथ कोड जोड़ें:
कक्षामेरा खेल(आर्केड. खिड़की):
# ...डीईएफ़अद्यतन(स्वयं, डेल्टा_समय):
स्व.स्तर[स्वयं.वर्तमान_स्तर].अद्यतन()# जांचें कि क्या खिलाड़ी ने सीमा पार की है
अगर self.levels[self.current_level].player_x < 0:
self.current_level += 1
self.current_level %= len (स्वयं.स्तर)
self.levels[self.current_level].player_x = SCREEN_WIDTH
एलिफ़ self.levels[self.current_level].player_x > SCREEN_WIDTH:
self.current_level += 1
self.current_level %= len (स्वयं.स्तर)
self.levels[self.current_level].player_x = 0
# ...
नीचे आउटपुट है:
अतिरिक्त सुविधाओं सहित
अपने खेल के स्तर को और अधिक आकर्षक बनाने के लिए, आप पावर-अप और उद्देश्यों जैसी अतिरिक्त सुविधाएँ शामिल कर सकते हैं।
उद्देश्य
उद्देश्य खिलाड़ी को एक स्तर के भीतर पूरा करने के लिए विशिष्ट लक्ष्य या लक्ष्य प्रदान करते हैं। वे उद्देश्य और प्रगति की भावना जोड़ते हैं। यहां एक वस्तुनिष्ठ सुविधा को लागू करने का एक उदाहरण दिया गया है:
कक्षाउद्देश्य:
डीईएफ़__इस में__(स्वयं, एक्स, वाई):
स्वयं.एक्स = एक्स
स्व.य = य
स्व.त्रिज्या = 20डीईएफ़खींचना(खुद):
आर्केड.ड्रॉ_सर्कल_फिल्ड (सेल्फ़.एक्स, सेल्फ.वाई, सेल्फ.रेडियस, आर्केड.कलर। हरा)कक्षापहला चरण:
डीईएफ़__इस में__(खुद):
स्व.उद्देश्य = उद्देश्य(600, 400)
# ...डीईएफ़अद्यतन(खुद):
# जाँचें कि क्या खिलाड़ी उद्देश्य तक पहुँच गया है
अगर आर्केड.चेक_फॉर_कोलिजन (स्वयं.खिलाड़ी, स्व.उद्देश्य):
self.complete_objective()डीईएफ़खींचना(खुद):
self.objective.draw()
# ...
डीईएफ़संपूर्ण_उद्देश्य(खुद):
# उद्देश्य पूर्ति को संभालने के लिए कोड
उत्तीर्ण
संग्रह
संग्रहणीय वस्तुएं या बोनस हैं जिन्हें खिलाड़ी पूरे स्तर पर इकट्ठा कर सकता है। यहां एक संग्रहणीय सुविधा को लागू करने का एक उदाहरण दिया गया है:
कक्षासंग्रहणीय:
डीईएफ़__इस में__(स्वयं, एक्स, वाई):
स्वयं.एक्स = एक्स
स्व.य = य
स्व.त्रिज्या = 10
self.is_collected = असत्यडीईएफ़खींचना(खुद):
अगरनहीं स्व.एकत्रित है:
आर्केड.ड्रॉ_सर्कल_फिल्ड (सेल्फ़.एक्स, सेल्फ.वाई, सेल्फ.रेडियस, आर्केड.कलर। नारंगी)डीईएफ़इकट्ठा करना(खुद):
self.is_collected = सत्य
# प्लेयर पर संग्रहणीय वस्तु के प्रभाव को संभालने के लिए कोडकक्षापहला चरण:
डीईएफ़__इस में__(खुद):
स्व.संग्रहणीय = संग्रहणीय(300, 300)
# ...डीईएफ़अद्यतन(खुद):
# जांचें कि क्या खिलाड़ी आइटम एकत्र करता है
अगर आर्केड.चेक_फॉर_कोलिजन (स्वयं.खिलाड़ी, स्व.संग्रहणीय):
स्व.संग्रहणीय.संग्रह()
डीईएफ़खींचना(खुद):
self.collectible.draw()
# ...
बाधाएं
बाधाएँ स्थिर वस्तुएँ या गतिशील इकाइयाँ हो सकती हैं जो खिलाड़ी के मार्ग में बाधा डालती हैं। उन्हें खिलाड़ी को रणनीति बनाने और उन पर काबू पाने के तरीके खोजने की आवश्यकता होती है। यहां बाधाएं सुविधा लागू करने का एक उदाहरण दिया गया है:
कक्षाव्यवधान:
डीईएफ़__इस में__(स्वयं, एक्स, वाई, चौड़ाई, ऊंचाई):
स्वयं.एक्स = एक्स
स्व.य = य
स्वयं.चौड़ाई = चौड़ाई
स्व.ऊंचाई = ऊंचाईडीईएफ़खींचना(खुद):
आर्केड.ड्रॉ_रेक्टेंगल_फिल्ड (सेल्फ़.एक्स, सेल्फ.वाई, सेल्फ.चौड़ाई, सेल्फ.ऊंचाई, आर्केड.रंग. स्लेटी)
कक्षापहला चरण:
डीईएफ़__इस में__(खुद):
स्वयं.बाधाएँ = [बाधाएँ(400, 200, 100, 50), व्यवधान(600, 500, 80, 120)]
# ...
पावर अप
पावर-अप खिलाड़ी की क्षमताओं को बढ़ा सकते हैं या अस्थायी लाभ प्रदान कर सकते हैं। यहां पावर-अप सुविधा लागू करने का एक उदाहरण दिया गया है:
कक्षाशक्तिप्रापक:
डीईएफ़__इस में__(स्वयं, एक्स, वाई):
स्वयं.एक्स = एक्स
स्व.य = य
स्व.त्रिज्या = 10
self.is_active= सत्यडीईएफ़खींचना(खुद):
अगर स्वयं सक्रिय है:
आर्केड.ड्रॉ_सर्कल_फिल्ड (सेल्फ़.एक्स, सेल्फ.वाई, सेल्फ.रेडियस, आर्केड.कलर। पीला)डीईएफ़सक्रिय_पावर_अप(खुद):
self.is_active= सत्यडीईएफ़निष्क्रिय_पावर_अप(खुद):
self.is_active= असत्यकक्षापहला चरण:
डीईएफ़__इस में__(खुद):
स्व.पावर_अप = पावरअप(200, 200)
# ...डीईएफ़अद्यतन(खुद):
# जांचें कि क्या खिलाड़ी पावर-अप से टकराता है
अगर आर्केड.चेक_फॉर_कोलिजन (स्वयं.खिलाड़ी, स्व.शक्ति_अप):
self.player.activate_power_up()
self.power_up.deactivate_power_up()
डीईएफ़खींचना(खुद):
self.power_up.draw()
# ...
लेवल डिज़ाइन के लिए सर्वोत्तम अभ्यास
लेवल डिज़ाइन आकर्षक और मनोरंजक गेमप्ले अनुभव बनाने में महत्वपूर्ण भूमिका निभाता है। आपके गेम के लिए स्तर डिज़ाइन करते समय विचार करने योग्य कुछ सर्वोत्तम अभ्यास यहां दिए गए हैं:
स्पष्ट लक्ष्य
प्रत्येक स्तर पर खिलाड़ी को प्राप्त करने के लिए एक स्पष्ट उद्देश्य या लक्ष्य होना चाहिए। चाहे वह किसी विशिष्ट स्थान पर पहुंचना हो, दुश्मनों को हराना हो, या पहेलियाँ सुलझाना हो, लक्ष्य अच्छी तरह से परिभाषित होना चाहिए और खिलाड़ी को सूचित किया जाना चाहिए।
क्रमिक कठिनाई वक्र
खिलाड़ियों के लिए सहज सीखने की अवस्था प्रदान करने के लिए कठिनाई में क्रमिक वृद्धि के साथ डिज़ाइन स्तर। सरल चुनौतियों से शुरुआत करें और जैसे-जैसे खिलाड़ी आगे बढ़ता है, धीरे-धीरे नई यांत्रिकी या बाधाएं पेश करें। कठिनाई में अचानक वृद्धि खिलाड़ियों को निराश कर सकती है, इसलिए संतुलित प्रगति बनाए रखना महत्वपूर्ण है।
दृश्य स्पष्टता
सुनिश्चित करें कि लेवल डिज़ाइन और दृश्य तत्व खिलाड़ी को महत्वपूर्ण जानकारी स्पष्ट रूप से संप्रेषित करें। संगीत और ध्वनि प्रभाव को शामिल करना महत्वपूर्ण सुराग भी दे सकता है और खिलाड़ी को आवश्यक जानकारी भी प्रदान कर सकता है।
Playtesting और Iteration
लेवल डिज़ाइन को निखारने और बेहतर बनाने के लिए नियमित प्लेटेस्टिंग आवश्यक है। खिलाड़ियों से फीडबैक इकट्ठा करें और उन क्षेत्रों की पहचान करने के लिए उनके अनुभवों का निरीक्षण करें जिनमें समायोजन की आवश्यकता हो सकती है। अधिक मनोरंजक और संतुलित गेमप्ले बनाने के लिए इस फीडबैक के आधार पर अपने स्तर के डिज़ाइन को दोहराएँ।
पुरस्कार और चुनौती को संतुलित करें
अपने स्तर पर चुनौतियों पर काबू पाने के लिए खिलाड़ियों को पुरस्कृत करें। इसे पावर-अप्स, संग्रहणीय वस्तुओं, नए क्षेत्रों को अनलॉक करने या कथात्मक प्रगति के माध्यम से प्राप्त किया जा सकता है। सार्थक पुरस्कारों के साथ चुनौतियों की कठिनाई को संतुलित करने से खिलाड़ियों को प्रेरित करने में मदद मिलती है और उपलब्धि की भावना मिलती है।
स्तरों के साथ खेलों को और अधिक आकर्षक बनाएं
गेम स्तरों को लागू करके, आप समग्र खिलाड़ी अनुभव को बढ़ा सकते हैं और अधिक आकर्षक गेमप्ले वातावरण बना सकते हैं। स्तर खिलाड़ियों को निवेशित और प्रेरित रखते हुए प्रगति, चुनौती और विविधता प्रदान करते हैं। वे आपको नई यांत्रिकी, बाधाओं, दुश्मनों और पुरस्कारों को पेश करने की अनुमति देते हैं, यह सुनिश्चित करते हुए कि प्रत्येक स्तर अलग और रोमांचक लगता है।