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

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

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

Arka plan

Oyun deneyiminin önemli bir bileşeni oluşturma performansıdır. Oluşturma performansı, aşağıdaki iki girişin sonucudur:

  • Kare hızı: Bir karenin ne sıklıkta çizildiği.
  • Grafik kalitesi ayarları: Bir karenin sunulduğu doğruluk düzeyi (simülasyon doğruluğu ve grafikler dahil).

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

  • Sabit ve tutarlı bir kare hızı sunma (yani, istenen sıklıkta oluşturulan karelerin yüzdesi).
  • Kararlılığı korurken mümkün olan en yüksek sıklıkta kare oluşturma (genellikle oyun türüne bağlı olarak 30 veya 60 FPS).
  • İstenen kararlı kare hızını korurken kullanıcının ekran boyutu ve yoğunluğu göz önünde bulundurularak ayrıntı düzeyini en üst düzeye çıkarma.

Android Frame Pacing kitaplığı, kare sürelerindeki varyasyonun büyük bir kısmını sınırlar ve oyunlar için sabit bir kare hızı sağlar. Kare sürelerindeki kalan fark, oyun sırasında belirli sahnelerde gösterilen ayrıntı düzeyinden ve cihazın grafik özelliklerinden kaynaklanır. Android Performance Tuner'ı kullanarak oyun sırasında kare süresinin hedefinizden daha yavaş veya daha hızlı olduğu zamanları belirleyebilir ve bu sorunları ve fırsatları aşağıdakilerle ilişkilendirebilirsiniz:

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

Veri kaydetme ve yükleme

Tuning Fork kitaplığı, Android Frame Pacing kitaplığı tarafından her karede tick işlevlerinden birinin çağrılmasına bağlıdır. Kitaplıkta bu işaret bilgileri, histogramlar halinde toplanır ve ardından düzenli olarak bir HTTP uç noktası üzerinden Google Play'e yüklenir. Her işaret, bir enstrüman anahtarı ve bir açıklamayla ilişkilendirilmiş olarak kaydedilir. Bunların tanımlarını bir protokol arabellek dosyasında belirtirsiniz.

Enstrüman tuşları

Enstrüman anahtarı, tikin karede nereden geldiğini gösterir ve her tik işlevi çağrısına iletilmesi gereken bir tam sayıdır. Android Frame Pacing kitaplığı, swappy_common.h içinde tanımlanan önceden tanımlanmış bir dizi enstrüman anahtarı kullanır. Frame Pacing kitaplığını kullanmıyorsanız kendi enstrüman anahtarlarınızı da tanımlayabilirsiniz.

Ek Açıklamalar

Ek açıklamalar, işaret kaydedilirken oyununuzun ne yaptığına dair bağlamsal bilgiler verir. Örneğin, bir ek açıklama aşağıdakilerden herhangi birini tanımlayabilir:

  • Mevcut oyun seviyesi
  • Ekranda "büyük patron" var
  • Oyun durumuyla ilgili diğer bilgiler

Ek açıklamalar, com.google.tuningfork.Annotation protokol arabellek mesajı tarafından tanımlanır. Mevcut ek açıklamayı ayarlamak için tanımladığınız mesajın serileştirilmiş halini TuningFork_setCurrentAnnotation()'a iletirsiniz. Daha sonra, başka bir ek açıklama ayarlanana kadar tüm sonraki işaret verileri bu ek açıklamayla ilişkilendirilir. Aşağıda, ek açıklamalar için örnek bir proto 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) ve performansını etkiler. Ses kalitesi parametreleri, ek açıklamalar gibi com.google.tuningfork.FidelityParams protokol arabellek mesajı kullanılarak tanımlanır. Aşağıda, doğruluk parametreleri için bir örnek proto 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şlatılırken oyunun kullandığı parametrelerin serileştirilmiş bir sürümünü iletirsiniz. Örneğin, kullanıcı oyun oluşturma ayarlarını değiştirirse ve daha sonra yüklediğiniz veriler yeni parametrelerle ilişkilendirilirse bu parametreleri 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 arabelleği dosyasının, başlatma ayarlarıyla birlikte oyunun APK'sına paketlenmesi gerekir. Verilerinizin Google Play kullanıcı arayüzünde bu parametrelere göre segmentlere ayrılması için APK'nızda yaygın doğruluk parametresi kombinasyonları için varsayılan değerler de sağlamanız gerekir. Daha fazla bilgi için Kalite düzeylerini tanımlama başlıklı makaleyi inceleyin.

Bellek ve CPU ek yükü

Oyun sırasında sürprizlerle kar��ılaşmamak için Tuning Fork kitaplığı tarafından kullanılan tüm bellek başlatma sırasında ayrılır. Verilerin boyutu; enstrüman 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. Bu değer, tüm bu sayıların çarpımının her paket için dört bayt ile çarpılmasıyla elde edilir. Ayrıca, çift arabellekli gönderime olanak tanımak için tüm histogramların iki kopyası vardır.

Gönderme işlemi ayrı bir iş parçacığında gerçekleşir ve onay işareti çağrılarını engellemez. Yükleme bağlantısı yoksa gönderim daha sonra yüklenmek üzere sıraya alınır.

Bir tick işlevini çağırmak için çok az işlem ek yükü gerekir: Bu işlev, yalnızca histogram grupları 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şmaktadır. İlk bölümde, bir demo uygulaması ve Google Play Console kullanarak nasıl uçtan uca test yapılacağı açıklanmaktadır. İkinci bölümde, Tuning Fork kitaplığının araç zincirinize nasıl entegre edileceği ve kitaplığın sağladığı işlevlerin nasıl kullanılacağı açıklanmaktadır. Başlamak için aşağıdaki Sonraki bağlantısını tıklayın.