พื้นผิวคือรูปภาพที่ใช้กับพื้นผิวของโมเดล 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: รองรับในอุปกรณ์ส่วนใหญ่ รูปแบบนี้ไม่รองรับความโปร่งใส แต่เกมสามารถใช้ไฟล์พื้นผิวที่ 2 สำหรับคอมโพเนนต์อัลฟ่าได้
- PVRTC: เป็นที่นิยมในเกม iOS และยังรองรับในอุปกรณ์ Android บางรุ่นด้วย
การรองรับ ETC1 เป็นข้อกำหนดสำหรับเกมที่รองรับอุปกรณ์เดิมที่เก่ามากหรืออุปกรณ์ Android TV บางรุ่นที่ไม่รองรับ OpenGL ES 3.0 ขึ้นไปเท่านั้น
รูปแบบเริ่มต้น
เนื่องจากมีรูปแบบที่ใช้ได้มากมาย (ซึ่งมีการรองรับอุปกรณ์ในระดับที่แตกต่างกัน) คุณจึงอาจไม่ทราบว่าควรใช้รูปแบบใดเมื่อสร้างพื้นผิวเกม เพื่อเป็นการป้องกัน รูปแบบ App Bundle จะช่วยให้คุณเลือกรูปแบบการบีบอัดพื้นผิวเริ่มต้นสำหรับ Asset Pack แต่ละรายการได้ หากอุปกรณ์ไม่รองรับรูปแบบอื่นๆ ที่ระบุ ระบบจะติดตั้งชิ้นงานที่ใช้รูปแบบเริ่มต้นนี้
ETC2 เป็นตัวเลือกที่ดีสำหรับรูปแบบเริ่มต้น เว้นแต่คุณจะกำหนดเป้าหมายเป็นฮาร์ดแวร์อุปกรณ์ที่เก่ามาก ใช้รูปแบบ ETC2 ที่รองรับใน OpenGL ES 3.0 รูปแบบเหล่านี้ยังมีให้บริการใน Vulkan Graphics API ด้วย
รูปแบบที่แนะนำ
รูปแบบ ASTC กำหนดขนาดบล็อกการบีบอัดที่หลากหลาย ซึ่งช่วยให้คุณเลือกแลกคุณภาพรูปภาพที่ลดลงกับการบีบอัดที่มากขึ้นได้ คุณอาจเลือกขนาดบล็อกที่เล็กลงหรือใหญ่ขึ้นสำหรับพื้นผิวหนึ่งๆ เพื่อรักษาคุณภาพของภาพที่ยอมรับได้ ทั้งนี้ขึ้นอยู่กับลักษณะของวัสดุอาร์ตเวิร์กต้นฉบับ
หากเกมของคุณรองรับ Google Play Games บน PC และใช้ Vulkan คุณควรใส่พื้นผิว S3TC ด้วย GPU บนเดสก์ท็อปทั้งหมดรองรับรูปแบบ S3TC
สร้าง 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
อัปเดตเวอร์ชันของปลั๊กอิน Android Gradle ในไฟล์
build.gradleของโปรเจ็กต์เป็น 4.1 ขึ้นไป (เช่นcom.android.tools.build:gradle:4.1.0)กำหนดชุดประเภทอุปกรณ์ที่คุณต้องการกำหนดเป้าหมายสำหรับเกมและรูปแบบการบีบอัดพื้นผิวที่อุปกรณ์รองรับ (ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบได้ที่พื้นหลัง)
สร้างชิ้นงานเวอร์ชันต่างๆ สำหรับรูปแบบการบีบอัดพื้นผิวแต่ละรูปแบบจากขั้นตอนก่อนหน้า ซึ่งอาจรวมถึงการสร้างสไปรท์ชีตโดยใช้ซอฟต์แวร์อย่าง TexturePacker หรือการเรียกใช้สคริปต์ที่แปลงเนื้อหาดิบเป็นเนื้อหาที่มีรูปแบบเฉพาะ (เช่น astc-encoder)
สร้างAsset Pack (ดูสร้างสำหรับ C++ หรือ Java) ซึ่งมีเนื้อหาเกมและใช้โดยการนำส่งเนื้อหา Play เช่น คุณอาจสร้าง Asset Pack 1 รายการต่อระดับ หรือ Asset Pack สำหรับส่วนต่างๆ ของเกม
ภายใน Asset Pack ให้เพิ่มไดเรกทอรีสำหรับรูปแบบการบีบอัดพื้นผิวแต่ละรูปแบบที่คุณต้องการรองรับ เพิ่มคำต่อท้ายที่รองรับลงในชื่อไดเรกทอรีพื้นผิวที่สอดคล้องกับรูปแบบการบีบอัดพื้นผิวที่ใช้สำหรับไฟล์ที่มีอยู่
สร้างไดเรกทอรีที่ไม่มีคำต่อท้ายในชื่อ (เช่น
common/src/main/assets/textures/) ในไดเรกทอรีนี้ ให้วางรูปแบบเริ่มต้นของชิ้นงานพื้นผิว อุปกรณ์ส่วนใหญ่ควรรองรับรูปแบบเริ่มต้นนี้ (เช่น ETC1 หรือ ETC2) หากอุปกรณ์ไม่รองรับรูปแบบอื่นๆ ที่ระบุ (เช่น PVRTC และ ASTC ในตารางด้านล่าง) Google Play Store จะติดตั้งไดเรกทอรีนี้แทนไดเรกทอรีเก่า ไดเรกทอรีหลังจาก commonAsset Pack:
common/build.gradle
common/src/main/assets/textures/...commonAsset Pack:
common/build.gradle
common/src/main/assets/textures/...
common/src/main/assets/textures#tcf_astc/...
common/src/main/assets/textures#tcf_pvrtc/...level1asset pack:
level1/build.gradle
level1/src/main/assets/textures/...level1asset pack:
level1/build.gradle
level1/src/main/assets/textures/...
level1/src/main/assets/textures#tcf_astc/...
level1/src/main/assets/textures#tcf_pvrtc/...level2asset pack:
level2/build.gradle
level2/src/main/assets/textures/...level2asset pack:
level2/build.gradle
level2/src/main/assets/textures/...
level2/src/main/assets/textures#tcf_astc/...
level2/src/main/assets/textures#tcf_pvrtc/...อัปเดตไฟล์
build.gradleของแอปเพื่อเปิดใช้การแยก Asset Pack ตามพื้นผิว// In the app build.gradle file: android { ... bundle { texture { enableSplit true } } }ใน Android Studio ให้เลือกสร้าง > สร้าง Bundle/APK ที่รับรองแล้ว หรือเปิดงาน Gradle จากบรรทัดคำสั่งเพื่อสร้าง Bundle
ใช้ปลั๊กอิน Unity ของ Google Play
ดาวน์โหลดปลั๊กอิน (หรือแพ็กเกจ) Unity สำหรับการนำส่งเนื้อหา Play เพื่อสร้าง App Bundle ที่มี Asset Pack ที่กำหนดเป้าหมายตามพื้นผิว
เตรียมชิ้นงาน
หากต้องการเตรียมชิ้นงานพื้นผิวสำหรับการสร้าง App Bundle ให้ทำดังนี้
รวมฉากและเนื้อหาไว้ใน AssetBundles ของ Unity หลายรายการ
กำหนดชุดประเภทอุปกรณ์ที่คุณต้องการกำหนดเป้าหมายสำหรับเกมและรูปแบบการบีบอัดพื้นผิวที่อุปกรณ์รองรับ (ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบได้ที่พื้นหลัง)
แก้ไขสคริปต์บิลด์ของเกมเพื่อสร้าง AssetBundle หลายครั้ง โดยสร้าง 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. } }ตรวจสอบว่าชิ้นงานพื้นผิวแต่ละรายการแสดงผลในไดเรกทอรีที่มีคำต่อท้ายที่ถูกต้องในชื่อ (เช่น
#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เลือก Google > Android > Assets Delivery
คลิกเพิ่มโฟลเดอร์เพื่อเพิ่มโฟลเดอร์ที่มี Asset Bundle เริ่มต้น ระบบจะติดตั้งแพ็กเกจเหล่านี้ในอุปกรณ์ที่ไม่รองรับรูปแบบอื่นๆ ที่คุณกำหนด
อย่าลืมตั้งค่าโหมดการนำส่งสำหรับ AssetBundle
คลิกเพิ่มโฟลเดอร์เพื่อเพิ่มโฟลเดอร์ที่มี AssetBundle ที่สร้างขึ้นสำหรับรูปแบบอื่น (เช่น ASTC) ทำซ้ำตามที่จำเป็น
ตรวจสอบว่าได้ตั้งค่าโหมดการนำส่งสำหรับ AssetBundle แต่ละรายการแล้ว
สร้าง
เลือก Google > Build Android App Bundle เพื่อเปิด Unity Build ของเกม นอกจากนี้ยังรวม AssetBundle ไว้ใน Asset Pack หลายรายการ โดยจะแปลงชื่อ AssetBundle แต่ละรายการเป็น Asset Pack รายการเดียว
(ขั้นสูง) ใช้ bundletool
ดูข้อมูลเพิ่มเติมเกี่ยวกับ bundletool ได้ที่สร้าง App Bundle โดยใช้ bundletool
วิธีสร้าง App Bundle มีดังนี้
ดาวน์โหลด
bundletoolจากที่เก็บ GitHubกำหนดชุดประเภทอุปกรณ์ที่คุณต้องการกำหนดเป้าหมายสำหรับเกมและรูปแบบการบีบอัดพื้นผิวที่อุปกรณ์รองรับ (ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบได้ที่พื้นหลัง)
สร้างชิ้นงานเวอร์ชันต่างๆ สำหรับรูปแบบการบีบอัดพื้นผิวแต่ละรูปแบบจากขั้นตอนก่อนหน้า ซึ่งอาจรวมถึงการสร้างสไปรท์ชีตโดยใช้ซอฟต์แวร์อย่าง TexturePacker หรือการเรียกใช้สคริปต์ที่แปลงเนื้อหาดิบเป็นเนื้อหาที่มีรูปแบบเฉพาะ (เช่น astc-encoder)
สร้างAsset Pack (ดูสร้างสำหรับ C++ หรือ Java) ซึ่งมีเนื้อหาเกมและใช้โดยการนำส่งเนื้อหา Play เช่น คุณอาจสร้าง Asset Pack 1 รายการต่อระดับ หรือ Asset Pack สำหรับส่วนต่างๆ ของเกม
ใน Asset Pack ต่างๆ ให้เพิ่มคำต่อท้ายที่รองรับลงในชื่อไดเรกทอรีพื้นผิวที่สอดคล้องกับรูปแบบการบีบอัดพื้นผิวที่ใช้สำหรับไฟล์ที่มีอยู่
สร้างไดเรกทอรีที่ไม่มีคำต่อท้ายในชื่อ (เช่น
common/src/main/assets/textures/) ในไดเรกทอรีนี้ ให้วางรูปแบบเริ่มต้นของชิ้นงานพื้นผิว อุปกรณ์ส่วนใหญ่ควรรองรับรูปแบบเริ่มต้นนี้ (เช่น ETC1 หรือ ETC2) หากอุปกรณ์ไม่รองรับรูปแบบอื่นๆ ที่ระบุ (เช่น PVRTC และ ASTC ในตารางด้านล่าง) Google Play Store จะติดตั้งไดเรกทอรีนี้แทนไดเรกทอรีเก่า ไดเรกทอรีหลังจาก commonAsset Pack:
common/build.gradle
common/src/main/assets/textures/...commonAsset Pack:
common/build.gradle
common/src/main/assets/textures/...
common/src/main/assets/textures#tcf_astc/...
common/src/main/assets/textures#tcf_pvrtc/...level1asset pack:
level1/build.gradle
level1/src/main/assets/textures/...level1asset pack:
level1/build.gradle
level1/src/main/assets/textures/...
level1/src/main/assets/textures#tcf_astc/...
level1/src/main/assets/textures#tcf_pvrtc/...level2asset pack:
level2/build.gradle
level2/src/main/assets/textures/...level2asset pack:
level2/build.gradle
level2/src/main/assets/textures/...
level2/src/main/assets/textures#tcf_astc/...
level2/src/main/assets/textures#tcf_pvrtc/...เพิ่มมิติข้อมูล 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) และต่ำกว่า ในตารางตัวอย่างก่อนหน้านี้ ระบบจะติดตั้งชิ้นงานพื้นผิวเวอร์ชันเริ่มต้นในอุปกรณ์เหล่านี้ ซึ่งเป็นลักษณะการทำงานที่ต้องการในกรณีส่วนใหญ่สร้าง 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 จาก 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 ที่ติดตั้งสำหรับอุปกรณ์ของคุณลงในไดเรกทอรี แล้วตรวจสอบไดเรกทอรีนี้ดึงข้อมูลจำเพาะของอุปกรณ์โดยทำดังนี้
bundletool get-device-spec --output=MY_DEVICE_SPEC.jsonเรียกใช้
bundletool extract-apksด้วยข้อกำหนดของอุปกรณ์ต่อไปนี้bundletool extract-apks --apks=APKS.apks --device-spec=MY_DEVICE_SPEC.json \ --output-dir outแสดงรายการไฟล์ในไดเรกทอรี
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 texture compression (ETC1)#tcf_etc2สำหรับ Ericsson texture compression 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 เป็นตัวเลือกที่ดีสำหรับรูปแบบเริ่มต้น เว้นแต่คุณจะกำหนดเป้าหมายฮาร์ดแวร์ของอุปกรณ์ที่เฉพาะเจาะจง) ดูข้อมูลเกี่ยวกับวิธีจัดแพ็กเกจเนื้อหาในรูปแบบเริ่มต้นได้ที่หัวข้อใช้ 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 |
| latc | GL_EXT_texture_compression_latc |
| atc | GL_AMD_compressed_ATC_texture |
| 3dc | GL_AMD_compressed_3DC_texture |
| etc2 | ไม่เกี่ยวข้อง อุปกรณ์ต้องรองรับ OpenGL ES เวอร์ชัน 3.0 ขึ้นไป |
| etc1 | GL_OES_compressed_ETC1_RGB8_texture |
| มีจานสี | GL_OES_compressed_paletted_texture |