Kare hızı

Swappy olarak da bilinen Android Frame Pacing kitaplığı Android Game SDK'nın bir parçasıdır. OpenGL ve Vulkan oyunlarının sorunsuz şekilde oluşturulmasına yardımcı olur ve doğru kare hızında gösterilebilir.

Kare hızı, bir oyunun mantığı ve oluşturma döngüsünü, işletim sisteminin görüntülü reklam alt sistemi ve temel ekran donanımı. Android ekranı alt sistem, yırtılma gibi bazı görsel kusurları önleyecek şekilde tasarlanmıştır. İlgili içeriği oluşturmak için kullanılan görüntülü reklam alt sistemi, şunları yaparak yırtılmayı önler:

  • Geçmiş kareleri dahili olarak arabelleğe alma
  • Geç kare gönderimlerini algılama
  • Geç kare algılandığında geçerli kareyi göstermeye devam etme

Tutarsız kare görüntüleme süreleri, oyunun oluşturma döngüsünün şu hızda çalışmasından kaynaklanır: ve bunun için yerel ekran donanımının desteklediğinden farklı bir hız gerekir. Sorunlar ortaya çıkıyor Bir oyunun oluşturma döngüsü, temel ekran donanımı için çok yavaş çalıştığında görüntüleme sürelerinde tutarsızlığa neden olur. Örneğin, 30 fps, yerel olarak 60 fps'yi destekleyen bir cihazda oluşturmaya çalışır. Oyunun oluşturma döngüsü, ekranda tekrar eden bir karenin ekstra 16 ms. Bu tür bir ayrılma, kare süreleri arasında önemli tutarsızlıklar 33 ms, 16 ms, 49 ms vb. gibi. Aşırı karmaşık sahneler daha da karmaşık karelerin eksik olmasına yol açtığından dolayı bu soruna neden olabilir.

Kare İlerleme Hızı kitaplığı şu görevleri gerçekleştirir:

Kitaplığı, verilere göre farklı modlarda çalışacak şekilde nasıl yapılandıracağınızı Desteklenen çalışma modları başlıklı makaleyi inceleyin.

OpenGL oluşturucu veya Vulkan oluşturucu kullanarak uygulamak için bkz.

Daha fazla bilgi için Uygun kare hızına ulaşma konusuna bakın.

Saniyedeki kare sayısı kısıtlama müdahalesi

Saniyedeki kare sayısı (FPS) kısıtlama müdahalesi, oyunların uygun bir FPS'de ilerlemesini sağlar. yalnızca platform tarafını kullanarak geliştiricilerin herhangi bir işlem yapması gerekmeden bölümü.

FPS kısıtlama müdahalesinin uygulanması için aşağıdaki bileşenler kullanılır:

Oyun Yöneticisi Hizmeti

GameManagerService bileşeni, tüm kullanıcı başına ve oyun modu ve oyun müdahalesi hakkında oyun başına bilgi. FPS bilgileri GameManagerService'in yanı sıra çözünürlüğünü küçültme faktörü gibi diğer müdahale bilgilerini Her kullanıcı profili için <PACKAGE_NAME, Interventions> eşlemesinde. Oyun modu değiştirildiğinde veya müdahale güncellendiğinde FPS bilgilerine erişilir. CEVAP UID, her PACKAGE_NAME ve kullanıcıya özeldir ve daha fazla çevrilebilir SurfaceFlinger'a göndermek üzere bir <UID, Frame Rate> çiftine dönüştürebilir.

Yüzey Fırlatıcı

SurfaceFlinger bileşeni zaten şunları destekliyor: kare hızı ekran yenileme hızının bir bölümü olduğu sürece bir uygulamanın FPS'sini kısıtlama. SurfaceFlinger, bir vsync durumunda, kısıtlanan için vsync'in geçerliliğini kontrol eder. vsync zaman damgasının bir uygulamadır. Kare hızı vsync ile aynı kadrajda değilse SurfaceFlinger devam eder.

Aşağıdaki şekilde GameManagerService ile SurfaceFlinger arasındaki etkileşim açıklanmaktadır:

GameManagerService ile SurfaceFlinger arasındaki etkileşim

Şekil 1. GameServiceManager ile SurfaceFlinger arasındaki etkileşim

SurfaceFinger, yeni bir değer ayarlamak için <UID, Frame Rate> çifti eşlemesine sahiptir kare hızı kısıtlama önceliği. UID, kullanıcılar ve oyunlar arasında benzersizdir. kullanıcı tek bir cihazdaki aynı oyundaki farklı kare hızı ayarlarına sahip olabilir. GameServiceManager bir oyunun kare hızını geçersiz kılmak için SurfaceFlinger'ı çağırarak UID. Bu mekanizmayla, SurfaceFlinger herhangi bir zamanda eşlemeyi günceller. oyun modu değiştirildiğinde veya müdahale güncellendiğinde. SurfaceFlinger FPS değişikliğini uygular tamponları buna göre kilitleyin.

FPS kısıtlama hakkında daha fazla bilgi edinmek için bkz. FPS kısıtlama tanıtımı.