पायथन की आर्केड लाइब्रेरी में आपने सरलतम रंग-आधारित एनिमेशन से लेकर जटिल कण मॉडलिंग तक को कवर किया है।
एनीमेशन वीडियो गेम की दृश्य अपील और सहभागिता को बढ़ाने में महत्वपूर्ण भूमिका निभाता है। आर्केड लाइब्रेरी 2डी गेम बनाने के लिए एक पायथन फ्रेमवर्क है। यह आपके गेम प्रोजेक्ट में एनिमेशन को शामिल करने का एक सीधा और प्रभावी तरीका प्रदान करता है।
आप बुनियादी मूवमेंट एनिमेशन और गेम इवेंट के साथ सिंक्रोनाइज़्ड एनिमेशन बनाने के लिए आर्केड लाइब्रेरी का उपयोग कर सकते हैं।
एक सरल गेम बनाएं
शुरू करने से पहले, सुनिश्चित करें कि आपके पास है आपके डिवाइस पर पाइप इंस्टॉल हो गया है. आर्केड लाइब्रेरी स्थापित करने के लिए इस कमांड का उपयोग करें:
पिप इंस्टाल आर्केड
उसके बाद, नाम से एक Python फ़ाइल बनाएं Simple-game.py और एक गेम सेट करके शुरू करें जहां खिलाड़ी बाएं और दाएं घूम सकता है।
इस आलेख में प्रयुक्त कोड इसमें उपलब्ध है गिटहब रिपॉजिटरी और यह आपके लिए एमआईटी लाइसेंस के तहत उपयोग करने के लिए निःशुल्क है।
आर्केड लाइब्रेरी का उपयोग करके, आप एक विंडो बना सकते हैं, गेम वातावरण सेट कर सकते हैं और प्लेयर इनपुट को संभाल सकते हैं। आरंभ करने के लिए यहां एक कोड स्निपेट है:
आयात आर्केड
स्क्रीन_चौड़ाई = 800
स्क्रीन_ऊंचाई = 600कक्षामेरा खेल(आर्केड. खिड़की):
डीईएफ़__इस में__(खुद):
सुपर().__init__(स्क्रीन_चौड़ाई, स्क्रीन_ऊंचाई, "मेरा खेल")
self.player_x = SCREEN_WIDTH // 2
self.player_y = स्क्रीन_ऊंचाई // 2डीईएफ़on_draw(खुद):
आर्केड.स्टार्ट_रेंडर()
कर्नल = आर्केड.रंग. नीला
आर्केड.ड्रॉ_सर्कल_फिल्ड (सेल्फ़.प्लेयर_एक्स, सेल्फ.प्लेयर_वाई, 20, कर्नल)डीईएफ़on_key_press(स्वयं, कुंजी, संशोधक):
अगर कुंजी == आर्केड.कुंजी। बाएं:
self.player_x -= 10
elif कुंजी == आर्केड.कुंजी। सही:
self.player_x += 10डीईएफ़मुख्य():
खेल = MyGame()
आर्केड.रन()
अगर __नाम__ == "__मुख्य__":
मुख्य()
बेसिक मूवमेंट एनिमेशन जोड़ें
अब, अपने गेम को एक कदम आगे ले जाएं और प्लेयर ऑब्जेक्ट में बुनियादी मूवमेंट एनीमेशन जोड़ें। चेतन करने के लिए आंदोलन पर खिलाड़ी, 3 अलग-अलग वृत्त बनाएं और जब खिलाड़ी चलना शुरू करे तो उनके बीच क्रमिक रूप से पुनरावृत्ति करें। यहां इसके लिए अद्यतन कोड स्निपेट दिया गया है आंदोलन-एनीमेशन.py फ़ाइल:
कक्षामेरा खेल(आर्केड. खिड़की):
डीईएफ़__इस में__(खुद):
सुपर().__init__(स्क्रीन_चौड़ाई, स्क्रीन_ऊंचाई, "मेरा खेल")
self.player_x = SCREEN_WIDTH // 2
self.player_y = स्क्रीन_ऊंचाई // 2
self.frame_counter = 0डीईएफ़on_draw(खुद):
आर्केड.स्टार्ट_रेंडर()
col1 = आर्केड.रंग. नीला
col2 = आर्केड.रंग. हरा
col3 = आर्केड.रंग. लालअगर self.frame_counter < 10:
आर्केड.ड्रॉ_सर्कल_फिल्ड (सेल्फ़.प्लेयर_एक्स, सेल्फ.प्लेयर_वाई, 20,col1 )
elif self.frame_counter < 20:
आर्केड.ड्रॉ_सर्कल_फिल्ड (सेल्फ़.प्लेयर_एक्स, सेल्फ.प्लेयर_वाई, 20,col2 )
अन्य:
आर्केड.ड्रॉ_सर्कल_फिल्ड (सेल्फ़.प्लेयर_एक्स, सेल्फ.प्लेयर_वाई, 20, col3)
डीईएफ़on_key_press(स्वयं, कुंजी, संशोधक):
अगर कुंजी == आर्केड.कुंजी। बाएं:
self.player_x -= 10
सेल्फ.फ्रेम_काउंटर = (सेल्फ.फ्रेम_काउंटर + 1) % 30
elif कुंजी == आर्केड.कुंजी। सही:
self.player_x += 10
सेल्फ.फ्रेम_काउंटर = (सेल्फ.फ्रेम_काउंटर + 1) % 30
यहां एक उदाहरण आउटपुट फ़्रेम है:
एनिमेशन गति और दिशा को नियंत्रित करना
एनीमेशन गति को नियंत्रित करने के लिए, आप एक फ्रेम दर प्रणाली शुरू कर सकते हैं। आप खिलाड़ी की गति की दिशा के आधार पर फ़्रेम का क्रम भी बदल सकते हैं। जब खिलाड़ी बाएँ से दाएँ जाता है, तो फ़्रेम उल्टे क्रम में प्रदर्शित होंगे।
यहां इसके लिए संशोधित कोड स्निपेट दिया गया है फ़्रेम-दर.py फ़ाइल:
कक्षामेरा खेल(आर्केड. खिड़की):
डीईएफ़__इस में__(खुद):
सुपर().__init__(स्क्रीन_चौड़ाई, स्क्रीन_ऊंचाई, "मेरा खेल")
self.player_x = SCREEN_WIDTH // 2
self.player_y = स्क्रीन_ऊंचाई // 2
self.frame_counter = 0
col1 = आर्केड.रंग. नीला
col2 = आर्केड.रंग. हरा
col3 = आर्केड.रंग. लाल
स्व.फ़्रेम = [col1, col2, col3]
self.frame_rate = 10डीईएफ़on_draw(खुद):
आर्केड.स्टार्ट_रेंडर()
फ्रेम_इंडेक्स = सेल्फ.फ्रेम_काउंटर // सेल्फ.फ्रेम_रेट % लेन (सेल्फ.फ्रेम)अगर self.player_x < SCREEN_WIDTH // 2:
फ़्रेम_इंडेक्स = लेन (स्वयं.फ़्रेम) - 1 - फ़्रेम_इंडेक्ससूचकांक = self.frames[frame_index]
आर्केड.ड्रॉ_सर्कल_फिल्ड (सेल्फ़.प्लेयर_एक्स, सेल्फ.प्लेयर_वाई, 20, अनुक्रमणिका)
डीईएफ़on_key_press(स्वयं, कुंजी, संशोधक):
अगर कुंजी == आर्केड.कुंजी। बाएं:
self.player_x -= 10
self.frame_counter += 1
elif कुंजी == आर्केड.कुंजी। सही:
self.player_x += 10
self.frame_counter += 1
मॉड्यूलस ऑपरेटर का प्रयोग करें % साथ लेन (स्वयं.फ़्रेम) यह सुनिश्चित करने के लिए कि फ़्रेम_सूचकांक हमेशा उपलब्ध फ़्रेम की सीमा के भीतर रहता है। यह रोकता है अनुक्रमणिकात्रुटि जब एनीमेशन फ़्रेम के माध्यम से लूप करता है तब घटित होने से।
समायोजित फ्रेम रेट एनीमेशन गति को नियंत्रित करने और अपने गेम ऑब्जेक्ट की एनिमेटेड गति का आनंद लेने के लिए मूल्य।
अतिरिक्त सुविधाओं सहित
आर्केड लाइब्रेरी आपके एनिमेशन को बढ़ाने के लिए विभिन्न सुविधाएँ प्रदान करती है।
कण प्रभाव
आप अपने गेम में यथार्थवाद जोड़ने के लिए विस्फोट या धुआं जैसे कण प्रभाव बना सकते हैं। नाम की एक फ़ाइल बनाएं पार्टिकल.पी.ई और पायथन और आर्केड लाइब्रेरी का उपयोग करके एक सरल कण प्रणाली कार्यान्वयन के लिए नीचे दिया गया कोड जोड़ें:
आयात आर्केड
आयात अनियमित# स्क्रीन आयाम
स्क्रीन_चौड़ाई = 800
स्क्रीन_ऊंचाई = 600# रंग की
सफ़ेद = (255, 255, 255)# कण वर्ग
कक्षाकण:
डीईएफ़__इस में__(स्वयं, x, y, dx, dy, त्रिज्या, रंग, जीवनकाल):
स्व। एक्स = एक्स
स्वयं वाई = वाई
स्व.dx = dx
self.dy = dy
स्व.त्रिज्या = त्रिज्या
स्व.रंग = रंग
स्व.जीवनकाल = जीवनकालडीईएफ़अद्यतन(खुद):
self.x += self.dx
self.y += self.dy
स्व.जीवनकाल -= 1डीईएफ़खींचना(खुद):
आर्केड.ड्रॉ_सर्कल_फिल्ड (सेल्फ़.एक्स, सेल्फ.वाई, सेल्फ.रेडियस, सेल्फ.कलर)# गेम क्लास
कक्षामेरा खेल(आर्केड. खिड़की):
डीईएफ़__इस में__(स्वयं, चौड़ाई, ऊंचाई):
सुपर().__init__(चौड़ाई, ऊंचाई, "कण उदाहरण")
स्व.कण = []डीईएफ़स्थापित करना(खुद):
# कण बनाएं
के लिए _ में श्रेणी(100):
एक्स = रैंडम.रैंडरेंज (स्क्रीन_विड्थ)
y = रैंडम.रैंडरेंज (स्क्रीन_हाइट)
dx = यादृच्छिक.वर्दी(-1, 1)
डाई = यादृच्छिक.वर्दी(-1, 1)
त्रिज्या = यादृच्छिक.वर्दी(2, 5)
रंग = आर्केड.रंग. सफ़ेद
जीवनकाल = यादृच्छिक.randint(60, 120)
कण = कण (x, y, dx, dy, त्रिज्या, रंग, जीवनकाल)
स्व.कण.जोड़ें (कण)डीईएफ़on_draw(खुद):
आर्केड.स्टार्ट_रेंडर()
के लिए कण में स्व.कण:
कण.ड्रा()डीईएफ़अद्यतन(स्वयं, डेल्टा_समय):
के लिए कण में स्व.कण:
कण.अद्यतन()अगर कण.जीवनकाल <= 0:
स्व.कण.निकालें (कण)डीईएफ़मुख्य():
गेम = माईगेम (स्क्रीन_चौड़ाई, स्क्रीन_ऊंचाई)
गेम.सेटअप()
आर्केड.रन()
अगर __नाम__ == "__मुख्य__":
मुख्य()
आपको एक एनीमेशन देखना चाहिए जिसमें कई गतिशील कण शामिल हों:
इंटरएक्टिव एनिमेशन
उपयोगकर्ता इनपुट या गेम इवेंट पर प्रतिक्रिया देने वाले इंटरैक्टिव एनिमेशन लागू करें। उदाहरण के लिए, जब खिलाड़ी किसी वस्तु के साथ इंटरैक्ट करता है, तो वह चेतन हो सकता है, रंग बदल सकता है, या किसी तरह से रूपांतरित हो सकता है। ये इंटरैक्टिव एनिमेशन फीडबैक प्रदान करते हैं और गेम के साथ खिलाड़ी के जुड़ाव को बढ़ाते हैं। यहाँ के लिए कोड है इंटरैक्टिव-एनीमेशन.py फ़ाइल:
आयात आर्केड
# स्क्रीन आयाम
स्क्रीन_चौड़ाई = 800
स्क्रीन_ऊंचाई = 600# रंग की
सफ़ेद = (255, 255, 255)
लाल = (255, 0, 0)कक्षामेरा खेल(आर्केड. खिड़की):
डीईएफ़__इस में__(स्वयं, चौड़ाई, ऊंचाई):
सुपर().__init__(चौड़ाई, ऊंचाई, "इंटरैक्टिव एनिमेशन")
self.player_x = 400
self.player_y = 300
स्व.खिलाड़ी_त्रिज्या = 30
स्व.खिलाड़ी_रंग = लाल
self.animation_radius = 60
self.animation_color = सफेद
self.animation_active = असत्यडीईएफ़on_draw(खुद):
आर्केड.स्टार्ट_रेंडर()आर्केड.ड्रॉ_सर्कल_फिल्ड (सेल्फ.प्लेयर_एक्स,
स्व.खिलाड़ी_वाई,
स्व.खिलाड़ी_त्रिज्या,
स्व.खिलाड़ी_रंग)अगर स्व.एनीमेशन_सक्रिय:
आर्केड.ड्रॉ_सर्कल_फिल्ड (सेल्फ.प्लेयर_एक्स,
स्व.खिलाड़ी_वाई,
स्व.एनीमेशन_त्रिज्या,
स्व.एनीमेशन_रंग)डीईएफ़on_mouse_press(स्वयं, एक्स, वाई, बटन, संशोधक):
अगर (self.player_x - self.player_radius <=
x <= self.player_x + self.player_radius और
self.player_y - self.player_radius <=
y <= self.player_y + self.player_radius
):
self.animation_active = सत्यडीईएफ़अद्यतन(स्वयं, डेल्टा_समय):
अगर स्व.एनीमेशन_सक्रिय:
self.animation_radius += 1अगर self.animation_radius > 100:
self.animation_active = असत्य
self.animation_radius = 0डीईएफ़मुख्य():
गेम = माईगेम (स्क्रीन_चौड़ाई, स्क्रीन_ऊंचाई)
आर्केड.रन()
अगर __नाम__ == "__मुख्य__":
मुख्य()
आवश्यक तरीकों को ओवरराइड करें, जैसे कि on_draw, on_mouse_press, और अद्यतन, प्लेयर और एनीमेशन को खींचने, माउस क्लिक को संभालने और एनीमेशन को अपडेट करने के लिए।
खिलाड़ी को आकर्षित करने के लिए, का उपयोग करें आर्केड.ड्रा_सर्कल_फिल्ड फ़ंक्शन, जो लेता है (एक्स, वाई) तर्क के रूप में केंद्र, त्रिज्या और रंग के निर्देशांक। ड्रॉ_सर्कल_फिल्ड फ़ंक्शन इनमें से एक है आर्केड के उपकरण जिनका उपयोग आप गेम संपत्तियां निकालने के लिए कर सकते हैं. इस मामले में, आप समय के साथ त्रिज्या को अलग-अलग करके एक बढ़ता हुआ वृत्त बना सकते हैं।
on_mouse_press जब उपयोगकर्ता माउस पर क्लिक करता है तो विधि चलती है। यह जांचता है कि क्या माउस निर्देशांक प्लेयर ऑब्जेक्ट की सीमा के भीतर हैं और यदि वे हैं तो एनीमेशन को सक्रिय करता है।
एनिमेशन जोड़ने के लिए सर्वोत्तम अभ्यास
अपने गेम में एनीमेशन जोड़ते समय, निम्नलिखित सर्वोत्तम प्रथाओं पर विचार करें:
एनिमेशन की संख्या सीमित करें
कई फ़्रेमों के साथ कई एनिमेशन होने से प्रदर्शन पर असर पड़ सकता है। आवश्यक एनिमेशन या फ़्रेम की संख्या को कम करने पर विचार करें, विशेष रूप से गेम में गैर-महत्वपूर्ण तत्वों के लिए। एनिमेशन को सरल बनाने से एक सुसंगत फ्रेम दर बनाए रखने और संसाधन उपयोग को अनुकूलित करने में मदद मिल सकती है।
बैच समान ऑब्जेक्ट प्रस्तुत करता है
समान एनीमेशन फ्रेम और बनावट साझा करने वाली समान वस्तुओं को एक साथ समूहित करें और उन्हें एक बैच के रूप में प्रस्तुत करें। बैचिंग से ड्रॉ कॉल की संख्या कम हो जाती है, जिसके परिणामस्वरूप प्रदर्शन में सुधार होता है। यह तकनीक विशेष रूप से तब उपयोगी होती है जब उन वस्तुओं को एनिमेट किया जाता है जो समान स्प्राइट शीट का उपयोग करती हैं या जिनमें समान एनीमेशन अनुक्रम होते हैं।
सहज एनिमेशन के लिए इंटरपोलेशन का उपयोग करें
सुचारू एनीमेशन ट्रांज़िशन प्राप्त करने के लिए, रैखिक इंटरपोलेशन (लेरपिंग) जैसी इंटरपोलेशन तकनीक लागू करें। इंटरपोलेशन द्रव गति बनाने के लिए एनीमेशन कीफ़्रेम के बीच मध्यवर्ती मानों की गणना करता है। यह दृष्टिकोण फ़्रेमों के बीच अचानक उछाल या झटकेदार गति को रोकता है, जिसके परिणामस्वरूप अधिक आकर्षक एनिमेशन प्राप्त होते हैं।
एनिमेशन गति और समय पर विचार करें
अपने गेम के लिए सही संतुलन खोजने के लिए विभिन्न एनीमेशन गति और समय के साथ प्रयोग करें। गति, त्वरण या मंदी में विविधता लाने के लिए फ़्रेम अवधि को समायोजित करें या विभिन्न एनीमेशन अनुक्रमों का उपयोग करें। ये समायोजन आपके गेम के एनिमेशन में गहराई और चरित्र जोड़ सकते हैं।
परीक्षण करें और अनुकूलन करें
विभिन्न उपकरणों पर नियमित रूप से अपने एनिमेशन का परीक्षण करें और प्रदर्शन की निगरानी करें। संभावित बाधाओं या मंदी को देखें और तदनुसार अनुकूलन करें। यह प्रक्रिया विभिन्न प्रकार के उपकरणों में सहज और सुसंगत एनीमेशन अनुभव सुनिश्चित करने में मदद करती है।
एनिमेशन के साथ गेम्स को और अधिक आकर्षक बनाएं
अपने गेम में एनिमेशन जोड़ने से खिलाड़ी की व्यस्तता और तल्लीनता में उल्लेखनीय वृद्धि हो सकती है। एनिमेशन खिलाड़ी के कार्यों पर दृश्य प्रतिक्रिया प्रदान करते हैं, जिससे गेमप्ले अधिक सहज और मनोरंजक हो जाता है। वे खेल की दुनिया को जीवंत बनाते हैं, यथार्थवाद और उत्साह की भावना पैदा करते हैं।
चाहे वह एक चरित्र चल रहा हो, एक वस्तु का विस्फोट हो, या एक साधारण संक्रमण प्रभाव हो, एनिमेशन अधिक गतिशील और मनोरम गेमिंग अनुभव में योगदान करते हैं।