Bu kılavuzda, bir oyunun boyutunu nasıl küçülteceğiniz açıklanmaktadır. Kurulumdan sonra, daha küçük bir oyunda indirme işlemi daha az zaman ve daha az veri gerektirir. Bu uygulamaların her ikisi de daha yüksek yükleme dönüşümleri sağlar. Google araştırması, yayınlanan APK boyutundaki 6 MB'lık artışın yükleme oranında% 1 azalmaya neden olduğunu gösteriyor. Birçok geliştirici, öğeleri APK'dan bir içerik yayınlama ağına (CDN) taşır. Ancak bu durumda hem CDN'yi barındırma hem de öğe yönetim sistemini geliştirme ve sürdürme için ücret alınır.
Bir oyunun boyutunu küçültmek için aşağıdaki adımları uygulayın:
- App Bundle ve Play Asset Delivery gibi optimize edilmiş yayınlama yöntemlerini kullanın.
- Oyunun temel boyutunu belirleyin ve yapısını anlayın.
- Boyutu küçültülebilecek öğeleri ve diğer dosyaları arayın.
- Grafik dokularını inceleyin ve optimizasyon fırsatlarını belirleyin.
- Öğeler için genel önerileri uygulayın.
Android App Bundle ve Play Asset Delivery gibi optimize edilmiş yayınlama yöntemlerini kullanma
Aşağıdaki yayınlama yöntemlerini göz önünde bulundurun:
Eski projeler genellikle yayınlamak için bir APK üretirken Google Play'de yayınlayan oyunlar Android App Bundle kullanmalıdır. Uygulama paketleri, her kullanıcının cihaz yapılandırmasına göre uyarlanmış optimize edilmiş APK'lar sunar. Uygulama paketleri, uygulama boyutunu ortalama %20 küçültür.
Oyun öğelerini Google Play üzerinden yayınlamak ve birden fazla GB'a kadar uygulama paketleri için 200 MB'lık indirme boyutu sınırını aşmak üzere Play Asset Delivery (PAD) uygulamasını kullanın. Harici CDN'ye gerek yoktur. PAD, her biri tek bir oyunda kullanılabilecek üç farklı yayınlama yöntemini destekler:
- Yükleme süresi: Öğeleri yükleme sırasında indirme. Öğeler, Opaque Binary Blob (OBB) dosyalarının yerini alan öğe paketlerinde paketlenir.
- Hızlı takip: Öğeleri, yükleme işleminden sonra indirir.
- İsteğe bağlı: Oyun, gerektiğinde öğe indirme işlemini başlatır.
PAD, oyunların App Bundle biçimi kullanılarak paketlenmesini gerektirir. PAD, geliştiricinin CDN'si tarafından kullanılan veri miktarını da azaltabilir (hala gerekiyorsa).
Google Play, her kullanıcının cihaz yapılandırmasına göre optimize edilmiş APK'lar oluşturmak ve sunmak için Android App Bundle'ı kullanır. Optimize edilmiş bu APK'lar, cihaz için optimum sıkıştırma biçimiyle biçimlendirilmiş tek bir doku öğesi grubu içerir. Uygulama paketinizi en fazla cihaz yelpazesini desteklemek için farklı doku sıkıştırma biçimlerini destekleyecek şekilde yapılandırın.
Oyunun temel boyutunu belirleme ve yapısını anlama
Oyunu tanımak, herhangi bir optimizasyon için gereken çalışma miktarını belirlemek ve oyunun ek öğeler indirip indirmediğini belirlemek üzere aşağıdaki adımları uygulayın:
- Geliştiricinin veya yayınlanan APK'nın üretim (hata ayıklaması olmayan) derlemesini kullanın.
- İkili dosyanın boyutunu, geliştirici tarafından veya oyun yayınlandıysa oyunun Play Store sayfasında gösterildiği şekilde kaydedin. APK boyutu için en önemli faktör, bir kullanıcının gerçek oyunu çalıştırmak için indirmesi gereken veri miktarıdır.
- Oyunu bir cihaza yükleyip başlangıçtaki oyun menüsüne çalıştırın. Bu noktada, Android tarafından bildirilen oyunun yükleme boyutunu kontrol edin (Ayarlar > Depolama altında). Bazı oyunların ilk yükleme boyutu küçüktür. Bunun nedeni, optimize edilmesi gereken en önemli sayıdır. Ancak yüklemeden sonra ek veriler indirilir. Bazı oyunlar yükleme işleminden sonra gigabaytlarca veri indirir.
- Bazı oyunlar yalnızca oynamaya başladıktan sonra veri indirir. Oyunu ilk kez oynayan sıradan bir kullanıcı için oyunun ne kadar ek veri indirdiğini belirlemek amacıyla oyunu bir süre oynamanız gerekir.
Boyutu küçültülebilecek öğeleri ve diğer dosyaları arayın
Bu bölümde, bir APK'daki dosyaların boyutunu nasıl küçülteceğiniz açıklanmaktadır. Cihaza özel APK'lar indirmek için App Bundle Explorer'ı kullanabilirsiniz.
Doğrudan APK'ya paketlenen dosyaların boyutunu azaltmak için aşağıdaki adımları uygulayın:
- Android Studio APK Analizcisi'ni kullanın. Android Studio'da Dosya > Profil veya hata ayıklama APK'sı seçeneğini belirleyip APK'nızı seçin.
- Assets klasörünü seçin. Her dosya için ham dosya boyutu ve toplam indirme boyutunun yüzdesi listelenir.
Assets klasörünü inceleyin ve oyun verilerinin toplu olarak nerede bulunduğunu belirleyin. Aşırı miktarda yer kaplayan (yani toplamın% 1'inden fazla) herhangi bir öğe olup olmadığını belirleyin. Özellikle şunlara dikkat edin:
- Büyük resim ve video dosyaları (ör. PNG, JPEG ve mp4 dosyaları): Bu dosyalar genellikle başlangıç ekranları, arka planlar ve logolarda kullanılır. Bu dosyalar, çoğu oyunda nadiren kullanılır ve kullanıcı deneyimini etkilemeden daha fazla sıkıştırılabilir. Kayıpsız PNG dosyaları özellikle büyüktür ve sıkıştırma için mükemmel adaylardır.
- Büyük yazı tipi dosyaları (örneğin, TTF dosyaları): Emoji desteği eklerseniz yazı tipi dosyasının boyutunu önemli ölçüde artırabilir. Bir yazı tipi dosyası birkaç yüz kilobayttan büyükse boyutunu küçültmenin yollarını düşünün.
- Birleştirebileceğiniz yinelenen ses dosyası biçimleri veya sürümleri.
İkili paylaşılan nesne (.so) dosyalarının boyutunu belirleyin. İkili dosyaları inceleyerek, günlük dosyaları gibi eklenmesi gerekebilecek öğelerin olup olmadığını görmek için Bloaty McBloatface aracını kullanabilirsiniz. İkili dosyaların nasıl optimize edileceği hakkında daha fazla bilgi için işaretleri ve seçenekleri derleme bölümüne bakın.
Desteklenen grafik biçimleri için Android manifest dosyasını inceleyin. APK'da birden fazla
<supports-gl-texture>etiketi olup olmadığını belirleyin. Oyun, bir APK'da birden fazla GPU için biçimleri destekliyorsa Binomial's Basis Universal'ı kullanmayı düşünün. Bu GPU doku sıkıştırma sistemi, GPU'ya hızlı bir şekilde dönüştürülebilen ara biçimde doku dosyaları oluşturur.
Grafik dokularını inceleyip optimizasyon fırsatlarını belirleyin
Bu bölümde, oyunda kullanılan grafik dokularının optimize edilip edilemeyeceğini belirlemek için gereken araçlar ve yöntemler açıklanmaktadır.
Aşağıdakileri arayın:
- Oyunda yalnızca küçük bir boyutta oluşturulan bir öğe için büyük bir doku gibi, daha düşük bir çözünürlüğe yeniden boyutlandırılabilen dokular. Dokuların aşağı örneklemesi hesaplama açısından pahalıdır.
- Tek bir doku haritasında birleştirilebilecek birden çok küçük doku kullanılmasıdır.
- Renk kanallarında daha az bit kullanabilen dokular. Az sayıda, düz dokuya sahip dokular en iyi seçenektir. Gradyanlar ve renk tonları daha fazla çözünürlük gerektirir ve bu nedenle iyi birer aday değildir.
- ETC1'den ETC2 ve ASTC'ye kadar daha iyi doku sıkıştırma algoritmalarını keşfedin.
Bellekten tasarruf etmek için alt uç cihazlardaki dokuları yüklerken en üst mipmap düzeyini silin. Unity'nin Texture Streaming sistemi bunu yapabilir.
Henüz yapmadıysanız desteklenen grafik biçimleri için Android manifest dosyasını inceleyin. APK'da birden fazla
<supports-gl-texture>etiketi olup olmadığını belirleyin. Oyun, bir APK'da birden fazla GPU için biçimleri destekliyorsa Binomial's Basis Universal'ı kullanmayı düşünün. Bu GPU doku sıkıştırma sistemi, GPU'ya hızlı bir şekilde dönüştürülebilen ara biçimde doku dosyaları oluşturur.
Öğeler için genel öneriler
Bir APK'nın öğeleri için aşağıdaki önerileri uygulayın:
- Resim, ses ve video öğeleri (GPU dokuları değil): Öğelerin yeniden boyutlandırılıp yeniden boyutlandırılamayacağını veya daha fazla sıkıştırılıp sıkıştırılamayacağını belirleyin. Yüksek sıkıştırma oranları genellikle oyunlar için kabul edilebilir. Kayıpsız PNG dosyaları özellikle büyüktür ve bu nedenle sıkıştırma için mükemmel adaylardır.
- Resim öğeleri (GPU dokuları değil): Hem kayıplı hem de kayıpsız sıkıştırma için bir resim sıkıştırma biçimi olan WEBP'yi kullanmayı düşünün. Kayıplı WEBP, resimleri JPG'ye göre% 25 ila% 34 daha fazla sıkıştırır.
- Doku çözünürlüğünü azaltma: Ekranda oluşturulan piksel sayısından çok daha büyük bir doku, alan ve GPU kaynaklarının verimsiz bir kullanımıdır. Bir dokuyu değiştirmek ve oyunu yeniden derlemeye gerek kalmadan karede nasıl göründüğünü görmek için AGI'yi kullanın.
- Grafiklerin doku biçimlerini değiştirme: Kanal başına daha az bit kullanan doku biçimleri kullanın. Örneğin, ARGB gibi 32 bit bir doku biçimi yerine RGB565 gibi 16 bit bir doku biçimi kullanın. Daha fazla bilgi için aşağıdaki kaynakları inceleyin:
Ek kaynaklar
- Google Play'deki yeni uygulamalar için son Android App Bundle iyileştirmeleri ve zaman çizelgesi
- Android hazır oyunlarda APK boyutunu küçültme
- GPU'da Kodu Çözülebilir Süper Sıkıştırılmış Dokular (araştırma makalesi)