Profilowanie i dostrajanie wydajności to złożone zadanie, które może przypominać bardziej sztukę niż naukę. Wiele ruchomych elementów, które muszą być doskonale zsynchronizowane w grze, w połączeniu ze złożonością danej sceny może utrudniać zrozumienie i wyizolowanie problemów. W ChromeOS wiele narzędzi jest projektowanych z myślą o chipsetach ARM. Oto kilka wskazówek, które pomogą Ci przyspieszyć ten proces.
Podczas optymalizacji wydajności gry w ChromeOS pamiętaj, że podstawowe problemy z wydajnością są wspólne dla wszystkich urządzeń, a wprowadzone ulepszenia wpłyną na wydajność i czas pracy na baterii wszystkich użytkowników. ChromeOS, który jest przeznaczony do większych wyświetlaczy i urządzeń wejściowych na biurko, może po prostu łatwiej ujawniać pewne problemy. Na przykład nieefektywny algorytm wczytywania tekstur może „działać dobrze” na urządzeniach mobilnych z wyższej półki, ale nie radzić sobie na Chromebooku z wyświetlaczem 4K. Ulepszenie algorytmu poprawi działanie gry na wszystkich urządzeniach.
Jeśli nie masz doświadczenia w profilowaniu, możesz zastosować to ogólne podejście:
- Sprawdź, czy skuteczność jest ograniczona przez:
- CPU
- GPU
- Inne: wejście/dysk/sieć
- Spróbuj określić główną przyczynę
- Spróbuj zoptymalizować
- Powtarzaj
W większości przypadków gry są ograniczone przez procesor lub kartę graficzną. Korzystając z poniższych wskazówek i narzędzi do profilowania, spróbuj określić, na co system „poświęca czas” w każdej klatce. Jeśli na przykład obliczanie i wczytywanie wierzchołków trwa długo, zanim procesor graficzny zacznie renderować, gra może być ograniczona przez procesor. Jeśli jednak używasz wielu szczegółowych filtrów opartych na GPU, gra prawdopodobnie będzie ograniczona przez GPU. Pamiętaj, że wiele telefonów komórkowych i urządzeń z ChromeOS nie ma oddzielnych kart graficznych. W przypadku gry na komputerze, która zakłada, że filtry GPU działają szybko, zintegrowane procesory graficzne mogą potrzebować zbyt dużo czasu na renderowanie każdej sceny.
Więcej informacji o profilowaniu znajdziesz w przewodniku ARM „Proces optymalizacji”.
Narzędzia
Oczywiście możesz samodzielnie określić wąskie gardła, ale odpowiednie narzędzia ułatwią Ci analizowanie wydajności gry i dadzą pewność, że skupiasz się na właściwych aspektach. Dostępnych jest wiele narzędzi, ale oto niektóre z naszych ulubionych programów.
Profiler w Android Studio
Najprostszym sposobem na rozpoczęcie profilowania dowolnej aplikacji na Androida jest użycie zintegrowanego profilera Android Studio. W Android Studio zamiast klikać „Uruchom” wybierz „Profil”, aby uruchomić aplikację i uzyskać wgląd w czasie rzeczywistym w użycie procesora, pamięci i sieci. Proste logi procesora mogą być szybkim sposobem na wyodrębnienie obszarów kodu, które warto sprawdzić.
To narzędzie nie daje prawdziwego wglądu w wykorzystanie GPU ani w to, co dzieje się między synchronizacjami klatek, więc chociaż warto je mieć w zestawie narzędzi, prawdopodobnie nie wystarczy, aby gra działała z najwyższą wydajnością.
Snapdragon Profiler
Ponieważ zachowanie gier będzie takie samo na wszystkich urządzeniach, dobrym sposobem na uzyskanie szczegółowych informacji o wydajności jest użycie Snapdragon Profiler na telefonie z procesorem Qualcomm i architekturą ARM. Chociaż nie jest to bezpośrednie profilowanie na urządzeniu z ChromeOS, powinno to dostarczyć informacji o tym, gdzie gra spędza większość czasu w każdej klatce, i umożliwić wgląd w to, które wywołania GPU są używane.
Jeśli na przykład zauważysz, że filtry anizotropowe GPU zajmują dużo czasu i dominują w pracy wykonywanej w każdej klatce, możesz znacznie zwiększyć wydajność, zmieniając to ustawienie.
Jeśli czasy GPU są krótkie i regularne, ale czasy CPU są dominujące i powodują utratę synchronizacji klatek, przyjrzyj się algorytmom wczytywania tekstur i przygotowywania klatek.
Więcej informacji znajdziesz w oficjalnej dokumentacji.
ARM Mobile Studio
Kolejnym przydatnym profilerem urządzeń z architekturą ARM jest ARM Mobile Studio. Niektórzy deweloperzy mogą preferować to narzędzie od Snapdragon Profiler, ale można go używać w podobny sposób. Zapoznaj się z oficjalną dokumentacją dotyczącą użytkowania.
Android GPU Inspector
Android GPU Inspector to nowe narzędzie opracowane przez Google, które zostało zaprojektowane specjalnie po to, aby pomóc Ci uzyskać jak najlepszą wydajność gry zarówno w przypadku OpenGL, jak i Vulkan. Obecnie jest to wersja przedpremierowa dla programistów, więc jej skonfigurowanie może wymagać trochę pracy. Działa ona tylko na kilku urządzeniach. W przyszłości będzie to jedno z głównych narzędzi do profilowania grafiki. Zapoznaj się z oficjalną dokumentacją.
Śledzenie przeglądu ARC
Dostępne jest też bardziej ogólne narzędzie – ARC Overview Tracing – które działa podobnie do opisanego powyżej narzędzia ARC Graphics Tracing. Ten moduł śledzący będzie dostarczać ogólne dane o wydajności aplikacji i ChromeOS. Odczyty będą zawierać liczbę klatek na sekundę aplikacji i samego Chrome, a także wykorzystanie procesora i procesora graficznego, zużycie energii i inne informacje. Możesz uruchomić to narzędzie wiele razy i zobaczyć wykresy z każdego uruchomienia nałożone na siebie z kolorami, które je odróżniają. Każdy model śledzenia zostanie zapisany w folderze Pobrane i można go ponownie zaimportować w celu porównania w przyszłości. W przypadku ogólnych kontroli stanu aplikacji warto zacząć od śledzenia ARC Overview.
Aby uzyskać dostęp do tego narzędzia, otwórz stronę chrome://arc-overview-tracing w przeglądarce na urządzeniu z ChromeOS.
Dalsze kroki
Może udało Ci się znaleźć wąskie gardła, ale nie wiesz, co z nimi zrobić. Możesz też znaleźć i rozwiązać problemy, ale nie wiesz, co zrobić dalej. Poniżej znajdziesz listę ogólnych wskazówek i zasobów dotyczących Androida i silnika.
Wskazówki ogólne
Na portalu dla deweloperów aplikacji na Androida znajdziesz przydatne wskazówki dotyczące zwiększania wydajności aplikacji. Znajdziesz tam informacje o czasie wczytywania, wykorzystaniu wielowątkowości, opóźnieniach we wprowadzaniu danych i innych kwestiach.
Pamiętaj, aby profilować na wczesnym etapie i często, zwłaszcza jeśli kierujesz reklamy na mniej wydajne urządzenia lub przekraczasz granice zaawansowanej architektury. Śledzenie statystyk skuteczności aplikacji pomoże Ci określić, które zmiany spowodowały spadek liczby klatek na sekundę, a które pomagają utrzymać płynność działania, na której Ci zależy.
Silnik Unity
Oprócz ogólnej dokumentacji Androida Unity udostępnia dokumentację dotyczącą ChromeOS, która pomoże Ci utworzyć wydajną aplikację na ChromeOS za pomocą tego silnika. Zapoznaj się z dokumentacją ChromeOS dotyczącą rozpoczęcia pracy, wprowadzania danych, debugowania i tworzenia, w tym tworzenia kompilacji x86. Informacje o skuteczności znajdziesz w artykule Optymalizacja oraz w kursie Skuteczność i optymalizacja.
Zapoznaj się z przewodnikiem ARM na temat profilowania i optymalizowania gier na platformie Unity oraz powiązanymi z nim sprawdzonymi metodami. Dowiesz się z niego, jak profilować przykładową grę w Unity za pomocą narzędzia Streamline, które jest częścią ARM Mobile Studio.
Unreal Engine
Unreal przygotował własne wskazówki dotyczące wydajności oraz dokumenty z poradami i trikami, które pokazują, jak najlepiej wykorzystać wiele opcji i ustawień oferowanych przez silnik. Znajdziesz tu m.in. wskazówki dotyczące poziomu szczegółowości, informacje o tym, jak najlepiej wykorzystać oświetlenie, szczegółowe przewodniki po ustawieniach jakości materiałów i shaderach oraz inne sugestie.
Więcej informacji o optymalizacji grafiki w grach mobilnych znajdziesz w przewodniku firmy ARM. Ogólne wskazówki dotyczące optymalizacji oraz informacje o specyficznych wymaganiach graficznych w przypadku Unreal Engine znajdziesz tutaj.