घर बारहमासी फूल एंड्रॉइड के लिए स्वयं शुरुआत से एक गेम बनाना। IOS, Android, PC पर गेम बनाने के लिए सर्वोत्तम प्रोग्राम

एंड्रॉइड के लिए स्वयं शुरुआत से एक गेम बनाना। IOS, Android, PC पर गेम बनाने के लिए सर्वोत्तम प्रोग्राम

आजकल ऐसे व्यक्ति को ढूंढना बहुत मुश्किल है जिसने मोबाइल गेम नहीं खेला है, बस क्लासिक "स्नेक" को याद रखें। लेकिन क्या कभी आपके साथ ऐसा हुआ है कि आप अपना खुद का खेल बनाएं, जिसमें आपके अपने नायक होंगे, जिनका आविष्कार केवल आपने ही किया हो?

सबसे सरल भी बनाना शुरू करने के लिए मोबाइल गेम, आपके पास कुछ कौशल होने चाहिए। वास्तव में क्या आवश्यक है?

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

एक डिजाइनर क्या है और इसे सही तरीके से कैसे चुनें?

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

सही डिज़ाइनर कैसे चुनें? अजीब बात है, लेकिन आपको इसे मुख्य रूप से अपने ज्ञान के आधार पर चुनना शुरू करना होगा - प्रोग्रामिंग कौशल से लेकर दक्षता स्तर तक अंग्रेजी भाषा. यदि आपके लिए पहला बिंदु शून्य है, तो मैं शुरुआती लोगों के लिए प्रोग्राम चुनने की सलाह देता हूं, उनका उपयोग करना आसान है। दूसरा चयन मानदंड आवश्यक कार्यक्षमता है। यहीं पर हमें अपनी सटीक रूप से तैयार की गई स्क्रिप्ट की आवश्यकता है; हमें इसे "शुरुआत से अंत तक" फिर से पढ़ने की जरूरत है और समझना होगा कि भविष्य का खेल कितना जटिल होगा। परियोजना जितनी अधिक जटिल होगी, उतनी ही अधिक सभी प्रकार की "घंटियाँ और सीटी" का उपयोग करने की आवश्यकता होगी, जिसका अर्थ है कि डिजाइनर को अधिक शक्तिशाली और पेशेवर होना चाहिए।

नीचे मैं सबसे आम डिजाइनरों के कुछ उदाहरण दूंगा जो पेशेवर शुरुआती लोगों को सलाह देते हैं।

निर्माण 2

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

डाउनलोड करना: निर्माण 2
कंस्ट्रक्ट 2 पर वीडियो ट्यूटोरियल

स्टेंसिल

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

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

कार्यक्रम मुफ़्त है, लेकिन यदि आप अपनी रचना को ऐसे प्रारूपों में परिवर्तित करना चाहते हैं जिन्हें वह "समझता है" निजी कंप्यूटर, तो आपको एक लाइसेंस प्राप्त सदस्यता खरीदनी होगी, और यह निस्संदेह एक माइनस है, क्योंकि यह सदस्यता सस्ती नहीं है, इसकी लागत लगभग $100 प्रति वर्ष है। ठीक है, यदि आप भविष्य में खुद को मोबाइल गेम के पेशेवर निर्माता के रूप में देखते हैं, तो प्रति वर्ष $200 का भुगतान करने के लिए तैयार हो जाइए, जो कि मोबाइल ऑपरेटिंग सिस्टम के प्रारूप में किसी प्रोजेक्ट को सहेजने की क्षमता वाले प्रोग्राम की लागत कितनी होगी।

डाउनलोड करना: स्टेंसिल
स्टेंसिल पर वीडियो ट्यूटोरियल

एकता 3डी

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

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

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

डाउनलोड करना: एकता 3डी
यूनिटी 3डी पर वीडियो ट्यूटोरियल

कंस्ट्रक्टर का उपयोग कैसे करें?

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

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

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



निर्देश

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

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

किसी खेल के लिए अपना खुद का विचार लेकर आएं। एक कागज़ के टुकड़े पर या एक अलग दस्तावेज़ में वह सब कुछ लिखें जिसे आप अपने खेल में लागू करना चाहते हैं। लेकिन अपने विकल्पों पर विचार करें. ऐसी योजनाएँ बनाने की ज़रूरत नहीं है जिन्हें लागू करना कठिन हो। सभी बिंदुओं पर विचार करें और उन पर प्रकाश डालें जिन्हें आप अपने ज्ञान के आधार पर पूरा नहीं कर सकते। कठिन समस्याओं को हल करने के लिए डेवलपर फ़ोरम से जुड़ें। वहां आप हमेशा अधिक अनुभवी प्रोग्रामर से प्रश्न पूछ सकते हैं।

विकास परिवेश स्थापित करें. विंडोज फोन 7 के लिए गेम बनाने के लिए, आपको विजुअल स्टूडियो 2010 और विंडोज फोन डेवलपर टूल्स की आवश्यकता होगी। दोनों उत्पाद पूरी तरह से निःशुल्क हैं

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

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

खेल का परीक्षण शुरू करें. यह अंतिम चरणएप्लीकेशन का विकास। एप्लिकेशन लॉजिक के लिए परीक्षण बनाएं और होने वाली त्रुटियों को ट्रैक करें। इनकी संख्या कम से कम करने का प्रयास करें।

यदि गेम तैयार है तो उसे प्रकाशित करें. इसे पोस्ट करें नि: शुल्क प्रवेशया ऐप स्टोर में रजिस्टर करें और इससे पैसे कमाने का प्रयास करें। अपने दिमाग की उपज को न छोड़ें, बल्कि इसमें सुधार करके और कुछ नया पेश करके इसका समर्थन करने का प्रयास करें।

विषय पर वीडियो

स्रोत:

  • गेम बनाने के लिए आपको जो कुछ भी चाहिए
  • फ़ोन के लिए ऑनलाइन गेम

फ़ोन के लिए गेम का निर्माण एक डेवलपर द्वारा किया जाता है, जो एक नियम के रूप में, एक कंपनी द्वारा प्रतिनिधित्व किया जाता है। लेकिन ऐसे मामले भी होते हैं जब एक व्यक्ति ऐसी प्रक्रिया में शामिल होता है।

निर्देश

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

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

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

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

अलेक्जेंडर लेडकोव

विचार और वास्तुकला

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

आइए एक खेल स्थिति का अनुकरण करें। हमारा किरदार स्क्रीन के केंद्र में है। रोबोट हर सेकंड के 1/10वें हिस्से में उसके पास आते हैं। हर दसवें सेकंड में हम यह भी जांचते हैं कि स्क्रीन को छुआ गया है या नहीं। यदि ऐसा होता है, तो हम अपने पात्र को आवश्यक दिशा में ले जाते हैं या गोली चलाते हैं। यदि गोली चलाई जाती है, तो प्रत्येक टिक (एक सेकंड का 1/10) हम दुश्मनों के साथ गोली की टक्कर की जांच करते हैं। यदि गोली रोबोट से टकराती है, तो रोबोट और गोली दोनों में विस्फोट हो जाता है; यदि नहीं, तो रोबोट और गोली नई स्थिति में चले जाते हैं (रोबोट प्रति टिक 5 पिक्सेल गति करता है, और गोली 50 पिक्सेल गति करती है)। हम यह भी जांचते हैं कि रोबोट ने हमारे हीरो को पकड़ लिया है या नहीं। यदि पकड़ा गया, तो खेल समाप्त हो जाता है।

सबसे सरल मामले में, गेम आर्किटेक्चर को निम्नलिखित मॉड्यूल के रूप में प्रस्तुत किया जा सकता है, जिन्हें चक्रीय कहा जाता है:

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

आइए हमारे मॉड्यूल पर करीब से नज़र डालें।

नियंत्रण मॉड्यूल

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

खेल यंत्र

गेम लॉजिक मॉड्यूल सभी गेम पात्रों की स्थिति को बदलने के लिए ज़िम्मेदार है, जिसका अर्थ है कि प्रत्येक वस्तु जिसमें एक स्थिति होती है (हमारा नायक, रोबोट, लेजर शॉट्स)।

आइए नियंत्रण मॉड्यूल और गेम इंजन के बीच की बातचीत को देखें। ऊपर दी गई तस्वीर नियंत्रक सर्कल को दिखाती है। हल्का हरा धब्बा संपर्क क्षेत्र का प्रतीक है। नियंत्रण मॉड्यूल गेम इंजन को स्पर्श निर्देशांक (dx और dy - सर्कल के केंद्र से पिक्सेल में दूरी) की रिपोर्ट करता है। इन निर्देशांकों के आधार पर खेल यंत्रहमारे नायक की गति की दिशा और गति की गणना करता है। उदाहरण के लिए, यदि dx>0, तो हमारा चरित्र दाईं ओर चला जाता है, यदि dy>0 - शीर्ष पर।

ऑडियो मॉड्यूल

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

ग्राफ़िक्स मॉड्यूल

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

भविष्य के एंड्रॉइड गेम के लिए एक टेम्पलेट प्रोजेक्ट बनाना

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

बनाएं नया काम. प्रोजेक्ट नाम फ़ील्ड में, दर्ज करें Droidz. लक्ष्य प्लेटफ़ॉर्म के रूप में Android 2.2 या उच्चतर का चयन करें। पैकेज नाम में - " en.mobileab.gamesample". गतिविधि बनाएं बॉक्स को चेक करना न भूलें। मुख्य गतिविधि के नाम के लिए, दर्ज करें DroidzActivity.

फ़ाइल src/ru.mobileab.gamesample/DroidzActivity.java खोलें

आयात android.app.Activity;
android.os.बंडल आयात करें;

सार्वजनिक वर्ग DroidzActivity गतिविधि का विस्तार करता है (
/** गतिविधि पहली बार होने पर बुलाया गया। */
@ओवरराइड
सार्वजनिक शून्य ऑनक्रिएट(बंडल सेव्डइंस्टेंसस्टेट) (
super.onCreate(savingInstanceState);
setContentView(R.layout.main);
}
}

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

मुख्य गेम लूप

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

जैसा कि आपको याद है, एंड्रॉइड में सब कुछ एक गतिविधि के अंदर होता है। गतिविधि एक दृश्य बनाती है - एक ऐसी वस्तु जहां सारा मज़ा होता है। इसके माध्यम से हम स्क्रीन टच के बारे में जानकारी प्राप्त कर सकते हैं, और यहां हम स्क्रीन पर एक चित्र प्रदर्शित कर सकते हैं।

आइए DroidzActivity.java फ़ाइल खोलें। क्लास कंस्ट्रक्टर में आपको लाइन दिखाई देगी

SetContentView(R.layout.main);

यह पंक्ति गतिविधि के लिए वर्तमान दृश्य ऑब्जेक्ट का चयन करती है। आइए एक नया व्यू ऑब्जेक्ट बनाएं। अधिकांश सरल तरीके सेएक दृश्य प्राप्त करना - SurfaceView के आधार पर अपनी खुद की कक्षा बनाएं। हमारी कक्षा में, हम सतह परिवर्तनों तक पहुंच को तेज करने के लिए SurfaceHolder.Callback इंटरफ़ेस को कार्यान्वित करते हैं, जैसे कि जब डिवाइस ओरिएंटेशन बदलता है तो यह नष्ट हो जाता है।

MainGamePanel.java

पैकेज ru.mobileab.gamesample;






SurfaceHolder.कॉलबैक(


सुपर(संदर्भ);
// इस वर्ग को रिवर्स फ़ंक्शन वाले के रूप में जोड़ें
// घटनाओं के साथ बातचीत करने के लिए कॉल करें
// गेमपैनल को फोकस करने योग्य बनाएं ताकि यह संदेशों को संभाल सके
सेटफोकसेबल(सही);
}

@ओवरराइड
}

@ओवरराइड
}

@ओवरराइड
}

@ओवरराइड

}

@ओवरराइड
}
}

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

GetHolder().addCallback(यह);

वर्तमान क्लास (मेनगेमपैनल) को सतह के लिए इवेंट हैंडलर के रूप में सेट करता है।

सेटफोकसेबल(सही);

यह पंक्ति हमारी कक्षा को ध्यान केन्द्रित करने योग्य बनाती है। इसका मतलब यह है कि यह फोकस प्राप्त कर सकता है, और इसलिए घटनाएं भी।

आइए एक थ्रेड बनाएं जिसके भीतर हमारा गेम लूप वास्तव में लागू किया जाएगा। आधुनिक खेल विकास में एक खेल को कई समानांतर धागों में विभाजित करना एक आम बात है। आइए अपने थ्रेड के लिए एक क्लास बनाएं: MainThread.java

पैकेज ru.mobileab.gamesample;

पब्लिक क्लास मेनथ्रेड थ्रेड का विस्तार करता है (

//ध्वज यह दर्शाता है कि खेल चल रहा है।

निजी बूलियन चल रहा है;
सार्वजनिक शून्य सेटरनिंग (बूलियन रनिंग) (
यह.दौड़ना = दौड़ना;
}

@ओवरराइड
सार्वजनिक शून्य रन() (
दौड़ने के दौरान) (
// गेम ऑब्जेक्ट की स्थिति को अपडेट करें
// स्क्रीन पर ग्राफिक्स प्रदर्शित करें
}
}
}

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

थ्रेड क्लास बनाने के बाद, हमें इसे चलाने की आवश्यकता है। स्क्रीन लोड होने पर इसे चलाते हैं। आइए MainGamePanel क्लास को बदलें

पैकेज ru.mobileab.gamesample;

आयात android.content.Context;
आयात android.graphics.Canvas;
आयात android.view.MotionEvent;
आयात android.view.SurfaceHolder;
आयात android.view.SurfaceView;

पब्लिक क्लास MainGamePanel SurfaceView कार्यान्वयन का विस्तार करता है
SurfaceHolder.कॉलबैक(

निजी मेनथ्रेड थ्रेड;

सार्वजनिक मेनगेमपैनल(संदर्भ प्रसंग) (
सुपर(संदर्भ);
getHolder().addCallback(यह);

// गेम लूप के लिए एक थ्रेड बनाएं
थ्रेड = नया मेनथ्रेड();

सेटफोकसेबल(सही);
}

@ओवरराइड
सार्वजनिक शून्य सतह परिवर्तित(सरफेसहोल्डर धारक, पूर्णांक प्रारूप, पूर्णांक चौड़ाई, पूर्णांक ऊंचाई) (
}

@ओवरराइड
सार्वजनिक शून्य सतह निर्मित(सरफेसहोल्डर धारक) (
thread.setRunning(सही);
थ्रेड.स्टार्ट();
}

@ओवरराइड
सार्वजनिक शून्य सतहनष्ट(सरफेसहोल्डर धारक) (
// थ्रेड को बंद करने और प्रतीक्षा करने के लिए एक कमांड भेजें
//जब तक स्ट्रीम बंद न हो जाए।
बूलियन पुनः प्रयास = सत्य;
जबकि (पुनः प्रयास करें) (
कोशिश (
thread.join();
पुनः प्रयास करें = गलत;
) पकड़ें (बाधित अपवाद ई) (
// थ्रेड को फिर से रोकने का प्रयास कर रहा हूं
}
}
}

@ओवरराइड
सार्वजनिक बूलियन ऑनटचइवेंट(मोशनइवेंट इवेंट) (
सुपर.ऑनटचइवेंट(इवेंट) लौटाएं;
}

@ओवरराइड
संरक्षित शून्य ऑन ड्रा (कैनवास कैनवास) (
}
}

हमने एक थ्रेड ऑब्जेक्ट घोषित किया

निजी मेनथ्रेड थ्रेड;

और इसे कंस्ट्रक्टर में बनाया

थ्रेड = नया मेनथ्रेड();

SurfaceCreated विधि में हमने रनिंग फ़्लैग को सही पर सेट किया और थ्रेड शुरू किया। इस समय तक, थ्रेड ऑब्जेक्ट पहले ही सफलतापूर्वक बनाया जा चुका है और हम इसे बिना किसी डर के लॉन्च कर सकते हैं।

सतह को बंद करने से पहले SurfaceDestroyed विधि को बुलाया जाता है। यहां केवल चल रहे झंडे को हटाना ही पर्याप्त नहीं है। हमें यह सुनिश्चित करना होगा कि धारा वास्तव में बंद हो। हम बस धागे को रोकते हैं और उसके ख़त्म होने तक प्रतीक्षा करते हैं।

स्क्रीन के साथ इंटरेक्शन जोड़ना

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

निजी सरफेसहोल्डर सरफेसहोल्डर;
निजी मेनगेमपैनल गेमपैनल;

सार्वजनिक मेनथ्रेड(सरफेसहोल्डर सरफेसहोल्डर, मेनगेमपैनल गेमपैनल) (
बहुत अच्छा();
this.surfaceHolder = surfaceHolder;
यह.गेमपैनल = गेमपैनल;
}

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

कंस्ट्रक्टर में नए घोषित पैरामीटर जोड़ने के लिए MainGamePanel क्लास में लाइन बदलें

थ्रेड = नया मेनथ्रेड(गेटहोल्डर(), यह);

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

लॉगिंग

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

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

आइए अपने कोड पर वापस जाएं। आइए MainThread.java में परिवर्तन करें

पैकेज एन. मोबिलैब. गेमएम्प; एंड्रॉइड आयात करें। उपयोग. लकड़ी का लट्ठा ; एंड्रॉइड आयात करें। देखना। सतह धारक; सार्वजनिक वर्ग MainThreadविस्तार थ्रेड (निजी स्थैतिक अंतिम स्ट्रिंग TAG= MainThread. वर्ग . getSimpleName() ; निजी SurfaceHolder surfaceHolder; निजी MainGamePanel गेमपैनल; निजी बूलियन रनिंग; सार्वजनिक void setRunning(बूलियन रनिंग) (यह. runing= run; ) सार्वजनिक MainThread(SurfaceHolder सरफेसहोल्डर, मेनगेमपैनल गेमपैनल) ( सुपर() ; यह. सरफेसहोल्डर= सरफेसहोल्डर; यह. गेमपैनल= गेमपैनल; ) @ ओवरराइड पब्लिक वॉयड रन() ( लॉन्ग टिककाउंट= 0एल; लॉग . डी(टैग, "स्टार्टिंग गेम लूप" ); जबकि (चल रहा है) ( टिककाउंट++; // गेम की स्थिति यहां अपडेट की जाएगी // और प्रदर्शन के लिए एक फ्रेम बनाएं) लकड़ी का लट्ठा । d(TAG, "गेम लूप निष्पादित" + टिककाउंट+ "बार"); ) )

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

आइए MainGamePanel.java फ़ाइल पर जाएं और onTouchEvent विधि ढूंढें, जो स्क्रीन टच हैंडलर है।

सार्वजनिक बूलियन onTouchEvent(MotionEvent ईवेंट) ( if (event. getAction() == MotionEvent. ACTION_DOWN) ( if (event. getY() > getHeight() - 50 ) ( thread. setRunning(false ) ; ((Activity) getContext( )) .finish(); ) ; )

पहले हम जांचते हैं कि क्या कोई स्क्रीन टच इवेंट हुआ है (MotionEvent.ACTION_DOWN)। यदि ऐसा होता है, तो हम y निर्देशांक की जांच करते हैं और यदि यह स्क्रीन के नीचे (नीचे से 50 पिक्सेल) है, तो हम थ्रेड को समाप्त करने के लिए एक कमांड भेजते हैं (रनिंग वेरिएबल को गलत पर सेट करके) और फिर फिनिश को कॉल करते हैं( ) मुख्य गतिविधि पर विधि, जो हमारे पूरे कार्यक्रम को बंद कर देती है।

टिप्पणी। स्क्रीन की समन्वय प्रणाली का उद्गम ऊपरी बाएँ कोने में है। y-अक्ष नीचे है, x-अक्ष दाएँ है। स्क्रीन की चौड़ाई और ऊंचाई क्रमशः getWidth() और getHeight() विधियों का उपयोग करके प्राप्त की जा सकती है।

आइए लॉग में लिखने के लिए कमांड जोड़कर DroidzActivity.java को बदलें

पैकेज एन. मोबिलैब. गेमएम्प; एंड्रॉइड आयात करें। अनुप्रयोग। गतिविधि; एंड्रॉइड आयात करें। ओएस. बंडल; एंड्रॉइड आयात करें। उपयोग. लकड़ी का लट्ठा ; एंड्रॉइड आयात करें। देखना। खिड़की; एंड्रॉइड आयात करें। देखना। विंडो मैनेजर; सार्वजनिक वर्ग DroidzActivityविस्तारित गतिविधि( /** जब कोई गतिविधि बनाई जाती है तो कॉल किया जाता है। */निजी स्थैतिक अंतिम स्ट्रिंग TAG = DroidzActivity. कक्षा। getSimpleName() ; @ओवरराइड सार्वजनिक शून्य ऑनक्रिएट(बंडल सेव्डइंस्टेंसस्टेट) ( सुपर. ऑनक्रिएट(सेव्डइंस्टेंसस्टेट) ; // टाइटल बार को अक्षम करने का अनुरोध requestWindowFeature(Window. FEATURE_NO_TITLE); // एप्लिकेशन को पूर्ण स्क्रीन मोड पर स्विच करें getWindow() । setFlags(WindowManager. LayoutParams. FLAG_FULLSCREEN, windowManager. LayoutParams. FLAG_FULLSCREEN); // MainGamePanel को व्यू के रूप में सेट करें setContentView(नया MainGamePanel(यह) ); लकड़ी का लट्ठा। d(TAG, "जोड़ा गया दृश्य" ); ) @ ओवरराइड संरक्षित शून्य onDestroy() ( लॉग . d(TAG, "नष्ट कर रहा है..." ); सुपर. onDestroy() ; ) @ ओवरराइड संरक्षित शून्य onStop() ( लॉग . d(TAG, "रोक रहा है..." ) ; सुपर. ऑनस्टॉप() ; ) )

आइए एप्लिकेशन लॉन्च करें। लॉन्च के बाद आपको एक काली स्क्रीन दिखनी चाहिए। स्क्रीन के शीर्ष पर कई बार क्लिक करें और फिर नीचे पर क्लिक करें। प्रोग्राम बंद हो जाएगा. लॉग की जाँच करने का समय आ गया है।

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

संक्षेप। हमने एक पूर्ण स्क्रीन एप्लिकेशन बनाया है। हमने एक क्लास लिखी है जो एक अलग थ्रेड में चलती है और इसमें गेम इंजन होगा। लिखा सबसे सरल विधिस्क्रीन टच को प्रोसेस करना और एप्लिकेशन को सही ढंग से बंद करना।

अगली बार हम ड्राइंग की ओर बढ़ेंगे। इस ट्यूटोरियल का सोर्स कोड डाउनलोड किया जा सकता है।

अनुवाद और अनुकूलन: अलेक्जेंडर लेडकोव

हम HTML5/JS में एक गेम लिखते हैं

जावास्क्रिप्ट गेमडेव html5 कैनवास

मुझे सप्ताहांत में कुछ खाली समय मिला और मैंने विकास का अभ्यास करने का निर्णय लिया। मैं काफी समय से किसी तरह के खिलौने के बारे में लिखना चाहता था, लेकिन कभी ऐसा नहीं कर पाया।

एंड्रॉइड पर स्वयं स्क्रैच से गेम कैसे बनाएं

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

शुरू

  • - स्प्राइट के साथ काम करने के लिए लाइब्रेरी
  • - संसाधन लोड हो रहा है
  • -कीबोर्ड इनपुट लाइब्रेरी
  • - मुख्य गेम फ़ाइल

सहज एनिमेशन के लिए हम उपयोग करेंगे। आप यहां इसके बारे में और अधिक जानकारी प्राप्त कर सकते हैं

आइए अपने खेल के विकास को कई चरणों में विभाजित करें:

  1. किसी पृष्ठ पर कैनवास बनाना और प्रारंभ करना
  2. एक मुख्य गेम लूप फ़ंक्शन जोड़ना
  3. उपयोगकर्ता इनपुट घटनाओं को संभालना
  4. खेल में वस्तुओं के टकराव का गणित और गणना

चरण 1: कैनवास बनाना और प्रारंभ करना

पहली चीज़ जो हमें करने की ज़रूरत है वह है एक तत्व बनाना और उसे गेम के मुख्य पृष्ठ टैग में जोड़ना।

  • एक ऑब्जेक्ट बनाएं
  • हम इंगित करते हैं कि हम एक 2डी गेम बना रहे हैं (हम कोड में हर जगह ऑब्जेक्ट का उपयोग करेंगे)
  • कैनवास आयाम सेट करना
  • पृष्ठ पर एक टैग में एक कैनवास जोड़ना

चरण 2. एक मुख्य लूप फ़ंक्शन जोड़ना

गेम को अपडेट और रेंडर करने के लिए मुख्य लूप की आवश्यकता होती है।

यहां हम requestAnimFrame फ़ंक्शन को कॉल करते हैं (दुर्भाग्य से, सभी ब्राउज़रों में समर्थित नहीं), जो 60 फ्रेम/सेकंड उत्पन्न करता है (जैसा कि ऊपर वर्णित है)।

चरण 3.

खेल वस्तुओं और संसाधनों का आरंभीकरण और प्रतिपादन

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

फ़ंक्शन में हम दुनिया को लोड करते हैं और गेम खत्म होने के बाद एक बटन हैंडलर जोड़ते हैं।

आरंभिक राज्य

गेमप्ले स्थिति अद्यतन

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

हम इसे यहां उपयोग करते हैं। संपूर्ण फ़ंक्शन को स्रोत कोड में देखा जा सकता है।

चरण 4: उपयोगकर्ता इनपुट ईवेंट को संभालना

हमारे नायक को ऊपर, नीचे, बाएँ, दाएँ जाने में सक्षम होना चाहिए। तदनुसार, मैं नीचे इस समाधान का कार्यान्वयन प्रदान करता हूं

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

चरण 5. खेल में वस्तुओं के टकराव का गणित और गणना

गेम में कैरेक्टर एनीमेशन, बुलेट मूवमेंट गणित और एनपीसी मूवमेंट लॉजिक का वर्णन फ़ंक्शन में किया गया है। यहीं पर हमें रैखिक बीजगणित के बुनियादी ज्ञान की आवश्यकता है।

टावर स्प्राइट एनिमेशन को अपडेट करने के लिए तर्क। और हम अपनी सारणी में प्रत्येक टॉवर के लिए कारतूस बनाते हैं।

बुर्ज गोलियों की गतिशीलता:

मैं आपको याद दिला दूं कि हमारा लक्ष्य टावरों से सभी दिशाओं में बेतरतीब ढंग से गोलीबारी करना था।

हमने मकड़ियों को सरल बुद्धि प्रदान की है और इसलिए वे हमें काटने के लिए हमेशा हमारे पीछे रेंगती रहती हैं।

फ़ंक्शन का पूरा कोड GitHub पर स्रोत में देखा जा सकता है।

टकराव की गणना करने का गणित मेरे द्वारा उपयोग किए जाने वाले 2डी बूटस्ट्रैप के लेखक के लेख (टकराव का पता लगाने वाले अनुभाग) में अच्छी तरह से वर्णित है।

चरण 6. खेल ख़त्म और पुनरारंभ करें

जब मकड़ियाँ हमारे नायक के पास रेंगती हैं, तो खेल का अंत आ जाता है।

गेम ओवर विंडो और "स्टार्ट ओवर" बटन दिखाएं। इस पर क्लिक करें और सब कुछ फिर से शुरू हो जाएगा :)

निष्कर्ष

परिणामस्वरूप, मुझे स्वयं एहसास हुआ कि इसके कई फायदे हैं:

  • मज़ेदार और दिलचस्प समय बिताएँ
  • आप अपने स्कूल का ज्यामिति पाठ्यक्रम दोहरा रहे हैं। यदि खेल अधिक गंभीर है, तो आपको विश्वविद्यालय याद है :)
  • गेम प्रोग्रामिंग अभ्यास
  • किये गये कार्य से संतुष्टि

आप यहां स्रोत देख सकते हैं और यहां खेल सकते हैं।

विशिष्ट खेल विकास

गेम बनाना एक प्रोग्रामर के लिए एक मज़ेदार गतिविधि है। लेकिन सभी गेम एक सामान्य परिदृश्य का अनुसरण करते हैं। उपयोगकर्ता इंटरैक्शन के लिए कई स्क्रीन हैं:

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

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

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

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

बेसएक्टिविटी जैसे सार्वजनिक घटकों के साथ एक और बेस एक्टिविटी क्लास बनाना भी सुविधाजनक है।

अनुप्रयोग प्रसंग

एप्लिकेशन संदर्भ गेम सहित किसी भी एप्लिकेशन के संचालन का आधार है। इसका उपयोग एकाधिक गतिविधि उदाहरणों द्वारा उपयोग की जाने वाली सेटिंग्स और संसाधनों तक पहुंच प्राप्त करने के लिए किया जाता है।

आप विधि के माध्यम से वर्तमान प्रक्रिया के एप्लिकेशन संदर्भ तक पहुंच सकते हैं getApplicationContext():

चूँकि एक्टिविटी क्लास कॉन्टेक्स्ट क्लास से आती है, आप इसका उपयोग कर सकते हैं कीवर्डयह एप्लिकेशन संदर्भ को स्पष्ट रूप से निर्दिष्ट करने के बजाय।

भविष्य के गेम की कार्यक्षमता को समझने के बाद, आप इसे लागू करना शुरू कर सकते हैं।

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

गतिविधियाँ शुरू करने के लिए कई विकल्प हैं

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

स्प्लैश स्क्रीन

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

खेल मेनू

गेम मेनू स्क्रीन का उपयोग विभिन्न गेम स्क्रीन के माध्यम से नेविगेट करने के लिए किया जाता है।

विशिष्ट खेल विकास

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

सहायता स्क्रीन

इस स्क्रीन पर उपयोगकर्ता गेम के नियमों से परिचित हो सकता है। इसलिए, आपको यहां स्क्रॉल करने योग्य सहायता टेक्स्ट प्रदर्शित करने की आवश्यकता है।

अभिलेखों का स्कोर या तालिका

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

सेटिंग स्क्रीन

इस स्क्रीन पर, उपयोगकर्ता विभिन्न सेटिंग्स, जैसे कि उनका नाम या अवतार, को संपादित और सहेज सकता है।

मुख्य स्क्रीन

यहीं पर खेल की मुख्य क्रिया होती है। यदि खेल पूरा हो गया है, तो आपको खेल का परिणाम देखने के लिए उच्च स्कोर तालिका स्क्रीन पर जाना होगा।

एक एप्लिकेशन प्रोटोटाइप का कार्यान्वयन

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

अब प्रत्येक मार्कअप फ़ाइल खोलें और लाइन बदलें एंड्रॉइड: टेक्स्ट = "@ स्ट्रिंग/हैलो"पर एंड्रॉइड: टेक्स्ट = "@ स्ट्रिंग/स्प्लैश"और इसी तरह।

इस ऑपरेशन के बाद आप स्क्रीन में भ्रमित नहीं होंगे।

आप तुरंत गेम के लिए एक नए आइकन का ध्यान रख सकते हैं और इसे /ड्रॉएबल फ़ोल्डर में जोड़ सकते हैं।

हम पहले ही सहमत हो चुके हैं कि हमारे पास एक मुख्य वर्ग, बेसएक्टिविटी होगा। एक क्लास फ़ाइल BaseActivity.java बनाएं और न्यूनतम कोड पेस्ट करें:

स्प्लैशएक्टिविटी.जावा फ़ाइल पर वापस जाएं और इसे एक्टिविटी क्लास के बजाय बेसएक्टिविटी क्लास से विस्तारित करें।

स्प्लैशएक्टिविटी गतिविधि की प्रतिलिपि बनाएँ और नई कक्षाएं मेनूएक्टिविटी, हेल्पएक्टिविटी, स्कोरएक्टिविटी, सेटिंग्सएक्टिविटी और गेमएक्टिविटी बनाएं।

प्रत्येक निर्मित कक्षा में आपको पंक्ति में प्रतिस्थापित करने की आवश्यकता है setContentView(R.layout.splash);उचित संसाधन पर लेआउट संसाधन, उदाहरण के लिए सेटिंग स्क्रीन के लिए, यह होगा आर.लेआउट.सेटिंग्स.

जांचने के लिए, आप प्रोजेक्ट को एमुलेटर पर चला सकते हैं। यदि सब कुछ सही ढंग से किया जाता है, तो स्प्लैश स्क्रीन एमुलेटर विंडो में दिखाई देगी, जिसमें स्प्लैश स्क्रीन टेक्स्ट होगा।

स्पलैश स्क्रीन बनाना

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

एनीमेशन के बाद, आपको मेनू के साथ एक नई स्क्रीन लॉन्च करनी होगी और वर्तमान स्क्रीन को बंद करना होगा।

विज्ञापन देना

इस लेख का भुगतान बिल्लियों द्वारा किया गया था - बिल्ली के बच्चे के विश्व प्रसिद्ध उत्पादक।

यदि आपको लेख पसंद आया, तो आप इस परियोजना का समर्थन कर सकते हैं।

एंड्रॉइड पर गेम कैसे बनाएं?






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

इंजन

गेम लिखने में पहला कदम इंजन स्थापित करना है। वेब पर कई इंजन लिखे हुए हैं विभिन्न भाषाएँप्रोग्रामिंग. निःसंदेह, सशुल्क इंजनों में अधिक कार्य होते हैं, वे अधिक स्थिर होते हैं और अधिक अवसर प्रदान करते हैं। हालाँकि, उनकी लागत बहुत अधिक हो सकती है। इसलिए, हम एक उदाहरण के रूप में निःशुल्क LibGDX इंजन लेंगे।

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

प्रोग्रामिंग वातावरण

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

एक प्रोजेक्ट बनाना

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

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

साइट पर नया

>

सबसे लोकप्रिय