С вами снова Кирилл Богатов, дизайнер разговорных продуктов в KODE. В прошлом году я записался на курсы по театральной импровизации. Там мы разыгрывали сценки, работали с зажимами и учились не бояться выглядеть нелепо. Наши занятия часто заканчивались игрой в «Принцессу, Дракона, Рыцаря» — это как «камень-ножницы-бумага», только вместо фигур в ней нужно изображать фэнтезийных персонажей. Своего рода мини-спектакль на пару секунд.

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

  • как превратить заезженную механику в театральное шоу;

  • что делать, если дракон не выговаривает букву «Р»;

  • почему Алиса не умеет естественно петь;

  • как научить бота играть в «камень-ножницы-бумагу» как люди;

  • почему даже проверенная идея и качественная реализация не гарантируют взрывного успеха.

Анализ идеи

Перед тем, как приступить к разработке, я взвесил все плюсы и минусы:

Плюсы:

  • С Алисой часто играют дети — это большая потенциальная аудитория.

  • Игра быстрая — каждый раунд занимает меньше минуты.

  • Игра хорошо переносится в голосовой формат — не нужно заучивать сложные команды и запоминать информацию.

  • Навык «Камень Ножницы Бумага» со схожей механикой годами не выходит из топ-50 навыков для Яндекс Станции.

  • У игры есть «изюминка» — она не просто развлекает, но и помогает почувствовать себя в новой роли, раскрепоститься, да и просто подурачиться. 

Минусы:

  • Игра может оказаться слишком однообразной — в ней всего одна механика и три возможных исхода.

  • Игрокам может быть некомфортно отыгрывать персонажей перед колонкой — это требует эмоциональной вовлеченности.

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

Основная механика

Игра похожа на «камень-ножницы-бумагу». Игрок называет персонажа, а Алиса в ответ называет своего. Принцесса очаровывает рыцаря, рыцарь побеждает дракона, дракон похищает принцессу. Игра идет до 3, 5 или 10 побед.

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

  • принцесса напевает песню: «Ля-ля-ля, ля-ля-ля!»

  • дракон рычит: «Арррр!»

  • рыцарь машет мечом: «Вжухх!»

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

Окружение и атмосфера

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

Атмосферу турнира дополняют звуки. Игра начинается и заканчивается фанфарами, а толпа зрителей на трибунах реагирует на действия игрока: радостно ликует, ворчит или умиляется (в случае ничьи). Звуки я брал на бесплатных ресурсах: freesound.org и uppbeat.io.

Каждый раунд заканчивается каким-нибудь забавным событием. Встретились две принцессы? Пусть устроят чаепитие! Два рыцаря на арене? Пора выяснить, у кого лучше блестят доспехи! Цензура не позволяет драконам пожирать принцесс? Пусть побеждают их в караоке! Всего получилось около 100 фраз окончания раунда (не всегда оригинальных, но всё же).

Чтобы реплики ассистента звучали естественнее, я добавил в них чуть больше контекста. Если Алиса дважды выбирает одного и того же персонажа или её выбор совпадает с выбором игрока, её реплика немного меняется: «А у меня — снова дракон», «Вот и у меня дракон».

Решение проблем: распознавание коротких звуков

Во время тестирования открылось страшное — Алиса плохо распознает короткие реплики без слов. На каждое второе «Аррр!» или «Вжухх!» я получал только многозначительное молчание. 

Проще всего было бы заменить звуки на осмысленные фразы. Но тогда терялся бы весь кайф от ролевого отыгрыша. Решение оказалось довольно простым — игрок должен сопроводить звук небольшим «объявлением» персонажа:

— Я дракон! Аррр! 

— А я — рыцарь! Вжухх!

В итоге Алиса получает достаточно «материала» для правильного распознавания реплики, а игрок ещё сильнее отождествляет себя с персонажем. Ну и слушать то, как Алиса называет себя принцессой — одно удовольствие. 

Подобное решение также делает игру доступнее для пользователя. Если он не хочет или не может правильно показать персонажа голосом, то может просто назвать его по имени. Например, звуки взмаха мечом у одного из пользователей распознавались как «Джо Джо» — для Алисы не составило труда распознать его намерения, зацепившись за начало фразы: «я — рыцарь». 

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

— Я длакон! Аллл!

Решение проблем: рандом и тактика

Игра «Камень-ножницы-бумага» основана на простом рандоме: бот каждый раз случайным образом показывает одну из трёх фигур. Вот только люди играют иначе.

Большинство игроков неосознанно придерживается определенной тактики. Например, показывают фигуру, которая могла победить их в прошлом раунде. Опытный соперник способен распознать такой паттерн поведения и «законтрить» его. Так игра, основанная на рандоме, становится игрой на внимательность.

Для игры «Принцесса, Дракон, Рыцарь» я обучил Алису нескольким паттернам поведения:

  • Цикл — называть персонажей поочередно.

  • Подражание — называть того, кого в прошлый раз выбрал игрок.

  • Контратака — называть того, кто смог бы победить предыдущего персонажа игрока.

Если игрок выигрывает более трёх раз подряд, Алиса понимает, что её раскусили, и заявляет о том, что меняет тактику.

Решение проблем: принцесса, которая не умела петь

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

В итоге я заменил «Ля-ля-ля» на «Ла-ла-ла», используя латинскую транслитерацию и ручную постановку ударения. В коде это выглядит так: Lalal+a, Lalal+a!

Получилось немного неестественно, но мне понравилось. Оставил в проекте.

Тестирование и анализ логов

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

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

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

Самой коварной оказалась ошибка при выборе количества раундов. Оказалось, что движок корректно распознавал любое числительное, кроме единицы. Когда пользователь говорил «играем до одной победы», навык озвучивал правила игры и не реагировал на другие числа.

Технические детали

Игру я проектировал с помощью JAICP — в нём удобно описывать сценарии с помощью тегов, а также анализировать логи пользователей.

На этом проекте я впервые попробовал вайб-кодинг — просил ChatGPT помочь с проектированием паттернов поведения Алисы. Нейросеть плохо понимает внутренний язык JAICP, но хорошо справляется с JavaScript. Это сильно ускорило разработку — первая версия навыка была готова уже через три дня.

Что получилось в итоге

За 6 месяцев в «Принцессу, Дракона, Рыцаря» сыграло 2400 человек, 21% из которых вернулось в последующие дни. На момент написания статьи в игру заходит по 10-20 человек в день. Не провал, но и не оглушительный успех.

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

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

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

Ну а если захотите ознакомиться с моим проектом, переходите по ссылке или просто скажите Алисе: «Давай сыграем в Принцессу, Дракона, Рыцаря». И пусть победит лучший актёр!

Комментарии (0)