Miirrox 35 минут назад Как я сделал игру «Сапёр» на основе Rich-текста в Telegram Простой 3 мин 959 Разработка игр * Интервью Из песочницы Недавно в одном из постов в Telegram мне попалась статья о том, как реализовали...
Значимый прорыв формирует отрасль ИИ: Miirrox 35 минут назад Как я сделал игру «Сапёр» на основе Rich-текста в Telegram Простой 3 мин 959 Разработка игр * Интервью Из песочницы Недавно в одном из постов в Telegram мне попалась статья о том, как реализовали шахматы на основе Rich-текста — это «Rich Text Chess». Меня это зацепило: Rich-сообщения не уводят пользователя из Telegram, и клиенту гораздо проще взаимодействовать с ботом, не покидая привычный интерфейс. Шахматы меня заворожили вдвойне — я люблю эту игру.
Поэтому я начал разбираться, как это устроено под капотом. Оказалось, всё довольно просто: доска — это таблица, доступная в Rich-сообщениях, а фигуры расположены в её ячейках. Такая таблица создаётся специальным ботом на основе callback-логики.
Разобравшись в этом принципе, я понял, что таблицы можно использовать для самых разных игр — и первое, что пришло в голову, это «Сапёр». Первый MVP за пять минут Тут на помощь пришла нейросеть. Буквально за пять минут я накидал первый рабочий прототип — без ручной раскладки сетки, без написания логики игры с нуля.
Бот уже как-то работал, но выглядел откровенно сыро. MVPДальше я занялся внешним видом: как сделать таблицу удобной для игры и как подобрать правильные кастомные эмодзи. Именно на этом этапе тесты заняли неожиданно много времени — до поздней ночи я руками собирал запросы на отправку таблицы, подбирал расположение элементов и эмодзи-наборы.
Ловушка с кастомными эмодзи Изначально я пошёл неправильным путём: решил сделать собственные кастомные эмодзи под оригинальную графику «Сапёра». Нашёл на GitHub исходные картинки классической игры и хотел собрать из них набор эмодзи. Но этот путь оказался слишком долгим — я не умею создавать кастомные эмодзи и не силён в Photoshop, так что на это ушло бы ещё несколько суток.
Решение пришло само — я просто выспался. На следующее утро понял, что достаточно поискать готовый набор кастомных эмодзи с цифрами в стиле «мини». В таблице всего два типа ячеек: заголовок (тёмная ячейка — закрытое, неоткрытое поле) и обычная ячейка (светлая — открытая).
Добавление цифр в эмодзи позволило имитировать открытие клетки, как в оригинальной игре. Проблема с состоянием игры Следующая сложность была архитектурной. Я попросил вывести в лог всё, что присылает Telegram при нажатии на ячейку, и обнаружил: в самом сообщении нигде не зашита информация о том, какие конкретно элементы находятся в этой игре.
Нейросеть предложила решение — хранить игру каждого пользователя в памяти сервера. Но это в корне неправильный подход: он нагружает сервер и раздувает память при большом количестве игроков. Вместо этого я использовал другой подход: в callback-данных, которые прикреплены к каждой ячейке, добавил дополнительный параметр — невидимый пользователю, но понятный боту.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.