MMORPG внутри Telegram-чата
Полноценная многопользовательская игра внутри Telegram: отдельные миры для чатов, классы, PvP, квесты, экономика и веб-панель администратора.
- Роль
- Backend Engineer
- Подтверждение
- 5 классов · 15 000 строк Python · 400+ тестов · продакшен-запуск
- Статус
- Закрыт по условиям
Задача выросла за пределы бота
Заказ начинался с требования сделать полноценную 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 и временные эффекты;
- игровая экономика;
- уведомления;
- отдельный мир для каждого чата;
- веб-панель администратора.
Первый большой бета-тест принёс в основном правки текстов и механик, а не архитектурные переделки. Это был момент, когда обсуждали уже не систему, а игру.
Заказной проект для приватного клиента. Исходный код и доступ к игровым мирам закрыты, но архитектуру и инженерные решения могу разобрать на созвоне.
Когда задача действительно важна
Где ручная работа становится дорогой для вас?
Опишите процесс, недопустимый сбой и нужный результат. Мы предложим минимальную систему, которая решит задачу надёжно.