Все проектыTelegram-автоматизация

MMORPG внутри Telegram-чата

Полноценная многопользовательская игра внутри Telegram: отдельные миры для чатов, классы, PvP, квесты, экономика и веб-панель администратора.

Роль
Backend Engineer
Подтверждение
5 классов · 15 000 строк Python · 400+ тестов · продакшен-запуск
Статус
Закрыт по условиям
PythonAiogramPostgreSQLRedisFastAPIDocker

Задача выросла за пределы бота

Заказ начинался с требования сделать полноценную MMORPG прямо внутри Telegram-чата — не Mini App и не сайт.

Игрокам нужны были персонажи, классы, способности, ресурсы, инвентарь, квесты и взаимодействие друг с другом. Telegram должен был остаться единственным интерфейсом.

Ключевое решение: user_id + chat_id образуют игрового персонажа. Один человек может состоять в нескольких чатах и иметь в каждом отдельный класс, баланс, инвентарь и прогресс. Так каждый чат стал самостоятельным игровым миром.

Игровой сервер за интерфейсом Telegram

Нажатие одной inline-кнопки могло означать применение способности к другому игроку. За доли секунды система проверяет класс, ресурс, cooldown, состояние цели, защитные эффекты и ограничения; затем меняет состояние обоих игроков, сохраняет постоянные данные, обновляет кэш и при необходимости ставит таймер или уведомление.

  • Telegram как клиент. Сообщения стали игровыми событиями, inline-кнопки — интерфейсом, а FSM — последовательностями игровых действий.
  • Постоянное и быстрое состояние. PostgreSQL хранит долговременную память мира. Redis держит cooldown, временные эффекты, кэш и быстро меняющееся состояние.
  • Логика вне handlers. Правила игры вынесены в отдельные сервисы, поэтому Telegram handlers не превратились в тысячи строк ветвлений.
  • Безопасное взаимодействие. Система учитывает одновременные действия игроков, устаревшие кнопки, закончившийся в момент действия ресурс и несогласованное кэшированное состояние.

Результат

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

Проект вырос примерно до 15 тысяч строк Python и более чем 400 тестов. В продакшене появились:

  • 5 классов персонажей;
  • PvP и способности;
  • инвентарь, предметы и квесты;
  • ресурсы, cooldown и временные эффекты;
  • игровая экономика;
  • уведомления;
  • отдельный мир для каждого чата;
  • веб-панель администратора.

Первый большой бета-тест принёс в основном правки текстов и механик, а не архитектурные переделки. Это был момент, когда обсуждали уже не систему, а игру.

PRIVATE BY DESIGN

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

Когда задача действительно важна

Где ручная работа становится дорогой для вас?

Опишите процесс, недопустимый сбой и нужный результат. Мы предложим минимальную систему, которая решит задачу надёжно.

Обсудить похожую систему