تنسيقات ضغط البنية المستهدفة في مجموعة حزمات تطبيق Android

الزخارف هي صور يمكن تطبيقها على سطح نموذج ثلاثي الأبعاد. كما يتم استخدام الزخارف بواسطة العارضين ثنائي الأبعاد لرسم عناصر مثل الصور المتحركة أو الخلفيات. توضّح هذه الصفحة تنسيقات ضغط البنية الشائعة المستخدمة في الألعاب وكيفية استهدافها في "مجموعة حزمات تطبيق Android". يُرجى الاطّلاع على لمحة عن تنسيق "مجموعات حزمات تطبيق Android" وعرض المواد في Play قبل البدء في هذا الدليل.

خلفية

تتوافق وحدات معالجة الرسومات عادةً مع مجموعة من تنسيقات ضغط البنية. تنسيق ضغط الهيئة (أو TCF) هو تنسيق ملف تم تحسينه ليناسب وحدات معالجة الرسومات. يتم تحميل الهيئة وعرضها بشكل أسرع، وبذاكرة أقل، مما لو كانت تستخدم مجموعة من قيم RGBA في الذاكرة. ويتم هذا الدعم على مستوى الأجهزة: حيث تعمل الجهة المصنعة لوحدة معالجة الرسومات على تضمين المكونات في شريحة بطاقات الرسومات التي تقرأ التنسيقات المتوافقة وفك ضغطها وتعرضها.

في ما يلي بعض التنسيقات الشائعة لضغط القوام على الأجهزة الجوّالة الحديثة:

  • ASTC: تم تصميم صيغة حديثة لتحل محل التنسيقات السابقة. أكثر مرونة من التنسيقات السابقة بسبب التوافق مع أحجام الكتل المختلفة. ويُعدّ استخدام هذا التنسيق طريقة جيدة لتحسين حجم لعبتك.
  • ETC2: متوافقة مع جميع الأجهزة التي تتوافق مع OpenGL ES 3.0 والإصدارات الأحدث. ويشمل ذلك جميع أجهزة Android الجوّالة النشطة تقريبًا.

هذه التنسيقات متوافقة مع النسب المئوية التقريبية التالية لأجهزة Android:

تنسيق ضغط الهيئة النسبة المئوية لأجهزة Google Play المتوافقة
اختبار ASTC >80%
ETC2 >95%

تتوافق أيضًا وحدات معالجة الرسومات في أجهزة الكمبيوتر المكتبي التي تشغّل برنامج "ألعاب Google Play على الكمبيوتر" مع التنسيق التالي:

  • DDS أو S3TC: يُسمّى أحيانًا BCn أو DXTC أو DXTn.

إنّ تنسيقات ضغط الهيئة القديمة والتي لم تعد يُنصح بها تشمل:

  • ETC1: متوافقة مع معظم الأجهزة. لا يدعم هذا التنسيق الشفافية، ولكن يمكن للألعاب استخدام ملف زخرفة ثانٍ لمكون ألفا.
  • PVRTC: تحظى بشعبية كبيرة في ألعاب iOS، ومتوافقة أيضًا على بعض أجهزة Android.

إنّ التوافق مع ETC1 مطلوب فقط للألعاب المتوافقة مع الأجهزة القديمة جدًا أو أجهزة Android TV المحدّدة التي لا تتوافق مع OpenGL ES 3.0 أو الإصدارات الأحدث.

تنسيق تلقائي

مع توفّر العديد من التنسيقات (بمستويات مختلفة من التوافق مع الأجهزة)، قد لا تعرف التنسيقات التي يجب استخدامها عند تصميم زخارف لعبتك. لتوفير حماية، يتيح لك تنسيق حِزمة التطبيق اختيار تنسيق ضغط بنية تلقائي لكل حزمة مواد عرض. وإذا لم يكن الجهاز متوافقًا مع التنسيقات المحدّدة الأخرى، سيتم تثبيت الأصول التي تستخدم هذا التنسيق التلقائي.

ما لم تكن تستهدف أجهزة جهاز قديمة جدًا، فإن ETC2 تعد اختيارًا جيدًا للتنسيق الافتراضي. يجب استخدام تنسيقات ETC2 التي تضمن توافقها مع OpenGL ES 3.0. وتتوفر هذه التنسيقات أيضًا في واجهة برمجة تطبيقات رسومات Vulkan.

يحدّد تنسيق ASTC مجموعة متنوعة من أحجام قوالب الضغط، ما يتيح لك اختيار جودة الصور المخفّضة بحجم أكبر مقابل ضغط أكبر. بناءً على طبيعة المادة الفنية المصدر، يمكنك اختيار حجم كتلة أصغر أو أكبر للحصول على زخرفة معينة للحفاظ على جودة مرئية مقبولة.

إذا كانت لعبتك متوافقة مع برنامج "ألعاب Google Play على الكمبيوتر" وتستخدم Vulkan، عليك تضمين زخارف S3TC. إنّ تنسيقات S3TC متوافقة مع جميع وحدات معالجة الرسومات على أجهزة الكمبيوتر المكتبي.

إنشاء حِزمة تطبيق

يستخدم Google Play تنسيق Android App Bundle لإنشاء حِزم APK محسّنة وعرضها وفقًا لإعدادات جهاز كل مستخدم، حتى لا ينزّل المستخدمون سوى الرمز والموارد التي يحتاجونها لتشغيل لعبتك. وتتضمّن حِزم APK المحسَّنة هذه مجموعة واحدة من مواد عرض الزخرفة، تم تنسيقها باستخدام تنسيق الضغط الأمثل للجهاز.

إذا لم تكن لعبتك متوافقة مع Unity، يمكنك استخدام Gradle لإنشاء حِزمة تطبيق. قد يرغب المستخدمون المتقدمون في استخدام bundletool.

إذا كانت لعبتك تستخدم Unity، يمكنك استخدام حِزم التطبيقات التي تستخدم "عرض المواد في Play" في إصدار Unity 2021.3 أو الإصدارات الأحدث. لمزيد من المعلومات، يُرجى الاطّلاع على مستندات الوحدة. يمكنك استخدام مكوّن إضافي من Unity لإنشاء حزمة تطبيق بإصدارات أقلّ من Unity.

استخدام Gradle

  1. عليك تحديث إصدار المكوّن الإضافي لنظام Gradle المتوافق مع Android في ملف build.gradle لمشروعك إلى 4.1 أو إصدار أحدث (على سبيل المثال، com.android.tools.build:gradle:4.1.0).

  2. حدّد مجموعة أنواع الأجهزة التي تريد استهدافها للعبتك وتنسيقات ضغط البنية المتوافقة (لمزيد من المعلومات حول التنسيقات، راجع الخلفية).

  3. أنشئ نسخًا من الأصول لكل تنسيق ضغط بنية من الخطوة السابقة. قد يتضمن ذلك إنشاء أوراق رموز متحركة باستخدام برامج مثل TexturePacker أو تشغيل نص برمجي يحوّل الأصول الأولية إلى مواد بتنسيق معيّن (على سبيل المثال، astc-encoder).

  4. أنشئ حِزم مواد العرض (راجِع القسم إنشاء لـ C++ أو Java)، التي تحتوي على مواد عرض لعبتك ويتم استخدامها من خلال Play Asset Delivery. على سبيل المثال، يمكنك إنشاء حزمة مواد عرض واحدة لكل مستوى أو حِزم مواد عرض لأجزاء مختلفة من لعبتك.

  5. ضمن حِزم مواد العرض، أضِف أدلة لكل تنسيق تريد استخدامه لضغط البنية. أضِف اللاحقات المتوافقة إلى أسماء دليل الزخرفة التي تتوافق مع تنسيق ضغط الهيئة المستخدَم في الملفات المضمّنة.

    أنشئ دليلاً بدون لاحقة في اسمه (على سبيل المثال، common/src/main/assets/textures/). وفي هذا الدليل، ضَع التنسيق التلقائي لمواد عرض الزخرفة. من المفترض أن يكون هذا التنسيق التلقائي متوافقًا مع معظم الأجهزة (على سبيل المثال، ETC1 أو ETC2). إذا لم يكن الجهاز متوافقًا مع التنسيقات الأخرى المحدّدة (على سبيل المثال، PVRTC وASTC في الجدول أدناه)، يثبّت "متجر Google Play" هذا الدليل بدلاً من ذلك.

    الدليل السابق الدليل بعد
    common حزمة مواد العرض:
    common/build.لمنع
    الشائع/src/main/assets/textures/...
    common حزمة مواد العرض:
    common/build.لمنع
    الشائع/src/main/assets/textures/...
    Shared/src/main/assets/textures#tcf_astc/...
    common/src/main/assets/textures#tcf_pvrtc/...
    level1 حزمة مواد العرض:
    level1/build.gradele
    level1/src/main/assets/textures/...
    level1 حزمة مواد العرض:
    level1/build.gradele
    level1/src/main/assets/textures/...
    level1/src/main/assets/textures#tcf_astc/...
    level1/src/main/assets/textures#tcf_pvrtc/...
    level2 حزمة مواد العرض:
    level2/build.gradele
    level2/src/main/assets/textures/...
    level2 حزمة مواد العرض:
    level2/build.gradele
    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"، اختَر إنشاء > إنشاء حزمة موقَّعة / حزمة APK أو تشغيل مهمة Gradle من سطر الأوامر لإنشاء حزمتك.

استخدام المكوّن الإضافي لبرنامج Unity في Google Play

احصل على المكوِّن الإضافي (أو الحزمة) لـ Unity لمعالجة مواد العرض في Play لإنشاء حزمة تطبيق بحِزم مواد عرض تستهدف البنية.

تحضير مواد العرض

لإعداد مواد عرض الزخرفة لإنشاء حزمة تطبيق، اتّبِع الخطوات التالية:

  1. أنشئ حزمة واحدة للمشهد ومواد العرض في حِزم AssetBundle متعددة في Unity.

  2. حدّد مجموعة أنواع الأجهزة التي تريد استهدافها للعبتك وتنسيقات ضغط البنية المتوافقة (لمزيد من المعلومات حول التنسيقات، راجع الخلفية).

  3. يمكنك تعديل النص البرمجي لتصميم اللعبة لإنشاء ملفات AssetBundle عدة مرات، مرة لكل تنسيق زخرفة تريد السماح به. انظر مثال النص البرمجي التالي:

    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" هذا الدليل بدلاً من ذلك.

    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. انقر على إضافة مجلد لإضافة مجلد يحتوي على مواد عرض تم إنشاؤها لتنسيق آخر (على سبيل المثال، ASTC). كرر عند الحاجة.

    تأكَّد من ضبط وضع التسليم لكل مجموعة من مواد العرض.

    تنسيق ASTC لإرسال Unity AssetBundle

زيادة التشويق

اختر Google > إنشاء مجموعة حزمات تطبيق Android لإطلاق إصدار Unity من لعبتك. وهي تضم أيضًا حِزم AssetBundle ضمن عدة حِزم مواد عرض يتم فيها تحويل كل اسم AssetBundle إلى حزمة مواد عرض واحدة.

(إعدادات متقدمة) استخدام أداة الحزم

لمزيد من المعلومات حول bundletool، يُرجى الاطّلاع على مقالة إنشاء حِزمة تطبيقات باستخدام bundletool.

لإنشاء حِزمة التطبيق، يُرجى اتّباع الخطوات التالية:

  1. يمكنك تنزيل bundletool من مستودع جيت هب له.

  2. حدّد مجموعة أنواع الأجهزة التي تريد استهدافها للعبتك وتنسيقات ضغط البنية المتوافقة (لمزيد من المعلومات حول التنسيقات، راجع الخلفية).

  3. أنشئ نسخًا من الأصول لكل تنسيق ضغط بنية من الخطوة السابقة. قد يتضمن ذلك إنشاء أوراق رموز متحركة باستخدام برامج مثل TexturePacker أو تشغيل نص برمجي يحوّل الأصول الأولية إلى مواد بتنسيق معيّن (على سبيل المثال، astc-encoder).

  4. أنشئ حِزم مواد العرض (راجِع القسم إنشاء لـ C++ أو Java)، التي تحتوي على مواد عرض لعبتك ويتم استخدامها من خلال Play Asset Delivery. على سبيل المثال، يمكنك إنشاء حزمة مواد عرض واحدة لكل مستوى أو حِزم مواد عرض لأجزاء مختلفة من لعبتك.

  5. في حِزم مواد العرض المختلفة، أضِف اللاحقات المتوافقة إلى أسماء دليل الزخرفة التي تتوافق مع تنسيق ضغط النسيج المستخدَم في الملفات المضمّنة.

    أنشئ دليلاً بدون لاحقة في اسمه (على سبيل المثال، common/src/main/assets/textures/). وفي هذا الدليل، ضَع التنسيق التلقائي لمواد عرض الزخرفة. من المفترض أن يكون هذا التنسيق التلقائي متوافقًا مع معظم الأجهزة (على سبيل المثال، ETC1 أو ETC2). إذا لم يكن الجهاز متوافقًا مع التنسيقات الأخرى المحدّدة (على سبيل المثال، PVRTC وASTC في الجدول أدناه)، يثبّت "متجر Google Play" هذا الدليل بدلاً من ذلك.

    الدليل السابق الدليل بعد
    common حزمة مواد العرض:
    common/build.لمنع
    الشائع/src/main/assets/textures/...
    common حزمة مواد العرض:
    common/build.لمنع
    الشائع/src/main/assets/textures/...
    Shared/src/main/assets/textures#tcf_astc/...
    common/src/main/assets/textures#tcf_pvrtc/...
    level1 حزمة مواد العرض:
    level1/build.gradele
    level1/src/main/assets/textures/...
    level1 حزمة مواد العرض:
    level1/build.gradele
    level1/src/main/assets/textures/...
    level1/src/main/assets/textures#tcf_astc/...
    level1/src/main/assets/textures#tcf_pvrtc/...
    level2 حزمة مواد العرض:
    level2/build.gradele
    level2/src/main/assets/textures/...
    level2 حزمة مواد العرض:
    level2/build.gradele
    level2/src/main/assets/textures/...
    level2/src/main/assets/textures#tcf_astc/...
    level2/src/main/assets/textures#tcf_pvrtc/...
  6. أضِف سمة "إطار الشفافية والموافقة" إلى ملف البيانات الوصفية لحِزمة التطبيق (BundleConfig.json)، واستخدِم TEXTURE_COMPRESSION_FORMAT للحقل value:

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

    اضبط suffixStripping.enabled على true لإزالة اللاحقة (على سبيل المثال، #tcf_astc) من أسماء الأدلة عند إنشاء حِزم مواد العرض. يتيح ذلك للعبتك قراءة الملفات من اسم دليل معروف (مثل level1/assets/textures). بإمكان بعض محركات الألعاب اكتشاف تنسيق أحد الملفات، لذلك قد لا مبالاة بتنسيق مواد عرض الزخرفة التي تم تثبيتها باستخدامها.

    suffixStripping.defaultSuffix يحدد لاحقة الدليل التلقائي عندما ينشئ bundletool حزمة APK مستقلة للأجهزة التي تعمل بنظام التشغيل Android 5.0 (مستوى واجهة برمجة التطبيقات 21) والإصدارات الأقدم. في المثال الوارد في الجدول السابق، يتم تثبيت الإصدار التلقائي لمواد عرض الزخرفة على هذه الأجهزة، وهذا هو السلوك المقصود في معظم الحالات.

  7. إنشاء حِزمة التطبيق:

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

التحقّق من محتوى حِزمة التطبيق

يمكنك تنزيل bundletool من مستودع جيت هب، إذا لم يسبق لك إجراء ذلك.

تحقَّق من محتوى حِزمة تطبيق الإخراج من خلال إنشاء حِزم 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

تشير هذه الأسماء إلى تطبيق استهداف "إطار الشفافية والموافقة" (TCF) على النحو الصحيح. إذا استخرجت محتوى حزمة APK للمستوى (مثل asset-slices/level1-astc.apk)، يمكنك التأكّد من وجود دليل واحد فقط باسم textures.

اختبار حِزمة التطبيق

توصيل جهاز وتثبيت حِزم الأصول المناسبة:

bundletool install-apks --apks=APKS.apks

يؤدي هذا الأمر إلى تثبيت حِزم مواد العرض التي تستوفي مواصفات الجهاز فقط. وتشمل هذه المواصفات واجهة التطبيق الثنائية (ABI) وكثافة الشاشة واللغة وتنسيق ضغط الزخرفة الأكثر قابلية للتطبيق. تحاكي هذه العملية ما يجريه "متجر Google Play" للعبتك المنشورة.

للتحقّق من أنّه تم تثبيت حِزم مواد العرض الصحيحة، اتّبِع أحد الإجراءات التالية:

  • استخدِم الأمر bundletool extract-apks لإخراج ملفات APK المثبّتة على جهازك في دليل ثم فحص هذا الدليل.

    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 لضغط الزخرفة التكيُّفي القابل للتوسع (ASTC)
  • #tcf_atc لضغط بنية ATI (ATC)
  • #tcf_dxt1 لضغط بنية S3 DXT1 (DXT1)
  • #tcf_latc لضغط بنية Luminance-Alpha (LATC)
  • #tcf_paletted لضغط البنية العامة على لوحات الألوان
  • #tcf_pvrtc لضغط بنية PowerVR (PVRTC)
  • #tcf_etc1 لضغط البنية من Ericsson (ETC1)
  • #tcf_etc2 لضغط البنية من Ericsson 2 (ETC2)
  • #tcf_s3tc لضغط البنية S3 (S3TC)
  • #tcf_3dc لضغط بنية ATI 3Dc (ثلاثي الأبعاد)

قواعد عرض Google Play

يفحص Google Play سلاسل إضافات OpenGL التي يستخدمها الجهاز وإصدار OpenGL المتوافق مع الجهاز. يستخدم Google Play هذه المعلومات لتحديد تنسيق الزخرفة الصحيح المطلوب تسليمه إلى الجهاز من خلال "مجموعة حزمات تطبيق Android".

يقدّم Google Play التنسيق الأول المتوافق مع الجهاز بالترتيب المذكور في الجدول التالي.

إذا لم يكن الجهاز متوافقًا مع أي من تنسيقات الزخرفة في تنسيق App Bundle، يقدّم Google Play تنسيقات الزخرفة المجمّعة بالتنسيق التلقائي. (ما لم تكن تستهدف أجهزة جهاز معينة، يكون ETC1 أو ETC2 خيارات جيدة للتنسيق الافتراضي). للحصول على معلومات عن طريقة تجميع مواد العرض بالتنسيق التلقائي، يُرجى الاطّلاع على استخدام bundletool أو استخدام مكوّن Google Play Unity الإضافي.

إذا لم يتم تجميع مواد العرض بتنسيق تلقائي، يضع Google Play علامة على التطبيق على أنه غير متاح للجهاز. في هذه الحالة، لا يمكن للمستخدمين تنزيل التطبيق.

التنسيق (المحدّد في tcf_xxxx) متوافق مع الأجهزة التي تتضمن سلسلة إضافة OpenGL
ملف Astc GL_KHR_texture_compression_astc_ldr
بروتوكول Pvrtc GL_IMG_texture_compression_pvrtc
s3tc GL_EXT_texture_compression_s3tc
dxt1 GL_EXT_texture_compression_dxt1
خط الطول والعرض GL_EXT_texture_compression_latc
ATC GL_AMD_compressed_ATC_texture
3 فولت GL_AMD_compressed_3DC_texture
غير ذلك2 غير منطبق. يجب أن يتوافق الجهاز مع الإصدار 3.0 من OpenGL ES أو إصدار أحدث.
غير ذلك1 GL_OES_compressed_ETC1_RGB8_texture
مُلوّن GL_OES_compressed_paletted_texture