एकता में बटन, दराज और दरवाजों के साथ एक सरल खेल बनाना।

एकता में गेम कैसे बनाएं

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

इस गाइड में निम्नलिखित शामिल होंगे:

  • मोज़ेक तत्वों से भरा बोर्ड बनाना
  • टाइल्स का चयन और चयन रद्द करना
  • रेकास्ट के साथ आसन्न तत्वों की पहचान करना
  • तत्वों को बदलना
  • रेकास्ट के साथ तीन या अधिक तत्वों का मिलान ढूँढना
  • खाली तत्वों को भरना
  • अंक बनाए रखना और गतियों को गिनना

टिप्पणी. यह मानता है कि आप पहले से ही जानते हैं कि एकता संपादक का उपयोग कैसे करें, कोड को कैसे संपादित करें, और आपको सी # का बुनियादी ज्ञान है।

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

इस लेख का हिस्सा:

संबंधित आलेख

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

बुकमार्क करने के लिए

शुरू

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

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

इंजन विकल्प: एकता

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

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

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

एसेट: बनाएं या खरीदें

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

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

यूनिटी डेवलपर्स के रूप में हमारे लिए पहला और सबसे स्पष्ट उत्तर यूनिटी एसेट्स स्टोर था। यह अवसर जितना आकर्षक लग सकता है, इसमें कई कठिनाइयाँ शामिल हैं:

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

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

यूनिटी एसेट्स स्टोर के अलावा अन्य स्रोतों से संपत्ति खरीदने का विकल्प भी था। हालाँकि, एकता के साथ संगतता समस्या थी, और हमने ऐसे प्रयोगों से परहेज करने का निर्णय लिया।

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

यूनिटी एसेट्स स्टोर में संपत्ति की खोज और खरीदारी करते समय हमने कुछ सरल नियम दिए हैं

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

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

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

डेटा कहाँ स्टोर करें: पार्स

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

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

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

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

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

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

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

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

स्टेशनरी बनाम मोबाइल प्लेटफ़ॉर्म: ट्रेडऑफ़

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

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

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

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

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

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

स्थानीयकरण: सरल, बेहतर

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

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

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

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

NGUI स्थानीयकरण प्रणाली उपयोग में सरल और सीधी है। यह एक एकल CSV फ़ाइल के इर्द-गिर्द बनाया गया है जिसमें प्रत्येक भाषा के लिए एक कॉलम है। अनुवाद के लिए तार भेजने के लिए ऐसी फ़ाइल की उपस्थिति बहुत सुविधाजनक है (इसके लिए बड़ी संख्या में विशेष सेवाएँ हैं) और फिर अनुवादित संस्करण सम्मिलित करना।

लिखना

नमस्ते! इस इंजन पर गेम बनाना सीखने के बाद, मैं आपको वही सिखाना चाहता हूं। सबसे पहले, हमें खुद Unity3d, किसी भी 3D मॉडल संपादक और कंधों से बढ़ने वाली सीधी भुजाओं की आवश्यकता है।

1. कार्यक्रम सीखना

शुरुआत के लिए, मैं मोनोडेवलप स्थापित करने की सलाह देता हूं! आइए समझते हैं क्या है एकता। एकता एक बहु-मंच खेल विकास वातावरण है। यह इसकी सादगी और समझ की वजह से है कि हर तीसरे व्यक्ति ने कम से कम एक बार इस पर गेम बनाया है।

ऊपर स्क्रीनशॉट पर विचार करें:

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


अब आप इसमें ऑब्जेक्ट मेनू देखें, आप एनीमेशन, स्क्रिप्ट और बहुत कुछ जोड़ सकते हैं।

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

सामान्य तौर पर, हमने कार्यक्रम का अध्ययन किया है, जल्द ही हमारे अपने खेल लिखना संभव होगा।

2. एक साधारण गेम बनाएं

सबसे पहले, आइए एक क्रिएट-टेरेन क्षेत्र बनाएं। घास और पेड़ जोड़ें। दायीं ओर जमीन पर क्लिक करने पर एक विंडो दिखाई देगी, चुने पेड़, घास।

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

संगीत जोड़ने के लिए, इसे इच्छित आइटम पर खींचें।
खेल तैयार है, लेकिन इसे कैसे संकलित किया जाए?

ऐसा करने के लिए, फ़ाइल-बिल्ड सेटिंग्स-प्लेयर सेटिंग्स (लेबल और नाम के लिए) पर जाएं। एक मंच और वॉयला चुनें, आपका काम हो गया। ऐसा करने के लिए, आपको Android SDK इंस्टॉल करना होगा। लेकिन वहां आपको एसडीके के साथ फ़ोल्डर निर्दिष्ट करने की आवश्यकता है, और आपको न केवल एसडीके, बल्कि वांछित स्तर के एपीआई की आवश्यकता है (उदाहरण के लिए, एंड्रॉइड 4.2 में एपीआई 17 है)। उदाहरण के लिए, गेम को Android 4.0+ पर चलाने के लिए, आपको इन API को इंस्टॉल करना होगा।

अगले लेख में, मैं आपको बताऊंगा कि Android या iOS के लिए नियंत्रण कैसे सेट करें और स्वयं स्क्रिप्ट लिखना सीखें।

हम क्या करने वाले है? मुख्य पात्र के रूप में कोलोबोक के साथ एक 2D पहेली गेम जो बक्से को स्थानांतरित कर सकता है, जो बटन दबा सकता है, जो मेरे द्वारा बनाए गए स्तर से बाहर निकलने वाले दरवाजे खोल सकता है। या आप, हमारे पास यहां एक ट्यूटोरियल है।

यह माना जाता है कि आप पहले ही एकता डाउनलोड कर चुके हैं और संपादक में थोड़ा खेल चुके हैं। नहीं? अब समय आ गया है, मैं इंतज़ार करूँगा।

कच्चा स्केच


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

अब एक प्रकाश स्रोत जोड़ते हैं, मेनू पर जाएं GameObject -> Create Other -> Direct light । इसके निर्देशांक मायने नहीं रखते, यह हमारी वस्तुओं को कहीं से भी उसी तरह रोशन करेगा। हालाँकि, इसे दृश्य से थोड़ा ऊपर उठाना समझ में आता है ताकि यह वस्तुओं के चयन में हस्तक्षेप न करे, इसलिए हम इसके निर्देशांक (0; 0; -10) निर्धारित करेंगे। दृश्य की बात करें तो, एक्स अक्ष बाएं से दाएं, वाई - नीचे से ऊपर तक, और जेड - दर्शक से स्क्रीन में गहराई तक बढ़ेगा। दृश्य के ऊपरी दाएं कोने में क्यूब के चारों ओर तीरों पर क्लिक करें और इसे आवश्यकतानुसार घुमाएं।

आइए दृश्य में एक घन जोड़ें, इसे "दीवार" नाम दें और इसे एसेट्स पर खींचें। गोलाकार कोलोबोक के बगल में एक अकेला घन दीवार बहुत प्रभावशाली नहीं है, है ना? मैजिक कीबोर्ड शॉर्टकट Ctrl+D हमारी दीवार की नकल करने में हमारी मदद करेगा, और इंस्पेक्टर में तीन स्केल फ़ील्ड हमें इसे अपने दिल की सामग्री तक निकालने की अनुमति देगा। एक कमरे के समान कुछ की कल्पना करें, मदद क्लैम्प्ड Ctrl होगी, जो वस्तुओं की गति को एकल अंतराल तक सीमित करती है। इसके अलावा, वी कुंजी आपको ऑब्जेक्ट को शिखर से खींचने की अनुमति देगी, और वे अन्य ऑब्जेक्ट्स के शिखर पर चिपके रहेंगे। अद्भुत, है ना? और क्या आप अभी भी अपना इंजन लिख रहे हैं? ओह अच्छा।


दृश्य सहेजें, चलाएँ हिट करें, और कुछ मिनटों के लिए अपनी रचना का आनंद लें। अच्छे गेम डिज़ाइनर इसे टेस्टिंग कहते हैं। कुछ याद आ रहा है, है ना? हम्म। शायद अगर मैं थोड़ा और प्रशंसा करूं, तो...

लिपियों और भौतिकी

हमें और अधिक आंदोलन और रंग चाहिए! हालाँकि, यदि आपका कठोर बचपन कंक्रीट के खिलौनों से भरा हुआ था, तो आप सब कुछ अपने अधिकार के रूप में छोड़ सकते हैं।

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

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

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

यूनिटीइंजिन का उपयोग करना; पब्लिक क्लास प्लेयरकंट्रोलर: मोनोबिहेवियर (शून्य अपडेट () ())

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

वार दिशा = नया वेक्टर 3 (इनपुट। गेटएक्सिस ("क्षैतिज"), इनपुट। गेटएक्सिस ("वर्टिकल"), 0);

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

Rigidbody.AddForce (दिशा);

सबसे पहले, आइए देखें कि ट्रिगर कैसे काम करते हैं। आइए एकता कंसोल पर कुछ लिखें। Debug.Log फ़ंक्शन बहुत उपयोगी है, टेक्स्ट के अलावा, यह विभिन्न गेम ऑब्जेक्ट्स को प्रिंट भी कर सकता है।

यूनिटीइंजिन का उपयोग करना; सार्वजनिक वर्ग बटन: मोनोबिहेवियर (शून्य OnTriggerEnter(Collider Other) ( Debug.Log("Hello"); ) void OnTriggerExit(Collider other) ( Debug.Log("Habr!"); ) )

उन्होंने मंच पर एक बटन फेंका। परीक्षण किया गया? आगे बढ़ो। यह अच्छा होगा यदि क्लिक करने पर हमारा बटन रंग बदल जाए। रंग के लिए, हमें बटन पर एक सामग्री संलग्न करनी होगी। बनाएँ -> सामग्री, चलो इसे "बटन मैट" कहते हैं और इसे बटन पर डालते हैं। सामग्री के गुणों में, मुख्य रंग के लिए हरे रंग का चयन करें। अब स्क्रिप्ट में, हम renderer.material.color का उपयोग करके सामग्री के रंग तक पहुंच सकते हैं और इसे अपनी इच्छानुसार बदल सकते हैं। जब हमारा कोलोबोक इसमें प्रवेश करता है तो बटन को ब्लश करें। किसी तरह बात निकल गई।

यूनिटीइंजिन का उपयोग करना; सार्वजनिक वर्ग बटन: मोनोबिहेवियर (शून्य ऑनट्रिगरएंटर (कोलाइडर अन्य) (रेंडरर.मटेरियल.कलर = नया रंग (1, 0, 0);) शून्य ऑनट्रिगर एक्ज़िट (कोलाइडर अन्य) (रेंडरर.मटेरियल। 0); )) var दिशा = नया वेक्टर 3 (इनपुट। गेटएक्सिस ("क्षैतिज"), इनपुट। गेटएक्सिस ("वर्टिकल"), 0)। सामान्यीकृत;

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

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


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

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

निष्कर्ष

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

लिंक

लेख से प्रोटोटाइप संस्करण

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

एकता में पर्यावरण सेटअप

आइए सबसे सरल से शुरू करें: डाउनलोड और एकता सेटिंग.

आधिकारिक वेबसाइट या टोरेंट से नवीनतम संस्करण डाउनलोड करें और सेटअप फ़ाइल चलाएँ।

एकता (4.0.1 और उच्चतर) में कोड को संपादित करने के लिए, मोनोडेवलप संपादक का उपयोग किया जाता है। यदि आप विंडोज़ पर हैं, तो आप (और मैं अनुशंसा करता हूं) विंडोज़ के लिए विजुअल स्टूडियो 2013 डेस्कटॉप (सी #) वैकल्पिक संपादक का उपयोग कर सकता हूं और फिर यूनिटी सेटिंग्स में डिफ़ॉल्ट संपादक को विजुअल स्टूडियो में बदल सकता हूं।

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

Mac OS X

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

हमारा पहला गेम सीन

पैनल पदानुक्रम(पदानुक्रम) में वे सभी वस्तुएँ शामिल हैं जो दृश्य में उपलब्ध हैं। जब आप "प्ले" बटन के साथ गेम शुरू करते हैं तो आप इसमें हेरफेर करते हैं।

प्रत्येक दृश्य वस्तु एकता के लिए एक खेल वस्तु है। आप मुख्य दृश्य में या किसी अन्य गेम ऑब्जेक्ट में ऑब्जेक्ट बना सकते हैं। आप किसी ऑब्जेक्ट का पैरेंट बदलने के लिए किसी भी समय उसे स्थानांतरित भी कर सकते हैं।


जैसा कि आप यहां देख सकते हैं, हमारे यहां लेवल ऑब्जेक्ट के लिए 3 बच्चे हैं।

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

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

मंच भरना

डिफ़ॉल्ट रूप से, मुख्य कैमरा ऑब्जेक्ट के साथ एक नया दृश्य बनाया जाता है। इसे मंच पर खींचें।

सबसे पहले, इन खाली वस्तुओं को बनाएं:

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

स्तर में, 3 खाली वस्तुएँ बनाएँ:

  • 0 - पृष्ठभूमि
  • 1-मिडग्राउंड
  • 2 - अग्रभूमि

दृश्य फ़ोल्डर में दृश्य सहेजें। आप जो चाहें उसे नाम दें, उदाहरण के लिए स्टेज 1। यहाँ हमें क्या मिला है:

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

हमने अभी-अभी अपने खेल का बुनियादी ढांचा तैयार किया है। अगले चरण में, हम कुछ मज़ेदार चीज़ें करना शुरू करेंगे: दृश्य में एक पृष्ठभूमि जोड़ें और कुछ और!

दृश्य में पृष्ठभूमि जोड़ना

हमारी पहली पृष्ठभूमि स्थिर होगी। आइए निम्नलिखित छवि का उपयोग करें:


छवि को बनावट फ़ोल्डर में आयात करें। बस इसमें फ़ाइल कॉपी करें, या इसे एक्सप्लोरर से खींचें। अभी के लिए आयात सेटिंग्स के बारे में चिंता न करें।

मंच पर एकता में एक नया स्प्राइट गेम ऑब्जेक्ट बनाएं।

एक स्प्राइट क्या है?

मूल रूप से, एक स्प्राइट एक 2D छवि है जिसका उपयोग वीडियो गेम में किया जाता है। इस मामले में, यह 2D गेम बनाने के लिए एक यूनिटी ऑब्जेक्ट है।

एक स्प्राइट बनावट जोड़ना

एकता स्वचालित रूप से आपके स्प्राइट के लिए पृष्ठभूमि सेट कर सकती है। यदि ऐसा कुछ नहीं हुआ, या यदि आप बनावट बदलना चाहते हैं, तो निरीक्षक टैब पर जाएं और पृष्ठभूमि चुनें: (पृष्ठभूमि)


आपको इनपुट फील्ड के दायीं ओर छोटे गोल आइकन पर क्लिक करना होगा ताकि इंस्पेक्टर में सेलेक्ट स्प्राइट दिखाई दे

मेरा स्प्राइट संवाद बॉक्स में प्रकट नहीं होता है!सुनिश्चित करें कि आप टैब में हैं संपत्ति"स्प्राइट का चयन करें" संवाद बॉक्स। यदि आप डायलॉग बॉक्स खाली देखते हैं, तो घबराएं नहीं। बात यह है कि, एकता की कुछ स्थापनाओं के लिए, यहां तक ​​कि एक नए नए 2डी प्रोजेक्ट के साथ, छवियों को "बनावट" के रूप में आयात किया जाता है न कि "स्प्राइट" के रूप में। इसे ठीक करने के लिए, आपको "प्रोजेक्ट" पैनल में छवि का चयन करना होगा, और "इंस्पेक्टर" में, "टेक्सचर टाइप" प्रॉपर्टी को "स्प्राइट" प्रॉपर्टी में बदलना होगा:

तो, हमने आकाश में बादलों का प्रतिनिधित्व करने वाला एक साधारण प्रेत बनाया है। आइए दृश्य में बदलाव करें। पैनल में पदानुक्रम(पदानुक्रम) नया स्प्राइट चुनें। इसका नाम बदलकर बैकग्राउंड 1 या याद रखने में आसान कुछ करें। इसका नाम बदलकर बैकग्राउंड 1 या याद रखने में आसान कुछ करें। फिर वस्तु को सही जगह पर ले जाएँ: Level -> 0 - Background । निर्देशांकों को (0, 0, 0) में बदलें।


बैकग्राउंड की एक कॉपी बनाएं और उसे (20, 0, 0) पर रखें। यह पहले भाग के साथ बहुत अच्छा जाना चाहिए।

बख्शीश: आप ओएस एक्स पर cmd + D या विंडोज़ पर ctrl + D के साथ किसी ऑब्जेक्ट की कॉपी बना सकते हैं।

स्प्राइट परतें

अगला कथन स्पष्ट है, लेकिन इसके कुछ नुकसान हैं: हम एक 2D दुनिया प्रदर्शित कर रहे हैं। इसका मतलब है कि सभी छवियां समान गहराई पर हैं, अर्थात 0 । और आप ग्राफिक्स इंजन को नहीं पता कि पहले क्या प्रदर्शित करना है। स्प्राइट परतें हमें यह निर्धारित करने की अनुमति देती हैं कि सामने क्या है और पीछे क्या है।

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

आइए अपनी आवश्यकताओं के लिए कुछ परतें जोड़ें (+ बटन का उपयोग करें):

अपने बैकग्राउंड स्प्राइट में बैकग्राउंड लेयर जोड़ें:

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

परत चूकहटाया नहीं जा सकता क्योंकि यह 3D तत्वों द्वारा उपयोग की जाने वाली परत है। आपके पास 2D गेम में 3D ऑब्जेक्ट हो सकते हैं, विशेष रूप से कणों को एकता द्वारा 3D ऑब्जेक्ट के रूप में माना जाता है, इसलिए उन्हें उस परत पर प्रस्तुत किया जाएगा।

पृष्ठभूमि तत्वों को जोड़ना

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


जैसा कि आप देख सकते हैं, हमने एक फाइल में दो प्लेटफॉर्म रखे हैं। यह सीखने का एक अच्छा तरीका है कि नए उपकरणों के साथ स्प्राइट को कैसे क्रॉप किया जाए। एकता.

एक छवि से दो स्प्राइट प्राप्त करना

निम्न कार्य करें:

  1. छवियों को "बनावट" फ़ोल्डर में आयात करें
  2. प्लेटफ़ॉर्म स्प्राइट का चयन करें और इंस्पेक्टर पैनल पर जाएँ
  3. "स्प्राइट मोड" को "एकाधिक" में बदलें
  4. स्प्राइट संपादक बटन पर क्लिक करें

एक नई विंडो (स्प्राइट एडिटर) में आप बनावट को छोटे टुकड़ों में काटने के लिए प्रत्येक प्लेटफॉर्म के चारों ओर आयत बना सकते हैं:


ऊपरी बाएं कोने में स्थित स्लाइस बटन आपको इस थकाऊ काम को जल्दी और स्वचालित रूप से करने की अनुमति देगा:

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

इस पाठ में, हम इस ऑपरेशन को मैन्युअल रूप से करेंगे। प्लेटफॉर्म प्लेटफॉर्म1 और प्लेटफॉर्म2 के नाम बताएं। अब, छवि फ़ाइल के नीचे, आपको दो स्प्राइट अलग-अलग देखना चाहिए:


आइए उन्हें दृश्य में जोड़ें। ऐसा करने के लिए, हम पृष्ठभूमि के लिए समान चरणों का पालन करेंगे: एक नया स्प्राइट बनाएं और प्लेटफ़ॉर्म 1 चुनें। फिर हम इन चरणों को platform2 के लिए दोहराते हैं। उन्हें 1 - मिडिलग्राउंड ऑब्जेक्ट में रखें। सुनिश्चित करें कि उनकी Z स्थिति शून्य है।


प्रीफ़ैब्स (प्रीफ़ैब्स)


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


"प्रीफ़ैब" बटन के बारे में एक नोट: बाद में गेम ऑब्जेक्ट को संशोधित करते समय, आप प्रीफ़ैब में उन परिवर्तनों को लागू करने के लिए "लागू करें" बटन का उपयोग कर सकते हैं, या प्रीफ़ैब में गेम ऑब्जेक्ट के गुणों में सभी परिवर्तनों को पूर्ववत करने के लिए "रिवर्ट" बटन का उपयोग कर सकते हैं। "चयन करें" बटन चयनित गुणों को प्रोजेक्ट विंडो में प्रीफ़ैब संपत्ति में ले जाएगा (उन्हें हाइलाइट किया जाएगा)।

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

अब आप अधिक प्लेटफ़ॉर्म जोड़ सकते हैं जो उनके निर्देशांक, आकार और विमानों को बदलते हैं (आप उन्हें पृष्ठभूमि या अग्रभूमि में रख सकते हैं, बस प्लेटफ़ॉर्म के Z निर्देशांक को 0 पर सेट करें)।

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

परतों

आगे बढ़ने से पहले, हम अपने प्रदर्शन क्रम के साथ किसी भी समस्या से बचने के लिए अपनी परतों को संशोधित करेंगे। ऐसा करने के लिए, बस टैब में Z अक्ष के साथ गेम ऑब्जेक्ट की स्थिति बदलें पदानुक्रम(पदानुक्रम) इस प्रकार है:

2D से 3D में स्विच करते समय, आप "दृश्य" विंडो में परतें स्पष्ट रूप से देखेंगे:


जब आप मेन कैमरा गेम ऑब्जेक्ट पर क्लिक करते हैं, तो आप देखेंगे कि प्रोजेक्शन फ्लैग ऑर्थोग्राफिक पर सेट है। यह सेटिंग कैमरे को वस्तुओं के 3D गुणों पर विचार किए बिना 2D गेम प्रस्तुत करने की अनुमति देती है। ध्यान रखें कि भले ही आप 2D ऑब्जेक्ट के साथ काम कर रहे हों, फिर भी एकता अपने 3D इंजन का उपयोग दृश्य को प्रस्तुत करने के लिए करती है। ऊपर दिया गया चित्र इस बात को स्पष्ट रूप से प्रदर्शित करता है।

अगले पाठ में:

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

श्रेणियाँ

लोकप्रिय लेख

2022 "kingad.ru" - मानव अंगों की अल्ट्रासाउंड परीक्षा