Коллекционная карточная игра «Покемон» (TCG) популярна во всем мире уже почти 30 лет. Недавно выпущенная карманная карточная игра Pokémon TCG Pocket позволяет игрокам собирать коллекции покемонов и сражаться в любое время и в любом месте, без необходимости использования физических карт. Доступность игры на смартфонах способствовала ее широкой популярности среди пользователей.
Хотя Pokemon TCG Pocket может показаться обычной карточной игрой, в ней используются сложные шейдеры, что создает серьезные проблемы с сокращением времени компиляции. Чтобы решить эту проблему и обеспечить высококачественную графику и плавность игрового процесса, версия Pokémon TCG Pocket для Android включает Vulkan, графический API нового поколения.
В этом документе подробно рассматривается внедрение Vulkan командой разработчиков Pokémon TCG Pocket, возникающие проблемы и преимущества, которые предлагает Vulkan.
Причины принятия 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 адаптаций к средам и инструментам разработки способствовало экономической эффективности.

Проблемы при внедрении 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 со временем принесет еще больше преимуществ.