इस गाइड में, गेम का साइज़ कम करने का तरीका बताया गया है. इंस्टॉल होने के बाद, छोटे गेम को डाउनलोड होने में कम समय लगता है और कम डेटा खर्च होता है. इन दोनों से, इंस्टॉल कन्वर्ज़न की संख्या बढ़ती है. Google के शोध के मुताबिक, दिखाए गए APK के साइज़ में 6 एमबी की बढ़ोतरी होने पर, ऐप्लिकेशन इंस्टॉल करने की दर में 1% की कमी आती है. कई डेवलपर, ऐसेट को एपीके से कॉन्टेंट डिलीवरी नेटवर्क (सीडीएन) में ले जाते हैं. हालांकि, इसके बाद उन्हें सीडीएन को होस्ट करने के साथ-साथ, ऐसेट मैनेजमेंट सिस्टम को डेवलप और मैनेज करने के लिए भी शुल्क देना पड़ता है.
किसी गेम का साइज़ कम करने के लिए, यह तरीका अपनाएं:
- ऐप्लिकेशन बंडल और Play Asset Delivery जैसे ऑप्टिमाइज़ किए गए डिलीवरी के तरीकों का इस्तेमाल करें.
- गेम के साइज़ का पता लगाएं और उसके स्ट्रक्चर को समझें.
- ऐसी ऐसेट और अन्य फ़ाइलें खोजें जिनका साइज़ कम किया जा सकता है.
- ग्राफ़िक टेक्सचर की जांच करें और ऑप्टिमाइज़ेशन के अवसरों की पहचान करें.
- ऐसेट के लिए सामान्य सुझावों का पालन करें.
Android ऐप्लिकेशन बंडल और Play Asset Delivery जैसे ऑप्टिमाइज़ किए गए डिलीवरी के तरीकों का इस्तेमाल करें
डिलीवरी के इन तरीकों का इस्तेमाल किया जा सकता है:
आम तौर पर, लेगसी प्रोजेक्ट से पब्लिश करने के लिए APK मिलता है. हालांकि, Google Play पर गेम पब्लिश करने के लिए, Android ऐप्लिकेशन बंडल का इस्तेमाल करना चाहिए. ऐप्लिकेशन बंडल, हर उपयोगकर्ता के डिवाइस कॉन्फ़िगरेशन के हिसाब से ऑप्टिमाइज़ किए गए APK डिलीवर करते हैं. औसतन, ऐप्लिकेशन बंडल से ऐप्लिकेशन का साइज़ 20% तक कम हो जाता है.
Google Play के ज़रिए गेम ऐसेट उपलब्ध कराने के लिए, Play ऐसेट डिलीवरी (पीएडी) का इस्तेमाल करें. इससे, ऐप्लिकेशन बंडलों के लिए डाउनलोड साइज़ की 200 एमबी की सीमा को कई जीबी तक बढ़ाया जा सकता है. किसी बाहरी सीडीएन की ज़रूरत नहीं है. PAD, डिलीवरी के तीन अलग-अलग तरीकों के साथ काम करता है. इनमें से हर तरीके का इस्तेमाल, एक गेम में किया जा सकता है:
- इंस्टॉल के समय: इंस्टॉल करने पर ऐसेट डाउनलोड करें. ऐसेट को ऐसेट पैक में पैकेज किया जाता है. ये ओपेक बाइनरी ब्लॉब (ओबीबी) फ़ाइलों की जगह इस्तेमाल किए जाते हैं.
- फ़ास्ट-फ़ॉलो: इंस्टॉल होने के बाद ऐसेट डाउनलोड करें.
- मांग पर: गेम, ज़रूरत के मुताबिक ऐसेट डाउनलोड करने की प्रोसेस शुरू करता है.
PAD के लिए ज़रूरी है कि गेम को ऐप्लिकेशन बंडल फ़ॉर्मैट में पैक किया गया हो. अगर डेवलपर को अब भी सीडीएन की ज़रूरत है, तो PAD, डेवलपर के सीडीएन के इस्तेमाल किए गए डेटा की मात्रा को भी कम कर सकता है.
Google Play, हर उपयोगकर्ता के डिवाइस कॉन्फ़िगरेशन के लिए ऑप्टिमाइज़ किए गए APK जनरेट करने और उन्हें उपलब्ध कराने के लिए, Android ऐप्लिकेशन बंडल का इस्तेमाल करता है. ऑप्टिमाइज़ किए गए इन APK में, टेक्सचर ऐसेट का एक सेट शामिल होता है. इसे डिवाइस के लिए सबसे सही कंप्रेस करने वाले फ़ॉर्मैट में फ़ॉर्मैट किया जाता है. ज़्यादा से ज़्यादा डिवाइसों पर काम करने के लिए, अपने ऐप्लिकेशन बंडल को अलग-अलग टेक्सचर कंप्रेस करने वाले फ़ॉर्मैट के साथ काम करने के लिए कॉन्फ़िगर करें.
गेम के बेसलाइन साइज़ का पता लगाना और उसकी संरचना को समझना
गेम के बारे में जानने के लिए, किसी भी ऑप्टिमाइज़ेशन के लिए ज़रूरी काम की मात्रा तय करें. साथ ही, यह तय करें कि गेम अतिरिक्त ऐसेट डाउनलोड करता है या नहीं. इसके लिए, यह तरीका अपनाएं:
- डेवलपर से प्रोडक्शन (नॉन-डीबग) बिल्ड या पब्लिश किया गया APK इस्तेमाल करें.
- बाइनरी फ़ाइल के साइज़ को रिकॉर्ड करें. यह साइज़, डेवलपर ने दिया होगा. अगर गेम पब्लिश हो गया है, तो यह साइज़ गेम के Play Store पेज पर दिखेगा. APK के साइज़ के लिए, सबसे अहम यह है कि किसी गेम को चलाने के लिए, उपयोगकर्ता को कितना डेटा डाउनलोड करना होगा.
- किसी डिवाइस पर गेम इंस्टॉल करें और उसे शुरुआती गेम मेन्यू पर चलाएं. इस समय, Android में गेम के इंस्टॉल साइज़ की जांच करें. इसके लिए, सेटिंग > स्टोरेज पर जाएं. कुछ गेम का शुरुआती इंस्टॉलेशन साइज़ कम होता है, क्योंकि यह ऑप्टिमाइज़ करने के लिए मुख्य संख्या होती है. हालांकि, इंस्टॉलेशन के बाद अतिरिक्त डेटा डाउनलोड किया जाता है. कुछ गेम इंस्टॉल होने के बाद, कई गीगाबाइट का डेटा डाउनलोड करते हैं.
- कुछ गेम, खेलने के बाद ही डेटा डाउनलोड करते हैं. आपको गेम को कुछ देर तक खेलना चाहिए, ताकि यह पता चल सके कि पहली बार गेम खेलने वाले सामान्य उपयोगकर्ता के लिए, गेम कितना अतिरिक्त डेटा डाउनलोड करता है.
ऐसी ऐसेट और अन्य फ़ाइलें खोजें जिनका साइज़ कम किया जा सकता है
इस सेक्शन में, APK में मौजूद फ़ाइलों का साइज़ कम करने का तरीका बताया गया है. डिवाइस के हिसाब से जनरेट किए गए APKs डाउनलोड करने के लिए, ऐप्लिकेशन बंडल एक्सप्लोरर का इस्तेमाल किया जा सकता है.
APK में सीधे तौर पर पैकेज की गई फ़ाइलों का साइज़ कम करने के लिए, यह तरीका अपनाएं:
- Android Studio के APK ऐनालाइज़र का इस्तेमाल करें. Android Studio में, File > Profile or debug APK को चुनें. इसके बाद, अपना APK चुनें.
- ऐसेट फ़ोल्डर चुनें. हर फ़ाइल के लिए, फ़ाइल का ओरिजनल साइज़ और डाउनलोड किए गए कुल साइज़ का प्रतिशत दिखाया जाता है.
ऐसेट फ़ोल्डर की समीक्षा करें और पता लगाएं कि गेम का ज़्यादातर डेटा कहां मौजूद है. पता लगाएं कि क्या कोई ऐसी ऐसेट है जो बहुत ज़्यादा जगह लेती है. जैसे, कुल जगह का 1% से ज़्यादा. खास तौर पर, इन बातों पर ध्यान दें:
- बड़ी इमेज और वीडियो फ़ाइलें (उदाहरण के लिए, PNG, JPEG, और mp4 फ़ाइलें): इन फ़ाइलों का इस्तेमाल आम तौर पर स्प्लैश स्क्रीन, बैकग्राउंड, और लोगो में किया जाता है. इन फ़ाइलों का इस्तेमाल ज़्यादातर गेम में बहुत कम किया जाता है. इन्हें कंप्रेस किया जा सकता है. इससे उपयोगकर्ता अनुभव पर कोई असर नहीं पड़ता. बिना क्वालिटी में बदलाव किए सेव की गई PNG फ़ाइलें, खास तौर पर बड़ी होती हैं. इसलिए, इन्हें कंप्रेस करना सबसे सही होता है.
- बड़े फ़ॉन्ट वाली फ़ाइलें (उदाहरण के लिए, TTF फ़ाइलें): इमोजी इस्तेमाल करने की सुविधा जोड़ने पर, फ़ॉन्ट फ़ाइल का साइज़ काफ़ी बढ़ सकता है. अगर फ़ॉन्ट फ़ाइल का साइज़ कुछ सौ किलोबाइट से ज़्यादा है, तो उसके साइज़ को कम करने के तरीके अपनाएं.
- ऑडियो फ़ाइल के डुप्लीकेट फ़ॉर्मैट या वर्शन, जिन्हें एक साथ इस्तेमाल किया जा सकता है.
अगर APK में एक से ज़्यादा ऐप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) शामिल हैं, तो ऐप्लिकेशन बंडल पर जाएं या एक से ज़्यादा APK बनाएं.
शेयर किए गए बाइनरी ऑब्जेक्ट (.so) फ़ाइलों का साइज़ पता करें. बाइनरी फ़ाइलों की जांच करने के लिए, Bloaty McBloatface टूल का इस्तेमाल किया जा सकता है. इससे यह पता चलता है कि क्या कोई ऐसी चीज़ शामिल है जिसकी ज़रूरत नहीं है. जैसे, लॉग फ़ाइलें. बाइनरी फ़ाइलों को ऑप्टिमाइज़ करने के तरीके के बारे में ज़्यादा जानने के लिए, कंपाइल फ़्लैग और विकल्प देखें.
Android मेनिफ़ेस्ट फ़ाइल में, काम करने वाले ग्राफ़िक्स फ़ॉर्मैट देखें. यह पता लगाएं कि APK में एक से ज़्यादा
<supports-gl-texture>
टैग तो नहीं हैं. अगर गेम में एक APK में कई GPU के फ़ॉर्मैट काम करते हैं, तो Binomial's Basis Universal का इस्तेमाल करें. यह जीपीयू टेक्सचर कंप्रेस करने वाला सिस्टम, टेक्सचर फ़ाइलों को इंटरमीडिएट फ़ॉर्मैट में बनाता है. इसे जीपीयू में तुरंत ट्रांसकोड किया जा सकता है.
ग्राफ़िक टेक्सचर की जांच करना और ऑप्टिमाइज़ेशन के अवसरों की पहचान करना
इस सेक्शन में, उन टूल और तरीकों के बारे में बताया गया है जिनकी मदद से यह पता लगाया जा सकता है कि गेम में इस्तेमाल की गई ग्राफ़िक टेक्सचर को ऑप्टिमाइज़ किया जा सकता है या नहीं.
गेम में टेक्सचर की जांच करने के लिए, Android GPU Inspector (AGI), RenderDoc का इस्तेमाल करें. इसके अलावा, सिर्फ़ Qualcomm Snapdragon GPU के लिए, Snapdragon Profiler का इस्तेमाल करें.
इन बातों पर ध्यान दें:
- ऐसे टेक्सचर जिनका साइज़ बदलकर कम रिज़ॉल्यूशन किया जा सकता है. जैसे, किसी ऐसी चीज़ के लिए बड़ा टेक्सचर जिसे गेम में सिर्फ़ छोटे साइज़ में रेंडर किया जाता है. टेक्स्चर को डाउनसैंपल करने में काफ़ी समय लगता है.
- कई छोटी बनावटों का इस्तेमाल किया जाता है, जिन्हें एक बनावट वाले मैप में जोड़ा जा सकता है.
- ऐसे टेक्सचर जिनमें कलर चैनल में कम बिट का इस्तेमाल किया जा सकता है. इसके लिए, कुछ ठोस टेक्सचर वाले टेक्सचर सबसे सही होते हैं. रंगों के ग्रेडिएंट और शेड के लिए, रिज़ॉल्यूशन के ज़्यादा बिट की ज़रूरत होती है. इसलिए, इनका इस्तेमाल करना सही नहीं है.
- ETC1 से लेकर ETC2 और ASTC तक, बेहतर टेक्सचर कंप्रेस करने वाले एल्गोरिदम के बारे में जानें.
कम परफ़ॉर्मेंस वाले डिवाइसों पर टेक्सचर लोड करते समय, सबसे ऊपर वाले मिपमैप लेवल को खारिज कर दें, ताकि मेमोरी बचाई जा सके. Unity का टेक्सचर स्ट्रीमिंग सिस्टम ऐसा कर सकता है.
अगर आपने अब तक ऐसा नहीं किया है, तो Android मेनिफ़ेस्ट फ़ाइल में जाकर, काम करने वाले ग्राफ़िक फ़ॉर्मैट देखें. यह पता लगाएं कि APK में एक से ज़्यादा
<supports-gl-texture>
टैग मौजूद हैं या नहीं. अगर गेम में एक APK में कई जीपीयू के लिए फ़ॉर्मैट इस्तेमाल किए जा सकते हैं, तो Binomial's Basis Universal का इस्तेमाल करें. यह जीपीयू टेक्सचर कंप्रेस करने वाला सिस्टम, टेक्सचर फ़ाइलों को इंटरमीडिएट फ़ॉर्मैट में बनाता है. इसे जीपीयू में तुरंत ट्रांसकोड किया जा सकता है.
ऐसेट के लिए सामान्य सुझाव
किसी APK की ऐसेट के लिए, इन सुझावों का पालन करें:
- इमेज, ऑडियो, और वीडियो ऐसेट (जीपीयू टेक्सचर नहीं): यह तय करें कि ऐसेट का साइज़ बदला जा सकता है या उन्हें और कंप्रेस किया जा सकता है या नहीं. आम तौर पर, गेम के लिए कंप्रेस करने के ज़्यादा अनुपात स्वीकार किए जाते हैं. बिना क्वालिटी में बदलाव किए सेव की गई PNG फ़ाइलें, खास तौर पर बड़ी होती हैं. इसलिए, इन्हें कंप्रेस करना सबसे सही होता है.
- इमेज ऐसेट (जीपीयू टेक्सचर नहीं): इमेज को कंप्रेस करने के लिए, WebP फ़ॉर्मैट का इस्तेमाल करें. इस फ़ॉर्मैट का इस्तेमाल, इमेज को लॉसलेस और लॉसी, दोनों तरीकों से कंप्रेस करने के लिए किया जा सकता है. लॉसी WEBP, JPG की तुलना में इमेज को 25% से 34% ज़्यादा कंप्रेस करता है.
- टेक्स्चर रिज़ॉल्यूशन कम करें: अगर कोई टेक्स्चर, स्क्रीन पर रेंडर होने वाले पिक्सल की संख्या से बहुत बड़ा है, तो इसका मतलब है कि स्पेस और जीपीयू संसाधनों का सही तरीके से इस्तेमाल नहीं किया जा रहा है. अगर आपको गेम को फिर से बनाए बिना, किसी टेक्सचर को बदलना है और देखना है कि वह फ़्रेम में कैसा दिखता है, तो AGI का इस्तेमाल करें.
- ग्राफ़िक्स के टेक्सचर फ़ॉर्मैट बदलें: ऐसे टेक्सचर फ़ॉर्मैट का इस्तेमाल करें जिनमें हर चैनल के लिए कम बिट का इस्तेमाल किया जाता है. उदाहरण के लिए, ARGB जैसे 32-बिट टेक्सचर फ़ॉर्मैट के बजाय, RGB565 जैसे 16-बिट टेक्सचर फ़ॉर्मैट का इस्तेमाल करें. ज़्यादा जानकारी के लिए, यहां जाएं:
अन्य संसाधन
- Android ऐप्लिकेशन बंडल में हाल ही में हुए सुधार और Google Play पर नए ऐप्लिकेशन के लिए समयसीमा
- Android इंस्टैंट गेम में APK का साइज़ कम करना
- जीपीयू से डिकोड की जा सकने वाली सुपरकंप्रेस्ड टेक्सचर (रिसर्च पेपर)