September 10, 2020

Стенд Avito для фестиваля 404 в Самаре

Весной 2019-го я попал в Avito по рекомендации Саши Катина. Несмотря на то, что мы находились в разных юнитах, вместе с Сашей мы иногда занимались совместными проектами.

Один из них — стенд Avito для фестиваля 404 в Самаре, который прошёл в том же году.

Как работал стенд

Саша Катин и Дима Сергутов демонстрируют работу стенда

Человек пришедший на стенд, видел перед собой два экрана: один большой (для информации) и поменьше (для взаимодействия).

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

Если у фразы в конце была звёздочка (вот такая *), человек получал приз и стикер. Если звёздочки не было, получал только стикер.

Это были абсурдные фразы в духе «Аварийный кастет со смазкой» или «Безвкусное кольцо 80-го уровня». Предполагалось, что люди будут их клеить на телефоны и ноутбуки.

Процесс разработки

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

Через iPad посетители взаимодействовали со стендом

Как я уже сказал выше, в системе было задействовано два экрана (телевизор и iPad), ноутбук и специальный принтер для печати этикеток.

Саша взял на себя весь front-end, взаимодействие пользователя со стендом и сделал так, чтобы принтер, экраны и ноутбук — подружились. Это сложнее, чем кажется.

За проектирование и монтаж стенда отвечал подрядчик.

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

Так выглядел стенд в разобранном состоянии

В лучших традициях, прототип стенда был собран на Google Sheets кем-то из креативной группы. В таблицах находились слова, которые были разбиты по родам. При обновлении страницы, появлялась случайная фраза из них.

Чтобы начать работу, нужно было выгрузить всё из таблиц и подготовить данные. В итоге, у меня получилось 4 разных файла: he.js, she.js, it.js и together.js. Внутри файлов было по два массива с подлежащим и сказуемым (в together.js было только местоимение).

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

Сборка рабочего прототипа на моём рабочем месте (офис Avito в Москве)

Статистику и все сгенерированные фразы мы записывали в local storageбраузера. В нём же хранили количество оставшихся подарков. Каждый раз, при срабатывании скрипта, если выпадал приз, то из числа в local storageвычитался 1.

Больше всего сложностей было с балансировкой шансов выпадения приза. Мне показалось, что проще всего это будет сделать через подбрасывание монетки. Монетка, конечно, не настоящая и выдаёт 0 или 1. Всё это привязывалось к датам проведения фестиваля и было сбалансировано так, чтобы в первый день мы раздали 2 / 3 подарков, а во второй 1 / 3.

Результат

На написание всего кода и отладку, вместе с Сашей мы потратили около двух недель, работая вечерами.

За 2 дня фестиваля, стендом воспользовалось более 1 000 человек. Были розданы все подарки.

Довольный посетитель и стенд

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


За фотографии и видео я хочу поблагодарить Сашу Катина. Если у вас остались вопросы, вы можете их задать в чате канала: @codeque.

Подписывайтесь на мой канал, Twitter и Instagram.