Ek açıklamaları, doğruluk parametrelerini ve ayarları tanımlayın

Bu dokümanda, ek açıklamaları, doğruluk parametrelerini ve ekleyebilirsiniz.

Ek açıklamalar ve doğruluk parametreleri

Ek açıklamalar, bir kullanıcı sizi tıkladığında oyununuzun onay işareti kaydedilir. Doğruluk parametreleri, performansı ve grafik özelliklerini yansıtır ayarlarını yapabilirsiniz. Bunları, protokol arabelleklerini kullanarak tanımlarsınız. Google'ın dilden bağımsız, yapılandırılmış veri değişim biçimi. Daha fazla bkz. Protokol arabellekleri hakkında.

Oyununuz için olası ek açıklamalar ve doğruluk parametreleri dev_tuningfork.proto adlı dosya, assets/tuningfork dizininde bulunur. dizin oluşturun. Aşağıda demo uygulamasından bir örnek verilmiştir:

syntax = "proto3";

package com.google.tuningfork;

enum InstrumentKey {
  CPU = 0;
  GPU = 1;
  SWAPPY_WAIT = 2;
  SWAPPY_SWAP = 3;
  CHOREOGRAPHER = 4;
}

enum Level {
  // 0 is not a valid value
  LEVEL_INVALID = 0;
  LEVEL_1 = 1;
  LEVEL_2 = 2;
  LEVEL_3 = 3;
};

message Annotation {
  Level level = 1;
}

message FidelityParams {
  int32 num_spheres = 1;
  float tesselation_percent = 2;
}

Aşağıdakileri göz önünde bulundurun:

  • Paket, com.google.tuningfork olmalıdır.
  • Mesaj adları tam olarak Annotation ve FidelityParams olmalıdır.
  • Ek açıklamaların bir parçası olarak bu dosyada tanımlanan yalnızca enums kullanabilirsiniz.
  • FidelityParams alanlarında yalnızca enums, int32s veya floats kullanabilirsiniz.
  • İlgili içeriği oluşturmak için kullanılan doğrulama aracı bu kuralları uygular.

Ayarlar

Settings mesajı tuningfork.proto tarafından tanımlanır. Tam bir örneği şurada görebilirsiniz: şu dosyayı seçin:

gamesdk/samples/tuningfork/insightsdemo/app/src/main/assets/tuningfork/tuningfork_settings.txt

Oyununuzun ayarlarını tuningfork_settings.txt, sitenizin assets/tuningfork dizininde bulunur belirler. Yalnızca aşağıdaki alanları belirtmeniz gerekir:

  • aggregation_strategy: Şunları içeren bir ileti:

    • method: Her n milisaniye veya TICK_BASED bir yükleme için TIME_BASED her n çizgiyi yüklemek.
    • intervalms_or_count: method alanı için n.
    • max_instrumentation_keys: Kullanılacak araç anahtarı sayısı. Ayarla Android Frame Pacing kitaplığını kullanıyorsanız 4 değerine ayarlayın.
    • annotation_enum_size: Boyut hesaplandığından isteğe bağlı bir alan başlangıcında tanımlayıcıya göre düzenleyin.
  • api_key: Uygulamanızın Cloud projesi API anahtarı. Bu anahtar, şuna yönelik istekleri doğrulamak için kullanılır: sona erecektir. Bu anahtarı oluşturmak için şuraya bakın: API'yi etkinleştirin. Eğer logcat içinde bağlantı hataları görüyorsanız API anahtarının doğru olduğundan emin olun.

  • default_fidelity_parameters_filename: başlatma ( training_fidelity_params girin).

  • level_annotation_index: (İsteğe bağlı) Aşağıdaki ek açıklama alanlarınızdaki dizin seviye numarası.

Aşağıda örnek bir metin temsili verilmiştir:

aggregation_strategy: {method: TIME_BASED, intervalms_or_count: 10000,
  max_instrumentation_keys: 5, annotation_enum_size: [3,4]}
api_key: "API-KEY-FROM-GOOGLE-CLOUD-CONSOLE"
default_fidelity_parameters_filename: "dev_tuningfork_fidelityparams_3.bin"
level_annotation_index: 1

Ek açıklamaları ayarlama

Oyununuz sırasında notları manuel olarak ayarlamanız gerekir. Bir Bunun örneğini demo uygulamada görebilirsiniz. otomatik olarak oluşturur. Daha fazla bilgi için SetAnnotations() işlevine insightsdemo.cpp

Bu durumda, ek açıklama yalnızca seviye numarasını belirtir.

message Annotation {
  Level level = 1;
}

Kalite seviyelerini tanımlama

Cihazların doğru olup olmadığını belirleyebilmek için kalite seviyelerini kullanarak oturumlara notlar ekleyin. çok yüksek bir kalite seviyesinde yayınlanıyor (bu da performansın düşmesine neden oluyor) veya çok düşük (bu durum, kalitenin gereksiz şekilde azalmasına neden olur).

Projeniz için en az bir, tercihen birkaç kalite seviyesi tanımlamanız gerekir. bir oyundur. Kalite seviyesi, FidelityParams öğenizin bir örneğine karşılık gelir mesajını alırsınız. Bu düzeylerin doğruluğu, artan şu dosya adı biçimini kullanın:

dev_tuningfork_fidelityparams_i.txt

Bu örnekte i, 1 ile başlayan ve maksimum değere sahip bir dizindir / 15. Bu dosyalar sitenizin assets/tuningfork dizininde bulunmalıdır. belirler. Örnek projede bu yapının bir örneği gamesdk/samples/tuningfork/insightsdemo/app/src/main/assets/tuningfork/. dizin.

Protokol arabellekleri hakkında

Tuning Fork kitaplığı, Google'ın protokol arabelleği biçimini kullanarak kalite parametrelerini dahil eder. Bu, iyi tanımlanmış, genişletilebilir, yapılandırılmış veriler için çok dilli protokol. Daha fazla bilgi için bkz. Protokol Arabellekleri dokümanları.

Proto2 ve proto3 karşılaştırması

Protokol arabelleği biçiminin sürümü, dosyanın ilk satırında ayarlanır:

syntax="proto2";

Proto2 ve proto3, protokol arabelleklerinin yaygın olarak kullanılan iki sürümüdür. Her ikisi de aynı kablo biçimini kullanın, ancak tanım dosyaları uyumlu değil. Anahtar iki sürüm arasındaki farklar şunlardır:

  • Proto3'te optional ve required anahtar kelimelerine artık izin verilmiyor.
  • Proto3'te her şey etkili bir şekilde optional.
  • proto3'te uzantılar desteklenmiyor.

C# biçiminde derlenebileceği için proto dosyalarınızda proto3'ü kullanın. Proto2 çalışıyor Tuning Fork kitaplığında kullanılan sınırlı özellik setiyle birlikte.

Metin ve ikili gösterimler karşılaştırması

İkili protobuf kablo biçimi iyi tanımlanmıştır ve farklı protobuf sürümleri (oluşturulan kod değildir). Ayrıca tablodaki protobuf kitaplığının tam sürümü oluşturulabilir ve okunabilir. Bu biçim iyi tanımlanmamıştır, ancak Tuning Fork kitaplığı. İkili ve metin biçimleri arasında dönüştürme yapabilirsiniz. protoc derleyicisi kullanılıyor. Aşağıdaki komut, bir metin protobuf'u ikili:

protoc --encode com.google.tuningfork.Settings tuningfork.proto < tuningfork_settings.txt > tuningfork_settings.bin

APK'nıza metin dosyaları yerine ikili dosyalar eklemeniz gerekir çünkü tam protobuf kitaplığının boyutu birkaç MB'tır; Ses Çatalı'nın yapımı oyununuzun boyutunu benzer miktarda artıracağını gösterdiğini fark edeceksiniz.

Tam ve Nano karşılaştırması

Protobuf kitaplığının tamamının yanı sıra kodları azaltan basit bir sürüm de vardır. yansıma, FileDescriptors ve akışla optimize edebilirsiniz. Bu sürüm için de yine birkaç MB gereklidir ekstra kod ayak izi olduğu için Tuning Fork kitaplığı dahili olarak nanopb kütüphanesi için de geçerli. Kaynak kodu bu kitaplık external/nanopb-c bölgesinde Android Açık Kaynak Projesi'ne dahil edilmiştir ve gamesdk dalının bir parçasıdır. Kod boyutu şuysa oyununuzda bu kitaplığı kullanın: bir sorundur.

gamesdk/src/protobuf uygulamasında entegrasyon yapmanıza yardımcı olabilecek CMake dosyaları var üç sürümünü de kullanabilirsiniz. Örnekler hem nanopb hem de tam Protobuf'tur.