
Mir 2: Return of the King — это высококачественная мобильная игра Legend IP, авторизованная Actoz Soft и разработанная HK ZHILI YAOAN LIMITED с использованием игрового движка Unity.
Эта игра не только прекрасно воссоздает ощущения Mir 2 , представителя корейской фэнтезийной MMORPG, но также предлагает множество самых популярных игровых материалов, таких как сбор снаряжения, масштабная атака песком и другой основной игровой процесс.
В игре использовалась библиотека Android Frame Pacing (Swappy), чтобы улучшить стабильность частоты кадров, добиться плавного рендеринга и значительно повысить показатели Android Vitals (показатель медленной сессии).
Медленные сеансы запущены в Android Vitals
Медленные сеансы — это показатель Android Vitals в консоли Google Play. В медленном сеансе более 25% медленных кадров. Кадр медленный, если он:
При 20 кадрах в секунду он не отображается в течение 50 мс после предыдущего кадра.
При 30 кадрах в секунду он не отображается в течение 34 мс после предыдущего кадра.
Со временем Play начнет отвлекать пользователей от игр, которые не могут достичь 20 FPS на их телефонах.
Существует множество причин, по которым кадр может отображаться или отображаться на экране дольше, чем заданное разработчиком время кадра. Возможно, игра связана с процессором или графическим процессором, перегревается (что приводит к тепловому регулированию) или существует несоответствие частоты кадров в игре и частоты обновления дисплея устройства .
Что такое библиотека Frame Pacing
Библиотека Android Frame Pacing , также известная как Swappy, является частью библиотек AGDK. Swappy помогает играм OpenGL и Vulkan добиться плавного рендеринга и правильной частоты кадров на Android.
Библиотека поддерживает несколько частот обновления, если они поддерживаются устройством, что дает игре большую гибкость при представлении кадра. Например, для устройства, которое поддерживает частоту обновления 60 Гц, а также 90 Гц, игра, которая не может воспроизводить 60 кадров в секунду, может снизить частоту кадров до 45 кадров в секунду вместо 30 кадров в секунду, чтобы оставаться плавной. Библиотека определяет ожидаемую частоту кадров в игре и соответствующим образом автоматически корректирует время представления кадров.
Библиотека Frame Pacing также увеличивает время автономной работы, поскольку позволяет избежать ненужных обновлений дисплея. Например, если игра рендерится со скоростью 60 кадров в секунду, но дисплей обновляется с частотой 120 Гц, экран обновляется дважды для каждого кадра. Библиотека Frame Pacing позволяет избежать этого, устанавливая частоту обновления на значение, поддерживаемое устройством, которое наиболее близко к целевой частоте кадров.
Как Мир 2 улучшил производительность рендеринга с помощью библиотеки Frame Pacing
Mir 2 ( 미르2: 왕의 귀환 ) столкнулся с проблемой нестабильной производительности рендеринга: сеансы замедлялись на 40 % при пороге частоты кадров 20 кадров в секунду, что намного превышало порог в 20 % в Google Play.

Mir 2 ( 미르2: 왕의 귀환 ) — это графическая игра с высокой точностью воспроизведения, на некоторых устройствах возникают проблемы с поддержанием стабильного FPS. Их распределение частоты кадров показывает, что многие сеансы работают с частотой кадров ниже 20 кадров в секунду.

Каждый сегмент представляет собой процент сеансов, в которых 75 % кадров были быстрее, чем метка сегмента.
Если рабочая нагрузка дисплея занимает больше времени, чем рабочая нагрузка приложения, в очередь добавляются дополнительные кадры. Это снова приводит к заиканию, а также может привести к задержке дополнительного кадра из-за заполнения буфера.

Библиотека Frame Pacing решает эту проблему, используя ограничения синхронизации ( EGL_KHR_fence_sync
и VkFence
) для внедрения в приложение ожиданий, которые позволяют конвейеру отображения подстраиваться, вместо того, чтобы создавать противодавление. Кадр A по-прежнему представляет дополнительный кадр, но кадр B теперь отображается правильно.

Mir 2 легко интегрировал библиотеку Frame Pacing, используя встроенную в Unity функцию Optimized Frame Pacing . Это действие привело к значительному улучшению производительности рендеринга, в частности, к снижению показателя медленного сеанса с 40% до 10% .

После интеграции библиотеки в Мир2 значительно сократилось количество медленных сессий.

Каждый сегмент представляет собой процент сеансов, в которых 75 % кадров были быстрее, чем метка сегмента.
Начало работы с библиотекой кадровой синхронизации
Как использовать библиотеку Frame Pacing в собственных игровых движках
См. следующие руководства по интеграции библиотеки Android Frame Pacing в вашу игру:
- Интегрируйте Android Frame Pacing в свой рендерер Vulkan.
- Интегрируйте Android Frame Pacing в свой рендерер OpenGL.
Как использовать библиотеку Frame Pacing в игровом движке Unity
Unity интегрировала в свой движок библиотеку Android Frame Pacing. Чтобы включить эту функцию в Unity, установите флажок «Оптимизированная скорость кадров» в разделе «Настройки проекта» > «Плеер» > «Настройки для Android» > «Разрешение и презентация» :

В качестве альтернативы можно программно включить параметр «Оптимизированное изменение частоты кадров» в логическом коде, чтобы Unity могла равномерно распределять кадры и уменьшать различия в частоте кадров, обеспечивая более плавный игровой процесс.
Как использовать библиотеку Frame Pacing в игровом движке Unreal
Unreal 4.25 и более поздние версии интегрируют библиотеку Android Frame Pacing , которая является частью Android Game Development Kit . В статье Mobile Frame Pacing объясняется, как включить библиотеку Android Frame Pacing и как управлять скоростью кадров из кода C++.