@XOchatBot - крестики-нолики в Telegram

Привет! Сегодня я хочу рассказать о боте для игры в крестики-нолики в Telegram - @XOchatBot.

@XOchatBot - крестики-нолики в Telegram

О цифрах

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

Как пришла идея создания бота

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

Ограничения Telegram Bot API

Идея в том, что у Telegram Bot API есть ограничения на частоту вызовов методов. Когда игрок делает ход в "крестиках-ноликах", вызывается сразу несколько методов API: нужно вызвать answerCallbackQuery при нажатии на кнопку, обновить клавиатуру (отобразить сделанный ход) вызовом ещё одного метода (в моём случае это editMessageText), при этом, если игра идёт со случайным соперником в чате с ботом, нужно обновить сразу два сообщения с клавиатурой (игрой) - у одного игрока и у другого. Делать это нужно максимально быстро, иначе играть будет не очень приятно. Когда я только выпустил бота, я довольно быстро столкнулся с тем, что запросы в Telegram не отправляются из-за ошибки 429 (Too Many Requests). Это означало, что бот упёрся в лимиты и дальнейшее расширение аудитории только усугубит ситуацию. Я, как прошаренный ботовод, пошёл в поддержку @BotSupport с просьбой расширить лимиты и вот что из этого получилось:

Из переписки с @BotSupport по поводу увеличения лимитов для Telegram бота.
Из переписки с @BotSupport по поводу увеличения лимитов для Telegram бота.

Проблему решил троттлингом, причём пользователи не замечают его либо совсем, либо от слова "практически". Моё кастомное решение для нивелрования проблемы работает очень хорошо и я, в целом, забыл о проблеме "Too Many Requests". Возвращаясь к тому, почему я не стал делать шашки или шахматы, представьте, что на каждый ход пользователю нужно делать два клика, а не один, как в крестиках-ноликах. Это, как минимум, удавивает количество запросов, которые нужно отправлять в Telegram, а любое промедление сделает игру неиграбельной, троттлинг не будет таким незаметным. С другой стороны, правила в этих играх сложнее, поэтому играющей аудитории там априори будет меньше, но желание делать таких ботов у меня, тем не менее, пропало на неопределённое время.

Функциональность бота

  1. В боте доступны несколько вариантов полей: классическое 3x3 (3 в ряд), 5x5 (4 в ряд), 8x8 и 8x10 (5 в ряд).
  2. Бот позволяет играть со случайными соперниками: игроки нажимают соответствующую кнопку в меню бота и матчатся с оппонентами.
  3. Можно играть с любыми контактами в Telegram: пользователь нажимает "Играть с другом", выбирает чат, затем начинается игра.
  4. Игра в групповых чатах: пользователи могут добавлять бота в группу, чтобы соревноваться с другими участниками чата.
  5. Несколько видов топов: стандартный, рейтинговый и Олимпиада. Олимпиада - это топ, который формируется из сильнейших игроков за последние 30 дней.
  6. Доступны PREMIUM возможности: можно отключать рекламу и выбирать скины для своих фигурок за единоразовое пожертвование (на текущий момент это всего 59 рублей).
PREMIUM в крестиках-ноликах выглядит так.
PREMIUM в крестиках-ноликах выглядит так.

Как я пришёл к тому, чтобы сделать отдельное кроссплатформенное приложение с крестиками-ноликами

Сразу как я выпустил бота с крестиками-ноликами, он стремительно начал набирать популярность: пользователи вызывали друг друга на дуэли в личных сообщениях, добавляли бота в группы, делились своими достижениями друг с другом. Многие наигрывали тысячи и десятки тысяч матчей, самый преданный своему делу игрок наиграл чуть более 53k игр. С ростом популярности всё сильнее проявлялся запрос на большие поля, например 10x10 и 15x15. Если с некоторыми ограничениями Telegram Bot API я смог справиться (например ограничение на количество вызовов методов API), то с ограничением на размер поля ничего поделать нельзя. В Telegram я могу сделать поле не шире, чем 8 клеточек в ряд.

Всего за 111 дней я разработал отдельное приложение с крестиками-ноликами для популярных платформ, оно доступно в Google Play, AppStore и Microsoft Store (полный список на сайте). Оно пока не имеет таких же успехов как версия в Telegram, там пока сильно меньше игроков и слишком строгий дизайн. В ближайшие несколько месяцев я реализую возможность игрокам из приложения матчится с игроками в Telegram на доступных и там и там полях (3x3 и 5x5), а также попытаюсь сделать оформление приложения более привлекательным, хотелось бы сбацать что-нибудь расслабляющее и чтобы интерфейс был более интерактивным (как, например, в Hearthstone).

@XOchatBot - крестики-нолики в Telegram
1414
17 комментариев

Доход есть ? :)

Конечно :)

2

Какое удовольствие получаю, играя в @XOchatBot Крестики Нолики! Эта классическая игра всегда оживляет мой день. Невероятно, как такая простая концепция может вызвать такой азарт и веселье. Я просто не могу остановиться! Если вы еще не попробовали, настоятельно рекомендую дать этой игре шанс. Поверьте мне, это отличный способ провести время и размять мозги. 🎮🤖

Чатжпт? 😅

Это лучшее приложение что я видел!

Мало ты в своей жизни видел 😀

эпка просто прекрасная XD