Я сделал survival-игру прямо в Telegram
Два месяца назад я решил сделать игру. Не сервис, не бот с кнопками, а настоящую survival arena в духе Vampire Survivors, только целиком внутри Telegram. Без App Store, без установки, без регистрации. Открываешь бота, жмёшь «Играть» и через пару секунд уже уворачиваешься от толпы монстров.
t.me/olegs… (ссылка на игру в моём канале(последний пост))
Идея была простая: один тап
Мне хотелось, чтобы вход в игру не требовал ничего лишнего. Управление строится вокруг одного действия: тапаешь по экрану, герой делает рывок в эту точку. Дальше он сам атакует врагов оружием, а моя единственная задача как игрока — вовремя уворачиваться и не стоять на месте.
Звучит просто, но именно тут спрятана первая ловушка геймдизайна. Если рывок слишком сильный, игра превращается в автопилот: ты просто убегаешь от всего и не чувствуешь риска. Если слабый — раздражает. Баланс одного действия оказался сложнее, чем баланс десятка кнопок.
Что происходит в забеге
Формула короткая: тап → рывок → автоатака → волны врагов → опыт → улучшения → смерть → монеты → прокачка → новый забег.
Герой прокачивается прямо во время забега: набирает опыт, выбирает улучшения на level-up, открывает новые эффекты для оружия. Монстры при этом не стоят на месте — с каждой минутой волны становятся плотнее и злее. На каждой локации (я называю их биомами) стоит финальный босс, и чтобы открыть следующий биом, его нужно завалить. Это не бесконечный эндлесс без структуры, а путь от одной арены к другой.
Между забегами прогресс не сгорает. Монеты, которые ты собрал, тратятся на мету: прокачку здоровья, урона, скорости, магнита опыта и так далее. Плюс открываются персонажи, оружие и питомцы — сейчас их три, и каждый добавляет что-то своё в забег.
t.me/olegs… (ссылка на игру в моём канале(последний пост))
Результат каждого забега попадает в лидерборд. И вот тут я впервые почувствовал, что делаю не прототип, а продукт: как только в таблице появляются реальные люди, а не только твой личный рекорд, игра начинает работать иначе.
Почему именно Telegram
Меня зацепила мысль, что Mini App убирает главный барьер мобильных игр. Не нужно идти в стор, ждать одобрения, объяснять человеку, зачем качать очередное приложение на телефон. Ссылка на бота — и ты уже в игре.
Но это не бесплатный подарок. Telegram WebView — это не обычный браузер. На iPhone внезапно вылезает safe-area, которая съедает часть экрана. Один тап иногда превращается в два события. Canvas игры может перекрыть кнопки интерфейса. То, что идеально работает у меня в браузере на компьютере, на телефоне в Telegram может просто не нажиматься.
Пришлось разбираться с авторизацией через Telegram initData, с защитой этих данных на сервере, с тем, как аккуратно передавать управление между интерфейсом (он у меня на React) и самой игровой сценой (она на Phaser). Это два разных мира, которые общаются между собой через события: сцена «кричит» — игрок умер, — интерфейс это ловит и показывает экран результата.
Момент, когда чуть не сломалось доверие
В какой-то момент прогресс жил в двух местах одновременно: локально на телефоне и на сервере. И если синхронизация ломалась, у игрока могли пропасть монеты или откатиться прокачка. Для маленькой инди-игры это фатально — человек не будет разбираться, почему у него исчезли монеты, он просто закроет бота и не вернётся.
Пришлось остановиться и заняться тем, что не видно снаружи: сделать сервер главным источником правды, добавить очередь на случай, если сеть отвалилась, и написать серию скриптов, которые после каждого изменения проверяют, что экономика и лидерборд не разъехались. Не самая эффектная часть разработки, но именно она отделяет рабочий прототип от того, во что не страшно пригласить незнакомого человека.
Где помогал ИИ, а где не помогал
Я делал проект вместе с Cursor с первого дня, и это реально разогнало скорость: писать код, собирать сцены, чинить баги — всё быстрее, чем в одиночку без ассистента. Но у скорости есть цена. Фичи прибавлялись быстрее, чем я успевал держать архитектуру в порядке, и в какой-то момент пришлось притормозить и просто навести порядок: разложить самый разросшийся файл игры на части, дописать проверки, убрать дубли.
Хорошая формулировка, которая у меня осталась после этого этапа: ИИ ускоряет разработку, но не отменяет необходимость понимать, что ты строишь. Скорость без контроля — это просто быстрее прийти к хаосу.
Что дальше
Сделать первую играбельную версию оказалось быстрее, чем я думал. Гораздо дольше делать так, чтобы в игру хотелось вернуться на следующий день. Сейчас в TapSurvivor уже есть биомы, оружие, питомцы, лидерборд и поддержка через Telegram Stars, но главный вопрос для меня сместился с «смогу ли я это технически сделать» на «смогу ли я сделать так, чтобы люди возвращались».
Если хочешь просто попробовать: открывай бота, жми «Играть» и посмотри, сколько продержишься.
t.me/olegs… (ссылка на игру в моём канале(последний пост))