Преобразование существующей игры в мгновенную игру

Внимание: функция Google Play Instant больше не будет доступна. Начиная с декабря 2025 года, публикация Instant-приложений через Google Play будет невозможна, и все API Instant для сервисов Google Play перестанут работать. Пользователи больше не смогут получать Instant-приложения от Play никаким способом.

Мы вносим это изменение, основываясь на отзывах разработчиков и наших постоянных инвестициях в улучшение экосистемы с момента запуска Google Play Instant.

Для дальнейшей оптимизации с целью увеличения числа пользователей мы рекомендуем разработчикам направлять пользователей в свои основные приложения или игры, используя диплинки для перенаправления их на определенные страницы или функции, когда это необходимо.

Шаги по настройке приложений для запуска в Google Play Instant , описанные в разделе «Создание первого приложения Instant» , также применимы к играм. В этом руководстве особое внимание уделяется некоторым шагам настройки, специфичным для игр.

Вы можете разрабатывать игры для Google Play Instant, используя Unityплагином Google Play Instant Unity или без него), Cocos2D , Android Studio или собственный движок.

В этом руководстве предполагается, что вы уже знаете, какой игровой опыт хотите предоставить. Если вы хотите ознакомиться с идеями и лучшими практиками создания высококачественных игр, прочитайте раздел «Лучшие практики UX для игр» на Google Play Instant .

Кроме того, перед публикацией игры, которая может работать в Google Play Instant, следует ознакомиться со списком технических требований .

Действие, включающее следующий фильтр намерений, становится точкой входа для мгновенного доступа к Google Play:

<activity android:name=".GameActivity">
   <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

Эта функция запускается, когда пользователь нажимает кнопку « Попробовать сейчас» в Play Store или кнопку «Мгновенная игра» в приложении Google Play Games. Вы также можете запустить эту функцию напрямую, используя API глубоких ссылок .

Укажите правильные коды версий.

Код версии вашей игры в режиме мгновенного запуска должен быть меньше кода версии игры в режиме установки. Такая система версионирования позволяет игрокам перейти от мгновенного запуска в Google Play к загрузке и установке игры на своё устройство. Платформа Android рассматривает этот переход как обновление приложения.

Чтобы гарантировать соблюдение рекомендуемой схемы версионирования, воспользуйтесь одной из следующих стратегий:

  • Перезапустите коды версий для Google Play Instant Experience с 1.
  • Увеличьте код версии устанавливаемого приложения на большое число, например, 1000, чтобы обеспечить достаточно места для увеличения номера версии вашего мгновенного приложения.

Разрабатывать как мгновенную игру, так и устанавливаемую игру можно в двух отдельных проектах Android Studio. Однако в этом случае для публикации игры в Google Play необходимо выполнить следующие действия:

  1. Используйте одно и то же имя пакета в обоих проектах Android Studio.
  2. В консоли Google Play загрузите оба варианта в одно и то же приложение.

Для получения более подробной информации о настройке версии вашей игры см. раздел «Версия вашего приложения» .

Поддержка среды выполнения

Как и другие приложения, игры в Google Play Instant запускаются в ограниченной изолированной среде на устройстве. Для поддержки этой среды выполнения выполните действия, описанные в следующих разделах.

Отказаться от передачи данных в открытом виде

Игры в Google Play Instant не поддерживают HTTP-трафик. Если ваша игра ориентирована на Android 9 (уровень API 28) или выше, Android по умолчанию отключает поддержку открытого текста в вашей игре.

Если ваша игра ориентирована на Android 8.1 (уровень API 27) или ниже, вам необходимо создать файл конфигурации сетевой безопасности . В этом файле установите cleartextTrafficPermitted в false , как показано в следующем фрагменте кода:

res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config>
</network-security-config>

Обновите версию целевой песочницы.

Обновите файл AndroidManifest.xml вашей мгновенной игры, чтобы он указывал на среду песочницы, поддерживаемую Google Play Instant. Для этого добавьте атрибут android:targetSandboxVersion к элементу <manifest> вашей игры, как показано в следующем фрагменте кода:

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

Для получения более подробной информации см. документацию по атрибуту targetSandboxVersion .

Не стоит полагаться на наличие кэша или данных приложения.

Ваш мгновенный доступ остается загруженным на устройстве пользователя до тех пор, пока не будет очищен кэш мгновенного доступа, что происходит в одной из следующих ситуаций:

  • Кэш мгновенного доступа подвергается сборке мусора, поскольку на устройстве заканчивается доступная память.
  • Пользователь перезагружает свое устройство.

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

Если в системе заканчивается место для хранения данных, возможно, пользовательские данные из вашей мгновенной игры будут удалены из внутренней памяти. Поэтому рекомендуется периодически синхронизировать пользовательские данные с сервером игры, чтобы сохранить прогресс пользователя.

Уменьшите размер своего приложения.

В отличие от других типов приложений, игры в Google Play Instant имеют ограничение на размер загружаемого файла в 15 МБ . Для создания игры такого размера может потребоваться переработка игровой логики. В этом разделе описаны некоторые инструменты и методы, которые помогут оптимизировать размер вашей игры.

Инструменты

Следующий список инструментов поможет вам определить, что влияет на размер вашей игры:

  • Анализатор APK : Предоставляет целостное представление содержимого скомпилированного APK-файла. Используя это представление, вы можете определить, сколько байтов каждый элемент вносит в общий размер. Используйте этот инструмент, чтобы быстро проверить размер ресурсов, ресурсов, логики и нативных библиотек, используемых вашей игрой.
  • Bloaty McBloatface : Отображает профиль размера бинарных файлов.
  • Android GPU Inspector : Посмотрите, как уменьшение размера текстур повлияет на размер файлов, без необходимости перекомпиляции игры.

Методы

Ниже приведён список методов, которые можно использовать для уменьшения размера игры:

  • Выделите часть игровой логики и поместите её в один или несколько функциональных модулей , которые не учитываются в ограничении по размеру.
  • Уменьшите разрешение текстур в вашей игре.
  • Рассмотрите возможность использования формата WebP , особенно если вы используете несжатые текстуры на графическом процессоре. Формат WebP создает изображения такого же качества, как и изображения JPEG, но на 15–30% меньше по размеру. Хотя декомпрессия изображений WebP занимает больше времени, это время все равно значительно короче, чем время загрузки текстур вашей игры. Google также интегрировал этот формат в свой игровой движок с открытым исходным кодом .
  • Сжимайте или повторно используйте звуки и музыку.
  • Используйте различные флаги компиляции, чтобы уменьшить размер бинарного файла:
    • -fvisibility=hidden – Самый важный параметр. В cmake его можно указать следующим образом:
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
      
    • -Oz – Также важно для уменьшения размера. Если вы компилируете с помощью gcc , используйте -Os вместо этого.
    • -flto – Иногда уменьшает размер файла.
    • Флаги компоновщика – Используйте --gc-sections в сочетании с флагами компилятора, такими как -ffunction-sections и -fdata-sections .
  • Используйте Proguard для уменьшения размера кода и ресурсов .
  • Для генерации DEX-файлов меньшего размера используйте Gradle версии 4.4 или выше.
  • Внедрить облачную доставку активов .

Разделить большую игру на несколько APK-файлов.

Оптимизировать Google Play Instant так, чтобы ваша игра поместилась в один APK-файл размером 15 МБ, может быть сложно, даже после применения рекомендаций по уменьшению размера APK . Для решения этой проблемы можно разделить игру на несколько APK-файлов. Игроки начинают с загрузки основного, базового APK-файла; по мере игры оставшиеся разделенные APK-файлы становятся доступны игре в фоновом режиме.

Например, базовый APK-файл может содержать ядро ​​игрового движка и ресурсы, необходимые для отображения экрана загрузки. При запуске базовый APK-файл отображает экран загрузки и немедленно запрашивает дополнительный разделенный APK-файл, содержащий данные игры и уровней. После того, как этот разделенный APK-файл станет доступен, он может загрузить свои ресурсы в игровой движок и предоставить игроку контент, необходимый для начала игры.

Внедряйте лучшие практики UX.

После того, как вы настроите свою игру так, чтобы она поддерживала мгновенный доступ, добавьте логику, показанную в следующих разделах, чтобы обеспечить удобство использования для пользователя.

Поддержка 64-битных архитектур

Приложения, публикуемые в Google Play, должны поддерживать 64-битную архитектуру. Добавление 64-битной версии вашего приложения обеспечивает повышение производительности и позволяет использовать его на устройствах с 64-битной архитектурой. Узнайте больше о поддержке 64-битных систем .

Проверьте, запущена ли игра в режиме мгновенного воспроизведения.

Если логика вашей игры зависит от того, вовлечен ли пользователь в ваш мгновенный опыт, вызовите метод isInstantApp() . Этот метод возвращает true если текущий запущенный процесс является мгновенным опытом.

Проведя эту проверку, вы сможете определить, нужно ли вашему приложению работать в ограниченной среде выполнения или же оно может использовать преимущества возможностей платформы.

Отобразить запрос на установку

Если вы создали пробную версию игры для Google Play Instant, в какой-то момент игра должна предложить игроку установить полную версию на своё устройство. Для этого используйте метод showInstallPrompt() из API Google для Android .

Чтобы узнать больше о том, как и когда следует запрашивать у проигрывателя разрешение на установку, ознакомьтесь с рекомендациями по улучшению пользовательского опыта для игр в Google Play Instant .

Передача данных в установленную систему.

Если игроку понравится пробная версия, он может решить установить полную версию вашей игры. Для обеспечения хорошего пользовательского опыта важно, чтобы прогресс игрока переносился из вашей пробной версии в полную версию игры.

Если в вашей игре указано значение targetSandboxVersion равное 2 , то прогресс игрока автоматически переносится в полную версию игры. В противном случае вам необходимо вручную перенести данные, связанные с прогрессом игрока. Для этого используйте пример приложения Cookie API.

Дополнительные ресурсы

Узнайте больше о Google Play Instant из этих дополнительных ресурсов:

Codelab: Создайте свое первое приложение мгновенно
Добавить поддержку Google Play Instant в существующее приложение.
Codelab: Создайте многофункциональное приложение мгновенно.
Создайте модульное многофункциональное приложение.