Android Performance Tuner'a (yerel) genel bakış

Bu konuda, yerel (C ve C++) oyun motorlarından kare süresi verilerini kaydetmek ve yüklemek için Tuning Fork kitaplığı olarak da bilinen Android Performance Tuner'ın nasıl entegre edileceği açıklanmaktadır.

Unity oyun motoru için Unity kılavuzuna bakın.

Arka plan

Oyun deneyiminin temel bileşenlerinden biri oluşturma performansıdır. Oluşturma performansı aşağıdaki iki girişin sonucudur:

  • Kare hızı: Bir karenin çizilme sıklığı.
  • Grafik kalite ayarları: Simülasyon doğruluk düzeyinin yanı sıra grafikler de dahil olmak üzere, bir karenin sunulduğu kalite seviyesi.

Oyunlarda iyi oluşturma performansı şu şekilde tanımlanır:

  • Kararlı ve tutarlı bir kare hızı (yani, istenen sıklıkta oluşturulan karelerin yüzdesi) sunma.
  • Oyunun türüne bağlı olarak genellikle 30 veya 60 FPS olan ve kararlılığı korurken kareleri mümkün olan en yüksek sıklıkta oluşturma.
  • İstenilen, sabit bir kare hızına ulaşmaya devam ederken ekran boyutuna ve yoğunluğuna göre kullanıcı için ayrıntı düzeyini en üst düzeye çıkarma.

Android Frame Pacing kitaplığı, kare süresindeki varyasyonun çoğunu sınırlandırarak oyunlar için sabit bir kare hızı sağlar. Kare sürelerinde kalan değişim, oyundaki belirli sahnelerde gösterilen ayrıntı düzeyine ve cihazın grafik özelliklerine bağlıdır. Android Performance Tuner'ı kullanarak oyun sırasında kare süresinin hedefinizden daha yavaş veya hızlı olduğu zamanları belirleyebilir ve bu sorunlar ile fırsatları şunlar arasında ilişkilendirebilirsiniz:

  • Belirli kalite ayarları
  • Oyununuzdaki belirli sahneler
  • Belirli cihaz modelleri veya cihaz özellikleri

Veri kaydetme ve yükleme

Tuning Fork kitaplığı, onay işlevlerinden birinin Android Frame Pacing kitaplığı tarafından her kare olarak çağrılmasına dayanır. Kitaplıkta bu onay işareti bilgileri histogramlar halinde toplanır daha sonra bu bilgiler, bir HTTP uç noktası aracılığıyla düzenli olarak Google Play'e yüklenir. Her onay işareti, bir araç anahtarı ve bir ek açıklamayla ilişkilendirilmiş olarak kaydedilir. Açıklamaları protokol arabelleği dosyasında belirtilir.

Enstrüman tuşları

Araç tuşu, onay işaretinin çerçevede nereden geldiğini ve her bir tik işlevi çağrısına iletilmesi gereken bir tam sayı olduğunu belirtir. Android Frame Pacing kitaplığı, swappy_common.h içinde tanımlanan önceden tanımlanmış bir dizi araç anahtarı kullanır. Frame Pacing kitaplığını kullanmıyorsanız kendi araç anahtarlarınızı da tanımlayabilirsiniz.

Ek Açıklamalar

Ek açıklamalar, bir onay işareti kaydedildiğinde oyununuzun ne yaptığıyla ilgili bağlamsal bilgiler verir. Örneğin, bir ek açıklama aşağıdakilerden herhangi birini tanımlayabilir:

  • Oyunun mevcut seviyesi
  • Ekranda "büyük patron" görünüyor
  • Oyun durumu ile ilgili diğer tüm bilgiler

Ek açıklamalar, com.google.tuningfork.Annotation protokol arabellek mesajı tarafından tanımlanır. Geçerli ek açıklamayı ayarlamak için, tanımladığınız mesajın serileştirmesini TuningFork_setCurrentAnnotation() hizmetine iletirsiniz. Ardından, başka bir ek açıklama ayarlanana kadar, sonraki tüm onay işareti verileri bu ek açıklamayla ilişkilendirilir. Aşağıda, ek açıklamalar için örnek bir protokol tanımı verilmiştir:

import "tuningfork.proto"
enum Level {
  INVALID_LEVEL = 0;
  Level_1 = 1;
  Level_2 = 2;
  Level_3 = 3;
}
message Annotation {
  optional Level level = 1;
}

Doğruluk parametreleri

Doğruluk parametreleri, oyununuzun grafik kalitesini (örgü ayrıntı düzeyi, doku çözünürlüğü ve kenar yumuşatma yöntemi gibi) etkiler. Ek açıklamalarda olduğu gibi, doğruluk parametreleri com.google.tuningfork.FidelityParams protokol arabellek mesajı kullanılarak tanımlanır. Aşağıda, doğruluk parametreleri için örnek bir protokol tanımı verilmiştir:

import "tuningfork.proto"
message FidelityParams {
  int32 texture_quality_level = 1;
  int32 shadow_resolution = 2;
  float terrain_details_percent = 3;
  int32 post_processing_effects_level = 4;
}

Tuning Fork başlatma işleminde, oyunun kullandığı parametrelerin serileştirilmesini iletirsiniz. Bu parametreleri, örneğin kullanıcı oyun oluşturma ayarlarını değiştirirse ve daha sonra yüklediğiniz veriler yeni parametrelerle ilişkilendirilirse değiştirebilirsiniz.

Google Play'in tanımladığınız ek açıklamaları ve doğruluk parametrelerini anlayabilmesi için bu tanımları içeren protokol arabellek dosyasının ve başlatma ayarlarıyla birlikte oyunun APK'sı içinde paketlenmesi gerekir. Ayrıca, verilerinizin Google Play kullanıcı arayüzünde bunlara göre segmentlere ayrılması için APK'nızdaki genel doğruluk parametresi kombinasyonları için varsayılan değerler sağlamanız da gerekir. Daha fazla bilgi için Kalite seviyelerini tanımlama bölümüne bakın.

Bellek ve CPU ek yükü

Tuning Fork kitaplığının kullandığı tüm bellek, oyun sırasında sürprizlerle karşılaşmamak için ilk kullanıma sunum sırasında ayrılır. Verilerin boyutu araç anahtarlarının sayısına, olası ek açıklamaların sayısına ve her histogramdaki paket sayısına bağlıdır. Her paket için bu dört baytın çarpımının katıdır. Ayrıca tüm histogramların çift arabellekli biçimde teslim edilebilmesi için iki kopya bulunur.

Gönderim ayrı bir ileti dizisinde gerçekleşir ve onay işaretlerini engellemez. Yükleme bağlantısı yoksa gönderim daha sonra yüklenmek üzere sıraya alınır.

Onay işareti işlevinin çağrılmasında çok az işlem ek yükü olur. Bu işlem, sadece histogram paketleri dizisindeki bir dizini hesaplar ve bir tam sayı sayısını artırır.

Tuning Fork kitaplığını entegre etme

Bu entegrasyon kılavuzu iki bölümden oluşur. İlk bölümde, bir demo uygulama ve Google Play Console'u kullanarak uçtan uca testin nasıl yürütüleceği açıklanmaktadır. İkinci bölümde, Tuning Fork kitaplığının araç zincirinize nasıl entegre edileceği ve kitaplığın sunduğu işlevlerin nasıl kullanılacağı açıklanmaktadır. Başlamak için aşağıdaki İleri bağlantısını tıklayın.