Omówienie narzędzia Android Performance Tuner (natywna)

W tym temacie opisujemy, jak zintegrować narzędzie Android Performance Tuner, nazywane też narzędziem Biblioteka Tuning Fork do rejestrowania i przesyłania danych o czasie renderowania klatek z reklamy natywnej (C i C++).

Informacje o silniku gry Unity znajdziesz w przewodnika dla Unity.

Tło

Ważnym składnikiem rozgrywki jest wydajność renderowania. Renderowanie jest wynikiem dwóch następujących czynników:

  • Liczba klatek: jak często rysowana jest klatka.
  • Ustawienia jakości grafiki: poziom jakości wyświetlania klatki. w tym z wiernością symulacyjną i grafiką.

W przypadku gier dobrą wydajność renderowania jest definiowana w ten sposób:

  • Zapewnienie stabilnej, stałej liczby klatek (czyli odsetka renderowanych klatek z oczekiwaną częstotliwością).
  • Renderowanie klatek z największą możliwą częstotliwością przy zachowaniu stabilność, zwykle 30 lub 60 FPS, w zależności od typu gry.
  • Zmaksymalizowanie poziomu szczegółowości dla użytkownika z uwzględnieniem rozmiaru ekranu przy zachowaniu ustalonej, stabilnej liczby klatek.

Biblioteka Android Frame Pacing ogranicza znaczną część zmienności czasu klatek, co zapewnia stabilną liczbę klatek w grach. Pozostałe zmienność czasów klatek jest spowodowana poziomem szczegółowości wyświetlanych jak również scenerię w grze i funkcje graficzne urządzenia. Zastosowanie Android Performance Tuner umożliwia wskazanie momentów podczas rozgrywki, gdy czas renderowania klatki jest wolniejsze lub szybsze od docelowego oraz ma związek z tymi problemami możliwości:

  • Określone ustawienia jakości
  • Konkretne sceny w grze
  • Konkretne modele urządzeń lub dane techniczne

Rejestrowanie i przesyłanie danych

Biblioteka Tuning Fork opiera się na jednej funkcje znacznika jest wywoływane każdą klatką przez bibliotekę Androida Frame Pacing. W bibliotece dane o kleszczach są zbierane w histogramy, które są następnie okresowo przesłane do Google Play przez punkt końcowy HTTP. Każdy znacznik jest rejestrowany jako jest powiązana z kluczem instrumentu oraz adnotacja – definicje, które określasz w protokole bufora.

Klawisze instrumentalne

Klawisz instrumentu wskazuje, w którym miejscu w ramce pochodzi znacznik i jest to Liczba całkowita, którą należy przekazać do każdego wywołania funkcji znacznika. Android Frame Pacing biblioteka używa wstępnie zdefiniowanego zestawu kluczy instrumentów zdefiniowanego w zasadzie swappy_common.h. Jeśli nie korzystasz z funkcji Frame Pacing, możesz też zdefiniować własne klawisze instrumentów. bibliotece.

Adnotacje

Adnotacje dostarczają kontekstowych informacji o tym, co robi gra, gdy znacznik czasu jest rejestrowany. Adnotacja może na przykład identyfikować :

  • obecny poziom gry,
  • Wielki szef jest na ekranie
  • Wszelkie inne istotne informacje o stanie gry.

Adnotacje są definiowane przez protokół com.google.tuningfork.Annotation bufora. Aby ustawić bieżącą adnotację, musisz przekazać serializację zdefiniowana przez Ciebie wiadomość TuningFork_setCurrentAnnotation() Wszystkie kolejne dane znacznika będą powiązane z tą adnotacją do momentu, jest skonfigurowana. Oto przykładowa definicja protokołu dla adnotacji:

import "tuningfork.proto"
enum Level {
  INVALID_LEVEL = 0;
  Level_1 = 1;
  Level_2 = 2;
  Level_3 = 3;
}
message Annotation {
  optional Level level = 1;
}

Parametry wierności

Parametry wierności wpływają na wydajność i jakość grafiki takie jak poziom szczegółowości siatki, rozdzielczość tekstur i antialiasing. . Podobnie jak w przypadku adnotacji, parametry wierności definiuje się za pomocą funkcji Komunikat bufora protokołu com.google.tuningfork.FidelityParams. Oto przykładową definicję protokołu dla parametrów wierności:

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;
}

Podczas zainicjowania Tuning Fork przekazujesz serializację używane przez grę parametry. Możesz zmienić te parametry, jeśli na przykład użytkownik zmieni ustawienia renderowania gry, a Twoje kolejne dane jest powiązane z nowymi parametrami.

Aby umożliwić Google Play zrozumienie adnotacji i parametrów wierności plik bufora protokołu zawierający te definicje zawarte w pakiecie APK gry wraz z ustawieniami inicjowania. Dodatkowo musisz podać wartości domyślne dla typowych kombinacji parametrów wierności w pakiet APK, by podzielić dane na segmenty według niego w interfejsie Google Play. Więcej informacji: Określ poziomy jakości.

Obciążenie pamięci i procesora

Cała pamięć używana przez bibliotekę Tuning Fork jest przydzielana w aby uniknąć niespodzianek podczas rozgrywki. Rozmiar danych zależy od liczby klawiszy instrumentów, liczby możliwych adnotacji liczba zasobników w każdym histogramie; jest wielokrotnością wszystkich tych czasów B na każdy zasobnik. Istnieją również dwie kopie wszystkich histogramów, które pozwalają na podwójnie buforowane.

Przesłanie odbywa się w osobnym wątku i nie blokuje wywołań zaznaczania. Jeśli nie połączenie przesyłania jest dostępne, przesyłanie oczekuje w kolejce do późniejszego przesłania.

Wywołanie funkcji znacznika nie wiąże się z dużym nakładem pracy związanym z przetwarzaniem: oblicza indeks do tablicy zasobników histogramu i zwiększa liczby całkowitej.

Zintegruj bibliotekę Tuning Fork

Przewodnik po integracji składa się z 2 części. W pierwszej części omawiamy, aby przeprowadzić kompleksowy test za pomocą aplikacji w wersji demonstracyjnej i Konsoli Google Play. Druga część to integrowanie biblioteki Tuning Fork łańcucha narzędzi i używania funkcji dostępnych w bibliotece. Kliknij Następny link poniżej, aby rozpocząć.