Unity में गेम डेवलपमेंट की शुरुआत करें

इस गाइड में, गेम डेवलपमेंट के सामान्य साइकल के बारे में बताया गया है. इस गाइड को पढ़ने के बाद, आपको इसे रेफ़रंस के तौर पर इस्तेमाल करने में मदद मिल सकती है.

Unity के साथ काम करने पर, डेवलपमेंट लाइफ़साइकल में तीन चरण होते हैं:

  • प्लान और डिज़ाइन
  • बनाना और टेस्ट करना
  • पब्लिश करना और बनाए रखना

प्लान और डिज़ाइन

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

टीम के सभी सदस्यों से इनपुट पाना

कला, इंजीनियरिंग, डिज़ाइन, ऑडियो, और प्रोडक्शन टीमों के साथ मिलकर काम करें. साथ ही, लागू करने से जुड़े टास्क की पहचान करें और उन्हें रिकॉर्ड करें. उदाहरण के लिए:

  • आर्ट टीम, किरदार और एनवायरमेंट के लिए ऐसेट टेक्सचर और मेश बजट बना सकती हैं.
  • इंजीनियरिंग टीम, हर प्लैटफ़ॉर्म के लिए मेमोरी और परफ़ॉर्मेंस के चेकपॉइंट तय कर सकती है.
  • डिज़ाइन टीम, गेम के ऐसे तरीके प्लान कर सकती है जिनसे गेम खेलने का अनुभव बेहतर हो.
  • ऑडियो के विशेषज्ञ, यूज़र इंटरफ़ेस (यूआई), 2D, और 3D स्पेशल साउंड के बीच साउंड की निरंतरता से जुड़ी ज़रूरी शर्तों की समीक्षा कर सकते हैं.
  • प्रोडक्शन टीम, लॉन्च करने से जुड़ी ज़रूरी शर्तों के बारे में बता सकती है. साथ ही, टीम को एक साथ काम करने और समय पर काम पूरा करने में मदद कर सकती है.

मोबाइल के लिए डिज़ाइन करना

मोबाइल प्लैटफ़ॉर्म के लिए ऐप्लिकेशन डेवलप करते समय, कुछ बातों का ध्यान रखना ज़रूरी होता है. जैसे:

  • स्क्रीन के अलग-अलग आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात)
  • ऊर्जा की खपत
  • थर्मल और प्रोसेसर थ्रॉटलिंग
  • टच इनपुट
  • क्रॉस-प्लैटफ़ॉर्म डेवलपमेंट
  • ग्राफ़िक एपीआई (Vulkan या OpenGL ES)

मोबाइल के लिए डिज़ाइन करते समय ध्यान रखने वाली खास बातों के बारे में जानने के लिए, Unity के Android development in Unity और Google Play Academy पर जाएं.

बनाना और टेस्ट करना

डेवलप और टेस्ट करने के चरण में, गेम बनाया जाता है. साथ ही, टेस्टिंग और लॉन्च से पहले की तैयारी की जाती है. Google Play पर इंटरनल टेस्टिंग की जाती है, ताकि लॉन्च करने से जुड़ी ज़रूरी शर्तों को पूरा किया जा सके. Play ऐसेट डिलीवरी और Unity Addressables सिस्टम के आधार पर, Unity में ऐसेट को व्यवस्थित किया जाता है और डिप्लॉयमेंट की रणनीति को बेहतर बनाया जाता है.

यहां दिए गए सेक्शन में, Android के लिए गेम डेवलप करने में आपकी मदद करने के लिए डिज़ाइन किए गए Unity टूल और तकनीकों के बारे में बताया गया है.

रेंडर करना

रेंडरिंग, आपकी Unity सीन से 3D और 2D ऐसेट को स्क्रीन पर दिखाने की प्रोसेस है. Unity इंजन रेंडरिंग को मैनेज करता है. हालांकि, Android प्लैटफ़ॉर्म के लिए कुछ बातों का ध्यान रखना ज़रूरी है.

टेक्स्चर

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

फ़्रेम टाइम

Android डिवाइसों पर ज़्यादा गर्म होने से रोकने के लिए, टारगेट फ़्रेम टाइम की वैल्यू औसतन 21 मिलीसेकंड से कम होनी चाहिए. कभी-कभी, जैसे कि गेम लोड होने या छोटे सिनेमैटिक सीन के दौरान, आपके फ़्रेम का समय 21 मिलीसेकंड से ज़्यादा हो सकता है. हालांकि, गेम के मुख्य अनुभव के लिए, आपको 21 मिलीसेकंड की सीमा से कम समय रखना चाहिए.

मोबाइल प्लैटफ़ॉर्म पर, फ़ोर्स्ड वीसिंक की सुविधा चालू होने पर, फ़्रेम रेट कम हो जाता है. ऐसा तब होता है, जब फ़्रेम रेट, तय किए गए टारगेट से कम हो. उदाहरण के लिए, अगर स्क्रीन अपडेट होने की फ़्रीक्वेंसी 60 हर्ट्ज़ है और आपको 60 फ़्रेम प्रति सेकंड (एफ़पीएस) नहीं मिल रहे हैं, तो आपके गेम की फ़्रीक्वेंसी 30 एफ़पीएस पर सेट हो जाएगी. अगर आपको 30 एफ़पीएस नहीं मिल रहे हैं, तो फ़्रीक्वेंसी 15 एफ़पीएस पर सेट हो जाएगी.

कई Android डिवाइसों में, डिसप्ले रीफ़्रेश रेट 60 हर्ट्ज़ और 120 हर्ट्ज़ होता है. ज़्यादा रेंडरिंग रेट के लिए, थर्मल थ्रॉटलिंग और बैटरी खत्म होने के जोखिम के बिना, बहुत कम फ़्रेम टाइम (60 हर्ट्ज़ अपडेट के लिए 10 मि॰से॰ और 120 हर्ट्ज़ के लिए 5 मि॰से॰) को टारगेट करने के फ़ायदों का आकलन करें.

Unity में अपने गेम के लिए फ़्रेम रेंडर होने की दर सेट करने के लिए, Application.targetFrameRate का इस्तेमाल करें.

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

लाइब्रेरी को चालू करने के लिए, प्रोजेक्ट सेटिंग > प्लेयर में जाकर, Android के लिए सेटिंग में मौजूद, ऑप्टिमाइज़ किया गया फ़्रेम पेसिंग चेकबॉक्स पर सही का निशान लगाएं.

डायलॉग बॉक्स में, प्रोजेक्ट सेटिंग > प्लेयर सेटिंग > ऑप्टिमाइज़ किया गया फ़्रेम पेसिंग दिखाया गया है
पहली इमेज. ऑप्टिमाइज़ किया गया फ़्रेम पेसिंग, Unity 2019.2 और इसके बाद के वर्शन में Player Settings में उपलब्ध है.

Vulkan API

Vulkan एक क्रॉस-प्लैटफ़ॉर्म और हाई-परफ़ॉर्मेंस वाला 3D ग्राफ़िक्स एपीआई है. इसमें OpenGL ES की तुलना में कम ओवरहेड होता है. Unity, Vulkan का इस्तेमाल दो अलग-अलग तरीकों से कर सकता है.

Auto Graphics API

Vulkan के साथ Auto Graphics API का इस्तेमाल किया जा सकता है. हालांकि, इंस्टॉल किए गए Unity वर्शन के हिसाब से, इसके अलग-अलग व्यवहार हो सकते हैं. इसे चुनने के लिए, प्रोजेक्ट सेटिंग > प्लेयर > रेंडरिंग पर जाएं.

Unity के किस वर्शन का इस्तेमाल करना है, यह तय करते समय इन बातों का ध्यान रखें:

  • Unity 2021.1 और इससे पहले के वर्शन में, Auto Graphics API के साथ Vulkan काम नहीं करता. Unity, OpenGL ES 3.2 का इस्तेमाल करने की कोशिश करता है. अगर डिवाइस पर OpenGL ES 3.2 काम नहीं करता है, तो Unity, OpenGL ES 3.1, 3.0 या 2.0 पर वापस आ जाता है.
  • Unity 2021.2 और इसके बाद के वर्शन में, Vulkan का इस्तेमाल सबसे पहले किया जाता है. अगर डिवाइस पर Vulkan काम नहीं करता है, तो Unity, OpenGL ES 3.2, 3.1, 3.0 या 2.0 पर वापस आ जाता है.
प्रोजेक्ट सेटिंग > प्लेयर सेटिंग > रेंडरिंग > ऑटो ग्राफ़िक्स एपीआई
दूसरी इमेज. Auto Graphics API की सेटिंग.

मैन्युअल ग्राफ़िक्स एपीआई

इसके अलावा, ऑटो ग्राफ़िक्स एपीआई को बंद करके, Vulkan को मैन्युअल तरीके से चालू किया जा सकता है. अगर Unity 2021.1 या इससे पहले के वर्शन का इस्तेमाल किया जा रहा है, तो Vulkan का इस्तेमाल करने का यही तरीका है.

अगर इस सूची में Vulkan को OpenGL ES से ऊपर रखा गया है, तो Unity पहले Vulkan का इस्तेमाल करने की कोशिश करता है. अगर डिवाइस पर Vulkan काम नहीं करता है, तो Unity, OpenGL ES के साथ काम करता है. Android पर Vulkan के बारे में ज़्यादा जानकारी के लिए, Vulkan का इस्तेमाल शुरू करना लेख पढ़ें. इसमें यह भी बताया गया है कि मॉडर्न ग्राफ़िक्स एपीआई का इस्तेमाल कैसे करें और अपने गेम की परफ़ॉर्मेंस को कैसे ऑप्टिमाइज़ करें.

प्रोजेक्ट सेटिंग > प्लेयर सेटिंग > रेंडरिंग > ग्राफ़िक्स एपीआई
तीसरी इमेज. Auto Graphics API बंद होने पर, ग्राफ़िक एपीआई को मैन्युअल तरीके से सेट करें. Vulkan पहला विकल्प है. Unity, OpenGL ES 3.0 पर वापस आ जाता है.

ड्रॉ करने के लिए कॉल

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

ड्रॉ कॉल को ट्रैफ़िक लाइट पर लाइन में लगी कारों की तरह समझें. लाइट हरी होने के बाद, लाइट बदलने से पहले कुछ गाड़ियां निकल सकती हैं. लाइट के पीले होने का मतलब है कि आपने टारगेट फ़्रेम टाइम (21 मिलीसेकंड) पूरा कर लिया है. वहीं, लाइट के लाल होने का मतलब है कि आपने फ़्रेम टाइम की 33 मिलीसेकंड की सीमा पूरी कर ली है. इसके बाद, रेंडर होने वाले अगले फ़्रेम पर असर पड़ता है. इसलिए, फ़्रेम रेट आपके टारगेट किए गए 30fps से कम होता है.

अपने गेम में ड्रॉ कॉल की परफ़ॉर्मेंस को बेहतर बनाने के तरीके के बारे में जानने के लिए, Unity Support का बैचिंग लेख पढ़ें.

Shadows

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

टेक्स्चर

Android पर आरजीबी और आरजीबीए टेक्सचर के लिए, सुझाया गया टेक्सचर कंप्रेस करने का फ़ॉर्मैट एएसटीसी है. Unity में, Android पर इस्तेमाल करने के लिए, कम से कम ETC2 टेक्सचर कंप्रेसर का इस्तेमाल करना चाहिए. Unity Build Settings में जाकर, ASTC के बैकअप के तौर पर ETC2 का इस्तेमाल किया जा सकता है.

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

यूज़र इंटरफ़ेस और आसपेक्ट रेशियो

Unity Editor में सीधे तौर पर अलग-अलग डिवाइसों के स्क्रीन रिज़ॉल्यूशन, ओरिएंटेशन, और आसपेक्ट रेशियो की झलक देखने के लिए, Unity के डिवाइस सिम्युलेटर टूल का इस्तेमाल किया जा सकता है. गेम व्यू और डिवाइस सिम्युलेटर व्यू के बीच टॉगल किया जा सकता है.

इस टूल की झलक यहां देखें: Simulate your Game with Device Simulator in Unity!.

चौथी इमेज. डिवाइस सिम्युलेटर पर Trivial Kart चल रहा हो.

आपको Trivial Kart का सोर्स कोड, Github पर games-samples रिपॉज़िटरी में मिल जाएगा.

ड्रॉप-डाउन मेन्यू में डिवाइस के विकल्प चुनकर, डिवाइस सिम्युलेटर व्यू में यूज़र इंटरफ़ेस (यूआई) कैनवस के एलिमेंट के लेआउट और सही होने की पुष्टि तुरंत की जा सकती है:

प्रोजेक्ट सेटिंग > प्लेयर सेटिंग > ऑप्टिमाइज़्ड फ़्रेम पेसिंग
पांचवीं इमेज. डिवाइस सिम्युलेटर में, एडिटर में डिवाइसों को बदलने की सुविधा होती है. इससे आपको डिज़ाइन से जुड़ी समस्याओं का पता पहले ही चल जाता है.
प्रोजेक्ट सेटिंग > प्लेयर सेटिंग > ऑप्टिमाइज़ किया गया फ़ेम पेसिंग
छठी इमेज. डिवाइस सिम्युलेटर पैकेज डाउनलोड करने से पहले, प्री-रिलीज़ पैकेज चालू करें पर सही का निशान लगाएं.

Unity के लिए यूज़र इंटरफ़ेस (यूआई) को ऑप्टिमाइज़ करने की ज़्यादा तकनीकों के बारे में जानने के लिए, Unity का यह ट्यूटोरियल देखें: Optimizing Unity UI.

भौतिक विज्ञान

Nvidia PhysX इंजन, Unity में पहले से मौजूद होता है. डिफ़ॉल्ट सेटिंग की वजह से, मोबाइल पर डेटा ज़्यादा खर्च हो सकता है. इसलिए, इन बातों का ध्यान रखें:

  • अपने टारगेट फ़्रेम रेट पर विचार करें और उसके हिसाब से फ़िक्स्ड टाइमस्टेप सेट करें. डिफ़ॉल्ट रूप से, यह 0.02 मि॰से॰ या 50 हर्ट्ज़ पर सेट होता है. इसे 30 फ़्रेम प्रति सेकंड के टारगेट के लिए, 0.03 या इससे ज़्यादा पर सेट किया जा सकता है.
  • मेष कोलाइडर को आसान बनाएं. साथ ही, लेयर कोलिज़न मैट्रिक्स को कम करें, ताकि किसी खास लेयर टाइप के गेम ऑब्जेक्ट के बीच इंटरैक्शन का पता लगाया जा सके.

मोबाइल गेम के लिए, फ़िज़िक्स सेटिंग और ऑप्टिमाइज़ेशन के बारे में जानकारी पाने के लिए, Unity की Optimize Your Mobile Games eBook देखें.

प्रोफ़ाइल

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

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

प्रोफ़ाइलिंग के लिए, यहां दिए गए टूल का अलग-अलग या एक साथ इस्तेमाल किया जा सकता है.

  • Unity Profiler Unity Profiler, परफ़ॉर्मेंस का विश्लेषण करने वाला एक टूल है. यह Unity Editor में आपके कोड के साथ काम कर सकता है. साथ ही, यह डेवलपमेंट मोड में चल रहे आपके स्टैंडअलोन Android डिवाइस से कनेक्ट हो सकता है.

  • Android GPU Inspector Android GPU Inspector (AGI) की मदद से, फ़्रेम-लेवल की डीबगिंग की जा सकती है. AGI, सिस्टम सेवाओं का भी विश्लेषण करता है. इनमें जीपीयू, सीपीयू, मेमोरी, बैटरी, और जीपीयू काउंटर शामिल हैं.

Unity में अपने गेम की प्रोफ़ाइलिंग के बारे में ज़्यादा जानने के लिए, Unity में प्रोफ़ाइलिंग के बारे में जानकारी वीडियो देखें या Unity गेम की प्रोफ़ाइलिंग के बारे में पूरी जानकारी देने वाली गाइड पढ़ें. ये दोनों Unity से उपलब्ध हैं.

मेमोरी मैनेज करना

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

C# में लिखी गई स्क्रिप्ट पर काम करते समय, स्ट्रिंग, स्ट्रिंग की तुलना, और स्ट्रिंग से जुड़े ऑब्जेक्ट (जैसे कि गेम की सेटिंग के लिए JSON फ़ाइलें) के इस्तेमाल के बारे में सावधान रहें. इनसे मेमोरी बार-बार असाइन होती है और फ़्रैगमेंटेशन हो सकता है.

स्ट्रिंग में बदलाव करने के लिए, StringBuilder क्लास का इस्तेमाल करें. ऐसा इसलिए, क्योंकि स्ट्रिंग को एक साथ जोड़ने (जैसे कि "this" + "is" + "a" + "bad" + "idea" बनाम StringBuilder.Concat() फ़ंक्शन कॉल) की तुलना में, यह ज़्यादा बेहतर है.

स्ट्रिंग के बारे में ज़्यादा जानकारी के लिए, Unity के दस्तावेज़ में स्ट्रिंग और टेक्स्ट देखें.

टेक्स्ट ऐसेट और JSON टेक्स्ट रिसॉर्स का आकलन, पसंदीदा ScriptableObject टाइप के हिसाब से करें. ScriptableObjects क्रॉस-सीन डेटा स्टोरेज को बेहतर तरीके से मैनेज करता है और एडिटर से लेकर गेम खेलने के समय तक बदलाव करने की अनुमति देता है.

मोबाइल ऑप्टिमाइज़ेशन के लिए, डिफ़ॉल्ट JSON हैंडल के विकल्पों का इस्तेमाल करने के बारे में जानने के लिए, Hutch पर नेटवर्क गेम में छिपा हुआ ऑप्टिमाइज़ेशन लेख पढ़ें.

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

Android डिवाइसों पर मेमोरी को व्यवस्थित करने के तरीके और Unity के साथ काम करने के तरीके के बारे में ज़्यादा जानने के लिए, Android में मेमोरी के इस्तेमाल को समझना (Google I/O '18 से) वीडियो देखें. इस वीडियो में, मेमोरी से जुड़ी समस्याओं के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि मेमोरी कम होने पर किलर कब काम करता है.

गार्बेज कलेक्शन

मैनेज की गई मेमोरी वाले एनवायरमेंट में गार्बेज कलेक्शन, इस्तेमाल नहीं की गई मेमोरी के फ़्रैगमेंट को साफ़ करता है. इन फ़्रैगमेंट को किसी ऐप्लिकेशन के लिए रीसाइकल किया जा सकता है. मेमोरी संसाधनों के गैर-ज़रूरी असाइनमेंट से बचने के लिए, गारबेज कलेक्शन के सबसे सही तरीके अपनाएं.

उदाहरण के लिए, मांग पर किए जाने वाले असाइनमेंट (GameObject.Instantiate) का इस्तेमाल करने के बजाय, गेम ऑब्जेक्ट पूल बनाएं. बड़े पूल के लिए, कई फ़्रेम पर असाइनमेंट करने पर विचार करें, ताकि एंट्री-लेवल वाले Android डिवाइसों पर आपके गेम के काम न करने का जोखिम कम हो सके.

यहां एक सामान्य कोरूटीन के लिए कोड स्निपेट दिया गया है. इसे MonoBehaviour की शुरुआत से ही कॉल किया जाता है:

// Option 1: Bad for memory management - causes allocation each iteration
IEnumerator UpdateEnemyTarget() {
  while (enabled) {
    yield return new WaitForSeconds(1.0f);
    // Some intermittent function check
  }
}

// Option 2: Better for memory management - allocation of yield instruction once, reused each iteration
private YieldInstruction waitForSecond = new WaitForSeconds(1.0f);
IEnumerator BetterUpdateEnemyTarget() {
  while (enabled) {
    yield return waitForSecond;
    // Some other intermittent function
  }
}

MonoBehaviour टेंप्लेट फ़ाइल में बदलाव किया जा सकता है. इससे डिफ़ॉल्ट Start() और Update() स्टब फ़ंक्शन हटाए जा सकते हैं. इससे आपको डेवलपमेंट के दौरान, गलती से खाली फ़ंक्शन नहीं छोड़ने पड़ेंगे.

MonoBehaviour इवेंट के एक्ज़ीक्यूशन के क्रम की खास जानकारी के लिए, Unity के दस्तावेज़ में इवेंट फ़ंक्शन के एक्ज़ीक्यूशन का क्रम देखें. मेमोरी मैनेजमेंट के बारे में ज़्यादा जानने के लिए, Memory Management in Unity कोर्स देखें.

मोबाइल गेम की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने से जुड़ी सलाह के लिए, अपने मोबाइल गेम की परफ़ॉर्मेंस को ऑप्टिमाइज़ करें: Unity के टॉप इंजीनियरों से प्रोफ़ाइलिंग, मेमोरी, और कोड आर्किटेक्चर के बारे में सलाह लेख पढ़ें.

प्रीफ़ैब पूलिंग

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

आपको Unity Asset Store पर, गेम ऑब्जेक्ट पूलिंग मैनेजमेंट से जुड़ी तीसरे पक्ष की कई पूलिंग ऐसेट मिल सकती हैं. अपना खुद का इंटरैक्शन भी बनाया जा सकता है. Unity Learn पर ऑब्जेक्ट पूलिंग के बारे में जानकारी देखें.

ऐसेट डिलीवरी

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

Play ऐसेट डिलीवरी (पीएडी) सेवा का इस्तेमाल करके, उन ऐसेट को मैनेज किया जा सकता है जिनकी ज़रूरत आपके गेम को इंस्टॉल करने के दौरान, फ़ास्ट फ़ॉलो या मांग पर होती है. Unity ऐसेट बंडल को PAD के साथ इंटिग्रेट किया जाता है. साथ ही, इस टूल का इस्तेमाल करके यह तय किया जा सकता है कि कौनसे एलिमेंट डिलीवर किए जाएं.

ऐड्रेस किए जा सकने वाले ऑब्जेक्ट

अगर आपने Addressables के नाम रखने के सिस्टम को तैयार और उसकी समीक्षा कर ली है, तो रनटाइम में डाइनैमिक रिसॉर्स (जैसे कि प्रीफ़ैब, टेक्सचर, और साउंड फ़ाइलें) सेट अप करना अब मुश्किल नहीं है. संबोधित की जा सकने वाली ऐसेट, कॉन्टेंट को व्यवस्थित करने के तरीके को कॉन्टेंट बनाने और लोड करने के तरीके से अलग करती हैं. Addressables सिस्टम, Resources फ़ोल्डर और ऐसेट बंडल की जगह लेता है. इससे, ऐसेट को रेफ़रंस करना और उन्हें रनटाइम पर लोड करना आसान हो जाता है.

उदाहरण के लिए, GitHub पर Addressables पैकेज का इस्तेमाल करने वाला डेमो प्रोजेक्ट देखें. Addressables को डेवलप करने के बारे में जानकारी के लिए, Unity Blog पर Addressable Asset System देखें.

ऐड्रेस की जानकारी देने वाले ऐसेट लेआउट में, बहुत कम या बहुत ज़्यादा ऐसेट को एक साथ बंडल करने के फ़ायदे और नुकसान होते हैं. Addressables की मदद से कॉन्टेंट मैनेजमेंट के बारे में ज़्यादा जानने के लिए, Addressables की मदद से कॉन्टेंट मैनेजमेंट को आसान बनाएं लेख पढ़ें.

आपके पास स्टैंडअलोन डेमो सेट अप करने का विकल्प होता है. साथ ही, ऐक्सेस के मोड को आज़माकर, Addressables सिस्टम को बेहतर तरीके से समझा जा सकता है. ओपन सोर्स प्रोजेक्ट BuildLayout Explorer for Unity 2019.3 and newer भी देखा जा सकता है. साथ ही, Addressables से जनरेट हुई buildlayout.txt रिपोर्ट की जांच की जा सकती है.

Unity Open Project, Chop Chop की ऐसेट को Addressables सिस्टम का इस्तेमाल करके पैकेज किया गया था. इससे सभी ऐसेट को लोड और अनलोड किया जा सकता है. Addressables बंडल को कॉन्फ़िगर करने के स्ट्रक्चर और सेटअप के बारे में जानने के लिए, Packaging content with Addressable Assets | Open Projects Devlog देखें.

Chop Chop प्रोजेक्ट में, डिफ़ॉल्ट रूप से लोड होने वाला सीन, Initialization सीन था. इसे प्रोजेक्ट में मौजूद ऐसेट (सीन, प्रीफ़ैब वगैरह) के डायरेक्ट लिंक के बजाय, AssetReferences का इस्तेमाल करने के लिए कॉन्फ़िगर किया गया था.

Unity Open Project: Chop Chop का सोर्स कोड, GitHub पर उपलब्ध है. हालांकि, अब इस प्रोजेक्ट पर काम नहीं किया जा रहा है, लेकिन इसका git repo और दस्तावेज़ अब भी उपलब्ध है.

तीसरे पक्ष के प्लगिन

अगर तीसरे पक्ष के प्लगिन का इस्तेमाल किया जाता है, जैसे कि Unity Asset Store में मौजूद प्लगिन, तो पक्का करें कि आपने फ़ोल्डर की समीक्षा कर ली हो. साथ ही, Resources फ़ोल्डर से गैर-ज़रूरी ऐसेट हटा दी हों. बिल्ड प्रोसेस के दौरान, Unity उन सभी ऐसेट को इकट्ठा करता है जो Resources फ़ोल्डर में शामिल होती हैं. इसके बाद, उन्हें एक बंडल में पैक कर देता है. इस बंडल को रनटाइम में ऐक्सेस किया जा सकता है. इससे फ़ाइनल पैकेज का साइज़ बढ़ सकता है. हालांकि, इसकी अक्सर ज़रूरत नहीं होती.

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

सातवीं इमेज. Unity ऐसेट स्टोर से डाउनलोड किए गए फ़ोल्डर में, कई Resources फ़ोल्डर हो सकते हैं. इन्हें हटा दें, ताकि इन्हें आपके ऐप्लिकेशन बंडल में शामिल न किया जाए.

पब्लिश करना और बनाए रखना

मोबाइल गेम लॉन्च करने से पहले, यह तय करें कि आपको इसे किन लोगों के लिए रिलीज़ करना है. साथ ही, यह तय करें कि ऐल्फ़ा और बीटा टेस्टिंग कैसे करनी है. इसके अलावा, यह भी तय करें कि लॉन्च के बाद परफ़ॉर्मेंस को कैसे मॉनिटर और ट्रैक करना है.

सीमित रिलीज़ से मिले सुझावों का विश्लेषण करना

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

उदाहरण के लिए, अपने ऐप्लिकेशन की परफ़ॉर्मेंस और खिलाड़ियों के रुझानों के बारे में अहम जानकारी पाने के लिए, Android Performance Tuner for Unity और Google Analytics for Unity का इस्तेमाल किया जा सकता है. इससे आपकी डेवलपमेंट टीम, अपडेट को बेहतर बना सकती है और उन्हें पुश कर सकती है. इसके अलावा, अपने ऐनलिटिक्स डेटा का इस्तेमाल करके, मिलते-जुलते जॉनर के सीक्वल या गेम प्लान किए जा सकते हैं.

ऐल्फ़ा और बीटा टेस्ट

Google Play Console में अपनी ऐप्लिकेशन प्रोफ़ाइल सेट अप करने के बाद, सार्वजनिक ऐल्फ़ा और बीटा टेस्ट के लिए बिल्ड तैयार किए जा सकते हैं. साथ ही, उन्हें लॉन्च से पहले समीक्षा के लिए, सीमित ऑडियंस के साथ शेयर किया जा सकता है. चुनिंदा लोगों के लिए ऐप्लिकेशन लॉन्च करने से, आपको ज़्यादा डिवाइसों पर ऐप्लिकेशन की जांच करने का मौका मिलता है. इससे, आपको ऐप्लिकेशन से जुड़ी समस्याओं को ठीक करने में मदद मिलती है. साथ ही, आपको शुरुआती सुझाव/राय मिलती है. इससे, आपको ऐप्लिकेशन को दुनिया भर में लॉन्च करने से पहले, इन सुझाव/राय पर काम करने का मौका मिलता है.

आपके Unity बिल्ड, Android ऐप्लिकेशन बंडल के ज़रिए डिस्ट्रिब्यूट किए जाते हैं. ज़्यादा जानकारी के लिए, Unity का मैन्युअल: Google Play पर ऐप्लिकेशन डिलीवर करना लेख पढ़ें. इसमें APK फ़ाइलों से AAB फ़ॉर्मैट में हुए बदलावों के बारे में भी बताया गया है.

मॉनिटर और ट्रैक करना

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

अक्सर बड़ी डेवलपमेंट टीमों के पास, गेम की टेलीमेट्री से जुड़ी यूनीक और कस्टम पाइपलाइन होती हैं. इनसे डिवाइस की परफ़ॉर्मेंस से जुड़ी मेट्रिक मिलती हैं. फ़्रेम रेट, ग्राफ़िक की क्वालिटी, कॉन्टेंट लोड होने में लगने वाले समय, और लोडिंग के समय ऐप्लिकेशन बंद होने से जुड़ी मेट्रिक को बेहतर बनाने के लिए, Android Performance Tuner (APT) और इससे जुड़े Unity प्लगिन का इस्तेमाल करना न भूलें. Android Performance Tuner को अपने Unity गेम में इंटिग्रेट करना में दिए गए निर्देशों का पालन करें.

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