Wild World, два года спустя: как заброшенная текстовая MMORPG в Telegram получила второе дыхание

от автора

Выживший с винтовкой смотрит на оживающий лагерь из хлама на рассвете

Выживший с винтовкой смотрит на оживающий лагерь из хлама на рассвете

Полтора года назад я написал здесь первую статью о том, как решился в одиночку пилить текстовую MMORPG с открытым миром и фронтом на Telegram-боте. Закончил я её вопросом к читателю: писать ли дальше про разработку — или похоронить в себе писателя.

Комментариев под той статьёй не появилось ни одного. Так что писателя я честно похоронил.

А вот игру — нет. И вот спустя два года я возвращаюсь рассказать, что с ней стало. Заваривай чай, как в прошлый раз: разговор будет про цифры, про долгую тишину и про то, почему мёртвый, казалось бы, проект вдруг ожил.

Первая причина: полтора года я не трогал код — а люди приходили

Будем честны: после той статьи разработка почти встала. Жизнь, работа, маленький ребёнок — на хобби «для души» времени не осталось. Игра висела в альфе, я к ней не прикасался: ни обновлений, ни новых фич, ни продвижения. Я был уверен, что она тихо умерла, как умирают тысячи таких поделок на коленке.

А потом я заглянул в базу.

Люди приходили сами. Без анонсов, без рекламы, без единой строчки нового кода — находили бота, запускали его, создавали выживших и оставались. В январе 2025-го, в самый разгар моего простоя, за месяц зарегистрировалось 113 человек — больше, чем в любой месяц, когда я что-то активно делал. Кого-то приводил поиск, кого-то — старые следы в Telegram, кого-то пересказы друзей.

Вот как это выглядит на дистанции в два года:

График регистраций в Wild World по месяцам: март 2024 — май 2026, пик 113 в январе 2025

График регистраций в Wild World по месяцам: март 2024 — май 2026, пик 113 в январе 2025

Цифры на сегодня, без округления в красивую сторону:

  • 893 человека запустили бота за всё время;

  • 366 дошли до создания персонажа и реально играли на этом мрачном острове-песочнице;

  • и всё это — при том, что бóльшую часть времени игру никто не развивал.

Сразу честно, потому что иначе про это спросят в первом же комментарии: полноценной аналитики удержания я тогда не вёл, и сказать «D7 был такой-то» не могу. Но живые сигналы есть. Прямо сейчас, пока я пишу этот текст, в мире выполняется больше сотни фоновых задач игроков — кто-то добывает, кто-то крафтит, кто-то идёт через карту. Построено 73 базы. А один выживший добрался до 196-го уровня — это уже глубокий эндгейм. Средний уровень при этом низкий: большинство пробуют пару вечеров и уходят. Но кто-то остаётся надолго — и это для проекта без единого рубля в маркетинг оказалось неожиданно живо.

Глупо хоронить то, что само отказывается умирать. Это была первая причина вернуться.

Вторая причина: писать код стало в разы проще

Вторая причина приземлённее. За эти полтора-два года сам процесс разработки изменился до неузнаваемости.

Раньше каждая фича — это вечера и выходные, выдранные у семьи: написать, переписать, отловить баг, заново вкурить чужой код, а потом и собственный — потому что уже не помнишь, как там у тебя всё устроено. Сегодня рутину снимают инструменты, которых год-два назад просто не было под рукой. В том числе ИИ — он берёт на себя кусок чёрной работы: накидать черновик метода, разгрести рефакторинг, набросать тесты, быстро разобраться в незнакомом куске. Это не «магическая кнопка сделать игру»: архитектуру, баланс и все важные решения по-прежнему держишь в голове ты, и спорить с инструментом приходится постоянно. Но та часть работы, что раньше съедала энергию и убивала запал, ужалась в разы.

Вот тут и сошлось одно к одному: проект, который сам себя не отпускает, плюс возможность двигать его на порядок быстрее, чем в 2024-м. Игра получила второе дыхание — и последние два месяца разработка идёт совершенно сумасшедшими темпами.

А во что вообще играют эти 366 человек

На случай, если ты пришёл из заголовка и не открывал первую статью, — коротко о самой игре, без неё дальше будет непонятно.

Ты приходишь в себя на берегу острова после глобальной катастрофы. Вокруг — туман войны: видно только клетку под ногами и соседние. Каждый шаг открывает новый кусок мира — и обратно он туманом уже не зарастает. Дальше — обычная петля выживания, только текстом и кнопками в чате: разведываешь местность, добываешь ресурсы (у каждого биома свой набор), крафтишь из хлама инструменты и оружие, ставишь базу и обустраиваешь лагерь. База — это ещё и страховка: без неё смерть забирает половину нажитого, с ней — почти ничего.

А дальше начинается то, ради чего остаются: специализация крафтера, бои с обитателями пустоши, опциональные PvP-дуэли с рейтингом, и на десятом уровне — выбор одной из четырёх фракций, у каждой свой путь и свой сценарий финала для всего сервера. Остров не водит за руку дальше первого часа. Дальше только ты и твои решения.

Что изменилось под капотом за два года

Если коротко — почти всё, кроме идеи. Это по-прежнему постапок-песочница на острове 100×100 км, по-прежнему текст и кнопки в Telegram. Но внутри это уже не тот проект из первой статьи.

Что под капотом сейчас:

  • стек — PHP 8.2 + CodeIgniter 4.7, фронт по-прежнему Telegram-бот, весь мир, карта и состояние — на MySQL;

  • кодовая база — около 130 000 строк и под тысячу классов;

  • 233 миграции базы — схема пережила не один капитальный ребаланс;

  • 1133 автотеста и статический анализ PHPStan на максимальном, девятом уровне строгости. Для хобби-проекта это, наверное, перебор — но именно это позволяет катить изменения потоком и не разваливать игру. Тесты ловят не всё: как реально отрисуется сообщение в Telegram, всё равно проверяешь руками на живом боте. Зато фундамент держат крепко;

  • релизы идут почти без остановки: проект уже на версии v0.51.327, и каждую неделю выкатывается большой пул обновлений — новые фичи, ребаланс, контент и привычная пачка фиксов.

Один принцип, которым я горжусь — про баланс

Я пришёл к правилу: ни одно игровое число не живёт в коде хардкодом. Цена ремонта, шанс выпадения редкого ресурса, время крафта, налоги на постройки — всё это вынесено в админку как живые настройки. Поменять баланс можно без релиза и без деплоя, прямо на проде, и тут же увидеть эффект на живых игроках.

У каждой такой настройки рядом лежит обоснование: почему сейчас стоит именно это значение, на что оно влияет, что будет, если выкрутить выше или ниже, и жёсткие границы, за которые сохранить нельзя. Так «магические числа» превращаются в управляемый, задокументированный пульт настроек. Подробнее — в следующей статье.

Отдельно переделал сайт: ушёл от пёстрой вёрстки к строгой, плоской, «постапок-документальной» эстетике, единой с тоном самой игры. Он перестал быть визиткой на отвяжись и стал частью продукта.

О чём будет следующая статья

Это была затравка — про «что» и «почему». В следующей открою кухню и начну рассказывать «как»:

  • как вообще пилить MMORPG такого масштаба на CodeIgniter — фреймворке, который для игр всерьёз никто не выбирает;

  • какие из-за этого выборы оказались удачными, а какие — болью;

  • реальные проблемы, в которые я упирался, и как их решал — с кодом, схемами и граблями, всё под спойлерами, чтобы не пугать тех, кто пришёл за историей, а не за листингами;

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

Маленький тизер про стек

CodeIgniter дал скорость старта и предсказуемость: на нём легко держать в голове всё приложение целиком, а это бесценно, когда ты один. Но цена — ручная работа там, где более «тяжёлые» бэкенды и игровые движки дают вещи из коробки: реалтайм, очереди, строгую типизацию, аккуратную организацию игровых сущностей. Где именно тонко — разберу в следующий раз.

Зайти и посмотреть

Лучший способ понять, о чём вообще речь, — провести в этом мире один вечер. Разведать пару клеток, скрафтить первую кирку, поставить лагерь до того, как тебя застанет голодная ночь.

👉 Запустить Wild World в Telegram — бесплатно, без скачивания, прямо в мессенджере.

А первую статью, с которой всё начиналось, можно прочитать здесь — для контекста, как далеко проект уехал за два года.

В этот раз я не буду спрашивать, писать ли дальше. Дальше — техническая часть. До встречи в следующей статье.

ссылка на оригинал статьи https://habr.com/ru/articles/1042014/