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

Bu konuda, yerel (C ve C++) oyun motorlarından kare süresi verilerini kaydedip 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 rehberine bakın.

Arka plan

Oluşturma performansı, oyun deneyiminin temel bir bileşenidir. Oluşturma performansı aşağıdaki iki girişin sonucudur:

  • Kare hızı: Bir karenin çizilme sıklığı.
  • Grafik kalite ayarları: Simülasyonun doğruluk düzeyi ve grafikler dahil, bir karenin gösterildiği doğruluk düzeyi.

Oyunlarda iyi oluşturma performansı aşağıdaki şekilde tanımlanır:

  • Kararlı ve tutarlı bir kare hızı (yani, istenen sıklıkta oluşturulan karelerin yüzdesi) sunma.
  • Kareleri mümkün olan en yüksek sıklıkta, yani kararlılığı korurken oluşturma. Oyun türüne bağlı olarak genellikle 30 veya 60 FPS.
  • Ekran boyutu ve yoğunluğu düşünüldüğünde bir kullanıcı için ayrıntı düzeyini en üst düzeye çıkarırken, istenen ve sabit bir kare hızına ulaşmaya devam etme.

Android Frame Pacing kitaplığı kare süresindeki varyasyonların çoğunu sınırlayarak oyunlar için sabit bir kare hızı sağlar. Kare sürelerinde kalan varyasyon, oyundaki belirli sahnelerde gösterilen ayrıntı düzeyi ve cihazın grafik özelliklerinden kaynaklanı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ı şunlarla ilişkilendirebilirsiniz:

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

Verileri kaydedin ve yükleyin

Tuning Fork kitaplığı, her karenin Android Frame Pacing kitaplığı tarafından çağrılması için onaylama işlevlerinden birini kullanır. Kitaplıkta, bu onay işareti bilgileri histogramlar halinde toplanır, daha sonra bunlar düzenli olarak bir HTTP uç noktası üzerinden Google Play'e yüklenir. Her onay işareti, bir araç anahtarı ve bir ek açıklama ile ilişkilendirilmiş olarak kaydedilir. Bunlar, tanımlarını bir protokol arabellek dosyasında belirtir.

Enstrüman tuşları

Araç anahtarı, onay işaretinin çerçevenin neresinden geldiğini ve her onay işlevi çağrısına iletilmesi gereken bir tam sayı olduğunu belirtir. Android Frame Pacing kitaplığı swappy_common.h'de tanımlanan önceden tanımlanmış bir araç tuşları grubu 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ığına dair bağlamsal bilgiler verir. Örneğin, bir ek açıklama aşağıdakilerden herhangi birini tanımlayabilir:

  • Oyundaki mevcut seviye
  • Ekranda bir "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 arabelleği mesajıyla tanımlanır. Geçerli ek açıklamayı ayarlamak için, tanımladığınız mesajın serileştirmesini TuningFork_setCurrentAnnotation()'e iletirsiniz. Sonraki tüm onay işareti verileri, başka bir ek açıklama ayarlanana kadar 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 performansını ve grafik kalitesini (ör. örgü ayrıntı düzeyi, doku çözünürlüğü ve kenar yumuşatma yöntemi) etkiler. Ek açıklamalarda olduğu gibi doğruluk parametreleri com.google.tuningfork.FidelityParams protokol arabelleği mesajı kullanılarak tanımlanır. Aşağıda, doğruluk parametrelerine ilişkin ö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'un başlatılmasında, oyunun kullandığı parametrelerin serileştirilmesini sağlarsınız. Bu parametreleri, örneğin kullanıcı oyun oluşturma ayarlarını değiştirirse ve sonraki 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, başlatma ayarlarıyla birlikte oyunun APK'sında paketlenmesi gerekir. Ayrıca, Google Play kullanıcı arayüzünde verilerinizin segmentlere ayrılması için APK'nızdaki yaygın doğruluk parametresi kombinasyonları için varsayılan değerler sağlamanız 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 esnasında sürprizlerle karşılaşmamak için ilk kullanıma hazırlama aşamasında ayrıdır. Verilerin boyutu araç anahtarı sayısına, olası ek açıklama 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 arabelleğe alınmış şekilde gönderilmesi için iki kopyası da vardır.

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

Onay işlevini çağırmak için çok az bir 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üme ayrılmıştır. İlk bölümde, bir demo uygulama 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 İleri bağlantısını tıklayın.