картинка
Лучший друзья по близости логотипов
таблица
Да, пришло время раскрыть карты. Эта игра не для того, чтобы улучшить рекомендации кинопоиска. Я хочу продать её в тиндер.
С логотипами как-то получилось. Но у них есть важное преимущество: для того, чтобы оценить логотип, достаточно просто на него посмотреть.
Если мы захотим сделать аналогичную игру по книгам или фильмам, мы напираемся на новую проблему: люди могу не читать определённые книги или не смотреть определённые фильмы. Искать “точки соприкосновения” между игроками значительно сложнее. Что делать с этим? Я придумал две вещи.
Первая, очевидная. Это кнопка “Пропустить”. Если игрок встречается с чем-то для себя незнакомым, нажимает кнопку и нет проблем.
Топ книг, которых пропускали чаще всего
таблица
намекает на то, что это правильная логика.
В идеале это ещё и должно влиять на рандом: объекты, которые данный игрок уже пропускал, должны показываться ему реже, чем обычно.
Вторая вещь - это категории. Если взять в среднем по популяции, то вероятность найти человека, который читал Честертона крайне мала. Если мы берём тех людей, которые хотят оценить книги в категории “Детективы”, то эта вероятность сильно выше.
Кстати, на реальных данных доля пропусков Честертона - около 40%.
Аналогичные лидерборды:
Топ-10 лучший логотипов
таблица
Топ-10 лучших игроков
таблица
Кластеры логотипов (чем темнее, тем больше они похожи друг на друга)
картинка
Лучший друзья по близости логотипов
таблица
Вот такие получились прототипы игр. Понятно, что это не полноценные продукты, без логики, сюжета и какой б то ни было мотивации возвращаться в игру.
Тем не менее, среднее время в игре 14 минут и 38 боёв на игрока - не самые плохие показатели для того, чтобы утверждать, что такая базовая механика работает. Если кто-то хочет попробовать себя в гейм-дизайне на примере вот такого вот прототипа - вы знаете как со мной связаться.
Дальше расскажу чуть-чуть про технические подробности.
Обе игры есть на гитхабе.
Первым я сделал книги. Использовал классический telebot. С логотипами перешёл на aiogram и почувствовал себя человеком. Telebot может просто перестать отвечать без какого-либо предупреждения. Грешил на сервер, но нет, библиотека такая.
Набор книг составлял исходя из собственного представления о прекрасном, ориентируясь на рейтинги лайвлиба. Датасет для логотипов взял из соревнования Kaggle, разбавив его парочкой логотипов из ближайшего окружения.
В самом коде ничего особенного. Подружить telebot в Postgres оказалось удивительно легко.
Вся логика в функциях или внутри SQL-запросов, логика текстовых команд - самая что ни на есть типичная для ботов. Хорошо, что нет книг “Продолжить” и “Пропустить”.
Считал, что безликие id никому неинтересны и хотел выводить таблицу с никами игроков. Словил шикарный баг на проде, когда узнал, что далеко не у всех в телеграме есть текстовые ники.
Визуализации таблиц заставляют меня страдать. К сожалению, сделать лучше для таблиц произвольного размера и содержания без установки браузера на виртуальной машине (с последующим рендерингом html) у меня не получилось.
Какие я вижу тут следующие шаги?
- рекомендации по числу боёв, через какое количество сравнений что-то произойдёт
- кнопка “Пропустить” должна влиять на дальнейший рандом
- ранги или категории игроков, достижения, какие-то плюшки, например, в идеале лучшие получают право добавлять свои айтемы в игру
- сюжет какой-нибудь
- сочетание разных типов сравнений между собой