
Mir 2: Return of the King to wysokiej jakości gra mobilna o uniwersum Legend, której autorem jest Actoz Soft, a która została opracowana przez HK ZHILI YAOAN LIMITED przy użyciu silnika Unity.
Gra nie tylko doskonale odtwarza klimat „Mir 2”, czyli koreańskiej fantasy MMORPG, ale też oferuje wiele najpopularniejszych elementów rozgrywki, takich jak kolekcjonowanie sprzętu, dużych rozmiarów atak piaskiem i inne podstawowe elementy rozgrywki.
Gra używała interfejsu API do sterowania szybkością wyświetlania klatek na Androidzie (Swappy), aby zwiększyć stabilność liczby klatek na sekundę, uzyskać płynne renderowanie i znacznie poprawić wyniki w Android Vitals (dane o powolnych sesjach).
Powolna sesja w Android Vitals
Powolna sesja to dane Android Vitals w Konsoli Google Play. Podczas powolnej sesji ponad 25% klatek jest spowolnionych. Klatka jest spowolniona, jeśli:
1) Przy 20 fps nie jest ona wyświetlana w ciągu 50 ms od poprzedniej klatki. 2) Przy 30 fps nie jest ona wyświetlana w ciągu 34 ms od poprzedniej klatki.
W przyszłości Google Play zacznie zachęcać użytkowników do odchodzenia od gier, które nie zapewniają szybkości 20 FPS na telefonach.
Istnieje wiele powodów, dla których ramka może być wyświetlana lub renderowana na ekranie dłużej niż zakładał to deweloper. Gra może być ograniczona przez procesor lub kartę graficzną, co powoduje przegrzanie, które aktywuje ograniczenie temperatury. Może też występować niezgodność częstotliwości klatek gry z częstotliwością odświeżania ekranu urządzenia.
Co to jest Swappy
Biblioteka Android Frame Pacing, zwana też Swappy, należy do bibliotek AGDK. Swappy pomaga uzyskać płynne renderowanie i prawidłowy interwał klatek w grach OpenGL i Vulkan na Androidzie.
Biblioteka obsługuje wiele częstotliwości odświeżania, jeśli są one obsługiwane przez urządzenie, co daje większą elastyczność w prezentowaniu klatek. Na przykład w przypadku urządzenia obsługującego częstotliwość odświeżania 60 Hz i 90 Hz, aby zachować płynność, gra, która nie może wyświetlać 60 FPS, może zamiast 30 FPS wyświetlać 45 FPS. Biblioteka wykrywa oczekiwaną liczbę klatek na sekundę w grze i odpowiednio dostosowuje czas wyświetlania klatek.
Biblioteka Frame Pacing wydłuża też czas pracy na baterii, ponieważ zapobiega niepotrzebnym aktualizacjom wyświetlania. Jeśli na przykład gra renderuje się z prędkością 60 FPS, a ekran odświeża się z częstotliwością 120 Hz, ekran jest aktualizowany dwukrotnie na każdą klatkę. Biblioteka Frame Pacing zapobiega temu, ustawiając częstotliwość odświeżania na wartość obsługiwaną przez urządzenie, która jest najbliższa docelowej liczby klatek.
Jak Mir 2 poprawił wydajność renderowania dzięki Swappy
W grze Mir 2 (미르2: 왕의 귀환) wystąpił problem z niestabilną wydajnością renderowania, w którym 40% sesji było powolnych przy progu szybkości 20 FPS, znacznie wyższym niż próg 20% w Google Play.

Mir 2 (미르2: 왕의 귀환) to gra o wysokiej jakości graficznej, dlatego niektóre urządzenia mają problemy z utrzymaniem stabilnej liczby klatek na sekundę. Ich rozkład częstotliwości klatek pokazuje, że wiele sesji działa z częstotliwością poniżej 20 FPS.

Każda grupa przedstawia odsetek sesji, podczas których 75% klatek było szybszych niż wskazuje etykieta grupy.
Gdy wyświetlanie zajmuje więcej czasu niż aplikacja, do kolejki dodawane są dodatkowe klatki. To znowu powoduje zacinanie, a także może spowodować dodatkowe opóźnienie obrazu z powodu wypełniania bufora.

Biblioteka Swappy rozwiązuje ten problem, używając bariery synchronizacji (EGL_KHR_fence_sync
i VkFence
), aby wstrzyknąć do aplikacji oczekiwanie, które pozwala ścieżce wyświetlania nadrobić zaległości, zamiast pozwalać na nagromadzenie się ciśnienia wstecznego. Ramka A nadal zawiera dodatkową ramkę, ale ramka B jest już prawidłowa.

Mir 2 łatwo zintegrował bibliotekę Swappy, wykorzystując wbudowaną funkcję Optimized Frame Pacing (Zoptymalizowane kadrowanie). W rezultacie tego działania znacznie poprawiła się wydajność renderowania, a w szczególności odsetek wolnych sesji zmniejszył się z 40% do 10%.

Po zintegrowaniu Swappy liczba powolnych sesji w Mir2 znacznie się zmniejszyła.

Każda grupa przedstawia odsetek sesji, podczas których 75% klatek było szybszych niż wskazuje etykieta grupy.
Pierwsze kroki z Swappy
Jak używać Swappy w natywnym silniku gry
Aby zintegrować z grą bibliotekę Android Frame Pacing, zapoznaj się z tymi przewodnikami:
- Integracja Android Frame Pacing z renderowaniem Vulkana
- Integracja funkcji Android Frame Pacing z renderowaniem OpenGL
Jak używać Swappy w silniku gier Unity
Unity zintegrowało Android Frame Pacing z silnikiem. Aby włączyć tę funkcję w Unity, zaznacz pole wyboru Zoptymalizowane tempo klatek w sekcji Projekt: Ustawienia > Odtwarzacz > Ustawienia dla Androida > Rozdzielczość i prezentacja:

Możesz też włączyć w kodzie logicznym opcję Optimized Frame Pacing, aby umożliwić Unity równomierne rozprowadzanie klatek i zmniejszenie zmienności liczby klatek na sekundę, co zapewni płynniejszą rozgrywkę.
Jak używać Swappy w silniku gier Unreal
Unreal 4.25 i nowsze wersje integrują bibliotekę Android Frame Pacing Library, która jest częścią Android Game Development Kit. Z artykułu Tempo wyświetlania klatek na urządzeniach mobilnych dowiesz się, jak włączyć bibliotekę Android Frame Pacing Library i jak kontrolować tempo wyświetlania klatek za pomocą kodu C++.
Aby dowiedzieć się więcej, zapoznaj się z informacjami o powolnych sesjach i Swappy.