Pokémon TCG Pocket: внедрение разработки только на Vulkan для казуальных игр

Скриншот логотипа названия игры из Pokémon TCG Pocket.

В Pokémon Trading Card Game (TCG) играют по всему миру уже почти 30 лет. Недавно выпущенная Pokémon TCG Pocket разработана для того, чтобы игроки могли наслаждаться коллекциями и сражениями Pokémon в любое время и в любом месте, без необходимости иметь физические карты. Доступность игры на смартфонах способствовала ее широкой популярности среди пользователей.

Хотя это может показаться казуальной карточной игрой, Pokemon TCG Pocket использует сложные шейдеры, что создает значительную проблему для сокращения времени компиляции. Чтобы решить эту проблему и обеспечить высококачественную графику и плавный игровой процесс, версия Pokémon TCG Pocket для Android использует Vulkan, графический API следующего поколения.

В этом документе подробно рассматривается внедрение Vulkan командой разработчиков Pokémon TCG Pocket, возникшие при этом проблемы и преимущества Vulkan.

Рисунок 1. Сцены игрового процесса Pokémon TCG Pocket.

Причины принятия Vulkan

Изначально команда разработчиков Pokémon TCG Pocket планировала использовать OpenGL ES. Однако они решили использовать Vulkan, графический API с многообещающим будущим. Основными причинами выбора Vulkan были:

  • Долгосрочное управление приложениями : Осознавая тенденцию к тому, что Vulkan становится доминирующим графическим API для Android, команда решила, что Vulkan является оптимальным выбором для долгосрочного управления приложениями.
  • Стабильная производительность на устройствах с низкими характеристиками : для обеспечения плавного опыта для широкого круга пользователей стабильная производительность на устройствах с низкими характеристиками имеет важное значение. Ожидается, что способность Vulkan снижать нагрузку на ЦП улучшит частоту кадров и потребление заряда батареи.
  • Избежание крупномасштабных изменений после релиза : переход с OpenGL ES на Vulkan после релиза повлечет за собой обширные модификации, потенциально нарушающие пользовательский опыт. Принятие Vulkan с самого начала смягчило необходимость в таких существенных изменениях.

Реализуйте Vulkan с помощью Unity

Pokémon TCG Pocket использует Unity в качестве игрового движка. Unity предлагает оптимизированный процесс для внедрения Vulkan одним щелчком мыши. Используя Unity, команда разработчиков легко интегрировала Vulkan без необходимости специального обучения. Кроме того, отсутствие специфичных для Vulkan адаптаций для сред разработки и инструментов способствовало экономической эффективности.

API автоматической графики в Unity
Рисунок 2. API автоматической графики в Unity.

Проблемы внедрения Vulkan

Хотя реализация Vulkan была относительно простой, впоследствии команда разработчиков столкнулась с некоторыми трудностями:

  • Проблемы, специфичные для устройств : по сравнению с OpenGL ES, драйверы некоторых производителей демонстрировали более низкую стабильность при работе с Vulkan, что приводило к проблемам, специфичным для устройств.
  • Неполная поддержка Vulkan в промежуточном программном обеспечении : в некоторых промежуточных программных обеспечениях отсутствовала полная поддержка Vulkan, из-за чего команде приходилось ждать обновлений промежуточного программного обеспечения.

Команда разработчиков решала эти проблемы с помощью нескольких стратегий, включая сбор команды опытных разработчиков потребительских игр для устранения неполадок (поскольку они имели большой опыт в низкоуровневом графическом API или пользовательском движке) и сотрудничество с командами Google и Unity для индивидуального решения проблем. Чтобы расширить совместимость устройств, тестирование включало средние и старые высококлассные устройства (выпущенные 2-3 года назад) для определения рекомендуемых спецификаций устройств .

Преимущества Вулкана

Внедрение Vulkan принесло Pokémon TCG Pocket несколько преимуществ:

  • Сокращено время компиляции шейдеров : Vulkan значительно сократил время компиляции шейдеров, даже для большого количества шейдеров. Например, время компиляции OpenGL ES могло превышать 1 секунду, но это больше не проблема при рендеринге Vulkan.
  • Расширенный спектр поддерживаемых устройств : улучшения в частоте кадров и энергопотреблении позволили расширить спектр поддерживаемых устройств, обеспечив более плавную работу для большего числа пользователей.
  • Улучшенная телеметрия с помощью уровней проверки Vulkan : уровень проверки Vulkan оказался очень полезным для определения первопричины проблем, дополняя данные, предоставленные отчетами Vitals ANR/Crash.

Сообщение разработчикам

Команда разработчиков Pokémon TCG Pocket дает следующие советы разработчикам, рассматривающим возможность использования Vulkan для своих проектов:

  • Помимо сокращения времени компиляции шейдеров, Vulkan обеспечивает существенный прирост производительности.
  • Использование vkQuality для возврата к OpenGL ES потенциально может расширить поддержку устройств, хотя Pokémon TCG Pocket пока не использует его.

Заключение

Используя Vulkan, команда разработчиков Pokémon TCG Pocket смогла оптимизировать графику для широкого спектра устройств, чтобы обеспечить плавный и увлекательный опыт для каждого игрока. С постоянным добавлением функций и развивающимся будущим потенциалом ожидается, что Vulkan принесет еще больше преимуществ с течением времени.