Я не программист. Но два года в одиночку пилю MMORPG в Telegram, и весь её живой мир держится на одной строчке кода
Сразу честно. Я не программист с большой буквы. По образованию вообще не айтишник, до всего дошёл сам, на ходу. Не сижу на работе в хайлоаде, не пишу красивые архитектуры за зарплату. Просто мужик, который два года по вечерам в одиночку делает текстовую игру в телеграме. Мрачный остров, выжившие, туман войны на карте. И один я под капотом, с кружкой чая и гаечным ключом.
В прошлый раз я рассказывал тут странную историю. Я забросил эту игру на полтора года. Вообще к ней не прикасался. А люди всё это время в неё заходили и играли. Многие потом написали: давай дальше, покажи, как оно там внутри устроено. Ну, показываю. Только честно, без позы умного.
И начну с того, чего сам слегка стыжусь.
Знаете, на чём держится весь «вечно живущий мир» моей игры? Где выжившие крафтят, ходят через карту, строят базы, даже когда давно вышли из чата? На одной строчке. Буквально на одной.
* * * * * php spark tasks:run
Это крон. Раз в минуту он будит маленький скрипт, тот лезет в базу и спрашивает: так, у кого уже всё доделалось? Крафт топора шёл двадцать минут, время вышло — клади топор в инвентарь. Поход через полкарты закончился — двигай выжившего дальше. Вот и весь мой «игровой движок». Когда я это понял, было и смешно, и чуточку неловко.
Дальше пошли грабли. Те самые, на которых только и учишься.
Первое, что я словил. Дюп ресурсов. Сам у себя. Пока спал. Если скрипт не успевал разгрести всех за минуту, следующий запускался поверх и выдавал награду второй раз. Игроки могли бы плодить патроны из воздуха, а я бы узнал об этом из логов утром. Лечится это одной правильной школьной штукой, про которую все слышали. Но пока сам не наступишь — не прочувствуешь. Я наступил. Теперь прочувствовал.
Второе. Мёртвые кнопки. Буквально пару дней назад. Добавил встречи с бродягами. Подходишь к чужаку и можешь напасть, ограбить, заговорить. Залил на сервер. А кнопки не работают. Совсем. Жмёшь — тишина. Выживший стоит перед бандитом и тупо не может даже замахнуться.
И самое обидное. Это пережило вообще все мои тесты. Тысяча с лишним штук, все зелёные, всё довольно. А кнопка не нажимается. Потому что я опечатался в одном символе при настройке, и ни один тест туда не дотянулся. Поймал, только когда сел и потыкал руками сам, как обычный игрок. Урок прям на лоб себе записал: зелёные тесты, это прекрасно, но палец живого человека они не заменяют.
Теперь про модную тему, раз уж тут айтишники. Да, я тоже пользуюсь нейронкой. И сразу скажу, чтобы не закидали: на рутине она реально экономит время. Накидать черновик, переписать кусок, налепить те самые тесты. Но как только доходит до архитектуры или баланса, тут всё руками. Нейронка с уверенным лицом эксперта предлагает дичь, которая разнесёт экономику острова к чертям. Поэтому за руль я её не пускаю. Помощник — да. Не больше.
Ещё за эти два года я с гордостью выкинул из проекта целый язык. Раньше карту мне рисовал Python с умными научными библиотеками, выглядело солидно и по-взрослому. А потом я понял простую вещь. Карта нужна один раз. Сгенерил, она легла в базу миллионом клеток и больше не считается. Зачем ради разовой штуки таскать в проекте вторую экосистему? Выпилил. Меньше деталей — крепче сон.
И вот тут главное, ради чего я это всё пишу.
Когда я начинал, я умел только херачить корявый код и бояться собственного проекта. За два года, не вылезая из одного хобби, я на своей шкуре прошёл то, чего не даст ни один курс. Что такое гонки в коде — потому что у меня реально дюпали ресурсы. Зачем нужны тесты — потому что без них ломаешь старое новым. Когда стоит выбросить собственное «умное» решение, если оно больше не нужно.
И знаете, к чему я пришёл? Нет школы лучше, чем один живой проект, который тебе не безразличен. Не двадцатый туториал про список дел. А штука, в которую ходят настоящие люди и которая по-настоящему сломается, если ты накосячишь. Вот это учит так, как не научит ничто.
Получается, я думал, что делаю игру. А по факту два года делал из себя разработчика. И смешнее всего, что игра при этом ещё и работает. За всё время через остров прошло под полтысячи выживших, и десятки баз стоят на карте прямо сейчас. Кто-то добывает воду, кто-то ставит лагерь до голодной ночи, кто-то идёт через туман на восток.
Если вдруг любопытно глянуть, что это за остров, вот бот: t.me/wildworldrpg_bot
Это не реклама и не бизнес, заработка с этого ровно ноль. Просто хобби, которым захотелось поделиться. Кто дочитал до конца — спасибо, что уделили время.




















