Вся наша жизнь – игра: или как прижилась геймификация внутри мобильного приложения в ритейле

Здравствуйте, меня зовут Амалия, я специалист по обеспечению качества в команде мобильного приложения «Пятёрочка». Хочу начать с небольшой истории. В школьные годы я любила онлайн-игру в жанре хоррор Requiem Online. В ней была пара игроков, которые участвовали в закрытом тестировании обновлений, имели особые плюшки, делились свежими анонсами до старта обновы, вызывая во мне острое желание попасть в их состав. К чему я это всё?   Неудивительно, что когда наш QA-лид пришёл с предложением маленькой авантюры — помочь команде запустить игру в новом мобильном приложении — …мой ответ ему был очевиден. 

f9d802d947d928537c1a9555eba511ff.jpeg

Прошёл год, мы не только впервые запустили геймификацию в нашем мобильном приложении,  , но и успели ещё 6 раз пройти этот путь с другими играми. И теперь делюсь, почему мы вообще пришли к необходимости запуска геймификации, расскажу немного предыстории о том, как создавалось наше текущее приложение для покупателей «Пятёрочки», какие задачи, сроки и сложности у нас были при внедрении геймификации, какими инструментами пользовалась наша команда QA. А ещё поделюсь чек-листом проверок, который мы используем при тестировании таких игр. 

Про то, как устроено наше приложение

Весной 2022 года нашей компании X5 Tech необходимо было в короткие сроки запустить альтернативу прежнему мобильному приложению (МП) с рабочей программой лояльности для наших гостей (так мы зовём наших покупателей). По ряду причин пришлось уйти от старого нативного мобильного приложения и создать гибридное приложение.

Мы взяли за основу open source браузер, убрали лишнее, дописали необходимый нам код и добавили обновлённую программу лояльности «X5 Клуб». Как итог, получили немного сырой, но рабочий продукт с возможностью выпускать виртуальные и активировать пластиковые карты, с большим промо-баннером на главной странице и каруселью захардкоженных акций недели.

Особенность гибридной разработки в том, что такие приложения устанавливаются через магазины приложений, и при этом имеют возможность независимого от сторов обновления информации. Благодаря этому у нас появилось приложение с рабочей программой лояльности, и мы смогли сократить time-to-market — как раз то, что нам было нужно.

Как устроен наш гибрид:

6849dbbc83cc513731ebbac222d7c315.png

Про необходимость внедрения геймификции

Небольшое, но важное отступление. Конечно, запуск нового МП, какой-то дополнительной функциональности, новой игры или маркетинговой акции в торговой сети — это сложный процесс с большим количеством этапов, в который вовлечены различные бизнес-единицы и команды, не только X5 Tech.

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

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

Мы решили использовать геймификацию не только в формате, привычном ранее: «Сделай покупку в магазине на определённую сумму и получи коллекционную вещь», но и пойти в историю создания полноценной игровой механики внутри МП. 

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

Игровая механика выглядела примерно так:

f84e859b566f2a48151d6f59a20e4967.png

Для чего это всё? Тут всё стандартно и просто: нам важно с помощью геймификации сформировать привычку пользоваться нашим новым продуктом, поднять количество уникальных посетителей в новом мобильном приложении, создать дополнительный интерес клиента к торговой сети через интерактивную механику, увеличив тем самым дневную активную аудиторию. У торговой сети, разумеется, была тоже своя цель: это, в том числе, стимулирование покупок и рост показателя Retention rate (коэффициент удержания клиентов).  

Нашей первой игрой стали «Завры» — традиционный платформенник. Игра была разработана аутсорсинговой компанией по бизнес-требованиям нашего отдела маркетинга. Пользователь мог выбрать полученного коллекционного динозаврика, прочитать про него исторический факт, попрыгать им по уровням, собирая промокоды от компаний-партнёров, и взаимодействовать в игре с баллами лояльности: копить, обменивать. В общем, всё по стандарту любой Hook Model: Тригер > Действие > Награда.

6067f47bf0214ff1074ffd8f03b83830.png

Про задачи перед командой и сложности

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

  • проработать авторизацию пользователя через единую систему X5ID внутри игры;

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

  • написать свой микросервис, который будет отвечать за сегментирование игроков для выдачи призов, получение статуса, проведение розыгрыша;  

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

Успели ли мы сделать всё это перед запуском первой игры? Конечно нет.

Из-за сорванных сроков по запланированным задачам пришлось многим пожертвовать, например, нагрузочным тестированием, да и в целом принимать дефекты и риски их влияния при релизе игры. С чем-то пришлось смириться, что-то пришлось резко переделывать. Например, на старте игра раздавалась не с СDN, а с серверов приложения, что приводило к потере производительности вплоть до полной остановки загрузки игры на клиенте при высокой нагрузке. Отдельным блокером стали проблемы с паразитными запросами (излишне множественными) к нашей системе лояльности — с таким катиться в прод было категорически нельзя.

Зато теперь, наученные горьким опытом, мы знаем точно, что всегда важно иметь вариант «Б». На случай, если игра не взлетит в последний момент, за 10 минут до её официального старта мы экстренно реализовали заглушку: «Игра будет скоро». Сделали это для того, чтобы пользователи, которые видели промо в магазине, были хоть как-то оповещены о том, что игра вот-вот начнётся. Забавно, что потом мы каждый раз создавали себе такую «подушку безопасности» для остальных игр, но, к счастью, во всех следующих играх она нам больше не пригодилась. 

Ещё у нас был кейс, который тоже пришлось экстренно фиксить: мы уводили пользователей на сайт партнёров без возможности возврата в наше приложение. 

a1f0aff29872151e4026cbd77a1efce7.png

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

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

К чему я это всё? Обновляемся сами, ведь кто, если не мы?! Просим пользователей обновиться с помощью баннеров. Главное — делать это вовремя, со стабильным домашним Wi-Fi, а не в магазине, и будет счастье нам и нашим пользователям. 

bcd65b741239196010e14a671d584b4a.png

Как итог — три недели силами core команды мы интегрировали эту игру в приложение, перекрестились и первая мысль: «Больше никогда!». Но спустя квартал пошли запускать новую совместную игру в формате «три в ряд». Теперь-то наша команда уже с опытом, пониманием всех подводных камней и, так сказать, во всеоружии. Поэтому почему бы и нет?

Всё же, и в рамках первой попытки геймификации, цели бизнеса тоже были достигнуты: KPI выполнены, количество уникальных игроков достигло 1 млн за период проведения акции, 5 млн сессий в «Заврах» за первые две недели. 

Ещё немного цифр:  

  • в следующих играх нам удалось выйти на средний показатель в 15,5 млн сессий за период проведения акции;

  • каждый 85-й человек в России заинтересовался нашей игрой (1,7 млн уникальных посетителей);

  • 17 версий мобильного приложения не увидел пользователь, пока мы тестировали игру до её официального старта.

Про инструменты тестирования и чек-лист

Из инструментов тестирования мы использовали стандартный набор: снифферы сетевого трафика, Android Studio для работы с эмуляторами, любимая для каждого своя IDE и Browser DevTools как незаменимый помощник работы напрямую с LocalStorage на девайсе. Ну и тестовая модель у нас в Allure TestOPS. 

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

 1. Важно учитывать версионность WebView, установленной на девайсе, и проверять работу на разных браузерах — это обязательно при тестировании гибридных приложений и реализации браузерных игр.

Мы выяснили, что совсем старые версии отдавали нам белые экраны. В итоге остановились на поддержке с 69 версии WebView, так как по данным аналитики, версии ниже этой составили менее 1% среди наших пользователей. Браузеры тоже брали из расчёта данных нашей аналитики и списка самых популярных браузеров в России: Google Chrome, Safari, Яндекс Браузер, Opera, Microsoft Edge и Mozilla Firefox.

 2. Необходимо проверять нативный функционал при взаимодействии с игрой: всё, что касается механики работы со свайпами, воспроизведения звука на девайсе, pinch to zoom, long tap, double tap, требуется ли в игре доступ к камере девайса, взаимодействие с нативной кнопкой «Назад» на Android и пр. 

 3. Особое внимание стоит уделять проверкам при смене портретной и альбомной ориентации, особенно если приложение такой ранее не имело, а в игре это заложено в механику. 

 4. Важны проверки на доступность и отображение контента в зависимости от наличия StatusBar и TabBar для пользователя. Тут всё, что касается сценариев возврата в основное приложение из игры, проверка перехода в игру, выход из игры, режим сна, выгрузка приложения, звонок на девайс и многие другие сценарии, при которых могут возникать ошибки или неожиданное поведение. 

5. Переходы на внешние сайты компаний-партнёров с копированием и активацией промиков — дивный мир. С учётом того, что пользователю не объяснить, что вот это — границы нашего МП, а там — уже другие разрабатывали, хотелось создать идеальный пользовательский путь, но подводных камней на нём было много. Например, открытие модальных окон друг в друге, когда с сайта партнёра переходишь на сайт его партнёра и т. д. 

ea0a4362ae92c2bcbfb382150752053b.jpeg

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

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

В целом, с новой игрой, чтобы успеть всё сделать вовремя, нам понадобились 10 недель на подготовку, 40 человек в составе общей команды с уже набитыми шишками и опытом, учёт особенностей платформы, на базе которой будет открываться игра, а также специфики работы операционных систем девайсов.

4d369966eb176e9f49e5815a4f8d52db.png

Если всё это у вас есть — можно сказать: «Дело в шляпе». 

© Habrahabr.ru