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

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

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

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

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

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

<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 Instant к загрузке и установке игры на свое устройство. Платформа Android считает этот переход обновлением приложения.

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

  • Перезапустите коды версий Google Play Instant с 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 .

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

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

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

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

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

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

В отличие от других типов приложений, игры в 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 для сокращения вашего кода и ресурсов .
  • Используйте Gradle 4.4 или выше для создания файлов DEX меньшего размера.
  • Внедрить облачную доставку активов .

Разделите большую игру на несколько 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: создайте многофункциональное мгновенное приложение
Модулируйте многофункциональное приложение.