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
veFidelityParams
olmalıdır. - Ek açıklamaların bir parçası olarak bu dosyada tanımlanan yalnızca
enums
öğesini kullanabilirsiniz. FidelityParams
alanında yalnızcaenums
,int32s
veyafloats
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üklenecekTIME_BASED
veya her n değer çizgisini yüklemek içinTICK_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ız4
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 (kodunuzdatraining_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
verequired
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.