Yavaş Oturumlar

Yavaş Oturumlar, Google Play Console'daki yeni bir Android vitals metriğidir. Yavaş oturumu, karelerin% 25'inden fazlasının yavaş olduğu bir oturumdur. Çerçeve önceki kareden sonra 50 ms.den kısa bir sürede sunulmazsa yavaştır (20 FPS'ye eşittir). Android vitals ikinci bir Yavaş Oturum olduğunu da bildiriyor metriği 34 ms (30 FPS'ye eşdeğerdir) Yavaş Oturumlar'ı kullandığınızda oyununuzun kare hızı performansını anlayabilir. Bu, uygulamanızın sorunsuz ve akıcı bir oyun deneyimi sunmanızı sağlar.

Play zamanla kullanıcıları izin verilmeyen oyunlardan uzaklaştırmaya 20 FPS'ye ulaşabiliyor. Android vitals'ın yalnızca izlemeye başladığını unutmayın oyununuz bir dakika çalıştıktan sonra kare hızını artırabilirsiniz.

Ayrıntılı bilgi için Yardım Merkezimizi ziyaret edin. karar vermemiz gerekecek.

Yavaş karelerin ve yavaş olmayan karelerin sayısını gösteren pasta grafik benzeri grafikler.
Şekil 1. Android vitals'da yavaş bir oturum.
ziyaret edin.

FPS ölçümü ve yavaş kareleri tespit etme

Android dumpsys surfaceflinger timestats komutu ortalama FPS ve sunulmakta olan tüm katmanlar için göstermek için göster zamanlama histogramı oluşturulur. Bir karenin bugünden bugüne kadar olan zaman, geçerli kare ve çizilen önceki kare. İşte şu komutu kullanarak oyununuzun FPS'sini toplayabilirsiniz:

  1. Yakalamayı başlatmak için enable ve clear işaretleriyle komutu çalıştırın bilgi:

    adb shell dumpsys SurfaceFlinger --timestats -clear -enable
    
  2. Oyun yeterince uzun süre oynandığında komutu yeniden başlatmak için bilgi dökümü için dump işaretini işaretleyin:

    adb shell dumpsys SurfaceFlinger --timestats -dump
    

    Döküm bilgileri, toplam kare sayısı ve mevcut SurfaceFlinger tarafından oluşturulan tüm katmanlar. Oyununuzun bölümüne layerName göre filtre uygulayarak şunları ekleyin:

    layerName = SurfaceView[com.google.test/com.devrel.MainActivity]@0(BLAST)#132833
    

    Oturumun yavaş kare hızı, oturumdaki kullanıcı bilgileri temel alınarak yardımcı olabilir.

    Örneğin, 20 FPS yavaş kare yüzdesi = (54 ms ile 1000 ms arasındaki değerlerin toplamı) / totalFrames x 100

    totalFrames = 274
    ...
    presentToPresent histogram is as below:
    0ms=0 1ms=0 2ms=0 3ms=0 4ms=0 5ms=0 6ms=0 7ms=0 8ms=0 9ms=0 10ms=0 11ms=0 12ms=0
    13ms=0 14ms=0 15ms=0 16ms=1 17ms=0 18ms=0 19ms=0 20ms=0 21ms=0 22ms=0 23ms=0
    24ms=0 25ms=0 26ms=0 27ms=0 28ms=0 29ms=0 30ms=0 31ms=0 32ms=0 33ms=269 34ms=0
    36ms=0 38ms=0 40ms=0 42ms=0 44ms=0 46ms=0 48ms=0 50ms=1 54ms=0 58ms=0 62ms=0
    66ms=0 70ms=1 74ms=0 78ms=0 82ms=0 86ms=0 90ms=0 94ms=0 98ms=0 102ms=0 106ms=0
    110ms=0 114ms=0 118ms=0 122ms=0 126ms=0 130ms=0 134ms=0 138ms=0 142ms=0 146ms=0
    150ms=0 200ms=0 250ms=0 300ms=0 350ms=0 400ms=0 450ms=0 500ms=0 550ms=0 600ms=0
    650ms=0 700ms=0 750ms=0 800ms=0 850ms=0 900ms=0 950ms=0 1000ms=0
    

    Her katmanın ortalama FPS değeri de dökümde gösterilir:

    ...
    averageFPS = 30.179
    ...
    
  3. Tüm bilgileri topladıktan sonra, zaman istatistikleri disable işaretini kullanarak:

    adb shell dumpsys SurfaceFlinger --timestats -disable
    

Yavaş kare nedenleri ve çözümleri

Bir karenin ekranda görünmesinin veya ekranda daha uzun süre oluşturulmasının birçok nedeni olabilir biraz daha fazla zaman harcıyor. Oyun CPU/GPU'ya bağlı olabilir. Alternatif olarak: Cihaz aşırı ısınıyor ve kısıtlanmış bir termal durumu etkinleştiriyor. Alternatif olarak: Oyunun kare hızı ile cihazın ekranında bir uyumsuzluk vardır yenileme hızı.

Android Çerçeve İlerlemesi (Değişken) özelliğini kullanıyorsanız, Vulkan ve ADPF'yi bu sorunları giderip oyununuzun performansını iyileştirin.

Swappy nedir?

Swappy olarak da bilinen Android Frame Pacing kitaplığı, AGDK kitaplıkları. Swappy, OpenGL ve Vulkan oyunlarına yardımcı oluyor kullanarak doğru kare hızı elde edebilirsiniz.

Kare hızı, bir oyunun mantığı ve oluşturma döngüsünü, işletim sisteminin ekran alt sistemi ve temel ekran donanımı. Android görüntülü reklam alt sistemi, görsel kusurlardan (yığılma olarak bilinir) kaçınmak için tasarlanmıştır. ekran donanımının yarıda yeni bir çerçeveye geçmesi meydana gelebilir güncellemem gerekiyor. Bu yapıları önlemek için görüntülü reklam alt sistemi şu:

  • Geçmiş kareleri dahili olarak arabelleğe alır
  • Geç kare gönderimlerini algılar
  • Geç kareler algılandığında geçmiş karelerin görüntülenmesini tekrar eder

Swappy'yi Yerel Projelerde kullanma

Android Frame Pacing kitaplığını entegre etmek için aşağıdaki kılavuzlara bakın. oyununuza ekleyin:

Unity oyun motorunda Swappy'yi kullanma

Unity, Android Çerçeve İlerlemesi'ni motoruna entegre etti. Bunu etkinleştirmek için özelliği Unity 2019.2'de veya daha yüksek bir zamanda, Proje Ayarları > Oynatıcı > Android için Ayarlar > Çözünürlük ve Sunum:

Proje ayarları iletişim kutusu.
Şekil 2. Unity Engine'de Çerçeve Hızı'nı etkinleştirin.

Alternatif olarak, Unity'nin eşit sıklıkta çalışmasını sağlamak için mantık kodunuzda Optimize Edilmiş Çerçeve İlerlemesi seçeneğini programatik olarak etkinleştirin Kare hızında daha az sapma olması için kareleri dağıtarak daha akıcı bir oyun deneyimi sağlar.

Unreal oyun motorunda Swappy'yi kullanma

Unreal 4.25 ve sonraki sürümler Android Frame Pacing Library Android Oyun Geliştirme Kiti. Mobil Çerçeve İlerlemesi makalesinde, Android Kare Hızı Kitaplığı ve C++ kodundan kare ilerleme hızını kontrol etme.

Vulkan nedir?

Vulkan, platformlar arası, modern bir 3D cihaz grafik donanımı arasındaki soyutlamayı en aza indirmek için tasarlanmış grafik API'sı hem de oyununuz var. Vulkan, Android'in birincil alt seviye grafik API'sidir. OpenGL ES'nin yerini almıştır. OpenGL ES Android'de hâlâ desteklenmektedir ancak artık etkin bir özellik kapsamında değildir bahsedeceğim.

Vulkan, OpenGL ES'ye göre aşağıdaki avantajları sunar:

  • Grafik sürücüsünde daha düşük ek CPU yüküyle daha verimli bir mimari
  • CPU performansını artırmaya yönelik yeni optimizasyon stratejileri
  • Bağlamaz API'ler ve bağlantısız API'ler gibi OpenGL ES'de kullanılamayan yeni grafik özellikleri ışın izleme

Vulkan, yerel Android projelerinde nasıl kullanılır?

Android'de Vulkan'ı kullanmaya başlama codelab'i, kurulumda size yol gösterir oluşturma ve ardından dokulu, dönen bir üçgen oluşturma ekranda görebilirsiniz. Oyun grafiklerinizi nasıl oluşturacağınızı öğrenmek için codelab'i kullanın.

Unity oyun motorunda Vulkan'ı kullanma

Unity'de otomatik cihaz seçimini etkinleştirmek için aşağıdaki adımları uygulayarak yapılandırma adımlarını uygulayın: Auto Graphics API.

Proje ayarları iletişim kutusu.
Şekil 3. Unity Auto Graphics API'sini etkinleştirin.

Alternatif olarak Auto Graphics API'yi devre dışı bırakarak Vulkan'ı manuel olarak etkinleştirebilirsiniz. ve Vulkan'ı Grafik API'leri listesindeki en yüksek önceliğe yerleştirin. Eğer kullanıyorsanız Vulkan'ı kullanmanın tek yolu budur.

Proje ayarları iletişim kutusu.
Şekil 4. Unity'de ana Graphics API'si olarak Vulkan'ı manuel olarak seçin.

VkQuality Unity motor eklentisini kullanın Oyununuzda kullanılacak grafik API'sinin lansman zamanı önerilerini sağlamak belirli cihazlarda kullanılabilir.

Unreal oyun motorunda Vulkan nasıl kullanılır?

Vulkan grafik API'sini etkinleştirmek için Proje Ayarları > Platformlar > Android > Build'ı (Derle) tıklayın ve Support Vulkan (Vulkan'ı Destekle) seçeneğini belirleyin. Destek ekibini Vulkan ve OpenGL ES3.2'yi destekler. Unreal, varsayılan olarak Vulkan'ı kullanır. Cihaz Vulkan'ı desteklemez. Unreal, OpenGL ES 3.2'ye geri döner.

Proje ayarları iletişim kutusu.
Şekil 5. Unreal Engine'de Vulkan'ı etkinleştirin.

Web üzerinde kötü davrandığı bilinen belirli Vulkan özelliklerini kullanıyorsanız BaseDeviceProfile.ini dosyanızı, belirli cihazlarda hariç tutulacak şekilde özelleştirebilirsiniz kullanıyor. Cihaz Profillerini Özelleştirme ve Ölçeklenebilirliği Özelleştirme Android için BaseDeviceProfile.ini özelleştir. Yeni cihaz sürücülerinin daha önce düzeltebileceği için bilinen kötü cihazlarınız varsa, tüm verilerinizi almak için BaseDeviceProfile.ini dosyanızı güncel bazı en iyi uygulamalardan bahsedeceğiz.

ADPF nedir?

Android Dinamik Performans Çerçevesi (ADPF) Dinamik termal, CPU ve GPU yönetim özelliklerine göre oyunları optimize eder elde etti. Odak noktası oyunlar olsa da bu özellikleri diğer uygulamalardır.

ADPF, oyunların ve performans odaklı uygulamaların aşağıdakileri yapmasına olanak tanıyan bir dizi API'dir: Android cihazların güç ve termal sistemleriyle daha doğrudan etkileşime girmelerine Entegre Android sistemlerindeki dinamik davranışı izleyebilir ve Oyun performansını cihazları aşırı ısınmayan sürdürülebilir bir düzeyde optimize etmek.

Temel ADPF özellikleri şunlardır:

  • Termal API: Uygulamanın, sürdürülebilir hale gelmeden iş yükünü proaktif olarak ayarlaması için cihazların termal durumunu izleme.
  • CPU Performans İpucu API'si: Android'in iş yükü için doğru performans ayarlarını (örneğin, CPU çalışma noktası veya çekirdek) seçmesini sağlayan performans ipuçları sağlayın.
  • Oyun Modu API'si ve Oyun Durumu API'si: Kullanıcının ayarlarına ve oyuna özgü yapılandırmalara dayalı olarak performansa veya pil ömrü özelliklerine öncelik vererek oyun optimizasyonunu etkinleştirin.
  • Sabit Performans Modu: Dinamik CPU saatlemesi tarafından değiştirilmeyen ölçümleri almak için karşılaştırma sırasında bir cihazda sabit performans modunu etkinleştirin.
  • Güç Verimliliği Modu: Oturumda, Performans İpucu Oturumu'ndaki ileti dizilerinin, performans yerine güç verimliliğini tercih edecek şekilde güvenli bir şekilde planlanabileceğini bildirir. Android 15'te (API leve 35) kullanılabilir.

Yerel Android projelerinde ADPF kullanma

Integrating Adaptability Features Into Your Native Oyun (Uyarlanabilirlik Özelliklerini Yerel Oyununuza Entegre Etme) codelab'i, ADPF özelliklerini istediğiniz tempoda ilerleyebileceğiniz birkaç adım bulunur. Bu Şu özellikleri entegre etmiş olursunuz:

  • Termal API: Cihazın ısı durumunu dinleyin ve cihaz termal kısıtlama durumuna düşmeden önce tepki verin.
  • Oyun Modu API'si: Oyuncuların optimizasyon tercihlerini anlayın (performansı artırma veya pili koruma) ve buna göre ayarlamalar yapın.
  • Oyun Durumu API'si: Sisteme oyununuzun durumunu (yükleme, oynama, kullanıcı arayüzü vb.) bildirin. Böylece sistem, kaynakları uygun şekilde ayarlayabilir (G/Ç veya CPU, GPU vb. yükseltme).
  • Performans İpucu API'si: Sistemin kaynakları uygun şekilde dağıtabilmesi için iş parçacığı modelinizi ve iş yükünüzü sisteme bildirin.

Unity oyun motorunda ADPF kullanma

Unity'nin Uyarlanabilir Performansı, oyunlarını mobil cihazlarda optimize etmek isteyen oyun geliştiricilerin özellikle çeşitlilik içeren Android ekosisteminde. Uyarlanabilir Performans, performans ve termal özelliklerine uyum sağlamasına yardımcı olacak gerçek zamanlı olarak sorunsuz ve verimli bir oyun deneyimi sunmamızı sağlıyor.

Uyarlanabilir Performans Android sağlayıcısı Unity'de ADPF'yi uygulama adımlarında size rehberlik edecek.

Proje ayarları iletişim kutusu.
Şekil 6. ADPF'yi Unity Engine'e entegre edin.

Unreal oyun motorunda ADPF kullanma

Proje ayarları iletişim kutusu.
Şekil 7. ADPF'yi Unreal Engine'e entegre edin.
  1. Eklentiyi indirin.
  2. Eklentiyi proje eklentisi klasörüne kopyalayın
  3. Unreal düzenleyicisinde ADPF Unreal Engine eklentisini etkinleştirin
  4. Unreal düzenleyiciyi yeniden başlat
  5. Oyunu yapıp pişirme

Android Dynamic Performance Framework(ADPF) eklentisi Unreal Engine, ve termal kısıtlamayı önler. Eklentiyi indirin oluşturabilirsiniz. Bu eklenti, şu ayarı yaparak özellikleri değiştirir: Gerçek dışı konsol değerleri.