Полтора года назад я написал здесь первую статью о том, как решился в одиночку пилить текстовую MMORPG с открытым миром и фронтом на Telegram-боте. Закончил я её вопросом к читателю: писать ли дальше про разработку — или похоронить в себе писателя.
Комментариев под той статьёй не появилось ни одного. Так что писателя я честно похоронил.
А вот игру — нет. И вот спустя два года я возвращаюсь рассказать, что с ней стало. Заваривай чай, как в прошлый раз: разговор будет про цифры, про долгую тишину и про то, почему мёртвый, казалось бы, проект вдруг ожил.
Первая причина: полтора года я не трогал код — а люди приходили
Будем честны: после той статьи разработка почти встала. Жизнь, работа, маленький ребёнок — на хобби «для души» времени не осталось. Игра висела в альфе, я к ней не прикасался: ни обновлений, ни новых фич, ни продвижения. Я был уверен, что она тихо умерла, как умирают тысячи таких поделок на коленке.
А потом я заглянул в базу.
Люди приходили сами. Без анонсов, без рекламы, без единой строчки нового кода — находили бота, запускали его, создавали выживших и оставались. В январе 2025-го, в самый разгар моего простоя, за месяц зарегистрировалось 113 человек — больше, чем в любой месяц, когда я что-то активно делал. Кого-то приводил поиск, кого-то — старые следы в Telegram, кого-то пересказы друзей.
Вот как это выглядит на дистанции в два года:
Цифры на сегодня, без округления в красивую сторону:
-
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/