Android ऐप्लिकेशन बंडल में, टेक्सचर कंप्रेस करने के फ़ॉर्मैट को टारगेट करना

बनावट ऐसी इमेज होती हैं जिन्हें किसी 3D मॉडल की सतह पर लागू किया जा सकता है. बनावट 2D रेंडरर, स्प्राइट या बैकग्राउंड जैसे एलिमेंट बनाने के लिए भी इनका इस्तेमाल करते हैं. इस पेज पर, गेम में इस्तेमाल किए जाने वाले टेक्सचर कंप्रेशन फ़ॉर्मैट के बारे में जानकारी मिलती है. साथ ही, यह भी बताया गया है कि उन्हें 'Android ऐप्लिकेशन बंडल' फ़ॉर्मैट में टारगेट नहीं किया जा सकता. मैसेज पढ़ा गया Android ऐप्लिकेशन बंडल के बारे में जानकारी और शुरू करने से पहले, Play ऐसेट डिलीवरी पढ़ें.

बैकग्राउंड

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

आधुनिक मोबाइल हार्डवेयर पर सामान्य टेक्सचर कंप्रेस करने के फ़ॉर्मैट यहां दिए गए हैं:

  • ASTC: नए फ़ॉर्मैट को पुराने फ़ॉर्मैट की जगह इस्तेमाल करने के लिए डिज़ाइन किया गया है. इससे ज़्यादा सुविधाजनक इसलिए पिछले फ़ॉर्मैट के वीडियो बनाए जा सकते हैं. इस फ़ॉर्मैट का इस्तेमाल करना अपने गेम के साइज़ को ऑप्टिमाइज़ करने का एक अच्छा तरीका है.
  • ETC2: OpenGL ES 3.0 और इसके बाद के वर्शन के साथ काम करने वाले सभी डिवाइसों पर काम करता है. इसमें तकरीबन सभी ऐक्टिव Android मोबाइल डिवाइस शामिल हैं.

ये फ़ॉर्मैट, Android के नीचे बताए गए अनुमानित प्रतिशत के साथ काम करते हैं डिवाइस:

टेक्सचर कंप्रेस करने का फ़ॉर्मैट उन Google Play डिवाइसों का प्रतिशत जिन पर यह सुविधा काम करती है
एएसटीसी 80% से ज़्यादा
ईटीसी2 95 प्रतिशत से ज़्यादा

Google Play Games on PC को चलाने वाले डेस्कटॉप कंप्यूटर के जीपीयू भी इस फ़ॉर्मैट के साथ काम करते हैं:

  • DDS या S3TC: कभी-कभी इसे BCn, DXTC या DXTn कहा जाता है.

पुराने, अब सुझाए गए टेक्सचर कंप्रेशन फ़ॉर्मैट में ये शामिल नहीं हैं:

  • ETC1: यह सुविधा ज़्यादातर डिवाइसों पर काम करती है. यह फ़ॉर्मैट पारदर्शिता के साथ काम नहीं करता, लेकिन गेम ऐल्फ़ा कॉम्पोनेंट के लिए दूसरी टेक्सचर फ़ाइल का इस्तेमाल कर सकते हैं.
  • PVRC: iOS गेम में लोकप्रिय है, और कुछ Android डिवाइस पर भी काम करता है.

ETC1 की सुविधा सिर्फ़ उन गेम के लिए ज़रूरी है जो बहुत पुराने वर्शन का इस्तेमाल करते हैं या ऐसे Android TV डिवाइस चुनें जो OpenGL ES 3.0 और उच्च.

एक डिफ़ॉल्ट फ़ॉर्मैट

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

अगर डिवाइस के बहुत पुराने हार्डवेयर को टारगेट नहीं किया जा रहा है, तो ETC2 अच्छा विकल्प है डिफ़ॉल्ट फ़ॉर्मैट के लिए. आपको ऐसे ETC2 फ़ॉर्मैट इस्तेमाल करने चाहिए जिनके लिए गारंटी दी गई है कि OpenGL ES 3.0 में काम करता है. ये फ़ॉर्मैट, Vulkan ग्राफ़िक एपीआई में भी उपलब्ध हैं.

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

अगर आपका गेम, Google Play Games on PC के साथ काम करता है और Vulkan का इस्तेमाल किया जाता है, तो S3TC टेक्स्चर शामिल होने चाहिए. S3TC फ़ॉर्मैट इनके साथ काम करते हैं: सभी डेस्कटॉप जीपीयू के लिए.

ऐप्लिकेशन बंडल बनाना

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

अगर आपका गेम Unity में नहीं है, तो ऐप्लिकेशन बंडल बनाने के लिए Gradle का इस्तेमाल करें. बेहतर उपयोगकर्ता bundletool का इस्तेमाल कर सकते हैं.

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

Gradle का इस्तेमाल करना

  1. अपने प्रोजेक्ट के 'Android Gradle प्लग इन' का वर्शन अपडेट करें build.gradle फ़ाइल का वर्शन 4.1 या उसके बाद का होना चाहिए (उदाहरण के लिए, com.android.tools.build:gradle:4.1.0).

  2. अपने गेम के लिए टारगेट किए जाने वाले डिवाइस टाइप का सेट तय करें और वे टेक्सचर कंप्रेशन फ़ॉर्मैट का इस्तेमाल करते हैं, जिनका वे इस्तेमाल करते हैं. फ़ॉर्मैट, बैकग्राउंड देखें).

  3. हर टेक्सचर कंप्रेशन फ़ॉर्मैट के लिए, अपनी ऐसेट के वर्शन पिछला चरण. इसमें सॉफ़्टवेयर का इस्तेमाल करके, स्प्राइट शीट जनरेट करना शामिल हो सकता है पसंद करें TexturePacker या एक ऐसी स्क्रिप्ट चलाना जो रॉ ऐसेट को किसी खास फ़ॉर्मैट वाली ऐसेट में बदल देती है (उदाहरण के लिए, astc-एन्कोडर).

  4. ऐसेट पैक बनाएं (देखें C++ या Java के लिए बिल्ड), इन ऐसेट में आपकी गेम ऐसेट शामिल होती हैं. इनका इस्तेमाल 'Play ऐसेट डिलीवरी' में किया जाता है. इसके लिए उदाहरण के लिए, हर लेवल के लिए एक ऐसेट पैक या हर लेवल के लिए एक ऐसेट पैक बनाया जा सकता है अपडेट किया जा सकता है.

  5. अपने ऐसेट पैक में, हर टेक्सचर कंप्रेस करने के फ़ॉर्मैट के लिए डायरेक्ट्री जोड़ें जिसके लिए आपको मदद चाहिए. इस्तेमाल किए जा सकने वाले सफ़िक्स जोड़ें टेक्सचर कंप्रेशन से जुड़े टेक्सचर डायरेक्ट्री के नाम शामिल फ़ाइलों के लिए इस्तेमाल किया जाने वाला फ़ॉर्मैट.

    ऐसी डायरेक्ट्री बनाएं जिसके नाम में कोई सफ़िक्स न हो (उदाहरण के लिए, common/src/main/assets/textures/). इस डायरेक्ट्री में, डिफ़ॉल्ट आपकी टेक्सचर ऐसेट का फ़ॉर्मैट तय करता है. यह डिफ़ॉल्ट फ़ॉर्मैट इनके साथ काम करना चाहिए: ज़्यादातर डिवाइस (उदाहरण के लिए, ETC1 या ETC2). अगर कोई डिवाइस किसी अन्य फ़ॉर्मैट में विज्ञापन दिखाए जा सकते हैं (उदाहरण के लिए, नीचे दी गई टेबल में PVRC और ASTC), तो Google Play Store इस डायरेक्ट्री को इंस्टॉल करता है.

    निर्देशिका पहले इसके बाद डायरेक्ट्री
    common ऐसेट पैक:
    Common/build.gradle
    Common/src/main/assets/textures/...
    common ऐसेट पैक:
    Common/build.gradle
    Common/src/main/assets/textures/...
    Common/src/main/assets/textures#tcf_astc/...
    Common/src/main/assets/textures#tcf_pvrtc/...
    level1 ऐसेट पैक:
    level1/build.gradle
    level1/src/main/assets/textures/...
    level1 ऐसेट पैक:
    level1/build.gradle
    level1/src/main/assets/textures/...
    level1/src/main/assets/textures#tcf_astc/...
    level1/src/main/assets/textures#tcf_pvrtc/...
    level2 ऐसेट पैक:
    level2/build.gradle
    level2/src/main/assets/textures/...
    level2 ऐसेट पैक:
    level2/build.gradle
    level2/src/main/assets/textures/...
    level2/src/main/assets/textures#tcf_astc/...
    level2/src/main/assets/textures#tcf_pvrtc/...
  6. डेटा को अलग-अलग सेगमेंट में बांटने के लिए, अपने ऐप्लिकेशन की build.gradle फ़ाइल को अपडेट करें हर टेक्सचर के हिसाब से ऐसेट पैक इस्तेमाल करें.

    // In the app build.gradle file:
    android {
        ...
        bundle {
            texture {
                enableSplit true
            }
        }
    }
    
  7. Android Studio में, बिल्ड > चुनें हस्ताक्षर किया गया बंडल / APK जनरेट करें या लॉन्च करो कमांड लाइन से टास्क को ग्रेड करें अपना बंडल जनरेट करें.

Google Play Unity प्लगिन का इस्तेमाल करना

Play ऐसेट डिलीवरी के लिए Unity प्लगिन या पैकेज पाना इसका इस्तेमाल, टेक्सचर के हिसाब से टारगेट किए गए ऐसेट पैक के साथ ऐप्लिकेशन बंडल बनाने के लिए किया जाता है.

ऐसेट तैयार करना

अगर आपको ऐप्लिकेशन बंडल बनाने के लिए अपनी टेक्सचर ऐसेट तैयार करनी हैं, तो यह तरीका अपनाएं:

  1. अपने सीन और ऐसेट को एक से ज़्यादा यूनिट में पैकेज करें AssetBundles.

  2. अपने गेम के लिए टारगेट किए जाने वाले डिवाइस टाइप का सेट तय करें और वे टेक्सचर कंप्रेशन फ़ॉर्मैट का इस्तेमाल करते हैं, जिनका वे इस्तेमाल करते हैं. फ़ॉर्मैट, बैकग्राउंड देखें).

  3. AssetBundles मल्टीपल जनरेट करने के लिए, अपने गेम की बिल्ड स्क्रिप्ट में बदलाव करें बार. एक बार हर उस बनावट फ़ॉर्मैट के लिए जिसका आपको इस्तेमाल करना है. ज़्यादा जानकारी के लिए, उदाहरण के लिए, यह स्क्रिप्ट नीचे दी गई है:

    using Google.Android.AppBundle.Editor;
    using UnityEditor;
    
    public class MyBundleBuilder
    {
       [MenuItem("Assets/Build AssetBundles TCF variants")]
       public static void BuildAssetBundles()
       {
           // Describe the AssetBundles to be built:
           var assetBundlesToBuild = new []
           {
               new AssetBundleBuild
               {
                   assetBundleName = "level1-textures",
                   assetNames = new[] {"level1/character-textures", "level1/background-textures"}
               },
               new AssetBundleBuild
               {
                   assetBundleName = "level2-textures",
                   assetNames = new[] {"level2/character-textures", "level2/background-textures"}
               }
           };
    
           // Describe where to output the asset bundles and in which formats:
           var outputPath = "Assets/AssetBundles";
           var defaultTextureFormat = MobileTextureSubtarget.ETC2;
           var additionalTextureFormats = new[] { MobileTextureSubtarget.ASTC, MobileTextureSubtarget.PVRTC }
           var allowClearDirectory = true;
    
           // Generate asset bundles:
           AssetBundleBuilder.BuildAssetBundles(
               outputPath,
               assetBundlesToBuild,
               BuildAssetBundleOptions.UncompressedAssetBundle,
               defaultTextureFormat,
               additionalTextureFormats,
               allowClearDirectory);
    
           // While in this example we're using the UI to configure the
           // AssetBundles, you can use the value returned by BuildAssetBundles
           // to configure the asset packs, if you want to build the bundle
           // entirely using the scripting API.
       }
    }
    
  4. पुष्टि करें कि हर टेक्सचर ऐसेट किसी डायरेक्ट्री में सही प्रत्यय (उदाहरण के लिए, #tcf_astc).

    पुष्टि करें कि जिस डायरेक्ट्री के नाम में कोई सफ़िक्स नहीं है वह आउटपुट है (उदाहरण के लिए, Assets/AssetBundles/). इस डायरेक्ट्री में आपका डिफ़ॉल्ट फ़ॉर्मैट टेक्सचर ऐसेट का इस्तेमाल करता है. यह डिफ़ॉल्ट प्रारूप ज़्यादातर डिवाइस पर काम करना चाहिए (इसके लिए उदाहरण के लिए, ETC2). अगर कोई डिवाइस अन्य तय फ़ॉर्मैट के साथ काम नहीं करता है (उदाहरण के लिए, पिछले चरण से मिले कोड में ASTC), फिर Google Play इसके बजाय, Store यह डायरेक्ट्री इंस्टॉल करता है.

    Assets/AssetBundles.meta
    Assets/AssetBundles/AssetBundles
    Assets/AssetBundles/AssetBundles.manifest
    Assets/AssetBundles/AssetBundles.manifest.meta
    Assets/AssetBundles/AssetBundles.meta
    Assets/AssetBundles/samplescene
    Assets/AssetBundles/samplescene.manifest
    Assets/AssetBundles/samplescene.manifest.meta
    Assets/AssetBundles/samplescene.meta
    Assets/AssetBundles/texturesbundle
    Assets/AssetBundles/texturesbundle.manifest
    Assets/AssetBundles/texturesbundle.manifest.meta
    Assets/AssetBundles/texturesbundle.meta
    Assets/AssetBundles#tcf_astc.meta
    Assets/AssetBundles#tcf_astc/AssetBundles
    Assets/AssetBundles#tcf_astc/AssetBundles.manifest
    Assets/AssetBundles#tcf_astc/AssetBundles.manifest.meta
    Assets/AssetBundles#tcf_astc/AssetBundles.meta
    Assets/AssetBundles#tcf_astc/samplescene
    Assets/AssetBundles#tcf_astc/samplescene.manifest
    Assets/AssetBundles#tcf_astc/samplescene.manifest.meta
    Assets/AssetBundles#tcf_astc/samplescene.meta
    Assets/AssetBundles#tcf_astc/texturesbundle
    Assets/AssetBundles#tcf_astc/texturesbundle.manifest
    Assets/AssetBundles#tcf_astc/texturesbundle.manifest.meta
    Assets/AssetBundles#tcf_astc/texturesbundle.meta
    
  5. Google > चुनें Android > ऐसेट डिलीवरी.

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

    AssetBundle के लिए डिलीवरी मोड सेट करना न भूलें.

    Unity AssetBundle डिलीवरी का डिफ़ॉल्ट फ़ॉर्मैट

  7. कोई ऐसा फ़ोल्डर जोड़ने के लिए फ़ोल्डर जोड़ें पर क्लिक करें जिसमें ऐसेट के लिए बनाए गए AssetBundles शामिल हो कोई दूसरा फ़ॉर्मैट (उदाहरण के लिए, ASTC). ज़रूरत के मुताबिक दोहराएं.

    हर AssetBundle के लिए डिलीवरी मोड सेट करना न भूलें.

    Unity AssetBundle डिलीवरी ASTC फ़ॉर्मैट

बनाएं

Google > चुनें अपने Android ऐप्लिकेशन का Unity बिल्ड लॉन्च करने के लिए गेम. यह AssetBundles को कई ऐसेट पैक में पैकेज भी करता है, जिनमें हर AssetBundle का नाम, एक ऐसेट पैक में बदल दिया जाता है.

(बेहतर) बंडलटूल का इस्तेमाल करें

bundletool के बारे में ज़्यादा जानकारी के लिए, इसे देखें बंडलटूल का इस्तेमाल करके ऐप्लिकेशन बंडल बनाएं.

ऐप्लिकेशन बंडल बनाने के लिए, यह तरीका अपनाएं:

  1. डाउनलोड करें bundletool को GitHub रिपॉज़िटरी से लिया गया है.

  2. अपने गेम के लिए टारगेट किए जाने वाले डिवाइस टाइप का सेट तय करें और वे टेक्सचर कंप्रेशन फ़ॉर्मैट का इस्तेमाल करते हैं, जिनका वे इस्तेमाल करते हैं. फ़ॉर्मैट, बैकग्राउंड देखें).

  3. हर टेक्सचर कंप्रेशन फ़ॉर्मैट के लिए, अपनी ऐसेट के वर्शन पिछला चरण. इसमें सॉफ़्टवेयर का इस्तेमाल करके, स्प्राइट शीट जनरेट करना शामिल हो सकता है पसंद करें TexturePacker या एक ऐसी स्क्रिप्ट चलाना जो रॉ ऐसेट को किसी खास फ़ॉर्मैट वाली ऐसेट में बदल देती है (उदाहरण के लिए, astc-एन्कोडर).

  4. ऐसेट पैक बनाएं (देखें C++ या Java के लिए बिल्ड), इन ऐसेट में आपकी गेम ऐसेट शामिल होती हैं. इनका इस्तेमाल 'Play ऐसेट डिलीवरी' में किया जाता है. इसके लिए उदाहरण के लिए, हर लेवल के लिए एक ऐसेट पैक या हर लेवल के लिए एक ऐसेट पैक बनाया जा सकता है अपडेट किया जा सकता है.

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

    ऐसी डायरेक्ट्री बनाएं जिसके नाम में कोई सफ़िक्स न हो (उदाहरण के लिए, common/src/main/assets/textures/). इस डायरेक्ट्री में, डिफ़ॉल्ट आपकी टेक्सचर ऐसेट का फ़ॉर्मैट तय करता है. यह डिफ़ॉल्ट फ़ॉर्मैट इनके साथ काम करना चाहिए: ज़्यादातर डिवाइस (उदाहरण के लिए, ETC1 या ETC2). अगर कोई डिवाइस किसी अन्य फ़ॉर्मैट में विज्ञापन दिखाए जा सकते हैं (उदाहरण के लिए, नीचे दी गई टेबल में PVRC और ASTC), तो Google Play Store इस डायरेक्ट्री को इंस्टॉल करता है.

    निर्देशिका पहले इसके बाद डायरेक्ट्री
    common ऐसेट पैक:
    Common/build.gradle
    Common/src/main/assets/textures/...
    common ऐसेट पैक:
    Common/build.gradle
    Common/src/main/assets/textures/...
    Common/src/main/assets/textures#tcf_astc/...
    Common/src/main/assets/textures#tcf_pvrtc/...
    level1 ऐसेट पैक:
    level1/build.gradle
    level1/src/main/assets/textures/...
    level1 ऐसेट पैक:
    level1/build.gradle
    level1/src/main/assets/textures/...
    level1/src/main/assets/textures#tcf_astc/...
    level1/src/main/assets/textures#tcf_pvrtc/...
    level2 ऐसेट पैक:
    level2/build.gradle
    level2/src/main/assets/textures/...
    level2 ऐसेट पैक:
    level2/build.gradle
    level2/src/main/assets/textures/...
    level2/src/main/assets/textures#tcf_astc/...
    level2/src/main/assets/textures#tcf_pvrtc/...
  6. टीसीएफ़ डाइमेंशन को ऐप्लिकेशन बंडल की मेटाडेटा फ़ाइल (BundleConfig.json). value के लिए TEXTURE_COMPRESSION_FORMAT का इस्तेमाल करें फ़ील्ड:

    {
      ...
      "optimizations": {
        "splitsConfig": {
          "splitDimension": [
          ...
          {
             "value": "TEXTURE_COMPRESSION_FORMAT",
             "negate": false,
             "suffixStripping": {
               "enabled": true,
               "defaultSuffix": ""
              }
          }],
        }
      }
    }
    

    सफ़िक्स को हटाने के लिए, suffixStripping.enabled को true पर सेट करें (उदाहरण के लिए, #tcf_astc). यह आपके गेम को किसी लोकप्रिय डायरेक्ट्री के नाम की फ़ाइलें पढ़ने की अनुमति देता है (जैसे, level1/assets/textures). कुछ गेम इंजन, फ़ाइल से कनेक्ट किया जाता है, ताकि आपका गेम इस तरह की टेक्सचर ऐसेट के फ़ॉर्मैट में दिलचस्पी न बनाए रखे इसे इसके साथ इंस्टॉल किया गया था.

    suffixStripping.defaultSuffix डिफ़ॉल्ट डायरेक्ट्री सफ़िक्स के बारे में बताता है, जब bundletool, Android 5.0 (एपीआई) चलाने वाले डिवाइसों के लिए स्टैंडअलोन APK जनरेट करता है लेवल 21) और उससे कम है. पहले की उदाहरण तालिका में, इन डिवाइसों पर टेक्सचर ऐसेट इंस्टॉल की गई हैं; यह मकसद है ज़्यादातर मामलों में.

  7. ऐप्लिकेशन बंडल बनाने के लिए:

    bundletool build-bundle --config=BUILD_CONFIG.json \
      --modules=level1.zip,level2.zip,common.zip,base.zip --output=MY_BUNDLE.aab
    

ऐप्लिकेशन बंडल के कॉन्टेंट की पुष्टि करना

अगर आपने अब तक ऐसा नहीं किया है, तो डाउनलोड bundletool GitHub रिपॉज़िटरी से लिया गया है.

आउटपुट ऐप्लिकेशन बंडल से APK बनाकर, इसके कॉन्टेंट की पुष्टि करें और इन बातों की जांच करता है:

bundletool build-apks --output=APKS.apks --bundle=MY_BUNDLE.aab
zipinfo APKS.apks

आउटपुट इससे मिलता-जुलता होना चाहिए:

toc.pb
splits/base-master.apk
splits/base-armeabi_v7a.apk
splits/…
asset-slices/level1-astc.apk
asset-slices/level1-other_tcf.apk
asset-slices/level1-pvrtc.apk

इन नामों से पता चलता है कि टीसीएफ़ टारगेटिंग सही तरीके से लागू की गई है. अगर आप किसी लेवल APK का कॉन्टेंट (जैसे, asset-slices/level1-astc.apk), तो यह पुष्टि कर सकता है कि textures नाम की सिर्फ़ एक डायरेक्ट्री मौजूद है.

ऐप्लिकेशन बंडल की जांच करना

डिवाइस कनेक्ट करें और ज़रूरी ऐसेट पैक इंस्टॉल करें:

bundletool install-apks --apks=APKS.apks

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

सही ऐसेट पैक इंस्टॉल किए गए हैं या नहीं, इसकी पुष्टि करने के लिए इनमें से कोई एक तरीका अपनाएं:

  • इसके लिए इंस्टॉल किए गए apks का आउटपुट देने के लिए, bundletool extract-apks कमांड का इस्तेमाल करें अपने डिवाइस को किसी डायरेक्ट्री में ले जाता है और फिर इस डायरेक्ट्री की जांच करता है.

    1. अपने डिवाइस की खास जानकारी निकालें:

      bundletool get-device-spec --output=MY_DEVICE_SPEC.json
      
    2. इस डिवाइस की शर्तों के हिसाब से bundletool extract-apks चलाएं:

      bundletool extract-apks --apks=APKS.apks --device-spec=MY_DEVICE_SPEC.json \
          --output-dir out
      
    3. out डायरेक्ट्री में फ़ाइलों की सूची बनाएं और पुष्टि करें कि ऐसेट पैक सही हैं इंस्टॉल किए गए हों. ऐसेट पैक के नामों को टेक्सचर फ़ॉर्मैट के नाम के साथ जोड़ा जाता है (इसके लिए उदाहरण के लिए, level1-astc.apk).

  • अपने गेम में ऐसे लॉग स्टेटमेंट जोड़ें जो लोड होते समय टेक्सचर फ़ॉर्मैट को तैयार करते हैं एक बनावट है.

  • टेक्स्चर का टेस्ट सेट जनरेट करें. उदाहरण के लिए, टेक्सचर को दिए गए फ़ॉर्मैट के लिए एक चमकदार रंग). गेम चलाएं और पुष्टि करें कि यह उपस्थित.

अगर आपके ऐप्लिकेशन में on-demand या fast-follow ऐसेट पैक हैं, तो ऐसेट डिलीवरी के लिए लोकल टेस्टिंग सलूशन.

टेक्सचर डायरेक्ट्री के नामों के लिए, इस्तेमाल किए जा सकने वाले सफ़िक्स

Google Play, टेक्सचर डायरेक्ट्री के नामों में इस्तेमाल किए जाने वाले सफ़िक्स को समझता है:

  • अडैप्टिव स्केलेबल टेक्सचर कंप्रेशन (एएसटीसी) के लिए #tcf_astc
  • एटीआई टेक्सचर कंप्रेशन (एटीसी) के लिए #tcf_atc
  • S3 DXT1 टेक्सचर कंप्रेशन (DXT1) के लिए #tcf_dxt1
  • ल्यूमिनेंस-ऐल्फ़ा टेक्सचर कंप्रेशन (एलएटीसी) के लिए #tcf_latc
  • सामान्य पैलेट वाले टेक्स्चर कंप्रेशन के लिए #tcf_paletted
  • PowerVR टेक्सचर कंप्रेशन (PVRC) के लिए #tcf_pvrtc
  • एरिक्सन टेक्सचर कंप्रेशन (ETC1) के लिए #tcf_etc1
  • एरिक्सन टेक्सचर कंप्रेशन 2 (ETC2) के लिए #tcf_etc2
  • S3 टेक्सचर कंप्रेशन (S3TC) के लिए #tcf_s3tc
  • ATI 3Dc टेक्सचर कंप्रेशन (3Dc) के लिए #tcf_3dc

Google Play पर विज्ञापन दिखाने के नियम

Google Play, डिवाइस में इस्तेमाल किए गए OpenGL एक्सटेंशन स्ट्रिंग की जांच करता है और डिवाइस पर काम करने वाला OpenGL वर्शन. Google Play इस जानकारी का इस्तेमाल इन कामों के लिए करता है Android से डिवाइस पर डिलीवर करने के लिए सही टेक्सचर फ़ॉर्मैट तय करें ऐप्लिकेशन बंडल.

Google Play पर पहला फ़ॉर्मैट, यहां दिए गए क्रम में उपलब्ध है टेबल होती है, जो डिवाइस पर काम करती है.

अगर डिवाइस पर ऐप्लिकेशन बंडल का कोई भी टेक्सचर फ़ॉर्मैट काम नहीं करता, Google Play, डिफ़ॉल्ट फ़ॉर्मैट में पैकेज किए गए टेक्सचर फ़ॉर्मैट को डिलीवर करता है. अगर डिवाइस के किसी खास हार्डवेयर को टारगेट न किया जा रहा हो, तो ETC1 या ETC2 सही रहेंगे विकल्प चुनें.) इसमें ऐसेट को पैकेज करने के तरीके के बारे में जानकारी पाने के लिए, डिफ़ॉल्ट फ़ॉर्मैट है, तो bundletool का इस्तेमाल करें देखें या Google Play Unity प्लगिन का इस्तेमाल करें.

अगर ऐसेट किसी डिफ़ॉल्ट फ़ॉर्मैट में पैकेज नहीं की गई हैं, तो Google Play, ऐप्लिकेशन को जैसे कि डिवाइस के लिए उपलब्ध नहीं है. इस स्थिति में उपयोगकर्ता ऐप्लिकेशन को डाउनलोड नहीं कर सकेंगे.

फ़ॉर्मैट (tcf_xxxx में बताया गया है) OpenGL वाले डिवाइसों पर काम करता है एक्सटेंशन स्ट्रिंग
एएसटीसी GL_KHR_texture_compression_astc_ldr
पीवीआरटीसी GL_IMG_texture_compression_pvrtc
एस3टीसी GL_EXT_texture_compression_s3tc
डीएक्सटी1 GL_EXT_texture_compression_dxt1
लातविया GL_EXT_texture_compression_latc
एटीसी GL_AMD_compressed_ATC_texture
3डीसी GL_AMD_compressed_3DC_texture
वगैरह2 लागू नहीं. डिवाइस को OpenGL ES वर्शन 3.0 के साथ काम करता है या बाद में.
वगैरह1 GL_OES_compressed_ETC1_RGB8_texture
पैलेट GL_OES_compressed_paletted_texture