- PVSM.RU - https://www.pvsm.ru -

Google I-O 2018 глазами разработчика мобильных игр + рекомендации по итогам

Google I-O 2018 глазами разработчика мобильных игр + рекомендации по итогам - 1

В мае вместе с CTO Pixonic Сергеем Ждановым [1] (я — слева, он — справа) посетили Google I/O 2018 в Калифорнии. Хотелось посмотреть на тренды, технологии, пообщаться с разработчиками (я еще собирался поучаствовать в Codelabs, а то в прошлый раз не удалось туда попасть). В целом, если сравнивать с прошлым годом, Keynote [2] был не такой впечатляющий, но все равно есть о чем рассказать по итогам конференции.

Не буду повторять, что и так уже все слышали, а расскажу, что заинтересовало меня, как разработчика [3] мобильных игр, и что будет полезно знать другим. Начнем.

Что интересного в Android

Во-первых, был анонсировал Android P — сейчас он в бете, но уже можно скачать [4] и посмотреть, как ваше приложение будет на нем работать.

Теперь из интересного:

  • Самый важный, на мой взгляд, анонс — это Android App Bundle [5] и Dynamic Delivery [6]. Они дают возможность разбить apk приложения на много маленьких apk для разных устройств. Т.е. вы загружаете в стор один «бандл», а стор уже дробит его на apk в зависимости от процессора, версии OpenGL, языков — и на конкретный девайс загружается уже меньшая версия вашего приложения (аналог App Shrinking в App Store). Некоторые приложения (например, Duolingo) смогли сократить размер билда в 2 раза.
    Главное ограничение для разработчиков: «Android App Bundles не поддерживают APK expansion files. Однако, в Google Play все еще остается требование на размер загружаемого приложения в 100Мб или меньше». К тому же в играх на Unity все ресурсы лежат запакованные в ассетах, нет нативного механизма их разделения по разрешениям экрана и языкам. Единственная полезная для нас вещь: разделение по архитектурам процессора. И в данный момент для сборки требуется использовать Gradle 3.2.0-alpha, поэтому желательно подождать стабильной версии. Также необходимо включить Google App Signing.
  • Battery Profiler. [7] Новый тип профилировщика, который позволяет разобраться, как ваше приложение сжирает батарейку.
  • App Time Limit. Позволяет пользователю ограничить время, которое он проводит в конкретном приложении. Т.е. если пользователь решит, что он будет тратить на вашу замечательную три-в-ряд-игру не более 23 часов в день, то спать он будет всего час в день больше этого времени в день на своем телефоне он играть не сможет. Мы исследовали вопрос существования API типа КакойЛимитПоставилЮзер(). Итого получается:
    — в UsageStatsManager можно посмотреть, к какой категории принадлежит приложение по частоте использования;
    — у приложений с низким приоритетом пуш-уведомления приходят с задержкой;
    — фоновые процессы поднимаются реже;
    — больше информации пока нет!
  • Dynamic features. [8] То, что запрещено на iOS — можно на Android. Если вы делаете допфичу (к ней может быть привязан код/библиотека/ассеты/что угодно) и она не такая важная и не часто используемая, то пользователь может ее «догрузить» позже. Т.е. он заходит в приложение, видит фичу и если он хочет ею воспользоваться, то подгружает ее со стора. Это также позволяет уменьшить размер загружаемого apk и ускорить время запуска приложения, а значит уменьшить порог входа для пользователя. Вместо Dynamic features разработчикам игр на Unity можно использовать ресурсную систему. И не забывайте про ограничение в 100 Мб на бандл, если все-таки будете использовать Dynamic feature. Выгружать фичи, которые больше не нужны так же возможно.
  • Android Jetpack. Так они назвали набор библиотек и инструментов для разработки под Android — Android Studio 3.2, библиотеки для тестирования и много всего прочего. Из приятного — нереально быстрый перезапуск приложения в эмуляторе (поднимается из snapshot'a).
  • Kotlin. Второй год подряд Google продвигает русский рэп [9] наш Kotlin [10]. Я сходил на Codelabs, сделал там четыре лабы: одну на Kotlin и три на Java — и почувствовал всю боль и страдание при переходе на Java. Kotlin действительно проще и удобнее (сам я программирую в основном на C#).

Google I-O 2018 глазами разработчика мобильных игр + рекомендации по итогам - 2

  • App Actions. [11] Группа фич, из которых самая интересная это Action Links — по сути deep link для вашего приложения с метаданными, которые передаются в приложение. App Links нужно поддерживать: научить приложение открывать определенный контент по ссылке. Далее создается файл actions.xml, в котором описывается, что приложение умеет, какие действия выполняет, и как эти действия обернуть в ссылку внутрь приложения.
  • Action Notifications. Это отличная возможность присылать уведомления пользователю, даже если у него не установлено ваше приложение [12] (еще один способ привлечь новых пользователей или вернуть старых).
  • Firebase Predictions. Теперь можно будет на основе событий от пользователя в аналитике предугадать, например, стоит ли ему предлагать определенную покупку.
  • DisplayCutout. Возможность получить инфу о вырезах на экране под камеру. С появлением iPhone X появилось много смартфонов с вырезами, даже у известных брендов типа Asus. И эти вырезы надо учитывать при верстке UI (как мы это делаем для iPhone X, читайте тут [13]).
  • Требование использовать API Level не ниже 26 с ноября 2018 и обязательная поддержка 64-битных приложений с 2019 года. Для разработчиков на Unity это означает обязательный переход на IL2CPP на Android.

Google I-O 2018 глазами разработчика мобильных игр + рекомендации по итогам - 3

Что нового и полезного в Play Маркет

Была отдельная сессия [14] о том, как разработчикам игр быть успешными на Google Маркете. Посмотрите обязательно, там очень много полезных вещей для разработчиков, маркетологов, аналитиков и владельцев продукта. Вкратце:

  • Internal Test Track. Похожая функциональность Internal Testing есть в TestFlight на iOS. Раньше на то, чтобы выложить билд, добавить туда тестеров и они получили этот билд, уходило несколько часов. Теперь это будет происходить за секунды. Добавляете своих внутренних тестеров, публикуете билд и они сразу же получают к нему доступ.
  • Early Access. [15] Если у вас софт-ланч, то можно добавиться в программу Early Access. Это отдельный раздел в Google Play, и игроки смогут найти ваше приложение в сторе и получить к нему ранний доступ — стать бета-тестерами.
  • Open Testing. Тоже бета-тестирование, пользователь получает доступ к, возможно, нестабильной версии приложения в обмен на ранний доступ к самым новым фичам. Разработчик получает возможность собирать фидбек без вреда оценки для приложения, так как ревью и оценки пользователя будут видны исключительно разработчику, в сторе они учитываться не будут. Очень удобно.
  • Pre-Launch Report. Когда вы загружаете apk в Play Маркет, он проводит над ним ряд тестов на реальных девайсах и выводит первичные метрики — размеры частей приложения, сколько оно загружалось на разных девайсах и другие важный для разработчика метрики.
  • Обновился Device catalog. Добавился, например, пункт, почему ваше приложение не поддерживает этот конкретный девайс и что нужно сделать, чтобы это исправить.
  • Pre-registration. [16] Как было с Mario Run — вы заранее показываете в сторе, что приложение скоро будет доступно и позволяете им зарегистрироваться за 1-2 месяца до релиза (во время релиза им приходит уведомление). Google утверждает, что некоторые игровые компании, которые уже успели протестировать Pre-registration, смогли повысить конверсию в установки и снизить стоимость на привлечение игроков.
  • Organic Acquisition Insights. Появилась возможность узнать, из каких источников к вам на страницу приложения в сторе пришла органика — тоже очень важно для маркетологов.
  • Play Instant Games. Это как Instant Apps, только для мини-игр (размер билда не более 10 Мб). На странице игры в сторе появляется отдельная кнопка, которая запускает игру буквально за несколько секунд. Важная фишка — кнопку Instant Play можно встроить прямо в рекламу, результат поискового запроса или кидать инвайты друзьям — он нажимает на ссылку и практически сразу начинает играть на своем девайсе. В случае с Unity пока не очень актуально. Минимальный размер билда на Android, которого я смог достичь на Unity 2018.1 — 8 Мб. Но Unity анонсировали Unity for Small Things [17], которая будет доступно с 2018.3. Там легковесная физика, графика, ECS и только 2D. Мы пробовали собрать Instant App из Unity, но билд занял больше 20 МБ и не работает (падает на инициализации Unity Player из-за ошибки недоступности какой-то операции записи в режиме Instant App). Так что для нас это пока не вариант, будем ждать Unity.
  • Live Ops. Позволяет отображать внутриигровые события и акции прямо на странице проекта в сторе. Пока Google только экспериментирует с этим, но в будущем при нажатии на сообщение можно будет запустить приложение и сразу попасть на экран события.

Code Labs

В этом году я наконец сходил на Codelabs — это такой формат лабораторных работ (как в школе). На рабочем месте выдается iMac с установленными Android Studio и Unity, подключенными Google Pixel и часами (а в некоторых случаях комплектом Android Things [18]). Далее выбираешь одну из тем и в течение примерно 45 минут знакомишься с ней. Что сделал я:

  • Написал простенькое Android-приложение на Kotlin.
  • Запрограммировал погодную станцию с забором данных с датчиков температуры и давления и отображением их на подключенном дисплее IoT-комплекта.
  • Ознакомился с юнит- и UI-тестами на Java для Android-приложения со сложным UI.
  • Воспользовался ML Kit [19] (локальной и облачной версиями) для распознавания текста на языках без латиницы с помощью камеры мобильного устройства.

Формат мне очень понравился. Позволяет прощупать инструменты, фичи, быстро научиться делать что-то реально полезное. Думаю, он неплохо бы зашел на конференциях других крупных игроков рынка, например, на Unity Unite. Можно было бы попробовать, скажем, новый Rendering Pipeline и быстро научиться на нем что-то готовить. Недавно на Digital Dragons [20] общались с Unity — закинул им эту идею.

Google I-O 2018 глазами разработчика мобильных игр + рекомендации по итогам - 4

Бонус

На одной из сессий I/O упомянули и наш флагманский проект War Robots, было приятно. Разработчик Pixonic Андрей Грузинов [21] адаптировал игру для Chrome OS, и ребята из Google на I/O призывали всех делать так же (смотреть с 04:28, там всего секунд 15).

P.S. В целом этот Google I/O мне понравился. А теперь самое интересное — что запомнилось вам и что будете использовать?

Автор: Антон Григорьев

Источник [22]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/razrabotka/281115

Ссылки в тексте:

[1] Сергеем Ждановым: https://habr.com/users/nonnname/

[2] Keynote: https://www.youtube.com/watch?v=ogfYd705cRs

[3] разработчика: https://habr.com/company/pixonic/blog/359008/

[4] скачать: https://developer.android.com/preview/devices/

[5] Android App Bundle: https://developer.android.com/platform/technology/app-bundle/

[6] Dynamic Delivery: https://developer.android.com/guide/app-bundle/configure

[7] Battery Profiler.: https://developer.android.com/studio/profile/battery-historian

[8] Dynamic features.: https://developer.android.com/guide/app-bundle/configure#dynamic_feature_modules

[9] русский рэп: https://www.youtube.com/watch?v=5S70pF8TyDU

[10] наш Kotlin: https://ru.wikipedia.org/wiki/Kotlin

[11] App Actions.: https://developer.android.com/guide/actions/

[12] не установлено ваше приложение: https://www.youtube.com/watch?v=flU42CTF3MQ&feature=youtu.be&t=23m

[13] тут: https://habr.com/company/pixonic/blog/351184/

[14] сессия: https://www.youtube.com/watch?v=6IT689K3kOo

[15] Early Access.: https://support.google.com/googleplay/answer/7003180?hl=en

[16] Pre-registration.: https://play.google.com/store/apps/collection/promotion_3000000d51_pre_registration_games?hl=en

[17] Unity for Small Things: https://www.youtube.com/watch?v=EWVU6cFdmr0

[18] комплектом Android Things: https://androidthings.withgoogle.com/#!/

[19] ML Kit: https://developers.google.com/ml-kit/

[20] Digital Dragons: http://digitaldragons.pl/

[21] Андрей Грузинов: https://habr.com/users/groozze/posts/

[22] Источник: https://habr.com/post/359451/?utm_source=habrahabr&utm_medium=rss&utm_campaign=359451