รูปแบบการบีบอัดพื้นผิวเป้าหมายใน Android App Bundle

พื้นผิวคือรูปภาพที่สามารถใช้กับพื้นผิวของโมเดล 3 มิติ พื้นผิว โหมดแสดงภาพ 2 มิติยังใช้ในการวาดองค์ประกอบอย่างเช่นสไปรท์หรือพื้นหลังด้วย หน้านี้อธิบายรูปแบบการบีบอัดพื้นผิวยอดนิยมที่ใช้ในเกมและวิธี ให้กำหนดกลุ่มเป้าหมายใน Android App Bundle อ่านแล้ว เกี่ยวกับ Android App Bundle และ การนำส่งเนื้อหา Play ก่อนเริ่มต้น

ฉากหลัง

โดยทั่วไป GPU จะรองรับชุดรูปแบบการบีบอัดพื้นผิว ต รูปแบบการบีบอัดพื้นผิว (หรือ TCF) เป็นรูปแบบไฟล์ที่ได้รับการเพิ่มประสิทธิภาพสำหรับ GPU GPU โหลดและแสดงผลพื้นผิวได้เร็วกว่าและมีหน่วยความจำน้อยกว่า ใช้อาร์เรย์ของค่า RGBA ในหน่วยความจำ การสนับสนุนนี้ดำเนินการใน ระดับฮาร์ดแวร์: ผู้ผลิต GPU ฝังคอมโพเนนต์ลงในการ์ดกราฟิก ชิปที่อ่าน ขยาย และแสดงผลรูปแบบที่รองรับ

รูปแบบการบีบอัดพื้นผิวที่พบได้บ่อยในฮาร์ดแวร์สมัยใหม่บนอุปกรณ์เคลื่อนที่มีดังนี้

  • ASTC: รูปแบบล่าสุดที่ออกแบบมาเพื่อแทนที่รูปแบบก่อนหน้านี้ ยืดหยุ่นกว่า รูปแบบก่อนหน้านี้ เนื่องจากรองรับบล็อกขนาดต่างๆ การใช้รูปแบบนี้ ก็เป็นวิธีที่ดีในการปรับขนาดเกมให้เหมาะสม
  • ETC2: รองรับในอุปกรณ์ทั้งหมดที่รองรับ OpenGL ES 3.0 ขึ้นไป ซึ่งรวมถึงอุปกรณ์เคลื่อนที่ Android ที่ใช้งานอยู่เกือบทั้งหมด

รูปแบบเหล่านี้รองรับโดยเปอร์เซ็นต์โดยประมาณของ Android ดังต่อไปนี้ อุปกรณ์:

รูปแบบการบีบอัดพื้นผิว เปอร์เซ็นต์ของอุปกรณ์ Google Play ที่มีการสนับสนุน
ASTC มากกว่า 80%
ETC2 มากกว่า 95%

GPU ของคอมพิวเตอร์เดสก์ท็อปที่ใช้ Google Play Games สำหรับ PC รองรับรูปแบบนี้ด้วย

  • DDS หรือ S3TC: บางครั้งเรียกว่า BCn, DXTC หรือ DXTn

รูปแบบการบีบอัดพื้นผิวแบบเก่าซึ่งเราไม่แนะนำอีกต่อไป ได้แก่

  • ETC1: รองรับในอุปกรณ์ส่วนใหญ่ รูปแบบนี้ไม่รองรับความโปร่งใส แต่เกมสามารถใช้ไฟล์พื้นผิวอีกไฟล์หนึ่งเป็นคอมโพเนนต์อัลฟ่าได้
  • PVRTC: เป็นที่นิยมในบรรดาเกม iOS และรองรับในอุปกรณ์ Android บางรุ่นด้วย

การรองรับ ETC1 เป็นเพียงข้อกำหนดสำหรับเกมที่รองรับเวอร์ชันเดิมๆ ที่เก่ามากเท่านั้น หรืออุปกรณ์ Android TV บางรุ่นที่ไม่รองรับ OpenGL ES 3.0 และ สูงขึ้น

รูปแบบเริ่มต้น

รูปแบบที่มีมากมาย (ที่มีระดับการสนับสนุนอุปกรณ์ในระดับต่างๆ) ช่วยให้คุณ อาจไม่ทราบว่าจะใช้รูปแบบใดในการสร้างพื้นผิวเกม เพื่อ ซึ่งเป็นรูปแบบ App Bundle ช่วยให้คุณเลือกการบีบอัดพื้นผิวเริ่มต้นได้ สำหรับแต่ละ Asset Pack ก็ได้ หากอุปกรณ์ไม่รองรับรายการอื่นๆ ที่ระบุ ระบบจะติดตั้งเนื้อหาที่ใช้รูปแบบเริ่มต้นนี้

ETC2 ถือเป็นตัวเลือกที่ดี เว้นแต่คุณจะกำหนดเป้าหมายเป็นฮาร์ดแวร์อุปกรณ์ที่เก่ามาก สำหรับรูปแบบเริ่มต้นได้ คุณควรใช้รูปแบบ ETC2 ที่มีการรับประกันว่า ที่รองรับใน OpenGL ES 3.0 รูปแบบเหล่านี้มีให้บริการใน Vulkan Graphic API ด้วย

รูปแบบ ASTC จะกำหนดขนาดบล็อกการบีบอัดที่หลากหลาย ซึ่งช่วยให้ คุณจะเลือกลดคุณภาพของรูปที่ลดลงเพื่อการบีบอัดที่ดีขึ้นได้ ขึ้นอยู่กับลักษณะของวัสดุศิลป์ต้นฉบับ สำหรับพื้นผิวหนึ่งๆ คุณสามารถ โปรดเลือกบล็อกขนาดเล็กหรือใหญ่กว่าเพื่อรักษาคุณภาพของภาพที่ยอมรับได้

หากเกมของคุณรองรับ Google Play Games สำหรับ PC และใช้ Vulkan คุณจะ ควรมีพื้นผิว S3TC รูปแบบ S3TC รองรับโดย GPU บนเดสก์ท็อปทั้งหมด

สร้าง App Bundle

Google Play ใช้ Android App Bundle เพื่อสร้างและแสดง APK ที่เพิ่มประสิทธิภาพสำหรับ การกำหนดค่าอุปกรณ์ของผู้ใช้แต่ละคน เพื่อให้ผู้ใช้ดาวน์โหลดเฉพาะโค้ดและทรัพยากร ที่จำเป็นต่อการดำเนินเกม APK ที่เพิ่มประสิทธิภาพเหล่านี้มีพื้นผิวชุดเดียว เนื้อหา ซึ่งอยู่ในรูปแบบการบีบอัดที่เหมาะสมที่สุดสำหรับอุปกรณ์

หากเกมไม่ได้อยู่ใน Unity ให้ใช้ Gradle สร้าง App Bundle ผู้ใช้ขั้นสูงอาจต้องการใช้ bundletool

หากเกมของคุณอยู่ใน Unity ให้รองรับ App Bundle ที่มีการนำส่งเนื้อหา Play พร้อมให้บริการใน Unity 2021.3 ขึ้นไป สำหรับข้อมูลเพิ่มเติม โปรดดู เอกสารประกอบเกี่ยวกับ Unity คุณใช้ปลั๊กอิน Unity เพื่อสร้าง App Bundle ที่มี เวอร์ชัน Unity

ใช้ Gradle

  1. อัปเดตเวอร์ชันของปลั๊กอิน Android Gradle ในโปรเจ็กต์ build.gradle ไฟล์เป็น 4.1 ขึ้นไป (เช่น com.android.tools.build:gradle:4.1.0)

  2. กำหนดชุดประเภทอุปกรณ์ที่คุณต้องการกำหนดเป้าหมายสำหรับเกม และ รูปแบบการบีบอัดพื้นผิวที่สนับสนุน (สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ โปรดดูพื้นหลัง)

  3. สร้างชิ้นงานในเวอร์ชันต่างๆ สำหรับรูปแบบการบีบอัดพื้นผิวแต่ละรูปแบบจาก ขั้นตอนก่อนหน้า ซึ่งอาจรวมถึงการสร้างภาพต่อเรียงโดยใช้ซอฟต์แวร์ ชอบ TexturePacker หรือ การเรียกใช้สคริปต์ที่แปลงเนื้อหาดิบเป็นชิ้นงานที่มีรูปแบบเฉพาะ (เช่น astc-encoder)

  4. สร้าง Asset Pack (โปรดดู สร้างสำหรับ C++ หรือ Java) ซึ่งมีเนื้อหาเกมของคุณและใช้โดย Play Asset Delivery สำหรับ เช่น คุณสามารถสร้าง Asset Pack 1 รายการต่อระดับ หรือ Asset Pack ก็ได้สำหรับ ส่วนต่างๆ ของเกม

  5. ใน Asset Pack ให้เพิ่มไดเรกทอรีสำหรับรูปแบบการบีบอัดพื้นผิวแต่ละรูปแบบ ที่ต้องการสนับสนุน เพิ่มคำต่อท้ายที่รองรับลงใน ชื่อไดเรกทอรีพื้นผิวที่ตรงกับการบีบอัดพื้นผิว รูปแบบที่ใช้สำหรับไฟล์ที่มีอยู่

    สร้างไดเรกทอรีที่ไม่มีชื่อส่วนต่อท้าย (เช่น common/src/main/assets/textures/) ในไดเรกทอรีนี้ ให้ใส่ค่าเริ่มต้น ของรูปแบบเนื้อหาพื้นผิว รูปแบบเริ่มต้นนี้ควรรองรับโดย อุปกรณ์ส่วนใหญ่ (เช่น ETC1 หรือ ETC2) หากอุปกรณ์ไม่รองรับ รูปแบบอื่นๆ ที่ระบุ (เช่น PVRTC และ ASTC ในตารางด้านล่าง) Google Play Store จะติดตั้งไดเรกทอรีนี้แทน

    ไดเรกทอรีก่อนหน้า ไดเรกทอรีต่อจาก
    common Asset Pack:
    common/build.gradle
    common/src/main/assets/textures/...
    common Asset Pack:
    common/build.gradle
    common/src/main/assets/textures/...
    /src/main/assets/textures#tcf_astc/...
    /src/main/assets/textures#tcf_pvrtc/...
    level1 Asset Pack:
    level1/build.gradle
    level1/src/main/assets/textures/...
    level1 Asset Pack:
    level1/build.gradle
    level1/src/main/assets/textures/...
    level1/src/main/assets/textures#tcf_astc/...
    ระดับ1/src/main/assets/textures#tcf_pvrtc/...
    level2 asset Pack:
    level2/build.gradle
    level2/src/main/assets/textures/...
    level2 asset Pack:
    level2/build.gradle
    level2/src/main/assets/textures/...
    level2/src/main/assets/textures#tcf_astc/...
    ระดับ 2/src/main/assets/textures#tcf_pvrtc/...
  6. อัปเดตไฟล์ build.gradle ของแอปเพื่อเปิดใช้การแยก Asset Pack ต่อพื้นผิว

    // In the app build.gradle file:
    android {
        ...
        bundle {
            texture {
                enableSplit true
            }
        }
    }
    
  7. ใน Android Studio ให้เลือกสร้าง > สร้าง Bundle / APK ที่ลงชื่อ หรือ เปิด งาน Gradle จากบรรทัดคำสั่งไปยัง สร้างแพ็กเกจของคุณ

ใช้ปลั๊กอิน Google Play Unity

ดาวน์โหลดปลั๊กอิน (หรือแพ็กเกจ) Unity สำหรับ Play Asset Delivery เพื่อสร้าง App Bundle ที่มี Asset Pack ที่กำหนดเป้าหมายพื้นผิว

เตรียมเนื้อหา

ในการเตรียมเนื้อหาพื้นผิวสำหรับการสร้าง App Bundle ให้ทำตามขั้นตอนต่อไปนี้

  1. รวมฉากและเนื้อหาลงใน Unity หลายๆ ไฟล์ AssetBundles

  2. กำหนดชุดประเภทอุปกรณ์ที่คุณต้องการกำหนดเป้าหมายสำหรับเกม และ รูปแบบการบีบอัดพื้นผิวที่สนับสนุน (สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ โปรดดูพื้นหลัง)

  3. แก้ไขสคริปต์บิลด์ของเกมเพื่อสร้าง AssetBundles หลายรายการ 1 ครั้งสำหรับพื้นผิวแต่ละรูปแบบที่คุณต้องการรองรับ โปรดดู สคริปต์ตัวอย่างต่อไปนี้

    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. คลิกเพิ่มโฟลเดอร์เพื่อเพิ่มโฟลเดอร์ที่มี AssetBundles ที่สร้างมา รูปแบบอื่น (เช่น ASTC) ทำซ้ำตามที่จำเป็น

    อย่าลืมตั้งค่าโหมดการแสดงโฆษณาสําหรับ AssetBundle แต่ละรายการ

    รูปแบบ ASTC การนำส่ง Unity AssetBundle

สร้าง

เลือก Google > สร้าง Android App Bundle เพื่อเปิดตัวบิลด์ Unity ของ เกม นอกจากนี้ยังทำแพ็กเกจ AssetBundles เป็น Asset Pack หลายรายการโดยที่ ระบบจะแปลงชื่อ AssetBundle เป็น Asset Pack เดียว

(ขั้นสูง) ใช้ Bundletool

ดูข้อมูลเพิ่มเติมเกี่ยวกับ bundletool ได้ที่ สร้าง App Bundle โดยใช้ Bundletool

วิธีสร้าง App Bundle มีดังนี้

  1. ดาวน์โหลด bundletool จากที่เก็บ GitHub ได้

  2. กำหนดชุดประเภทอุปกรณ์ที่คุณต้องการกำหนดเป้าหมายสำหรับเกม และ รูปแบบการบีบอัดพื้นผิวที่สนับสนุน (สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ โปรดดูพื้นหลัง)

  3. สร้างชิ้นงานในเวอร์ชันต่างๆ สำหรับรูปแบบการบีบอัดพื้นผิวแต่ละรูปแบบจาก ขั้นตอนก่อนหน้า ซึ่งอาจรวมถึงการสร้างภาพต่อเรียงโดยใช้ซอฟต์แวร์ ชอบ TexturePacker หรือ การเรียกใช้สคริปต์ที่แปลงเนื้อหาดิบเป็นชิ้นงานที่มีรูปแบบเฉพาะ (เช่น astc-encoder)

  4. สร้าง Asset Pack (โปรดดู สร้างสำหรับ C++ หรือ Java) ซึ่งมีเนื้อหาเกมของคุณและใช้โดย Play Asset Delivery สำหรับ เช่น คุณสามารถสร้าง Asset Pack 1 รายการต่อระดับ หรือ Asset Pack ก็ได้สำหรับ ส่วนต่างๆ ของเกม

  5. เพิ่มคำต่อท้ายที่รองรับใน Asset Pack ต่างๆ เป็นชื่อไดเรกทอรีพื้นผิวที่สอดคล้องกับการบีบอัดพื้นผิว รูปแบบที่ใช้สำหรับไฟล์ที่มีอยู่

    สร้างไดเรกทอรีที่ไม่มีชื่อส่วนต่อท้าย (เช่น common/src/main/assets/textures/) ในไดเรกทอรีนี้ ให้ใส่ค่าเริ่มต้น ของรูปแบบเนื้อหาพื้นผิว รูปแบบเริ่มต้นนี้ควรรองรับโดย อุปกรณ์ส่วนใหญ่ (เช่น ETC1 หรือ ETC2) หากอุปกรณ์ไม่รองรับ รูปแบบอื่นๆ ที่ระบุ (เช่น PVRTC และ ASTC ในตารางด้านล่าง) Google Play Store จะติดตั้งไดเรกทอรีนี้แทน

    ไดเรกทอรีก่อนหน้า ไดเรกทอรีต่อจาก
    common Asset Pack:
    common/build.gradle
    common/src/main/assets/textures/...
    common Asset Pack:
    common/build.gradle
    common/src/main/assets/textures/...
    /src/main/assets/textures#tcf_astc/...
    /src/main/assets/textures#tcf_pvrtc/...
    level1 Asset Pack:
    level1/build.gradle
    level1/src/main/assets/textures/...
    level1 Asset Pack:
    level1/build.gradle
    level1/src/main/assets/textures/...
    level1/src/main/assets/textures#tcf_astc/...
    ระดับ1/src/main/assets/textures#tcf_pvrtc/...
    level2 asset Pack:
    level2/build.gradle
    level2/src/main/assets/textures/...
    level2 asset Pack:
    level2/build.gradle
    level2/src/main/assets/textures/...
    level2/src/main/assets/textures#tcf_astc/...
    ระดับ 2/src/main/assets/textures#tcf_pvrtc/...
  6. เพิ่มมิติข้อมูล TCF ลงใน ไฟล์ข้อมูลเมตาของ App Bundle (BundleConfig.json) ใช้ TEXTURE_COMPRESSION_FORMAT สำหรับ value ฟิลด์:

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

    กําหนด suffixStripping.enabled เป็น true เพื่อนําคําต่อท้ายออก (เช่น #tcf_astc) จากชื่อไดเรกทอรีเมื่อสร้าง Asset Pack ช่วงเวลานี้ ช่วยให้เกมของคุณอ่านไฟล์จากชื่อไดเรกทอรีที่รู้จักกันดี (เช่น level1/assets/textures) เครื่องมือเกมบางตัวสามารถตรวจจับรูปแบบของ ดังนั้นเกมของคุณอาจไม่คำนึงถึงรูปแบบของเนื้อหาพื้นผิวที่ ติดตั้งด้วย

    suffixStripping.defaultSuffix ระบุคำต่อท้ายไดเรกทอรีเริ่มต้นเมื่อ bundletool สร้าง APK แบบสแตนด์อโลนสำหรับอุปกรณ์ที่ใช้ Android 5.0 (API ระดับ 21) และต่ำกว่า ในตารางตัวอย่างก่อนหน้านี้ เวอร์ชันเริ่มต้นของ ชิ้นงานพื้นผิวที่ติดตั้งในอุปกรณ์เหล่านี้ จุดประสงค์คือ ในกรณีทั่วไป

  7. สร้าง App Bundle

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

ยืนยันเนื้อหาของ App Bundle

หากคุณยังไม่ได้ดำเนินการ ดาวน์โหลด bundletool จากที่เก็บ GitHub

ยืนยันเนื้อหาของ App Bundle ที่เป็นเอาต์พุตโดยการสร้าง 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 อยู่

ทดสอบ App Bundle

เชื่อมต่ออุปกรณ์และติดตั้ง Asset Pack ที่เกี่ยวข้องดังนี้

bundletool install-apks --apks=APKS.apks

คำสั่งนี้จะติดตั้งเฉพาะ Asset Pack ที่เป็นไปตามข้อกำหนดของอุปกรณ์เท่านั้น ข้อกำหนดเหล่านี้รวมถึง ABI, ความหนาแน่นของหน้าจอ, ภาษา และ รูปแบบการบีบอัดพื้นผิวที่เกี่ยวข้อง การดำเนินการนี้จะจำลองสิ่งที่ทำโดย Google Play Store สำหรับเกมที่เผยแพร่แล้ว

ดำเนินการต่อไปนี้เพื่อตรวจสอบว่ามีการติดตั้ง Asset Pack ที่ถูกต้องแล้ว

  • ใช้คำสั่ง 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 และตรวจสอบว่า Asset Pack ที่เหมาะสม แล้ว ชื่อ Asset Pack จะต่อท้ายด้วยชื่อรูปแบบพื้นผิว (สำหรับ เช่น level1-astc.apk)

  • เพิ่มข้อความบันทึกในเกมของคุณที่แสดงรูปแบบพื้นผิวขณะโหลด พื้นผิว

  • สร้างชุดทดสอบพื้นผิว (เช่น แทนที่พื้นผิวด้วย สีเดียวที่สว่างสำหรับรูปแบบที่กำหนด) เรียกใช้เกมและยืนยันว่าเป็นเกม ปัจจุบัน

หากแอปมี Asset Pack on-demand หรือ fast-follow ให้ใช้ โซลูชันการทดสอบในพื้นที่สำหรับการนําส่งเนื้อหา

คำต่อท้ายที่รองรับสำหรับชื่อไดเรกทอรีพื้นผิว

Google Play เข้าใจคำต่อท้ายต่อไปนี้ที่ใช้ในชื่อไดเรกทอรีพื้นผิว

  • #tcf_astc สำหรับการบีบอัดพื้นผิวที่ปรับขยายได้ (Adaptive Scalable Texture Compression หรือ 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 (3Dc)

กฎการแสดงของ Google Play

Google Play ตรวจสอบสตริงส่วนขยาย OpenGL ที่อุปกรณ์ใช้และ เวอร์ชัน OpenGL ที่อุปกรณ์รองรับ Google Play ใช้ข้อมูลนี้เพื่อ กำหนดรูปแบบพื้นผิวที่ถูกต้อง เพื่อนำส่งไปยังอุปกรณ์จาก Android App Bundle

Google Play นำส่งรูปแบบแรกโดยเรียงตามลำดับต่อไปนี้ ตารางที่อุปกรณ์รองรับ

หากอุปกรณ์ไม่รองรับรูปแบบพื้นผิวใน App Bundle เลย Google Play นำส่งรูปแบบพื้นผิวแพ็กเกจในรูปแบบเริ่มต้น (หากคุณไม่ได้กำหนดเป้าหมายเฉพาะฮาร์ดแวร์อุปกรณ์เฉพาะ ETC1 หรือ ETC2 ก็จะดี สำหรับรูปแบบเริ่มต้น) สำหรับข้อมูลเกี่ยวกับวิธีจัดแพ็กเกจเนื้อหาใน รูปแบบเริ่มต้น โปรดดู Usebundletool หรือ ใช้ปลั๊กอิน Google Play Unity

หากเนื้อหาไม่ได้จัดแพ็กเกจในรูปแบบเริ่มต้น Google Play จะทำเครื่องหมายแอป ไม่พร้อมใช้งานสำหรับอุปกรณ์ ในกรณีนี้ ผู้ใช้จะไม่สามารถดาวน์โหลดแอปได้

รูปแบบ (ระบุใน tcf_xxxx) รองรับในอุปกรณ์ที่ใช้ OpenGL สตริงส่วนขยาย
แอสเตอร์ 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
3DC GL_AMD_compressed_3DC_texture
ฯลฯ2 ไม่สามารถใช้งาน อุปกรณ์ต้อง รองรับ OpenGL ES เวอร์ชัน 3.0 หรือ ในภายหลัง
ฯลฯ1 GL_OES_compressed_ETC1_RGB8_texture
จานสี GL_OES_compressed_paletted_texture