Bu kılavuzda, Unity 2017.4 veya sonraki sürümlerden kare süresi verilerini kaydetmek ve yüklemek için Unity eklentisinin nasıl kullanılacağı açıklanmaktadır.
C veya C++ kullanan oyun motorları için yerel oyun motorları 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ığı (veya Frame Pacing kitaplığının bulunmadığı daha eski Unity sürümlerinde Unity motoru) tarafından her karede bir tick işlevinin çağrılmasına bağlıdır. Kitaplıkta bu işaret bilgileri, histogramlar halinde toplanır ve ardından bir HTTP uç noktası aracılığıyla düzenli olarak Google Play'e yüklenir. Her tik, bir enstrüman anahtarıyla ve bir ek açıklamayla ilişkilendirilmiş olarak kaydedilir. Ek açıklamaları Unity eklentisini kullanarak tanımlarsınız.
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. Bu işlem, Unity eklentisi tarafından otomatik olarak yapılır. Oyununuzun Unity ayarlarında Optimize Edilmiş Kare Hızı seçeneği etkinse (Unity 2019.3.14 veya sonraki sürümlerde kullanılabilir) Android Performance Tuner, gelişmiş metrikleri raporlamak için Android Frame Pacing kitaplığındaki bilgileri kullanır.
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
- Belirli bir sahnenin yüklenmesi
- Ekranda "büyük patron" var
- Oyun durumuyla ilgili diğer bilgiler
Ek açıklamalar, Unity eklentisi tarafından sağlanan bir iletişim kutusunda tanımlanır.
Tuning Fork kitaplığı, ekleri ve ses kalitesi parametrelerini depolamak için Google'ın protokol arabellek biçimini kullanır. Bu, genişletilebilir yapılandırılmış veriler için iyi tanımlanmış, çok dilli bir protokoldür. Daha fazla bilgi için Protocol Buffers belgelerine bakın.
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. Doğruluk parametreleri, ek açıklamalar gibi Unity eklentisi tarafından sağlanan bir iletişim kutusunda tanımlanır.
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.
Web istekleri
Kitaplık, sunucu uç noktasına iki tür istek gönderir:
- Başlatma sırasında
generateTuningParameters
isteği - Oyun sırasında düzenli olarak
uploadTelemetry
sunucuya veri gönderme isteği
Çevrimdışı oyuncular
Başlatma sırasında bağlantı yoksa istek, artan bir geri çekilme süresiyle birkaç kez yeniden denenir. Yükleme sırasında bağlantı yoksa yükleme önbelleğe alınır. Yüklemeler, geçici depolama alanında dosya olarak saklanır.
Şartlar
Eklentiyi oyununuzda kullanmak için Unity'nin desteklenen bir sürümünü kullanın:
- Unity 2017.4 veya sonraki sürümler ve .NET 4.6 sürümü
- APK genişletme dosyalarını kullanmak için Unity 2018.2 gereklidir.
- Daha iyi kare hızı ve GPU ölçümleri için Unity 2019.3.14 veya sonraki bir sürüm gereklidir.
- Addressables sahneleri desteği için Unity 2019.3 veya sonraki sürümler ve Addressables paketi 1.19.4 veya sonraki sürümler gereklidir.
Android Performance Tuner'ı Unity'ye entegre etme
Android Performance Tuner'ı Unity'ye entegre etme hakkında bilgi edinmek için API'yi etkinleştirme başlıklı makaleyi inceleyin.