ARG внутри интерфейса: как я добавил метаигру в SPA и зачем это вообще нужно

от автора

…В какой-то момент, ковыряясь в своём геоорганайзере «Места» (я писал о нём на Хабре), я поймал себя на простой мысли:

Всё работает — но не живёт

Нет, я не адепт восстания машин. Я о другом…

Проблема утилитарных приложений

Можно:

  • создать место,

  • собрать маршрут,

  • описать всё это дело,

  • добавить фоточек,

  • разложить всё по папочкам,

  • довольно причмокнуть,

…закрыть вкладку — и не вернуться.

И это нормально. Хороший утилитарный инструмент делает свою работу. Чётко, предсказуемо и без сюрпризов.

Он решает задачу.
Но не создаёт привязанности.

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

Но речь пойдёт не про изменение самой задачи и не про усложнение инструмента. Речь про то, что происходит рядом с ним.

Если базовая функциональность остаётся:

  • предсказуемой,

  • быстрой

  • и не перегруженной,

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

Идея: добавить слой игры

Я не хотел делать из этого «ещё одну фичу». Просто хотел добавить живости. Так пришла в голову идея пасхалок.
Но не «пасхалок ради пасхалок». А пасхалок, вокруг которых возникнет интерес.

Сразу уточню, что я здесь называю «пасхалками». Это не бонусы, не подарки и не какая-то внутренняя валюта. Тем более, не яйца.

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

Ну, а теперь к делу.

Как это работает

В настройках аккаунта — чекбокс «Пасхалки».
С честным описанием системы и правил.

  • Чекбокс включен — ты в деле.

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

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

  1. Есть одна и только одна активная пасхалка на всех.

  2. У неё есть глобальный порядковый номер.

    Сначала будет №1. Это счётчик.
    Как только очередная пасхалка открыта, её номер увеличивается на 1. Номера повторяться не будут.
    Номер текущей активной пасхалки отображается прямо в версии органайзера.
    Ну, например, сейчас у нас v6.3.6 beta, а с пасхалками будет v6.3.6:1 beta для первой пасхалки, потом, скажем, v6.3.6:2 beta, v6.3.7:2 beta, v6.4.0:2 beta — для второй и т.д.

Механика игры

Главный принцип — максимальная изоляция. Сама пасхалка — это буквально пара строк кода, которые описывают только условие «срабатывания» (триггер). Эти строки живут в сторонке, не трогают API и никак не влияют на работу приложения или сохранность данных.

Что это даёт?

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

  2. Контекст
    Сами по себе эти строки кода — просто замо́к. А вся соль — в поиске ключа и в том, что происходит вокруг:

Есть отдельный канал (скорее всего, Telegram, хотя я ещё в раздумьях) для зарегистрированных в органайзере пользователей. Это, так сказать, центр истины. Доступ к нему будет свободным, а вот возможность писать туда будет только у зарегистрированных пользователей, то есть непосредственных участников игры.

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

Разумеется, как только пасхалка открыта и описана на канале, все могут её в органайзере проверить. Старые пасхалки технически будут продолжать работать — просто ради развлечения, а чтобы с тысячелетиями работы сервиса он не превратился в их минное поле, в тех же настройках аккаунта в органайзере сразу под чекбоксом «Пасхалки» будет зависящий от него второй чекбокс «Проигрывать открытые»:

  • чекбокс включен — старые работают,

  • чекбокс выключен — работает только актуальная (ну, если вообще главный чекбокс «Пасхалки» включен).

Как только пасхалка разгадана, и вступает в действие новая, как её открыть — знает только автор (в данном случае я), который и следит за каналом на предмет открытия текущей пасхалки.

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

Примеры

Если в дереве мест органайзера в одной папке последовательно перейти в обратном порядке по 10 местам, цветовая тема меняется на непредусмотренную в общих доступных. Какую-нибудь сумасшедшую, вырвиглазно-серобуромалиновую. Разумеется, можно её сразу убрать нафиг 😁.

Ня!

Ня!

Можно даже открывать такие темы для всех после нахождения пасхалки. Но это уже вопрос баланса и не всегда уместно. В каждом конкретном случае надо думать.

Или. Если центр карты находится в радиусе, скажем, километра, точки с определёнными координатами (адекватными, а не где-нибудь в Антарктиде) — донатская кнопка «На колбасу» в подвале органайзера меняет текст на «На шнапс». И да. Это нужно ещё заметить. Но это уже уровень сложности покруче.

Типы пасхалок

  • Последовательности действий

  • Координаты

  • Время (в 03:33 что-то происходит)

  • Комбинации действий

  • Работа с деревом

В UI могут быть лёгкие намёки. Они же — микро-сигналы, что это не баг:

  • тост вроде «Кажется, ты нашёл что-то стоящее…» при смене темы,

  • едва заметно отличающийся цвет кнопки, намекающий на её значимость в этот момент,

  • мелкий текст вроде «Иногда порядок имеет значение…».

Это создаёт ощущение, что «что-то здесь не так», но при этом пользователь понимает, что это намеренно.
Но тут особенно важен баланс. С одной стороны, это должно быть замеченным, но при этом максимально лёгким.

Сложность

Первую пасхалку можно сделать простой, как в примере выше — с обратным порядком. А вот уже какой-нибудь №36 может быть больше похож на тот пример с кнопкой.

Тут, правда, минимум две проблемы:

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

  2. Порог
    При нарастающей сложности через пару лет она станет, см. выше, уже неадекватной. И что тогда?

Возможно, сложность не должна расти линейно. Гораздо важнее — сохранять баланс.

Зал славы

Прямо где-нибудь в интерфейсе органайзера, в специальном разделе:

«Пасхалка №3: открыта пользователем Dimanych 01.04.26»

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

Реверс-инжиниринг — это тоже часть игры

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

Почему это работает

На уровне ощущений это «прикольная мелочь». На практике — довольно сильная механика вовлечения.

  • Любопытство. «Что за №2?»

  • Соревнование. «Я хочу быть первым»

  • Социальный эффект. «Кто-то уже нашёл. Значит, это реально»

  • FOMO. «Пока я не ищу, кто-то уже может открыть следующую»

  • Ощущение жизни. Когда пользователь видит v6.3.6:2 beta, он понимает: в проекте что-то происходит и кроме добавления фич и исправления багов.

В какой-то момент я поймал себя на мысли

Это уже не просто пасхалки. В этом что-то есть.


ARGiP — Alternate Reality Game in Product

По сути, это уже не набор скрытых «фишек».
Это система, в которой:

  • есть прогресс,

  • есть коллективное открытие,

  • есть внешний слой взаимодействия,

  • и есть ощущение, что за пределами интерфейса происходит что-то ещё.

Я фактически переношу механику Alternate Reality Game внутрь интерфейса.
Но в упрощённом виде:

  • без внешних сайтов,

  • без сложного онбординга,

  • без «сюжета, который надо объяснять».

Точка входа — обычное действие пользователя.

Разница с обычными пасхалками

Обычные пасхалки

ARGiP

Разовые

Система

Случайные

Управляемые

Без прогрессии

Есть развитие

Нет истории

Есть «открытия»

Локально

Коллективно

«Прикол»

Метагейм

Маленький трюк

В настройках чекбокс «Пасхалки» можно назвать иначе: Режим ARGiP включен / Режим ARGiP выключен.

Без объяснений.
Кому надо — найдёт.

А дальше начинается самое интересное.

Кто-то просто проигнорирует. А кто-то полезет гуглить: — «что это вообще за зверь такой?». Наткнётся на эту статью, поймёт, что речь идёт о том самом сервисе, которым он уже пользуется…

И в этот момент произойдёт маленький щелчок: он уже не просто пользуется инструментом. Он начинает в нём участвовать. И уже смотрит на свою работу с органайзером немного по-другому.

Если перевести это на «продуктовый» язык, картина получается интересная.

Такая механика:

  • даёт дополнительный повод вернуться в приложение,

  • даёт эффект «живого процесса», а не статичного инструмента,

  • и постепенно формирует вокруг продукта небольшое сообщество.

При этом она не вмешивается в основную функциональность и остаётся полностью отключаемой.

То есть, это редкий случай, когда можно добавить вовлечённость, ничего не ломая.


Вывод

Я хотел добавить в приложение пару «прикольных» пасхалок. В итоге дофантазировался до слоя игры поверх утилитарного продукта.

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

Что думаете?

P.S. Заходите тыкать. Пасхалок пока нет, но скоро будут. А идеи — в комменты.

ссылка на оригинал статьи https://habr.com/ru/articles/1023102/