Play Feature Delivery¶
Play Feature Delivery — это технология распространения игрового контента, разработанная компанией Google для операционной системы Android. Она позволяет разработчикам доставлять пользователям отдельные функции, уровни, ресурсы или игровые модули не в составе основного установочного файла (APK), а по запросу, после установки базового приложения. Технология является частью экосистемы Google Play Services и сервиса Google Play Console.
¶История
Технология была анонсирована компанией Google в 2018 году на конференции Google I/O. Первоначально она называлась «Android App Bundles» и была представлена как альтернатива традиционным APK-файлам. В 2019 году Google обязала все новые игры, публикуемые в Google Play, использовать формат Android App Bundle (AAB) для загрузки основного приложения, а Play Feature Delivery стала одной из ключевых возможностей этого формата. С 2021 года использование AAB стало обязательным для всех игр, распространяемых через Google Play, за исключением некоторых категорий (например, приложений для планшетов с Android TV).
¶Принцип работы
Технология Play Feature Delivery основана на концепции модульной архитектуры приложения. Игра делится на базовый модуль (основной APK) и несколько дополнительных модулей (feature modules). Каждый модуль содержит определённый набор функций, ресурсов (текстуры, звуки, модели) или игровых уровней.
¶Основные компоненты
- Базовый модуль (Base APK) — минимальный набор файлов, необходимых для запуска игры. Обычно включает в себя основной код, пользовательский интерфейс, меню, системные библиотеки и небольшой начальный контент.
- Feature modules — отдельные модули, содержащие конкретные игровые элементы. Например, модуль «Глава 1», модуль «Мультиплеер», модуль «Высококачественные текстуры».
- Play Core Library — библиотека для Android, которая управляет загрузкой и установкой модулей на устройстве пользователя. Она входит в состав Google Play Services.
¶Процесс доставки
- Пользователь устанавливает игру из Google Play. Загружается только базовый модуль.
- При первом запуске игра может запросить загрузку необходимых модулей (например, первого уровня или обучающего контента).
- В процессе игры, когда пользователь достигает определённого этапа (например, переходит к следующей главе), игра через Play Core Library отправляет запрос в Google Play на загрузку соответствующего модуля.
- Google Play загружает модуль в фоновом режиме, после чего игра получает уведомление о готовности контента и может его использовать.
¶Виды доставки
Google Play Feature Delivery поддерживает несколько режимов доставки модулей, которые разработчик выбирает на этапе сборки.
¶1. Install-time (установка во время установки)
Модуль загружается и устанавливается вместе с базовым APK. Пользователь не может отказаться от его загрузки. Этот режим используется для критически важных компонентов, без которых игра не может работать (например, основной движок, обязательные ресурсы).
¶2. On-demand (по запросу)
Модуль загружается только по запросу приложения. Разработчик сам решает, когда и при каких условиях инициировать загрузку. Этот режим наиболее распространён для уровней, дополнительных режимов, локализаций или контента, который не нужен всем пользователям сразу.
¶3. Conditional (условная доставка)
Модуль загружается только при выполнении определённых условий, заданных разработчиком. Например:
- Устройство с определённым объёмом оперативной памяти — для загрузки высококачественных текстур.
- Версия Android — для загрузки модуля, использующего API, доступные только в Android 12 и выше.
- Страна или регион — для загрузки регионального контента.
- Наличие определённого оборудования (например, гироскопа, датчика отпечатков пальцев).
¶4. Asset-only (только ресурсы)
Этот режим используется для доставки больших объёмов данных (например, видео, звуковых дорожек, текстур высокого разрешения). Модуль содержит только ресурсы, без исполняемого кода. Он может быть загружен как при установке, так и по запросу.
¶Преимущества
¶Для разработчиков
- Уменьшение размера базового APK. Игра становится доступной для установки на устройствах с ограниченным объёмом памяти.
- Гибкость в распространении контента. Разработчик может добавлять новые уровни, режимы или события без необходимости выпускать обновление всего приложения через Google Play.
- Улучшение конверсии. Пользователи чаще устанавливают игры с небольшим размером установочного файла.
- Возможность A/B-тестирования. Можно доставлять разные модули разным группам пользователей, чтобы оценить их влияние на удержание или монетизацию.
¶Для пользователей
- Быстрая установка. Игра начинает работать почти сразу после загрузки базового модуля.
- Экономия места на устройстве. Пользователь не хранит контент, который ему не нужен (например, пройденные уровни или неиспользуемые режимы).
- Возможность выбора. Пользователь может решить, загружать ли дополнительный контент (например, высококачественные текстуры) или отложить загрузку.
¶Недостатки и ограничения
- Зависимость от интернет-соединения. Для загрузки модулей по запросу требуется стабильное подключение к сети. При отсутствии интернета игра может быть недоступна для некоторых функций.
- Задержка при загрузке. Пользователь может столкнуться с ожиданием, когда игра загружает следующий уровень или ресурс.
- Сложность реализации. Разработчику необходимо правильно спроектировать архитектуру игры, разделить её на модули и настроить логику загрузки.
- Ограничения на размер модуля. Google Play накладывает ограничения на максимальный размер одного модуля (обычно до 150–200 МБ, в зависимости от версии библиотеки). Для больших объёмов контента требуется использовать несколько модулей.
- Необходимость поддержки Play Core Library. Технология работает только на устройствах с Google Play Services. На устройствах без Google Play (например, в Китае) или на кастомных прошивках может быть недоступна.
¶Применение
Play Feature Delivery широко используется в мобильных играх, особенно в жанрах:
- Казуальные игры — для загрузки новых уровней, событий, мини-игр.
- Ролевые игры (RPG) — для загрузки глав, квестов, локаций, персонажей.
- Стратегии — для загрузки карт, кампаний, модификаций.
- Симуляторы — для загрузки дополнительных моделей, текстур, сценариев.
- Игры с большим объёмом контента — например, MMORPG, где мир постоянно расширяется.
¶Альтернативы
- Собственные серверы загрузки. Разработчик может размещать контент на своих серверах и загружать его через HTTP-запросы. Это даёт больше контроля, но требует дополнительных затрат на инфраструктуру и разработку.
- CDN-сервисы (например, Amazon CloudFront, Cloudflare). Аналогично собственным серверам, но с использованием распределённой сети доставки контента.
- Потоковая передача (streaming). Контент загружается частями в реальном времени по мере необходимости. Этот подход используется в некоторых играх, но требует высокой скорости интернета и может приводить к задержкам.
¶Интересные факты
- Технология Play Feature Delivery является частью более широкой концепции «динамической доставки» (Dynamic Delivery), которая также включает в себя Play Asset Delivery (для доставки ресурсов) и Play Feature Delivery (для доставки функций).
- Google рекомендует использовать Play Feature Delivery для всех игр, размер которых превышает 150 МБ, чтобы улучшить пользовательский опыт и уменьшить количество отказов от установки.
- В 2020 году Google объявила, что игры, использующие Play Feature Delivery, могут загружать модули размером до 500 МБ в фоновом режиме, не прерывая игровой процесс.
¶Источники
- Официальная документация Google Play Console по Android App Bundle и Play Feature Delivery.
- Материалы конференции Google I/O 2018, 2019, 2020 годов.
- Статья «Android App Bundle: The Future of Android App Distribution» на сайте Android Developers Blog.
- Технические спецификации Google Play Services (Play Core Library).
