Dokular, bir 3D modelin yüzeyine uygulanabilen görüntülerdir. Dokular 2D oluşturucular tarafından imgeler veya arka planlar gibi öğeler çizmek için de kullanılır. Bu sayfada, oyunlarda kullanılan popüler doku sıkıştırma biçimleri ve bunları Android App Bundle'larda hedefleyebilirsiniz. Okunanlar Android App Bundle'lar hakkında ve Bunu başlatmadan önce Play Asset Delivery'yi tıklayın. rehberini inceleyin.
Arka plan
GPU'lar genellikle bir dizi doku sıkıştırma biçimini destekler. CEVAP Doku sıkıştırma biçimi (veya TCF), GPU'lar için optimize edilmiş bir dosya biçimidir. GPU, bir dokuyu daha hızlı yüklenir ve daha az bellekle oluşturur. bellekte bir RGBA değerleri dizisi kullanıyordu. Bu destek hizmeti donanım düzeyi: GPU üreticisi, bileşenleri grafik kartlarına yerleştirir destekleyen ve oluşturan bir kod çipi ile çalışır.
Modern mobil donanımlarda yaygın olarak kullanılan doku sıkıştırma biçimleri şunlardır:
- ASTC: Önceki biçimlerin yerini alacak şekilde tasarlanan yeni biçim. Şundan daha esnek: kullanarak önceki biçimlerle uyumlu değildir. Bu biçim kullanılıyor oyununuzun boyutunu optimize etmenin iyi bir yoludur.
- ETC2: OpenGL ES 3.0 ve sonraki sürümleri destekleyen tüm cihazlar tarafından desteklenir. Buna hemen hemen tüm etkin Android mobil cihazlar dahildir.
Bu biçimler, Android'in aşağıdaki yaklaşık yüzdeleri tarafından desteklenmektedir cihazlar:
Doku sıkıştırma biçimi | Destek sunan Google Play cihazlarının yüzdesi |
---|---|
ASTC | >%80 |
HGS2 | >%95 |
PC Üzerinde Google Play Games'i çalıştıran masaüstü bilgisayar GPU'ları da şu biçimi destekler:
- DDS veya S3TC: Bazen BCn, DXTC veya DXTn olarak adlandırılır.
Daha eski ve artık önerilmeyen doku sıkıştırma biçimleri şunlardır:
- ETC1: Çoğu cihazda desteklenir. Bu biçimde şeffaflık desteği yoktur. Ancak oyunlar alfa bileşeni için ikinci bir doku dosyası kullanabilir.
- PVRTC: iOS oyunları arasında popülerdir ve bazı Android cihazlarda desteklenir.
ETC1 desteği, yalnızca çok eski sürümleri destekleyen oyunlar için bir gerekliliktir cihazlar veya OpenGL ES 3.0'ı desteklemeyen belirli Android TV cihazları daha yüksek olabilir.
Varsayılan biçim
Kullanılabilir çok sayıda biçim (farklı cihaz desteği düzeyleriyle) sayesinde oyun dokularınızı oluştururken hangi biçimleri kullanacağını bilmeyebilir. Kullanıcı uygulama paketi biçimi, varsayılan doku sıkıştırması seçmenize olanak sağlar biçimini seçin. Cihaz, belirtilen diğer cihazı desteklemiyorsa biçimlerinde, bu varsayılan biçimi kullanan öğeler yüklenir.
Çok eski cihaz donanımını hedeflemiyorsanız ETC2 iyi bir seçimdir seçin. ETC2 biçimlerini kullanmanız garanti edilen biçim OpenGL ES 3.0'da desteklenir. Bu biçimler, Vulkan grafik API'sinde de kullanılabilir.
Önerilen biçimler
ASTC biçimi, çeşitli sıkıştırma bloku boyutlarını tanımlamalıdır; daha fazla sıkıştırma için azaltılmış resim kalitesinden seçerek değiştirebilirsiniz. Kaynak sanat malzemesinin niteliğine bağlı olarak, belirli bir doku için Kabul edilebilir görsel kaliteyi korumak için daha küçük veya daha büyük bir blok boyutu seçmek.
Oyununuz PC Üzerinde Google Play Games'i destekliyor ve Vulkan'ı kullanıyorsa S3TC dokularını içermelidir. S3TC biçimleri, tüm masaüstü GPU'ları için geçerlidir.
Uygulama paketi oluşturma
Google Play, şunlar için optimize edilmiş APK'lar oluşturmak ve sunmak için Android App Bundle'ı kullanır: her bir kullanıcının cihaz yapılandırmasına karşılık geliyor. Böylece kullanıcılar yalnızca kodu ve kaynakları en iyi uygulamaları paylaşacağım. Bu optimize edilmiş APK'lar tek bir doku grubu içerir reklam öğeleri, cihaz için optimum sıkıştırma biçimiyle biçimlendirilmiştir.
Oyununuz Unity'de değilse uygulama paketi oluşturmak için Gradle kullanın.
İleri düzey kullanıcılar bundletool
kullanmak isteyebilir.
Oyununuz Unity'deyse Play Asset Delivery ile uygulama paketleri desteği Unity 2021.3 ve sonraki sürümlerde kullanılabilir. Daha fazla bilgi için Unity belgeleri. Daha düşük alt düzeyli bir uygulama paketi oluşturmak için bir Unity eklentisi kullanabilirsiniz sürümlerinden biridir.
Gradle kullan
Projenizde Android Gradle eklentisinin sürümünü güncelleyin.
build.gradle
dosyasını 4.1 veya sonraki bir sürüme yükseltin (örneğin,com.android.tools.build:gradle:4.1.0
) tıklayın.Oyununuz için hedeflemek istediğiniz cihaz türü grubunu belirleyin ve desteklediği doku sıkıştırma biçimlerini (daha fazla bilgi için biçimleri için Arka plan bölümüne bakın).
önceki adım. Bu, yazılım kullanarak model sayfaları oluşturmayı içerebilir beğeni TexturePacker veya ham öğeleri belirli bir biçime sahip olanlara dönüştüren bir komut dosyası çalıştırmak (örneğin, astc-kodlayıcı).
Öğe paketleri oluşturun (bkz. C++ veya Java için oluşturun), Bunlar, oyun öğelerinizi içeren ve Play Asset Delivery tarafından kullanılan bir araçtır. Örneğin, Örneğin, her seviye için bir öğe paketi veya farklı bölümleri vardır.
Öğe paketlerinizin içine her doku sıkıştırma biçimi için dizinler ekleyin bir şablon görevi görür. Desteklenen sonekleri doku sıkıştırmasına karşılık gelen doku dizini adları biçimi olmalıdır.
Adında sonek olmayan bir dizin oluşturun (örneğin,
common/src/main/assets/textures/
) bilgileri gösterilir. Bu dizinde, varsayılan biçimini seçin. Bu varsayılan biçim şu tarayıcı tarafından desteklenmelidir: çoğu cihazda (örneğin, ETC1 veya ETC2). Bir cihaz belirtilen diğer biçimler (örneğin, aşağıdaki tabloda yer alan PVRTC ve ASTC), Google Play Store bunun yerine bu dizini yükler.Önceki dizin Sonraki dizin common
öğe paketi:
common/build.gradle
common/src/main/assets/textures/...common
öğe paketi:
common/build.gradle
common/src/main/assets/textures/...
ortak/src/main/assets/textures#tcf_astc/...
ortak/src/main/assets/textures#tcf_pvrtc/...level1
öğe paketi:
level1/build.gradle
level1/src/main/assets/textures/...level1
öğe paketi:
level1/build.gradle
level1/src/main/assets/textures/...
level1/src/main/assets/textures#tcf_astc/...
level1/src/main/assets/textures#tcf_pvrtc/...level2
öğe paketi:
level2/build.gradle
level2/src/main/assets/textures/...level2
öğe paketi:
level2/build.gradle
level2/src/main/assets/textures/...
level2/src/main/assets/textures#tcf_astc/...
level2/src/main/assets/textures#tcf_pvrtc/...Öğelerinizin bölünmesini etkinleştirmek için uygulamanızın
build.gradle
dosyasını güncelleyin öğe paketi sayısı ekleyin.// In the app build.gradle file: android { ... bundle { texture { enableSplit true } } }
Android Studio'da Derleme > İmzalanmış Paket / APK oluşturun veya başlatmak için Görev satırından görevi paketinizi oluşturun.
Google Play Unity eklentisini kullanma
Play Asset Delivery için Unity eklentisini (veya paketini) edinin uygulama paketi oluşturmayı öğreneceksiniz.
Öğeleri hazırlama
Doku öğelerinizi uygulama paketi oluştururken hazırlamak için aşağıdakileri yapın:
Sahnenizi ve öğelerinizi birden fazla Unity'de paketleyin AssetBundles olarak değiştirin.
Oyununuz için hedeflemek istediğiniz cihaz türü grubunu belirleyin ve desteklediği doku sıkıştırma biçimlerini (daha fazla bilgi için biçimleri için Arka plan bölümüne bakın).
AssetBundles çoklu oluşturmak için oyununuzun derleme komut dosyasını değiştirin kez, desteklemek istediğiniz her doku biçimi için bir kez. Bkz. aşağıdaki örnek komut dosyasını kullanın:
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. } }
Her doku öğesinin çıkışının doğru son eki (örneğin,
#tcf_astc
).Adında sonek olmayan bir dizinin çıkış sağladığını doğrulayın (örneğin,
Assets/AssetBundles/
) bilgileri gösterilir. Bu dizinde doku öğeleri olabilir. Bu varsayılan biçim çoğu cihaz tarafından desteklenmelidir ( ör. ETC2). Cihaz belirtilen diğer biçimleri desteklemiyorsa (örneğin, önceki adımdaki koddaki ASTC), ardından Google Play Mağaza, bunun yerine bu dizini yükler.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 > Öğe Yayınlama'yı tıklayın.
Varsayılan öğenizi içeren klasörü eklemek için Klasör Ekle'yi tıklayın paket. Bu paketler, diğer biçimleri de vardır.
AssetBundle için İletim modunu ayarladığınızdan emin olun.
Şu öğe için oluşturulmuş AssetBundles'ı içeren bir klasör eklemek üzere Klasör Ekle'yi tıklayın: başka bir biçim (örneğin, ASTC). Gerekirse tekrarlayın.
Her bir AssetBundle için İletim modunu ayarladığınızdan emin olun.
Topluluk
Google > Android App Bundle'ı kullanarak bir oyundur. Ayrıca, AssetBundles öğesini her birinin AssetBundle adı, tek bir öğe paketine dönüştürüldü.
(Gelişmiş) Bundletool'u kullan
bundletool
hakkında daha fazla bilgi için bkz.
Bundletool'u kullanarak uygulama paketi oluşturun.
Uygulama paketi oluşturmak için şunları yapın:
İndir
bundletool
kendi GitHub deposundanOyununuz için hedeflemek istediğiniz cihaz türü grubunu belirleyin ve desteklediği doku sıkıştırma biçimlerini (daha fazla bilgi için biçimleri için Arka plan bölümüne bakın).
önceki adım. Bu, yazılım kullanarak model sayfaları oluşturmayı içerebilir beğeni TexturePacker veya ham öğeleri belirli bir biçime sahip olanlara dönüştüren bir komut dosyası çalıştırmak (örneğin, astc-kodlayıcı).
Öğe paketleri oluşturun (bkz. C++ veya Java için oluşturun), Bunlar, oyun öğelerinizi içeren ve Play Asset Delivery tarafından kullanılan bir araçtır. Örneğin, Örneğin, her seviye için bir öğe paketi veya farklı bölümleri vardır.
Farklı öğe paketlerinize desteklenen son ekleri ekleyin. doku sıkıştırmasına karşılık gelen doku dizini adlarına biçimi olmalıdır.
Adında sonek olmayan bir dizin oluşturun (örneğin,
common/src/main/assets/textures/
) bilgileri gösterilir. Bu dizinde, varsayılan biçimini seçin. Bu varsayılan biçim şu tarayıcı tarafından desteklenmelidir: çoğu cihazda (örneğin, ETC1 veya ETC2). Bir cihaz belirtilen diğer biçimler (örneğin, aşağıdaki tabloda yer alan PVRTC ve ASTC), Google Play Store bunun yerine bu dizini yükler.Önceki dizin Sonraki dizin common
öğe paketi:
common/build.gradle
common/src/main/assets/textures/...common
öğe paketi:
common/build.gradle
common/src/main/assets/textures/...
ortak/src/main/assets/textures#tcf_astc/...
ortak/src/main/assets/textures#tcf_pvrtc/...level1
öğe paketi:
level1/build.gradle
level1/src/main/assets/textures/...level1
öğe paketi:
level1/build.gradle
level1/src/main/assets/textures/...
level1/src/main/assets/textures#tcf_astc/...
level1/src/main/assets/textures#tcf_pvrtc/...level2
öğe paketi:
level2/build.gradle
level2/src/main/assets/textures/...level2
öğe paketi:
level2/build.gradle
level2/src/main/assets/textures/...
level2/src/main/assets/textures#tcf_astc/...
level2/src/main/assets/textures#tcf_pvrtc/...TCF boyutunu uygulama paketi meta veri dosyası (
BundleConfig.json
).value
içinTEXTURE_COMPRESSION_FORMAT
kullanın alan:{ ... "optimizations": { "splitsConfig": { "splitDimension": [ ... { "value": "TEXTURE_COMPRESSION_FORMAT", "negate": false, "suffixStripping": { "enabled": true, "defaultSuffix": "" } }], } } }
Son eki kaldırmak için
suffixStripping.enabled
değerinitrue
olarak ayarlayın (örneğin,#tcf_astc
) kaldırın. Bu oyununuzun iyi bilinen bir dizin adından (örneğin,level1/assets/textures
) bilgileri gösterilir. Bazı oyun motorları Dolayısıyla, oyununuz, dışa aktaracağınız doku öğelerinin biçimi konusunda önceden yüklenmiştir.suffixStripping.defaultSuffix
, aşağıdaki durumlarda varsayılan dizin son ekini belirtir:bundletool
, Android 5.0 (API) çalıştıran cihazlar için bağımsız bir APK oluşturur ve daha düşük seviyelerde gösterilir. Önceki örnek tabloda, Doku öğelerinin bu cihazlara yüklendiğini ve amaçlanan bu davranış şeklidir.Uygulama paketini oluşturun:
bundletool build-bundle --config=BUILD_CONFIG.json \ --modules=level1.zip,level2.zip,common.zip,base.zip --output=MY_BUNDLE.aab
Uygulama paketinin içeriğini doğrulama
Henüz yapmadıysanız
indir bundletool
kod deposunu bulun.
Çıkış uygulama paketinin içeriğini, bu paketten APK derleyerek ve inceleyin:
bundletool build-apks --output=APKS.apks --bundle=MY_BUNDLE.aab
zipinfo APKS.apks
Şuna benzer bir çıkış alırsınız:
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
Bu adlar, TCF hedeflemesinin doğru şekilde uygulandığını gösterir. Bir
bir seviye APK'sının (örneğin, asset-slices/level1-astc.apk
) içeriğini
, textures
adında yalnızca bir dizinin mevcut olduğunu doğrulayabilir.
Uygulama paketini test etme
Bir cihaz bağlayın ve geçerli öğe paketlerini yükleyin:
bundletool install-apks --apks=APKS.apks
Bu komut yalnızca cihazın teknik özelliklerini karşılayan öğe paketlerini yükler. Bu spesifikasyonlar arasında ABI, ekran yoğunluğu, dil ve geçerli doku sıkıştırma biçimi olabilir. Bu işlem, rastgele bir kontrol Google Play Store'da bulabilirsiniz.
Doğru öğe paketlerinin yüklendiğini doğrulamak için aşağıdakilerden birini yapın:
Şunun için yüklenen apk'lerin çıkışını almak için
bundletool extract-apks
komutunu kullanın: bir dizine ekleyip bu dizini inceleyin.Cihazınızın teknik özelliklerini çıkarın:
bundletool get-device-spec --output=MY_DEVICE_SPEC.json
bundletool extract-apks
uygulamasını şu cihaz spesifikasyonuyla çalıştır:bundletool extract-apks --apks=APKS.apks --device-spec=MY_DEVICE_SPEC.json \ --output-dir out
Dosyaları
out
dizininde listeleyin ve uygun öğe paketlerinin bulunduğunu doğrulayın yüklendi. Öğe paketi adlarının son eki doku biçimi adıyla ( örnek,level1-astc.apk
).
Oyununuza yükleme sırasında doku biçimini üreten günlük ifadeleri ekleyin doku.
Bir doku test kümesi oluşturun (örneğin, bir dokuyu tek parlak bir rengi olmalıdır). Oyunu çalıştırıp doğrulayın. devam eder.
Uygulamanız on-demand
veya fast-follow
öğe paketi içeriyorsa
öğe yayınlama için yerel test çözümü.
Doku dizini adları için desteklenen son ekler
Google Play, doku dizini adlarında kullanılan aşağıdaki sonekleri anlar:
- Uyarlanabilir Ölçeklenebilir Doku Sıkıştırma (ASTC) için
#tcf_astc
- ATI doku sıkıştırma (ATC) için
#tcf_atc
- S3 DXT1 doku sıkıştırması (DXT1) için
#tcf_dxt1
- Parlaklık-Alfa doku sıkıştırma (LATC) için
#tcf_latc
- Genel paletli doku sıkıştırma için
#tcf_paletted
- PowerVR doku sıkıştırma (PVRTC) için
#tcf_pvrtc
- Ericsson doku sıkıştırması (ETC1) için
#tcf_etc1
- Ericsson doku sıkıştırma 2 (ETC2) için
#tcf_etc2
- S3 doku sıkıştırma için
#tcf_s3tc
(S3TC) - ATI 3Dc doku sıkıştırması (3Dc) için
#tcf_3dc
Google Play sunma kuralları
Google Play, cihaz tarafından kullanılan OpenGL uzantı dizelerini ve Cihaz tarafından desteklenen OpenGL sürümü. Google Play bu bilgileri şu amaçlarla kullanır: Android'den cihaza yayınlanacak doğru doku biçimini belirleyin App Bundle'ı seçin.
Google Play ilk biçimi aşağıdaki sırayla sunar: cihazın desteklediği bir tablo veya çizelgedir.
App Bundle'daki doku biçimlerinden hiçbiri cihaz tarafından desteklenmiyorsa Google Play, varsayılan biçimde paketlenmiş doku biçimlerini sunar. (Belirli bir cihaz donanımını hedef almıyorsanız ETC1 veya ETC2 iyidir seçenekleri sunar.) Öğelerin varsayılan biçimi öğrenmek için Paketleme aracını kullanma konusuna bakın veya Google Play Unity eklentisini kullanın.
Öğeler varsayılan bir biçimde paketlenmemişse Google Play, uygulamayı emin olun. Bu durumda kullanıcılar uygulamayı indiremez.
Biçim (tcf_xxxx olarak tanımlanır)
|
OpenGL olan cihazlarda desteklenir uzantı dizesi |
---|---|
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 |
3D | GL_AMD_compressed_3DC_texture |
vs2 | Geçerli değil. Cihaz, OpenGL ES sürüm 3.0'ı veya daha sonra. |
vs1 | GL_OES_compressed_ETC1_RGB8_texture |
paletli | GL_OES_compressed_paletted_texture |