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

Bu belgede projenizde ek açıklamaları, doğruluk parametrelerini ve ayarları nasıl belirleyeceğiniz açıklanmaktadır.

Ek açıklamalar ve doğruluk parametreleri

Ek açıklamalar, bir onay işareti kaydedildiğinde oyununuzun ne yaptığıyla ilgili bağlamsal bilgiler verir. Doğruluk parametreleri, oyununuzun performansını ve grafik ayarlarını yansıtır. Bunları, Google'ın dilden bağımsız, yapılandırılmış ve veri değişim biçimi olan protokol arabelleklerini kullanarak tanımlarsınız. Oyununuzda protokol arabelleklerini kullanma hakkında daha fazla bilgi için Protokol arabellekleri hakkında bölümüne bakın.

Oyununuz için olası ek açıklamalar ve kalite parametreleri, projenizin assets/tuningfork dizininde bulunan dev_tuningfork.proto adlı bir dosyada tanımlanır. 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 öğesini kullanabilirsiniz.
  • FidelityParams alanında yalnızca enums, int32s veya floats kullanabilirsiniz.
  • Doğrulama aracı bu kuralları zorunlu kılar.

Ayarlar

Settings mesajı tuningfork.proto tarafından tanımlanır. Tam örneği aşağıdaki dosyada görebilirsiniz:

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

Oyununuzun ayarlarını, projenizin assets/tuningfork dizininde bulunan tuningfork_settings.txt adlı bir dosyada tanımlamanız gerekir. Yalnızca aşağıdaki alanları belirtmeniz gerekir:

  • aggregation_strategy: Aşağıdakileri içeren bir ileti:

    • method: Her n milisaniyede bir yüklenecek TIME_BASED veya her n değer çizgisini yüklemek için TICK_BASED.
    • intervalms_or_count: method alanı için n.
    • max_instrumentation_keys: Kullanılacak araç tuşlarının sayısı. Android Frame Pacing kitaplığını kullanıyorsanız 4 olarak ayarlayın.
    • annotation_enum_size: Boyut başlangıçta açıklayıcıdan hesaplandığından isteğe bağlı bir alandır.
  • api_key: Uygulamanızın, uç noktaya gönderilen istekleri doğrulamak için kullanılan Cloud projesi API anahtarı. Bu anahtarı oluşturmak için API'yi etkinleştirme bölümüne bakın. logcat politikasında bağlantı hataları görüyorsanız API anahtarının doğru olup olmadığını kontrol edin.

  • default_fidelity_parameters_filename: Başlatma sırasında kullanılan doğruluk parametresi grubu (kodunuzda training_fidelity_params özelliğini ayarladıysanız isteğe bağlıdır).

  • level_annotation_index: (İsteğe bağlı) Seviye numarasının ek açıklama alanlarınızdaki dizindir.

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çıklama ayarlama

Oyun sırasında ek açıklamaları manuel olarak ayarlamanız gerekir. Bunun bir örneğini, tüm oyun seviyelerinde otomatik olarak dolaşan demo uygulamada görebilirsiniz. Daha fazla bilgi için insightsdemo.cpp bölümündeki SetAnnotations() işlevine bakın.

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

message Annotation {
  Level level = 1;
}

Kalite seviyelerini tanımlama

Cihazların çok yüksek (daha düşük performansa neden olur) veya çok düşük (bu nedenle görüntü kalitesi gereksiz ölçüde azalır) bir kalite seviyesinde mi çalıştığını belirlemek için oturumlara not eklemek üzere kalite seviyelerini kullanın.

Oyununuz için en az bir, tercihen de birkaç kalite seviyesi tanımlamanız gerekir. Kalite seviyesi, FidelityParams mesajınızın bir örneğine karşılık gelir. Bu seviyeler, aşağıdaki dosya adı biçimiyle artan doğruluk sırasına göre verilmelidir:

dev_tuningfork_fidelityparams_i.txt

Burada i, 1'den başlayan ve maksimum 15 değerinde bir dizindir. Bu dosyalar, projenizin assets/tuningfork dizininde bulunmalıdır. Örnek proje, gamesdk/samples/tuningfork/insightsdemo/app/src/main/assets/tuningfork/ dizininde bu yapının bir örneğini gösterir.

Protokol arabellekleri hakkında

Tuning Fork kitaplığı ayarlar, ek açıklamalar ve doğruluk parametreleri için Google'ın protokol arabelleği biçimini kullanır. Bu, genişletilebilir ve yapılandırılmış verilere yönelik iyi tanımlanmış, çok dilli bir protokoldür. Daha fazla bilgi için Protokol Arabelleği dokümanlarına bakın.

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. İkisi de aynı kablo biçimini kullanır ancak tanım dosyaları uyumlu değildir. İki sürüm arasındaki temel farklar şunlardır:

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

C# ile derlenebileceği için proto dosyalarınızda proto3 kullanın. Proto2, Tuning Fork kitaplığında kullanılan sınırlı özellik grubuyla da çalışır.

Metin ve ikili temsiller

İkili protobuf kablosu biçimi, farklı protokol arabelleği sürümlerinde iyi tanımlanmıştır ve sabittir (oluşturulan kod değildir). Ayrıca, protobuf kitaplığının tam sürümünün oluşturup okuyabileceği bir metin biçimi de vardır. Bu biçim çok iyi tanımlanmış değildir, ancak İnteraktif Fork kitaplığındaki sınırlı özellik grubu için sabittir. protoc derleyicisini kullanarak ikili program ve metin biçimleri arasında dönüştürme yapabilirsiniz. Aşağıdaki komut, metin protobufunu ikili koda dönüştürür:

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

Tam protobuf kitaplığının boyutu birkaç MB olduğundan APK'nıza metin dosyaları yerine ikili dosyalar eklemeniz gerekir. Tuning Fork kitaplığının buna bağlı olması, oyununuzun boyutunu benzer miktarda artırır.

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

Tam proto araf kitaplığının yanı sıra yansıma, FileDescriptors ve metin biçimleri arasında akış yapma ve metin biçimleri arasında akış gibi bazı özellikleri kaldırarak kod ayak izini azaltan hafif bir sürüm vardır. Bu sürüm hâlâ birkaç MB ekstra kod ayak izi gerektirdiğinden Tuning Fork kitaplığı dahili olarak nanopb kitaplığını kullanmaktadır. Bu kitaplığın kaynak kodu, external/nanopb-c bölgesindeki Android Açık Kaynak Projesi'ne dahil edilmiştir ve gamesdk şubesindedir. Kod boyutu sorun teşkil ediyorsa oyununuzda bu kitaplığı kullanın.

gamesdk/src/protobuf içinde protobuf'ın üç sürümünü de entegre etmenize yardımcı olabilecek CMake dosyaları vardır. Örnekler hem naopb hem de tam protokol arabelleğin bir karışımını kullanır.