{"id":14284,"url":"\/distributions\/14284\/click?bit=1&hash=82a231c769d1e10ea56c30ae286f090fbb4a445600cfa9e05037db7a74b1dda9","title":"\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0430\u043d\u0446\u044b \u0441 \u0441\u043e\u0431\u0430\u043a\u0430\u043c\u0438","buttonText":"","imageUuid":""}

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

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

О цифрах

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

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

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

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

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

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

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

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

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

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

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

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

0
17 комментариев
Написать комментарий...
Alex Braytsev

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

Ответить
Развернуть ветку
Stugnov P.
Автор

Конечно :)

Ответить
Развернуть ветку
Alex Braytsev

Приличный?) расскажите про бизнес кухню, интересное направление

Ответить
Развернуть ветку
Evgeny Permyakov

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

Ответить
Развернуть ветку
Stugnov P.
Автор

Чатжпт? 😅

Ответить
Развернуть ветку
Evgeny Permyakov

Да. Игра охуенная.
Просто гпт более красочно описал

Ответить
Развернуть ветку
Stugnov P.
Автор

Спасибо 🙏🏻

Ответить
Развернуть ветку
Анна Семенова

чего только не делают с нейронками в последнее время

Ответить
Развернуть ветку
Денис Некий

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

Ответить
Развернуть ветку
Polizist

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

Ответить
Развернуть ветку
Stugnov P.
Автор

😂

Ответить
Развернуть ветку
Денис Некий

Зато я видел как автор в качалке блевал и в офисе жил)

Ответить
Развернуть ветку
Sunnex

ух стугноф стугноф

Ответить
Развернуть ветку
Sunnex

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

Ответить
Развернуть ветку
Stugnov P.
Автор

Дыа

Ответить
Развернуть ветку
Sunnex

прекрасная реклама!

Ответить
Развернуть ветку
Sunnex
Ответить
Развернуть ветку
14 комментариев
Раскрывать всегда