Часть 12. Оно живое. Начало

Это 12-я из 16 частей. Про то, как я взялся собирать сервер, который никто не просил: первое железо, чужое ядро, программист, который пропал, и первые купленные моды. Март 2023-го — декабрь 2024-го.


Целых 5 частей подряд я рассказывал, как у меня что-то отнимали. Эта часть про другое. Про то, что я сделал сам. Спойлер: это тоже было тяжело. Но здесь я хотя бы выбирал.

Март 2023

Идея была не моя.

Знакомые предложили мне собрать свой сервер ещё в начале 2023-го. А в марте человек из нашей группы в Телеграме — «Мьютилка 2.0», по совместительству генеральный директор моего интернет-провайдера — предложил то же самое, но уже всерьёз.

Он знал, что я много играл на серверах с техническими модами. Знал, что мне это уже предлагали. И знал, что я умею делать сайты.

Я за эту идею уцепился.

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

Первый сервер

Разговор об этом шёл всё лето. Условие с той стороны звучало прямо:

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

Тут же прозвучала и оговорка, что получиться может, «как с сервером для торрентов», — то есть долго и через жопу. Так, собственно, и вышло.

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

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

С лаунчером вышла отдельная песня. Тот, кто писал его до меня, сделал так: каждая сцена разнесена по отдельным шаблонам и стилям, сами стили написаны так, что просто не работают, а вместо картинок везде вставлен голый SVG — то есть картинка в виде кода. Из-за этого я не мог даже логотип поменять: логотип в файле выглядит как несколько экранов координат подряд. Свой я в итоге собрал из картинки, которую сначала сгенерировал нейросетью.

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

Лето — осень 2023. Откуда взялось железо

Пока шли эти разговоры, надо было где-то взять железо. История эта заняла полгода и стоит того, чтобы рассказать её целиком.

Чтобы вообще видеть, что получается, пришлось подключить вторым монитором старый 19-дюймовый — он висит над 40-дюймовой панелью, так что работать приходилось, задирая голову. Готовые сборки я отправлял dukeabv: он единственный, у кого была Windows под рукой, и он тыкал в лаунчер и присылал мне скриншоты того, что вылезало.

Условия, в которых всё это делалось, стоит представлять. Работал я из Linux на том же самом компьютере, который к тому моменту уже дважды умирал, — и он перезагружался сам по себе, случайным образом, с любым дистрибутивом, который я на него ставил. Ни ошибок памяти, ни проблем с диском проверки не находили. 2 августа 2023-го он сделал это 4 раза за день; час работы в консоли — коту под хвост, и так по кругу.

16 августа меня взломали. Захожу — аккаунт не подключается в лаунчере, лаунч-сервер не видит базу. Открываю базу, а таблиц нет, вместо них записка: все ваши базы у нас, переведите 0,012 биткоина на такой-то адрес и напишите нам, указав IP сервера и номер транзакции. По тогдашнему курсу — что-то около 350 долларов.

Вот так и держи phpMyAdmin в каталоге, доступном по своему же IP.

Обошлось: у меня были бэкапы.

К 20 августа выяснилось и главное ограничение. Мой компьютер всё это просто не вывозил: сервер, лаунч-сервер, сайт и сверху клиент игры. Хватало 5 минут запущенного клиента — и машина висла намертво. Причём работал я при этом в Linux, где нагрузка меньше.

Окончательно это стало ясно в сентябре, когда дело дошло до генерации мира. Мир надо прогружать заранее: если этого не сделать, он будет генерироваться на ходу, пока по нему ходят игроки, — и лагать будет у всех. Так вот, прогрузить его на своей машине я не смог. Она сжирала гигабайты памяти, не дойдя даже до сотой доли процента.

Дальше простая арифметика. Мир с десятком дополнительных измерений и радиусом в 5 тысяч весит, по чужим отзывам, около 30 гигабайт. У меня основной мир — радиусом 50 тысяч, дополнительные — по 30. То есть на выходе 200 с лишним гигабайт при том, что весь мой SSD — 128. И это не считая того, что потом всё это надо как-то залить на сервер.

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

Отдельная история была с сертификатом. При регистрации домена мне выдали SSL — обычный, промежуточный, корневой, запрос и ключ, — и когда он понадобился, выяснилось, что ключ не подходит ни к одному из них и ни ко всем сразу. Сделал в итоге через Cloudflare, потому что по-другому не открывались нужные порты.

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

Сразу спросил: есть железо под майнкрафт? Конечно есть. Как дошло до дела, начались какие-то отмазки. Я говорю: зачем вы меня перед человеком пиздаболом выставляете? Раз пообещали — найдите время и сделайте.

Когда тот человек наконец вернулся из командировки, выяснилось, что проблема не в железе, а в том, куда его поставить. Серверные у них разные: где-то предел по охлаждению, где-то нет гарантированного электропитания, где-то просто нет места. Идеального варианта нет нигде.

Тогда и прозвучало предложение, от которого мне стало не по себе: привезти сервер ко мне домой. Отговорил их, к счастью, сам инициатор — решил, что это ненадёжно. Мои доводы были простые: у меня комната 3 на 3, круглосуточно держать включённым такое мне негде, и канал у меня 500 мегабит, а не 2,5 гигабита. По словам техника, на мою линию можно подать максимум гигабит.

Из плюсов, как мне сказали, зимой было бы теплее.

Тот человек договорился с другим провайдером: те дали железо безвозмездно. Xeon, 16 гигабайт DDR3, старый жёсткий диск на 4 терабайта. Расчёт был простой — если проект взлетит, провайдер получит трафик.

Октябрь 2023. Железо, которое ничего не тянет

Выдали мне его 17 октября — и оказалось, что это не совсем то, что показывали. Вместо 2 процессоров по 6 ядер — 8 ядер и 16 гигабайт памяти на виртуальной машине. Вместо тех терабайтов — 250 гигабайт. Для мира, который, как вы помните, весит за 200, это не помещается вообще никак, о чём я сразу и сказал.

Настроено там всё было так, будто специально: чтобы ничего нельзя было сделать. С этого и началась моя работа — с перенастройки. Процессор, когда я посмотрел модель, оказался 2010 года.

Дальше стало ещё интереснее. Я перенёс туда сайт со всем, что к нему прилагается, настроил всё ровно так же, как было у меня на компьютере, — и страницы стали открываться до 2 минут. Хоть по домену, хоть по адресу. На моей домашней машине с её 500 мегабитами сайт летал. Мало того, пришлось вручную прописывать в системе публичные DNS-серверы, иначе она вообще не видела интернет: даже до собственных серверов операционной системы она достукивалась еле-еле.

С такой скоростью там нельзя было держать даже сайт, не то что игровой сервер. На следующий день, после моих жалоб, что-то на их стороне поправили, и сайт наконец залетал.

А вот с миром вопрос так и не решился. Даже при радиусе в 10 тысяч основной мир занимает около 200 гигабайт — а у меня к нему 46 дополнительных.

Я всё-таки попробовал. Уменьшил радиус до тех самых 10 тысяч и запустил генерацию прямо там. За час набежало 0,2 процента — то есть суток 5 при идеальном раскладе. На 1,5 процента сервер съел всю память и лёг: «доступной памяти очень мало, задача приостановлена». Я убрал мод, который подозревал, запустил заново — 4,7 процента за 2 часа. И тут же выяснилось, что мой домашний компьютер, запущенный позже, обогнал этот сервер.

Тут надо понимать одну особенность: игра эта умеет занять от силы 2 потока, так что количество ядер ей безразлично — важна частота. А выданному процессору было 13 лет.

Вывод я записал коротко: без нормального железа мир я не прогружу, и здесь мои полномочия заканчиваются. Мне нужен был радиус 50 тысяч, а не 10 — и даже 10 никуда не помещались.

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

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

Второй — dukeabv. Он в тот же вечер сел разворачивать у себя виртуальную машину с Ubuntu, чтобы я мог загрузить туда сервер и попробовать сгенерировать карту на его железе. Человек, который в жизни не открывал Linux, ставил его с нуля и разбирался в настройках только ради того, чтобы я мог проверить свою карту. Файлы мы в итоге передавали через программу удалённого доступа, потому что буфер обмена между системами не работал.

Результат этой проверки и стал ответом на всё. Его машина — свежий 8-ядерный процессор и 32 гигабайта памяти — выдавала около 100 чанков за проход, тогда как выданное мне «железо» — от 8 до 20, изредка 40. И даже так расчёт получился такой:

  • радиус 10 тысяч — сутки;
  • радиус 50 тысяч, который мне и нужен, — в 25 раз больше, то есть месяц. И это только основной мир;
  • а дополнительных миров у меня 46. Даже если всем поставить по 10 тысяч — 47 суток при идеальном раскладе.

И держать чужой домашний компьютер занятым неделями никто, разумеется, не может.

Пробовал я и третий вариант — microwin7 дал доступ к своему серверному железу. Там начиналось бодро, под 500 чанков за проход, потом скорость резко падала, потом полетели ошибки, а потом машина просто умерла.

Оставалось не делать прегенерацию вообще — и тогда выданный сервер ляжет от десятка игроков, которые начнут ходить по несгенерированной карте.

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

Я всё-таки поставил генерацию полного мира и оставил её идти. С 3 часов ночи до 1 дня набежало 1,1 процента — то есть около 40 суток на один только основной мир. Закономерность к тому моменту была понятна: чем дольше идёт генерация, тем больше она съедает памяти, а чем меньше памяти остаётся, тем медленнее она идёт. Я даже поставил автоматический перезапуск раз в час — помогло слабо.

А 22 октября у провайдера случилась авария. Легла вся сеть: и мой сервер, и тот самый городской ресурс, на котором я работаю. Подняли, уронили снова, и так весь день.

Из-за этих отвалов сервер терял связь с лаунч-сервером и падал вместе с ней. К ночи выяснилось, что генерация сломалась окончательно: карта, на которой было около 2 процентов, отправилась в мусор. Заново — значит с нуля: создать карту, прогнать генерацию, а потом ещё раз сделать спавн, защищённые точки перехода во всех дополнительных мирах и всё остальное. Спавн и точки я делал ещё дома, до переноса, — и всё это ушло вместе с картой.

Тогда я и сдался в главном. Удалил старый мир — те самые 2,8 процента — и уменьшил границы: основной мир до 30 тысяч, дополнительные до 10. Через пару часов уменьшил и основной до 10.

Большие миры должны были стать фишкой проекта. Обычно на серверах делают мир на 10 тысяч и вайпают его раз в полгода, обнуляя весь прогресс игроков; я хотел, чтобы у людей было куда расселиться и что осваивать годами. От этого пришлось отказаться.

Даже так генерация одного мира на 10 тысяч заняла порядка 30 часов и 40 гигабайт диска — при том, что таких миров 47, а сверху нужны ещё резервные копии: полная копия сервера каждые 3 часа, иначе при любой поломке нечего будет откатывать.

Столько месяцев бесплатной работы, а я даже карту в тридцать тысяч сгенерировать не могу. У меня уже в конец руки опускаются.

И вот тут, 24 октября, случилось открытие, от которого я до сих пор немного в бешенстве.

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

Хуже не стало. Стало в разы лучше. Там, где в Linux шло по 8–40 чанков за проход, здесь стабильно шло по 2,5 тысячи.

ШТО ЭТО ЗА ЧУДЕСА. Надо было с самого начала генерировать на винде!

Всё это время — недели расчётов, чужие компьютеры, умершее железо знакомого, разговоры про частоту процессора — упиралось, судя по всему, в то, как виртуальная машина с Linux работает с Java. У dukeabv, к слову, на его Windows тоже пошло — хоть и медленнее моего.

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

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

Готовый основной мир даже на 10 тысячах занял больше 20 гигабайт. Считаем дальше: 50 тысяч — это около сотни гигабайт, дополнительные по 30 — по 60. Всё вместе — почти 3 терабайта. Даже если всем мирам поставить по 10 тысяч, выходит терабайт. У меня на диске было свободно 80 гигабайт.

А когда dukeabv начал генерировать шахтёрский мир на 30 тысяч, оценка стала ещё веселее: 8 процентов карты — 12 гигабайт, то есть вся она вытянет под 150. Умножаем на количество — и только 6 основных миров дают под терабайт, а все 47 — около 5. И это без резервных копий, которых по-хорошему нужно 24.

Но как же сука всё далеко от идеала.

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

Реакция сверху была предсказуемой: мои требования вызвали «некоторое удивление». Ответ звучал так: дополнительные миры не надо генерировать огромными, и копировать их дважды в сутки тоже смысла нет. Я предложил 2 варианта конфигурации — 16 гигабайт памяти и диск на 128 или 32 и 240. Мне ответили, что диск ищут.

Был и крайний вариант, который я тоже назвал: выкинуть из сборки все космические моды. Тогда миров останется 6 вместо 47 — но не будет ни ракет, ни космоса, ни других планет. Ради этого, вообще говоря, в такие сборки и играют.

Готовые куски карты мы с dukeabv потом передавали друг другу напрямую, через P2P-клиент: 20 гигабайт на скорости от нуля до 2,5 мегабайта в секунду. Облачные диски у меня на 15 гигабайт, туда бы это просто не влезло.

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

Какое железо — такие и карты.

Про владельца железа мне тогда же объяснили довольно точно. Это директор третьей компании, и сервер в майнкрафт у него в приоритетах где-то между «постричь ногти» и «вынести мусор».

29 октября место всё-таки дали: диск на 4 терабайта. Но и здесь без фокуса не обошлось. Вместо того чтобы просто расширить существующий диск виртуальной машины, его подключили отдельным — и написали: «поскольку мне не сообщили, куда его монтировать, прихерачил в такую-то папку. Дальше пускай сам».

А панель управления сервером ставится в корень системы, и сменить папку у уже созданного сервера нельзя. То есть весь сервер надо было переносить руками. Перенос повис на несколько часов, ничего не сделал, а потом оборвался — и я не знал, уцелели ли готовые карты или часть файлов побилась.

Резервных копий у меня, разумеется, не было: их всё это время было некуда класть.

Скорость нового диска оказалась такой, что я сразу заподозрил древний интерфейс. От неё, между прочим, зависит и генерация, и будущие лаги у игроков.

Сука, почему я такой нищеброд. Сейчас бы нормальный сервер оплачивать, а не вот это всё.

Хостинг за границей стоил тогда около 1700 в месяц. Оплатить его из России нечем, а на сайт без обхода блокировок не зайти — и если там узнают, откуда ты, аккаунт просто заблокируют.

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

Ноябрь 2023. Диск скоростью флешки

А в начале ноября всё пришлось начинать заново — в третий раз. Один из модов ломал генерацию мира Края, хотя к нему вообще не имел отношения; удалить его нельзя — тогда рассыпаются все уже готовые миры. Нормально сгенерировались 5 миров, на 6-м всё пошло по кругу.

А теперь опять всё с нуля.

Единственное, что я сделал правильно: в этот раз не стал заранее ставить спавн, запреты и стартовые наборы, пока карта не сгенерируется до конца. Иначе точно бы плюнул.

Мне тогда написали: «ты как самурай». Я ответил, что цель у меня всё-таки есть — закончить уже.

Кое-что в итоге получилось. Мир Края на 50 тысяч сгенерировался за двое с небольшим суток и без единого падения — на моей домашней машине, под Windows.

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

К середине ноября список того, что осталось не готово, я держал перед собой в 4 пунктах: личный кабинет; плагин на режим неуязвимости; генерация космических миров; проверка скриптов, усложняющих крафты. И напротив каждого — причина, по которой он стоит. Кабинет — отговорки. Плагин — игнор. Миры генерятся. А скрипты надо проверять живыми людьми, которых пускать на сервер пока нельзя.

Своё я тоже подкидывал исправно. Разбираясь, куда поставить спавн, я закидывал в сервер сгенерированные миры один за другим — и, удаляя лишние, снёс тот, который удалять было не нужно. Генерировать заново.

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

Заодно выяснилось, во что превращается на этом диске обычное копирование. Скопировать папку с уже сгенерированными мирами на подключённый жёсткий — это, по расчёту файлового менеджера, часов 10. Это 240 гигабайт. Резервная копия заняла бы столько же.

Скорость этого диска на 4 терабайта, если перевести в понятное: 24 гигабайта в час. То есть 6,5 мегабайта в секунду. Скорость обычной флешки USB 2.0. Диск при этом не делал больше ничего — он вообще ни для чего, кроме сервера, не использовался.

Оптимистичным этот расчёт оказался ещё и потому, что копия так и не сделалась. Я запустил её на ночь. К 6 утра из 240 гигабайт было скопировано меньше 40; часам к 8–9 перезагрузилось не то железо, не то сам сервер — и запустился заново, забив на копию. Полной резервной копии нет. Значит, если карта сломается — а вероятность этого очень большая, — всё снова с нуля.

И задним числом всё это выглядело особенно красиво. Место мне выдали маленьким куском на диске, который у них на 16 терабайт. Увеличить его за счёт основного было «нельзя». А потом оказалось, что виноват я — потому что пришлось подключать отдельный диск.

И вот тут я впервые написал вслух то, чего до этого старался не писать:

Никакие костыли, гениальные идеи и архивация тут не помогут. Каким бы большим ни было моё желание, мои полномочия тут реально всё. Жёсткий диск, не способный держать даже скорость флешки, — это финиш.

Чтобы был понятен масштаб: полностью сгенерированы к тому моменту были 7 миров из 46. Каждый мир размером 10 тысяч — это больше полутора тысяч отдельных файлов. И эти 7 уже заняли 240 гигабайт.

Сначала хотели сервер ради трафика от игроков. А в итоге даже не думают о том, как это всё должно работать на таком древнем железе.

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

К этому времени PHP-программист ушёл в полный игнор. Не забанил, как джавист, — просто перестал отвечать. А без его кабинета на сайте нет ни голосования, ни топа, ни ещё пары вещей, которые я задумывал.

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

Это так не работает, что весь сайт обновляется под хотелки программиста, делающего к нему модуль.

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

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

Ответа по существу не было. Зато почти сразу на него посыпались отзывы других заказчиков: люди точно так же заказали работу, точно так же ждали, и им он точно так же кидал отмазки — «подождите, пока я на работу устроюсь, пока на ноги встану». В переписках, которые они выложили, он, кстати, отмазывался в том числе и моим заказом.

После этого он отключил у себя показ времени последнего посещения. Я решил, что на этом всё.

Оказалось, не всё: он ещё несколько месяцев продолжал отвечать — и кормить меня тем же самым.

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

Кончилось это наполовину. К концу месяца регистратор скинул цену: вместо 2,5 тысячи за один домен продление обоих выходило в 800 рублей, а третий давали в подарок. Знакомый подкинул денег, я оплатил — и продлился только один, в зоне «ру». Второй, «онлайн», как был непродлённым, так и остался: если продлевать его отдельно, это снова 2,5 тысячи.

Я написал регистратору и стал ждать ответа, понимая, что раньше понедельника его не будет.

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

Продление «онлайна» отдельно — 2,5 тысячи в год.

А нужен он был не из тщеславия. На «ру» из Беларуси и с Украины попасть тяжело, а «онлайн» открывался откуда угодно и с нормальным пингом. То есть я терял ровно тех игроков, ради которых его и брал.

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

Чем это обернулось, стало видно в мае 2024-го. Пришли люди, готовые дать тот самый трафик, ради которого мне и выдали железо, — и не смогли подключиться без VPN, потому что были с Украины. Будь домен не в зоне «ру», проблемы бы не было. Но такой домен стоит как подбитый самолёт, а продление и того дороже.

Год работы в одиночку

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

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

Помощи ждать было неоткуда. Когда выкладываешь на форум лог на 5 тысяч строк, из которых 2 тысячи — предупреждения и ошибки, тебе первым делом отвечают, что дело в железе. А разгребать 240 модов за спасибо никто не станет. Типичный набор ответов на русских форумах на конкретную ошибку выглядел так: попробуй полностью удалить, попробуй обновить драйверы видеокарты, попробуй выделить больше памяти.

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

Отдельного человека мне тогда очень не хватало. Личный кабинет на сайте взялся сделать вебмастер — вменяемый, за полторы тысячи, — но требовал доступ по SSH или FTP. А сервера у меня нет: всё крутится на моём домашнем компьютере, и пускать в него постороннего я не собирался. Я предлагал: дам движок и доступ к базе, отредактируй у себя, скажи, что менять. Не сошлись.

Отдельная история — с человеком, писавшим на Java. Мне нужно было починить плагин, отвечающий за режим неуязвимости, или написать свой. Он сказал: да там пара строк кода, сделаю изи, без проблем. Потом тянул время: дел полно, сделаю, не бойся. А потом однажды ночью вышел на связь и сообщил, что не хочет, не будет и чтобы я к нему больше не обращался.

Других знакомых, пишущих на Java, у меня попросту нет. Я облазил все форумы и все группы в Discord, какие нашёл и какие мне подсказали, — решения не нашёл.

Был и второй заход. Тот же человек, который однажды уже собирал рабочий личный кабинет из этого движка, обсудил со мной всё, что нужно, назвал цену — те же полторы тысячи, — а потом ответил: времени нет, дел много. Не «не буду», не «дорого» — просто слился, хотя работа была платная. Других знакомых PHP-программистов у меня попросту не было.

Третий заход был уже за деньги — и всё равно кончился ничем. Человек взял оплату и не доделал: я прямо писал, что эта тягомотина меня измучила, а в ответ получал отговорки. Как можно не выполнять взятых на себя оплаченных обязательств, я до сих пор не понимаю.

Формулировка, которая меня добила, была такая: вот если завтра устроюсь на официальную работу, может, тогда и закончу кабинет. То есть человек сидит без работы и без денег — и именно поэтому не хочет доделывать то, за что ему уже заплатили.

Ладно, когда ты болел или у тебя серьёзные проблемы. Но «я нихуя не делал, потому что не хотел» — это эпический проёб и похуизм.

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

Год я подбирал моды и плагины, настраивал конфиги, писал скрипты и выгребал критические ошибки, которых было очень много. Взял CrucibleMC как ядро, GravitLauncher как лаунчер, поднял сайт на DLE.

Потом позвал знакомых тестировать. Через несколько недель мы сошлись на том, что сборка нестабильна и дырява. Перевёл всё на GTNH — и вот это уже было хорошо.

А потом железо сломалось.

Условие

Логика владельцев железа была своя и по-своему справедливая: год прошёл, в продакшн вы не вышли, чините сами. То есть покупайте диск.

Денег у меня не было. Совсем — см. предыдущие 5 частей.

Знакомые-тестировщики сказали разумную вещь: вкладываться в сервер, который у тебя в любой момент заберут, смысла нет. Но мы скинемся, чтобы ты собрал своё.

Собрали 15 тысяч. Я нашёл ещё 10 — до сих пор не очень понимаю, каким чудом. Процессор взяли мой старый, Ryzen 5 1500X. Блок питания тоже мой, на 400 ватт. Купили материнскую плату, память, корпус с нормальным охлаждением, коммутатор.

dukeabv — тот самый, с которым мы познакомились в «Мьютилке» — помог с охлаждением на процессор. И вообще много с чем помог, это не последнее его появление в этой части.

Я собрал сервер. Он встал у меня дома.

Это в 2 абзацах. А как оно было на самом деле — со сроками, ценами и тем, что из этого не встало, — дальше, в июньских и июльских записях.

Про интернет, на котором всё это живёт

Отдельно надо сказать, на каком канале работает всё, о чём идёт речь дальше, — потому что это объясняет половину дальнейших сложностей.

Проводного интернета у меня нет. Есть мобильный: роутер, заточенный под конкретного оператора, и симка с тарифом, которую ещё надо где-то достать. Весной 2023-го я объехал город в поисках такой симки; в единственном месте, где они по сайту значились, на месте оказалось «нету, есть вот за тысячу семьсот, восемьсот пятьдесят в месяц».

Тот самый человек из городского чата предлагал провести мне нормальный интернет от их оператора — если получится. Тянуть надо было издалека, и упиралось всё в клиентов: если наберётся хотя бы 10, линию проведут месяца за 3, если больше — можно и за неделю. Он даже нашёл 3 садика, с которыми собирался договариваться; плюс я, плюс двое моих соседей.

Дальше выяснилось, что своего оператора тянуть не будут, а подключат меня по договорённости с другим, крупным. Сначала специалист должен был выйти в понедельник, потом «на следующей неделе вас вроде подключат». Никто не вышел.

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

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

Сцена вышла отдельная. Монтажник чего-то не понимал, звонил своему начальству, не дозвонился; я предложил спросить у моего знакомого и передал ему трубку. Как он выглядел, когда сообразил, с кем говорит и чьё имя стоит в договоре, я запомнил надолго.

— А ты чё не сказал, кому трубку передаёшь? Я думал, ты ему: кончай тупить, сейчас твоему директору наберу, он тебе объяснит.

Так у меня наконец появился нормальный интернет — тот, на котором дальше и работает всё, о чём эта часть.

Бесплатным он, впрочем, не стал. За сам тариф и за выделенный IP-адрес я действительно не плачу — а вот оборудование моё. Старый роутер таких скоростей не потянул бы, нужен был гигабитный, а 4 тысяч сразу у меня нет — взял в рассрочку, по 400 рублей на 10 месяцев. Приставку рассрочкой не оформляют: либо выкупать за 4,5 тысячи, либо арендовать за 200 в месяц. Итого выходило примерно на 200 рублей дешевле, чем я платил за мобильный, — но зато со скоростью, на которой можно работать.

По сути хорошего тут два. Первое — я буду платить за интернет на двести рублей меньше. Второе — будет нормальная скорость. Влияет ли это на всё остальное дерьмо? Сомневаюсь. Меняет ли что-то в моей жизни? Тоже нет.

Именно поэтому позже, когда я подниму интернет-радио — это уже в 13-й части, — я и напишу, что лишний трафик мне не мешает: может, увидев его, провайдер наконец раскошелится на отдельную линию.

Работает этот канал, впрочем, не всегда. 9 мая 2024-го скорости не было вообще: замер её то показывал, что всё в порядке, то сам не открывался; загрузка скакала от 80 килобайт до 5 мегабайт в секунду. Отдача при этом упала до 57 мегабит, хотя обычно была такой же, как загрузка. Мобильный интернет в тот же день отваливался тоже — то есть дело было не в одном операторе.

Человек, который обещал

Параллельно шла история с сайтом.

С сентября 2023-го у меня был нанят PHP-программист. Он должен был доделать сайт и сделать магазин, где игроки меняли бы бонусы за голоса на игровые предметы.

Сайты я, надо сказать, делал и раньше. Когда-то — на PHP-Fusion, и самый крупный мой заказ тех лет был копией известного тогда игрового портала: пришлось даже переписывать движок. Исходники по договорённости остались у меня, и потом я переделал этот дизайн под свой проект.

Так что фронтенд я делаю сам. А вот бэкенд — это не ко мне, поэтому управление контентом стояло на готовой системе.

Первую версию сайта проекта я собирал на React и в мае 2023-го переводил на Next.js: пришлось уйти от рендеринга на стороне пользователя к серверному. Тогда же я приценивался к зарубежному хостингу — за 380 рублей там давали 2 ядра, 4 гигабайта памяти и канал до 10 гигабит, тогда как у наших то же самое стоило 600 с лишним. Плюсом можно было бы поднять собственный VPN. Всё уперлось в оплату: оплатить зарубежный сервер из России было нечем — нужна была карта чужой страны и крипта, то есть та же схема, что и с переводами.

Кстати, о ней. Первую версию сайта проекта взломали ещё до того, как я успел его открыть. Полез разбираться и понял, через что: через тот самый модуль, которым я закрывал доступ к панели управления.

Он не сделал ничего.

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

Сайт из-за этого годами стоял на техобслуживании.

Как выглядели эти отмазки под конец, видно по 18 мая 2024-го. Он прислал несколько голосовых, общий смысл которых сводился к одному:

Сигарет нет, денег нет, поэтому ничего делать не могу.

Я тогда написал ему разбор по пунктам — и то же самое выложил в группу с игроками, убрав только его имя. Не работало пополнение баланса. Не было сделано то, о чём он сам говорил: скрытие групп ниже купленной (и группы, купленные навсегда, продолжали предлагаться к покупке). В голосовании конфиг он сам называл нежизнеспособным и обещал доделать — а по факту за голоса выдавалась не та валюта, награду для каждого сайта-топа настроить было нельзя, обещанный скрипт ежемесячной выдачи так и не появился, и работает ли недельная награда, понять было невозможно: суммы под топами брались из конфига, а недельная — из шаблона. И 4-м пунктом — магазин, точнее его отсутствие.

На всё это я тогда ответил сам себе:

По факту — одни проблемы и никаких решений.

Про сигареты я сказал ему одно: я тоже без них тяжело живу, но порой приходится. Разве это повод сказать начальнику «иди на хуй, не могу без сигарет работать»?

Ответа на разбор не было. Вместо этого он молча сидел и удалял из нашей переписки мои стикеры.

Потом я нанял другого — Rikhter, знакомого и одного из тех, с кем проект вообще задумывался, за 1000 рублей в неделю. Он договорился с microwin7, что тот закроет магазин. Магазин в итоге доделывали мы вдвоём с Rikhter — второй тоже отвалился.

Стена

Дальше я упёрся в стену, которая 3 года определяла всё.

CrucibleMC оказался нерабочим: сборка крашилась, сыпала ошибками и грузила железо так, что оно не выдерживало. Я стал искать замену и нашёл — Ultramine Core. Очень производительное ядро, многопоточное, всё как надо.

С одной деталью: Ultramine не поддерживает плагины вообще.

А без плагинов сервер, задуманный так, как я его задумал, не собрать. Знающие люди скажут, что всё то же самое можно сделать forge-модами. Знающие люди правы. Только вот бесплатных модов, которые полноценно заменяют плагины, не существует.

Ценник на платные выглядел так:

  • минимальный набор, разовая покупка без обновлений — 30 000;
  • то же самое с пожизненными обновлениями — 72 000;
  • плюс само ядро: одна ветка 25 000, вторая 35 000, обе с доступом к исходникам — 50 000;
  • всё вместе — 130 000.

Напоминаю вводные: пенсия 16 143 рубля. Зарплата 5 тысяч. Долг 201 тысяча.

Попытка обойти

Java я не знаю. Программистов, готовых делать это бесплатно, нет — я искал, писал везде, никто не откликнулся. Бесплатно такое никто делать не будет, и я их, честно говоря, понимаю.

Тогда я решил попробовать через нейросеть. Мне дали доступ к бизнес-версии, без лимитов.

Не сработало. На Java она пишет неплохо, моды под Minecraft делать может — но под современные версии. А мне нужна 1.7.10, версия 16-летней давности. Без собственного знания языка, одними силами нейросети, хороший мод под неё не соберёшь.

Так что мы вернулись туда, откуда начали: всё упирается в деньги, которых нет.

Моды я покупал по одному, годами, по мере появления денег. Часть — в кредит, по 3 тысячи в месяц. За это время цены выросли: то, что я брал за 2 тысячи, теперь стоит 5, а с обновлениями 15.

Январь 2024. Первое объявление

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

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

Первая — урон от нескольких модов (солнечная радиация, отсутствие кислорода, тьма в подземном мире) проходит сквозь защиту режима неуязвимости: он наносится не как урон, а как понижение жизни.

Вторая — не готов личный кабинет.

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

Там же я коротко объяснил, что случилось с теми, кто должен был это сделать: PHP-программисту работа была оплачена, результата нет до сих пор, и есть немалая вероятность, что он просто исчезнет; джавист, обещавший починить плагин, в итоге отказался; а пара человек, обещавших помочь с тестами, вечно заняты — например, другими играми.

Ответа не было вообще.

Хоть бы блядь кто-то что-то написал.

Январь 2024. Лаунчер, который пришлось пересобрать

История с Java получила продолжение в том же январе. Выяснилось, что для части людей «удалить у себя восьмую Java и поставить семнадцатую» — задача непосильная, а автоматическая установка нужной версии есть только в новой версии лаунчера. Значит, надо обновляться.

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

Нормальные программисты в новых версиях делают обратную совместимость со старыми. А тут — делайте всё с нуля.

Отдельная деталь: её лаунчеру нужна как минимум 17-я Java, а его серверной части — 21-я. При том что все остальные пишут лаунчеры совместимыми с 8-й; проекта, где для запуска лаунчера требовалось бы больше, я не встречал.

Уйти на другой лаунчер нельзя. Их всего-то существовало 2 или 3, и все давно мертвы; её лаунчер сделан на основе одного из них. Другие проекты работают на той же базе — но у них есть свои программисты на Java, а у меня нет.

Выбора нет.

12 января я доделал рантайм, 13-го — престартер, чтобы игроку не приходилось ничего ставить руками. Лаунчер собрался и заработал.

А новый клиент запускаться отказался.

Собственно, опять мои полномочия всё.

На объявление к тому моменту откликнулся один человек, и тот был занят своими задачами. А PHP-программист продолжал в прежнем духе: завтра, может, выходной — ой, нет, всё-таки работаю — ой, устал, сил не было.

17 января я сформулировал итог этой зимы так:

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

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

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

Платный, разумеется.

И висело над всем этим ещё одно: железо у меня пока есть, но его могут забрать в любой момент. Договорённость была на трафик, а трафика нет.

При этом руки у меня не опускались — просто делал то, что мог сделать сам. За те же выходные, с пятницы по воскресенье, я взял чужой мод, разобрал его и переделал под себя: теперь на сервер можно вывести любое изображение — залитое ко мне на сайт, — в любом месте, любого размера, с поворотом вслед за камерой игрока по горизонтали и по вертикали, и задать дистанцию, с которой оно видно. Двое суток работы.

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

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

Деньги на ветер. А когда лимит всё-таки частично заработал, на моём объёме кода он упирался в ограничение по запросам.

К концу января история с кабинетом дошла до точки, где я перестал считать её частным делом. Тянулось это с сентября. Сначала у него были проблемы со здоровьем и больница — это я понимал. Потом газовый котёл — это я тоже понимал. А потом пошло: не было настроения, нет денег на сигареты, заигрался в Minecraft. При этом всё это время он что-то делал для сообщества — бесплатно, за спасибо, — вместо того, за что ему было заплачено.

И даже когда я объяснил ему прямым текстом, что владельцы железа недовольны отсутствием трафика, а без готового кабинета я не могу выпустить сервер, — он тут же взялся делать очередное «за спасибо».

Срок, о котором мы договаривались изначально, был примерно 2 недели. Его собственная формулировка: у меня там уже всё есть, нужно только переделать.

Показал я эту переписку человеку со стороны — тому самому, кто когда-то предлагал помочь, а потом сказал, что у него своих проектов хватает. Он сначала ответил, что если программист прав, то вина за отсутствие кабинета целиком на мне, и прочёл мне лекцию: ставить задачи и сроки, не забивать самому, просить помощи у сообщества, устраивать регулярные созвоны со статусами.

Совет по существу разумный — для проекта на голом энтузиазме. Только мой случай был не такой:

Он ведь не на голом энтузиазме взялся за работу.

Потом он перечитал переписку внимательнее и написал: «А-а. Я не разобрался, кто есть кто. Понятно».

История с обновлениями на этом не кончилась. Раз лаунчеру нужна была новая Java, я взялся поднимать на ней и само ядро сервера — «легко и просто», как было написано. Провозился с этим 15 часов подряд, дошёл до англоязычной поддержки самого ядра, поспорил с разработчицей лаунчера — та до последнего утверждала, что у неё всё работает, и даже не назвала версию ядра, на которой проверяла. Автор ядра при этом прямо говорил, что там нужно чинить.

Итого 15 часов впустую. Я уже почти лёг спать, когда включил компьютер обратно, чтобы дописать всё это.

А наутро, ничего не изменив, оно заработало.

Февраль 2024. Железо начало умирать

К февралю железо начало умирать окончательно. Если раньше после перезагрузки сервер поднимался за пару минут, то теперь я ждал по полчаса и больше — и один раз так и не дождался, лёг спать. Связь с лаунч-сервером обрывалась постоянно: качается клиент через лаунчер, и — хлоп, повисло намертво. Я начал выкачивать оттуда всё, что можно, пока оно ещё отвечает.

13 февраля выяснилось, что я не могу даже скопировать на карту тот же самый спавн, который копировал в прошлый раз: сервер от этого ложится.

Про диск мне в итоге сообщили, что сделать с этим ничего нельзя. Про зарплату за декабрь и январь — ничего.

Тогда же microwin7 предложил помощь: договорюсь, мол, с человеком, у которого железо с терабайтом оперативной памяти, и на первое время помогу с оплатой.

Ну там тысяч десять в месяц, я думаю.

Ну да, блядь. Нашли миллионера.

Пенсия в тот февраль пришла 14-го. Я сел, раскидал, что куда, — осталось 2900.

Параллельно я разбирался с тем, почему клиент сборки жрёт оперативную память не по норме: сколько ни выставляй в настройках лимит, он съедает всё. Сначала я думал, что дело во мне — в железе, в системе, в драйверах. Потом дал сборку человеку с нормальным компьютером и попросил проверить: у него потребление точно так же росло — 3 гигабайта в меню и почти 7 при входе на сервер. То есть дело не в моей машине.

Ещё через несколько дней вылезло другое: соединение с сервером то есть, то нет — буквально с разницей в секунды. Файл в 300 килобайт скачивается то мгновенно, то висит полчаса. Сайты, которые всегда открывались влёт, зависают. Скины из лаунчера не подгружаются. Я на всякий случай снёс и переустановил систему, чтобы исключить свою сторону, — не помогло.

Похоже это было либо на нестабильный канал у владельцев железа, либо на блокировки со стороны оператора. Единственное, что я мог попробовать сам, — сделать собственный SSL-сертификат и увести домен напрямую на IP, минуя защиту. Но тогда вся нагрузка, включая возможные атаки, легла бы прямо на этот адрес.

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

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

Помочь закончить и выпустить проект? Да ну нахуй. Лучше будем мозги ебать.

С кабинетом к концу февраля дошло до анекдота. Я снова написал в профильное сообщество — и человек, с которым я до этого разговаривал, посоветовал мне: обратись вот к такому-то, он тебе за 2 дня сделает. Он назвал того самого программиста, у которого мой кабинет висел с сентября.

Я передал это ему: мне сказали, что ты сделаешь за 2 дня.

Ты меня хоть не позорил бы, что я месяцами до сих пор не сделал.

И заодно — про то, где у человека находилось время. 24 февраля в 20:52 он помогал кому-то в общем чате; в 20:54 у него не было времени ответить мне. А когда я это озвучил, вопрос был поставлен так: чего ты токсишь.

29 февраля я всё-таки написал новость на главной странице сайта — снова о том, что проекту нужны люди.

В тот же вечер выяснилось, что железо не тянет уже и совсем простых вещей: основной мир полностью сгенерирован, но при попытке воспользоваться случайной телепортацией сервер лёг.

4 марта я написал программисту ещё раз. Ответа не было.

У меня уже ни культуры, ни терпения по отношению к нему не осталось.

Март 2024. Платёж, который я сломал сам

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

Я написал в чаты, где мог, — не отозвался никто.

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

Да сука! Я понял!

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

Правда, назавтра выяснилось, что в тестовом режиме пользователю ничего не начисляется. То есть впереди было ещё одно дно.

Тут вышел отдельный анекдот. Мне сказали, что тестовый режим может работать некорректно и проверять надо реальными деньгами. Реальных денег у меня не было — я стал смотреть, как закинуть на счёт хотя бы сотню. Оказалось: меньше 100 рублей можно пополнить только с их же кошелька, а сам кошелёк пополняется от 100 рублей, а через быстрые платежи — от 300.

То есть чтобы проверить, работает ли приём платежей, надо было дождаться пенсии.

14 марта я проверил уже настоящими деньгами: пользователю ничего не приходило. И вот тогда, к вечеру того же дня, я это добил.

Всё: оплата проходит, деньги зачисляются, записи есть.

Заодно посмотрел, во что мне обойдётся сам приём донатов. Комиссия платёжной системы при выводе — 3 процента, но не меньше 25 рублей. То есть чтобы получить 100 рублей, на счету должно быть 125. Плюс с самого донатящего берут ещё 12 процентов, а при пополнении через быстрые платежи — 10.

Уйти к другой было некуда. Из 4 платёжных систем, которые поддерживает кабинет, одна не реализована вовсе и в неё всё равно не может зарегистрироваться физическое лицо — минимум самозанятый; у второй комиссии не лучше; третья закрылась для России. Принимать переводы напрямую тоже нельзя: нужен программный интерфейс, а он есть только у платёжных систем.

Тогда же появился и сам программист — с предложением созвониться и «делать вместе». В 1 ночи по моему времени, о разнице он прекрасно знал. Я отказался, и вот почему.

Дело не только в том, что я живу не один и не в бетонном бункере.

Ему было заказано. А теперь — «го вместе делать».

И вторая причина, поважнее. Однажды я уже просил его помочь с модом, и мы этот мод делали вместе. Он взял и выложил его в общий доступ. Пусть мод и простенький, но с человеком, который так поступает, я делиться своими наработками больше не собирался.

Это мудак, охочий до славы и похвал: глядите, какой я хороший, всё бесплатно для вас делаю.

Стоит уточнить, почему я так долго ждал чужой помощи вместо того, чтобы делать самому. Весь кабинет держится на платёжных системах: передача данных туда, приём ответа обратно, начисление пользователю. Это и PHP, и SQL сразу — и в этом я как раз не умею. Всё, что я там починил, я починил, разбираясь по ходу.

А 17 марта железо снова легло. Сервер поднимался больше получаса вместо обычных 5–7 минут, сайты перестали отдаваться, потом стал недоступен и сам адрес — то есть я не мог даже вытащить оттуда свои наработки. Владелец железа отправил машину в перезагрузку и передал вопрос мне: как был убит сетевой интерфейс.

Тогда же его спросили, чего он от этого сервера ждёт.

Успех.

17-го же я подвёл итог всем объявлениям, которые за эту зиму написал:

За всё время с тех пор, как я скинул это во все три местных чата, не нашлось ни одного заинтересованного.

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

Тогда же я объяснил, как это выглядит с моей стороны: сервер может в любой момент начать тормозить и виснуть, и не только ночью, когда идут резервные копии. Перестаёт отвечать веб-сервер или база, вход по SSH занимает 5 минут, лаунчер теряет связь и забывает логин. Помогает только перезагрузка — я даже думал настроить автоматическую.

20 марта пришёл ответ: это не ты.

Дело было в другом. У них пыхнул 3-киловаттный источник бесперебойного питания. Причина — второй, мёртвый блок питания, который в него воткнули, чтобы «зарезервировать питание».

Зарезервировали, нихуя не скажешь.

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

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

Восстанавливали двое суток. 21-го сервер поднялся.

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

Хватило его ненадолго. Через неделю пришло новое объяснение, почему работа опять стоит: болела голова. После этого он пропал почти на месяц и объявился только в 20-х числах апреля — с обычным «привет, как дела».

Я бы не удивился, если бы он написал «ты кто?».

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

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

Кривой мод. Но играл.

Май 2024. Библиотека, которая перестала работать

Отдельный жанр в этой работе — когда ломается то, чего ты не трогал.

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

Дело было в одной из библиотек — не в моде, а в библиотеке, от которой зависит мод. При старте она читала данные в формате JSON и получала вместо ожидаемого списка строку. То есть тянула их откуда-то извне, и то, что ей отвечали, перестало быть тем, что она умеет читать.

Дальше самое интересное: без этой библиотеки запуск проходил дальше первой стадии — хотя она обязательна для мода, который её требует.

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

Через 2 недели началось похожее. Перестал работать NEI — мод, которым в игре смотрят рецепты крафта. Без него в сборке такого размера делать нечего. Я пошёл в официальную поддержку сборки, в русскую ветку, и получил ровно то, чего и следовало ожидать: вместо помощи — навалили в чат, а по существу сказали, что нечего пользоваться последней версией.

Дальше выяснилось хуже. В той версии сборки, которая была мне нужна, не работает очень важная часть, и чинить её в этой версии они не намерены. То есть всё надо делать заново, на старой версии.

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

Если мод называется ХУЙПИЗДАВОЛОСАТАЯ, ты поймёшь, от чего он и для чего?

Я, например, не знал, что один мод с «волшебными палочками» в названии относится вовсе не к тому набору, к какому кажется; что один инструментальный аддон принадлежит совсем другому моду; и что существует мод с названием вроде «дура-дисплей», по которому вообще ничего не понять.

Результат этих 12 часов — список из десятка модов, которые переименовывать нельзя: один ломает одиночную игру целиком (мир просто не создаётся), остальные роняют тот самый NEI. Плюс общее правило: никаких тире и прочих знаков в названиях, иначе сборка перестаёт различать мод и его дополнение.

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

Жрать или не жрать — вот в чём вопрос.

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

Клиент вышел стабильнее прежнего. Но главная проблема никуда не делась, только ослабла: на высоких настройках графики он забивает оперативную память и зависает, на низких — виснет по процессору из-за генерации чанков. Чтобы это вылечить, нужно было разделять моды, а знающего Java человека я так и не нашёл. Всё, что мог сам, я сделал.

Оставался патчер — программа, которая правит клиент. Денег на неё у меня не было и до пенсии не предвиделось. И тут случилось то, что мне до сих пор кажется смешным до абсурда: игрок задонатил на патчер.

Дальше — так. Он что-то дорабатывает, присылает мне, я проверяю на серверной версии чужой сборки — всё хорошо. Ставлю в свою старую сборку — не работает. Возвращаю обратно, ставлю патчер — не работает. Ставлю патчер в ту, чужую, — тоже.

Патчер, который должен править клиент, имеет и клиентскую, и серверную часть. И клиентская часть убивает клиент. Как мой основной, так и чужой.

Про личный кабинет к концу мая было так. Оплату он всё-таки починил. Голосование поправил — но скриптов еженедельной и ежемесячной награды к нему по-прежнему нет. Магазин, по его словам, делает. Когда он сделает так, чтобы при покупке привилегии закрывались те, что ниже, — неизвестно вообще.

По факту он не доделал то, что было, а тупо стал переделывать.

Мне сказали: доплати ему для мотивации. Деньги у меня были ровно одни — те, что откладывались на видеокарту. Других не было. А на замечание, что уплачено ему было изначально и все сроки давно прошли, возразить нечего.

При этом для запуска мне нужен был весь кабинет целиком: без скриптов и без магазина игрокам просто нет смысла голосовать. Некритична там была одна вещь — покупка групп.

Июнь 2024. «Это конец сервера»

13 июня вечером сервер стал недоступен. Ничего не работает. Пишу владельцу железа — говорят: диски умерли.

Если так, то потеря всего. Вообще всего.

Назавтра подтвердилось. Я написал коротко:

Собственно всё, это конец сервера.

Дальше я сел считать, во что обошлось бы всё это восстановить. Всего 55 миров. Один основной весит 20 гигабайт, один дополнительный — 10, а тот самый мир Края на 50 тысяч блоков весил больше 100. Копия миров прошлого сервера, где их было 36, вышла почти в 600 гигабайт. Итого с резервной копией — 2 терабайта, и всё это должно лежать на одном диске, а не на нескольких. Обычный жёсткий такого объёма — почти 8 тысяч, твердотельный — 11–12.

Отдельная правда про сами резервные копии: они и так были плохие. Копия делалась только в основном мире и только в активных чанках. Чтобы копировать весь сервер каждые 3 часа, надо было бы каждый раз переписывать 600 с лишним гигабайт.

Вариантов у меня было ровно 2.

Почку только если продать.

Второй: пустить в это те 5 тысяч, что придут за месяц, и попробовать договориться с игроком, который уже донатил, насчёт остальной суммы. Но 11 200 — это только 3 июля. А проблема была здесь и сейчас.

Человек, у которого я взял в долг под работу с проводкой, сказал тогда, что возвращать не нужно. Я ответил, что помогать и так предлагал даром.

При этом сам проект был близок к готовности как никогда. Клиент оптимизирован. Серверная часть готова процентов на 80–85, если не считать необходимости заново генерировать карту. Не готовы были магазин и голосование — то самое, что делал программист. А новых игроков взять неоткуда именно потому, что они зависят от магазина и голосования.

С ним я в тот же день сцепился. Он ответил мне так: вон, есть проект, он ни хрена не закончен, год обещают закончить — и ничего, люди играют и донаты собирают.

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

А 15-го стало ясно и с деньгами:

Печальное. Игроки не хотят донатить.

Диск я в те дни искал везде. В магазине электроники дешевле 13,5 тысячи ничего, у других продавцов то же самое; самое дешёвое, под заказ, — 11 с лишним, и то в следующем месяце. Ровно тот же диск годом раньше брали за 6700, да ещё и с бонусами на 2 с лишним.

Владелец железа ответил так: надо поспрошать, вдруг у кого валяется пара лишних дисков на 2 терабайта. И тишина. Игроки уже донатили — впрягаться ещё раз не хотели.

Мне говорили: пока решается вопрос с диском, займись личным кабинетом. Не работает это так.

Да хуй он что будет делать, если я не скажу, что у меня всё готово и ждём только его.

Главная проблема не он, а железо.

Причём человек, который делал кабинет, не мог просто сделать и отдать готовое: он выдавал кусками — обновляй и проверяй, — то есть сайт должен был стоять и работать прямо сейчас. А его не было.

И была ещё одна вещь, которую я к тому моменту слышал от всех подряд:

Ну ты же всё равно что-то там делаешь.

Выпусти пока так.

18 июня я выставил на продажу старую карту и старый процессор. В объявлении я написал всё честно — и состояние, и то, что драйверы иногда слетали, и причину продажи:

Срочно требуются деньги на новый SSD на два терабайта с гарантией в сервер, где умерли жёсткие диски, на которых был проект.

В целом я и не продавал бы, оставил как запас, если бы срочно не требовались деньги.

Дальше я начал считать варианты. Собрать сервер дома на своём же процессоре: материнская плата 6 тысяч, 16 гигабайт памяти 4, готовый комплект на серверном процессоре — 6,5. Считать это можно было сколько угодно: всё упиралось в диск, а он был нужен в любом случае.

Я просто ебал. У меня уже ни идей, нихуя.

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

Аренду я тоже посмотрел. В России за 16 гигабайт памяти на слабом процессоре и маленьком диске просили 14–20 тысяч в месяц. Вариант с 2 терабайтами выходил в 22 тысячи, из которых 18 — только за место на диске, и всё это на канале в 100 мегабит.

Я тогда посчитал в обратную сторону: материнская плата, память, 2-терабайтный диск нового формата и мой процессор — 23,5 тысячи. То есть за один месяц аренды они окупают целую сборку.

Держать серверы — не для нищих. Особенно вначале, когда он не приносит никакого дохода.

Меня спросили, не слишком ли мощный сервер нужен для Minecraft. Не мощный. Мощный — это если бы требовалось 64 гигабайта памяти. Процессора у меня хватало с запасом — уж точно больше, чем у железа, на котором всё это стояло. Проблема была не в мощности, а в месте: помимо самого сервера, карты и её копии там лежат лаунчер-сервер, веб-сервер, PHP, база данных и по мелочи ещё много чего.

Оно и без сервера, по-моему, почти на двести гигов вытянет.

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

Я спрошу.

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

Складывается впечатление, что и копий виртуалки там уже нет. Или что их отдавать не хотят.

От игроков — тоже тишина.

У меня есть частичные копии, восстановить я могу. Проблема в том, что восстанавливать не на чем.

И между всем этим, 19 июня:

Встретиться с приятелем, что ли, и набухаться. То ли отметить видеокарту, то ли помянуть год жизни впустую.

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

Я нихуя не уверен, что железо даже на таких условиях вернут. Или не заберут почти сразу после.

Посмотрел и аренду за границей. Нашлось предложение, где за небольшие деньги давали машину мощнее той, на которой всё стояло, — но у перепродавца с 4-летним доменом, про которого мне сразу сказали: поработает месяц-другой, и сервер отзовут. У известного хостинга таких серверов вообще нет, а что есть — заметно дороже.

Так к 25 июня всё и свелось к развилке: ждать зарплату и брать в их железо диск похуже — или заказать нормальный за 5,5 тысячи и собирать своё, по частям, дома.

Окей, гугл: где срочно взять пятнадцать тысяч.

Развилку разрешили за меня. В тот же день мне подкинули 9 тысяч — заранее, на день рождения, который у меня в конце июля, — прямо на сборку.

Июнь — июль 2024. Как я собирал сервер дома

Дальше я выбирал уже между 2 вариантами домашнего сервера. Готовый китайский комплект с серверным процессором отпадал: частоты хуже моего, сравнимый по мощности выходит дороже, обновить потом ничего нельзя, гарантии никакой. Значит — материнская плата под мой собственный процессор, память и диск.

Отдельно я для себя закрыл вопрос, к кому железо ставить нельзя:

К нему я точно не хочу, слишком велик риск. Как то, что спиздят, так и то, что по тупости просто уничтожат.

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

Поездка была на трамвае.

В итоге заказ всё-таки прошёл. А следом выяснилась деталь, о которой я забыл:

Нужен коммутатор. У меня роутер на три разъёма, и все три заняты.

В тот же вечер пришла доплата к пенсии — 500 рублей. Итого на руках у меня было 6800, а нужны были материнская плата и коммутатор.

Плату я выбирал долго, потому что дешёвые не поддерживают мой процессор либо не дают его настраивать. Единственный подходящий вариант за прошедшее время подорожал: та же плата стоила 7200, стала 9. 27 июня подняли ещё на 1000.

Теперь мне нужно не две семьсот, а три семьсот. Вся зарплата. Я не могу это сделать, даже приди она.

Взял в итоге у другого продавца, где дешевле, — с понятным риском по гарантии.

Заодно я придумал, где всё это будет стоять. У матери в комнате без дела стоит тяжеленная настенная полка, которую я давно собирался повесить в коридоре в углу, — одному её не поднять, нужен второй человек. Вот туда её и повесить, кинуть в коридор вторую розетку, как я и хотел, и поставить сервер на полку. Оставалось купить интернетовский кабель, чтобы протянуть через 2 комнаты.

После заказа платы у меня осталось 200 рублей. А нужны были ещё коммутатор, клеммники и розетка.

Полку мы всё-таки повесили — 28-го, вдвоём с алконафтом. Родные крепления её веса не держали, пришлось искать уголки побольше; в ближайшем магазине таких не оказалось вовсе.

29-го я посчитал, что кабеля нужно 16 метров, и поехал за ним в центр. Медный вышел по 23 рубля за метр — 368 за всё; готовый такой же в магазине электроники стоил 500, а отрезы там были не медные, а омеднённый алюминий. Разъёмы в наличии остались только экранированные, дороже. Обжимать я не умею и обжимного инструмента у меня нет — его пришлось искать у знакомого.

Отдельная идея была с корпусом: снять с него все стенки и обтянуть колготками. И охлаждение, и защита от пыли разом.

Кабель я протянул в тот же день, розетку сделал — всё готово. Дальше надо было объяснить, что именно я хочу спасти. Устроено там было так: основная система жила на диске в 250 гигабайт — база данных, веб-сервер, PHP, контейнеры, лаунчер-сервер, панель управления серверами и по мелочи; а отдельный 4-терабайтный диск был подключён туда, где эта панель хранит сами сервера.

Мне нужно только то, что было на основном диске. Сервера — вторичное, а копия старой карты вообще не нужна.

И 1 июля мне дали доступ, чтобы всё выкачать.

Выкачал. Место нашлось даже под содержимое второго диска — я успел забрать и основные регионы карты. А вот главного мне так и не дали: образа виртуальной машины, который можно просто накатить обратно. Значит, всю систему — Java, PHP, базу данных и всё остальное — ставить заново вручную и настраивать с нуля.

То есть по факту он просто не хочет его предоставлять и решил таким образом избавиться. Либо рассчитывал, что я им железо обновлю.

Я уже даже не уверен, а действительно ли там сдыхали диски.

Оставалось собрать это во что-то физическое, и вот тут начался отдельный жанр. Корпус, который у меня лежал, оказался слишком старым: туда не встают даже вентиляторы обычного размера — только мелкие, а верхняя крышка приклёпана намертво. Второй корпус, который нашёлся, оказался таким же. Из нормальных вентиляторов у меня было ровно 2, и те от блоков питания, с разъёмом, который ещё надо придумать как запитать.

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

С охлаждением пиздец, с корпусом пиздец, с охлаждением корпуса пиздец. Сплошной пиздец.

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

Меня с говном сожрут.

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

Корпуса на барахолке стоили как новые: 3 тысячи за подержанный с вентиляторами, полторы — за пустой.

Зарплаты, к слову, я к 3 июля не видел уже почти за 2 месяца.

4-го я всё-таки поехал за проволокой в большой строительный на окраине — в автобусе было 37 градусов. Оцинкованная в миллиметр оказалась слишком мягкой, в полтора миллиметра — слишком толстой. Взял полтора и доработал напильником.

На хуя я вообще со всем этим ебусь. Один хуй без нормального корпуса всё это превратится в печку.

5 июля пришёл жёсткий диск — 2020 года выпуска, в мятой коробке, но на вид новый. Оставались материнская плата, коммутатор, корпус и обжатый кабель.

С коммутатором вышла отдельная арифметика. В роутере 4 порта: один занят самой коробкой провайдера, к 3 оставшимся подключены компьютер, телевизионная приставка и микрокомпьютер с торрент-сервером. Сервер — 4-е устройство, а порта под него нет. Значит, нужен коммутатор, но и ему нужен порт, то есть что-то придётся из роутера вынуть. Дешёвый коммутатор на 2 порта не даёт ничего — нужен минимум на 3 гигабитных.

Мне предложили простое решение: оставить гигабит серверу, а всё своё перевести на 100 мегабит. То есть отказаться от всего и держать интернет только под сервер.

По-хорошему серверу нужен отдельный канал.

Да где ж я его возьму. Я и за этот-то по факту не плачу.

Заодно обсудили и очевидное возражение — что держать сервер дома опасно, прилетит атака. Но:

С таким же успехом его можно положить и у них в офисе.

С точки зрения того, кто атакует, разницы нет: я просто на один узел дальше, а со стороны игрока вообще не понять, где стоит сервер — у провайдера или у меня дома. Разница только в ширине канала.

6 июля привезли корпус и коммутатор. Оплаченный вентилятор из того же магазина и с того же склада — нет: его обещали на завтра. Тогда же пришла материнская плата: коробка помятая, без плёнки.

Потому и стрёмно технику заказывать. Её на месте не включишь — компьютер же с собой не потащишь.

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

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

Итог дня я записал так:

На дорогу за проволокой восемьдесят потратил, на проволоку триста шестьдесят, на вентилятор двести пятьдесят. Половина нового кулера. Ебал я рот этот сервер.

А целиком новый кулер стоил от 1800.

И под конец обнаружилось ещё 2 вещи. Кабель я так и не обжал — обжимку мне ещё искали. И сетевой фильтр я не купил, а без него до розетки не дотянуться.

Ночью я попробовал спилить лишнее с радиатора — не подлезть. Снял защитную подложку — тоже не помогло. А потом обнаружил, что просчитался ещё и с местом: от верха полки до потолка 41,5 сантиметра, а корпус — 48.

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

Логика нервно курит в сторонке.

Смысл в том, что и то и другое — это всё равно покупка. А покупать было не на что.

У меня осталась тысяча, и нам на неё жить.

В тот же день мать сказала, что на телефоне нет денег и она даже позвонить не может. Закинул ей 300.

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

Заказ на вентилятор я отменил. Возврат 250 рублей — от 3 до 10 дней.

Дальше я делал полку. Подходящей фанеры в доме не нашлось: нужна была шириной 25 сантиметров, а вся была от 32. Пилить пришлось вдоль — ручной пилой это мучение, а единственный мой электролобзик уводит в сторону. Вырезал, конечно, криво. Собрался крепить — кончились саморезы, и мелкие, и большие.

8-го числа полка всё-таки встала, и сверху я притянул корпус ремнём от сумки — чтобы при землетрясении не поехал.

Оставалось охлаждение. Я перерыл весь дом, нашёл пару старых алюминиевых радиаторов; встал только один, ржавый, — и к нему не подходит по размеру мой единственный вентилятор, он больше самого радиатора. Таким радиатором этот процессор охлаждать нельзя, тем более в сервере, который работает постоянно.

Я умываю руки. Без нового охлада тут делать нечего.

Новый стоил около 2 тысяч.

9 июля мне вернули те 250 рублей за отменённый вентилятор.

Итого у меня есть двести пятьдесят рублей на охлаждение. Всего-то не хватает тысячи пятисот пятидесяти.

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

Кабель я в тот вечер обжал — с первого раза, конечно, не вышло: 2 пары сантиметров зачистки оказались лишними, жилы не выставлялись, оплётка до зажима не доходила. Проверил — работает.

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

Жень, тут к тебе сотрудник твой пришёл, кот.

Лицо у него было соответствующее.

Про второй канал для сервера ответили так: если пойдёт трафик — тогда и будет смысл его делать. Кулера под мою плату у них, естественно, не нашлось: там всё на старых серверных процессорах.

Вечером 10-го я всё-таки достал временный кулер за 250 рублей. Совсем времянку — но проверить, что плата после дороги вообще жива, и настроить систему её хватало. Запускать без охлаждения было нельзя: мне сказали, что процессор так продержится секунд 30.

Времянку эту, судя по виду, не чистили ни разу за всю жизнь: я извёл десяток влажных салфеток и отдельно отмывал спиртом присохшую термопасту. Зато вечером 10 июля я написал 2 слова, которых ждал давно:

Оно живое!

Июль 2024. Шум, вибрация и восстановление

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

Полчаса работы, а квартира провоняла так, что до сих пор не выветрилось. Ощущение, что вот-вот полыхнёт.

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

Выкрутился я через переходники: 3 штуки, по одному на группу вентиляторов, и всё это в разъёмы на материнской плате. Задний вентилятор на один, верхние на второй, 3 передних на третий. 11 июля скорость наконец стала регулироваться.

Гудеть, впрочем, не перестало — то ли блок питания, то ли кулер процессора, то ли сам корпус такой, что даже на малых оборотах 6 вентиляторов заставляют его звенеть.

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

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

Дальше пошло то, ради чего всё и затевалось, — восстановление. И вот тут выяснилось, что просто перенести всё обратно не получится. Сразу 3 базы данных отказались разворачиваться вовсе: сервер ругался на недопустимое значение по умолчанию в поле с датой. Форум развернулся, но не работал. А в довершение оказалось, что если в настройках заменить «локальный хост» на локальный адрес самой машины — всё начинает работать; при этом через веб-панель я попадал именно на «локальный хост», где не было ничего, кроме служебной базы. Хотя это должно быть одно и то же.

На том железе всё спокойно накатывалось, а тут такое.

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

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

По сути я остался без коммутатора, а значит без сервера.

Коммутатор мне обменяли как не подошедший по характеристикам — с доплатой в 350 рублей взял другой, известной марки. А потом заменил ещё и кабель между роутером и коммутатором, и всё заработало: дело было в контакте.

WTF. Просто блядь WTF.

14-го нашлась ещё одна: система при установке заняла не весь диск. То есть всё заново — снимать компьютер с места, ставить систему по новой.

Заебало.

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

Включить её при установке — вот моя величайшая ошибка.

Переставил без неё. И 15 июля вечером я скинул в чат ссылку на свой сайт — он снова открывался.

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

Антивибрационных прокладок в магазине не оказалось вовсе; специальные крепления шли по 150 рублей за 4 штуки — 900 на весь корпус, и это без учёта того, что отдельно надо развязывать жёсткий диск и блок питания.

Самый эффективный способ побороть шум жёсткого диска — перейти на твердотельный.

Кулер, которого мне не хватало полторы тысячи, в итоге просто купил и отдал мне dukeabv. 16 июля я его забрал и в тот же день поставил.

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

Тонкий ровный слой — это что-то из мифологии.

Зато проволочные крепления в комплекте оказались отличные:

Тонкие, что пиздец, но при этом прочные и пружинистые. Всё-таки нормальная сталь и сталь из строительного магазина — разные вещи.

Заработало. И в ту же ночь я написал человеку, который делал кабинет, ровно один вопрос:

Когда будут магазин и голосование?

Потому что со своей стороны я к тому моменту сервер поднял. И заодно выяснил, чего стоило то, чего мы ждали месяцами: чтобы развернуть основную копию, нужно было поменять несколько строк в скрипте автоматической установки.

Ну не пидорас ли?

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

Помогло мало.

Чото, по-моему, нихуя особо лучше не стало, а полка стала менее устойчивой.

На последнюю сотню рублей я купил третий уголок и поставил его посередине. А по-хорошему нужны были ещё антивибрационные крепления под все вентиляторы и под блок питания — 28 штук. Продавались они наборами по 20: в магазине электроники 7 наборов стоили 1050, у китайцев дешевле, но ждать месяц, а то и больше.

Раза три заказывал такую дешёвую мелочовку — ни разу не пришла.

Пробовал я и подкладывать под корпус жёсткий утеплитель — стало только хуже. Оставалось ждать этих креплений.

Июль — сентябрь 2024. Генерация, которой не хватает памяти

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

Используйте эту сборку, говорили они.

24-го добавилась ещё одна, из-за которой я потом долго не мог нормально работать: у сервера начал сам собой отваливаться интернет. Подключиться к нему по сети в такие моменты нельзя, а посмотреть, что происходит, не на чем — монитора там нет, а перенести компьютер, не выключая, невозможно. Перетыкал кабель, менял порт на коммутаторе, перезапускал коммутатор — не помогает; помогает только физически перезагрузить сервер.

Бред. Что там может происходить?

С тех пор я и мечтал о 2 вещах: маленьком мониторе в коридор и о самой дешёвой видеокарте-затычке или процессоре со встроенной графикой. Мини-монитор при этом стоил как недорогой телефон.

29 июля у меня был день рождения. Провёл я его так же, как все предыдущие дни: за сервером. И записал это ровно так:

Чем нормальные люди занимаются в свой день рождения? Гуляют с друзьями, развлекаются, бухают, отдыхают. А чем занят я? Погружаюсь в тёмную бездну майнкрафта — ну и безумия заодно.

В самой игре я в тот день поставил памятник — с датой.

Приятель, с которым мы должны были в тот день созвониться, объявился вечером:

Да я вчера забухал с товарищем за встречу, утром только домой приехал, сейчас вот только увидел, что ты звонил.

А поздравление, которое я получил, звучало лучше всех, какие я помню:

Хуй знает, чего желать. Живи, а не выживай.

А 31 июля выяснилось главное — то, из-за чего вся эта сборка железа оказалась почти бессмысленной. При генерации миров серверу катастрофически не хватает памяти, и он просто ложится. И на новом железе, и на моём компьютере.

Я перепробовал всё, что мог. Отключил все режимы сна и энергосбережения. Увеличил файл подкачки с 2 гигабайт до 32. Прописал десяток параметров запуска для виртуальной машины Java. Не помогло ничего.

Память на 32 гигабайта стоила 8 тысяч.

Лучшая сборка в мире.

Заодно стало видно и второе: сгенерировано было всего ничего, а сервер уже весил 307 гигабайт.

Отвал сети при этом продолжался — причём даже тогда, когда сам сервер выключен. Похоже, процессор и эта память просто не дружат.

К августу я всерьёз считал варианты купить процессор со встроенной графикой — хотя бы для того, чтобы можно было подойти и посмотреть, что там происходит. Подходящие на барахолке стоили почти как новые; единственный, который был в городе по вменяемой цене, продали.

В любом случае на процессор денег нет. Да и вместо монитора я хотел взять кроссовки.

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

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

Не помогло от слова совсем.

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

Большего облома я не испытывал. По сути сервер остался без блока питания.

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

Стало чуть-чуть получше. Но лишь самую малость.

То есть основную вибрацию и гул всё-таки создаёт жёсткий диск.

А пока я запихивал блок питания обратно, я ударился головой об угол корпуса и разбил её.

Правду говорят, что раны на голове долго не заживают и кровоточат.

Список того, что нужно, к тому моменту выглядел так: процессор со встроенной графикой, маленький монитор, 32 гигабайта памяти вместо 16 и твердотельный диск вместо обычного. Мини-монитор, который я нашёл за 2 тысячи, оказался не за 2: доставка ещё 1000.

11 августа я написал человеку, который делал личный кабинет, то, что стоило написать давно:

Скоро год будет, как ты взялся делать. Ты собираешься заканчивать или где? Если нет — дай все наработки, что есть, и я буду искать кого-то, кто возьмётся доделать за тебя. Заебало в конец.

Обиднее всего было то, сколько там оставалось работы.

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

Тогда же, для полноты картины, я ещё раз посмотрел на цены готовых решений — тех самых платных модов, которые заменяют плагины. Права доступа — 7,5 тысячи. Регионы — ещё 7,5. Восстановление территории — 4. Экономика — полторы. Наказания — 1000. Наборы — полторы. Случайная телепортация — 500. Плюс само ядро от 25 до 50.

Не ну надо брать.

Заодно я тогда объяснил, почему нельзя просто «пусть генерирует на лету, по мере того как игроки ходят». Чтобы прогрузить чанк из-под игрока, серверу нужно куда больше ресурсов, чем при генерации заранее. А теперь представьте, что так ходят сразу несколько человек.

Даже на новом железе, при быстром полёте по карте, когда я на сервере вообще один, он не успевает генерировать чанки на лету.

Для такого нужно 5 гигагерц, 128 гигабайт памяти и быстрый твердотельный диск — и то не факт.

15 августа сервер пропал из сети прямо в тот момент, когда я перекидывал на него готовые миры со своего компьютера.

Да что за пиздец в этой жизни происходит.

Причину я к тому времени уже понимал:

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

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

Тут два варианта. Первый, наиболее вероятный: процессор — говно. Второй: мой древний блок питания не справляется.

Купите душу за восемьдесят тысяч.

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

В те же дни я остался и без VPN: человек, у которого стоял сервер, не смог его больше оплачивать.

К концу августа стало окончательно ясно, что мир Края эта машина не осилит. Не справляется ни по скорости записи на диск, ни по частоте процессора — на всё остальное его уже не хватает, — ни по памяти. За сутки генерация продвинулась с 7 процентов до 11 и снова упала, в который раз за день.

Через годик закончим. Только с такой скоростью он не вылетает. И то — пока.

В сентябре я довёл это до конца. Уменьшил выделенную серверу память с 14 гигабайт до 12 — чтобы железо не начинало виснуть и не сыпались ошибки потока. Добавил к запуску все возможные и невозможные флаги, отвечающие за оптимизации. Поставил задание в планировщике перезагружать машину каждые 6 часов.

Бесполезно. За сутки всего один гребаный процент.

Тогда же я посчитал, что было бы, если бы я решил это железом. Если продать материнскую плату, память, процессор и видеокарту в довесок — выйдет тысяч 16. Сборка процессор — память — плата на новой платформе стоит 48.

Мне говорили: чего ты упёрся в неё, она не так уж намного лучше. Лучше — по частотам, и это тут единственное, что имеет значение:

Для джавы это критично. Чем выше частоты, тем быстрее это работает, потому что оно всё долбится в частоты, а не в многопотоки и объёмы. Даже память важна только в двухканале.

Оно может и не выходить за пределы установленного — но только если успевает отрабатывать. А с низкими частотами оно нихуя не успевает.

Не один владелец такого сервера говорил, что для него нужна постоянная частота 5 гигагерц и выше. Топовый процессор прошлого поколения даже в максимальном разгоне не выдаёт больше 4,9 — и гнать его до таких частот надо, держа наготове огнетушитель. А младший процессор нового поколения имеет в стоке 4,7.

Отдельно, ещё в конце августа, начал пропадать интернет — помогала перезагрузка роутера, потом перестала помогать и она. Знакомый посмотрел уровень сигнала: на терминале всё в норме, а до меня доходит хуже, чем должно.

Дальше — в какую сторону, не пойму?

В твою.

То есть проблема где-то на моём куске: надо пробовать менять кабели. Кабелей на замену у меня нет.

Сентябрь 2024. Ипотека на 14 лет

10 сентября выяснилось, что дело не только в скорости.

Короче, мужики, дело дрянь, и нихуяшеньки я с этим не сделаю.

При генерации через тот мод, которым я вообще мог это делать, ломается Край. Ломается совсем — и вместе с собой ломает сервер: без удаления Края из мира сервер уже не стартует. Других бесплатных вариантов сгенерировать миры попросту нет. А потом оказалось, что и удаление сломанного мира не помогает: если так, придётся генерировать все миры заново.

Где в Иркутске продать почку?

Тогда я сел и выписал по прайсу, сколько стоит сделать это правильно.

Минимальный вариант: моды на замену плагинам, разовой покупкой, без доступа к исходникам и пожизненных обновлений — 23 500. Одно из ядер, тоже без исходников и обновлений, — от 25 000 до 35 000. Возможность запускать ядро на современной Java — 5 000. Итого от 53 500 до 63 500.

С пожизненным доступом к обоим ядрам и обновлениями — 78 500.

Полный вариант, с пожизненным доступом и к ядрам, и к модам, — 103 000.

На максимальный вариант по пятьсот рублей в месяц мне придётся копить пятнадцать лет. А на минимальный — десять.

Интересно, а в рассрочку на четырнадцать лет согласятся продать ядро и моды? Купил бы доступ к обоим ядрам пожизненный и моды для замены плагинов. Почти что ипотека.

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

Ну так найди нормальное ядро и моды на замену плагинам.

Я не выебу даже пятьдесят четыре тысячи, не говоря уже о большем. Не миллионер и инвесторов не имею.

Предлагали и бартер: рекламируйте наш проект в обмен на моды. Идея гениальная, учитывая, что сообщество игры давно не растёт, а сервера просто перетягивают одних и тех же людей между собой.

Выложить купленное в открытый доступ, кстати, тоже нельзя — и не только по совести:

Это легко проверить, там же серверно-клиентские версии. Если узнают — засудят.

Обращался я и к знакомому программисту на Java — с тем же вопросом по ядру и модам. Ответ пришёл сразу: «ЦЕНА ВОПРОСА, СКОЛЬКО ГОТОВЫ ЗАПЛАТИТЬ».

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

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

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

Майнкрафт не для нищих.

Сентябрь 2024. Проверка на старом ядре

Бесплатный выход я всё-таки поискал. Нашлась чужая сборка одного из самых нужных модов — прав и групп — выложенная в открытый доступ. Пересчитал: если это заработает, набор без обновлений выходит уже не в 36 тысяч, а в 23; с обновлениями — не в 78, а в 50.

Не заработало.

Значит, на моды нужно тридцать тысяч. Права тоже нужны.

Я спросил у них, есть ли скидка за покупку всего сразу и сколько стоит перейти с разовой покупки на пожизненный доступ. Тишина.

Может, потом ответит. А может, решит, что я охуел.

Заодно посчитал полную цену вопроса ещё раз, уже с их прайсом на руках: 121 тысяча.

Продам душу, недорого, всего сто тысяч.

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

17 сентября я запустил на ней 95 процентов сборки: без пары модов, которые с ней не дружат вовсе, и без платных модов, которых у меня нет. Почти без ошибок — те, что остались, либо не критичны, либо непонятно, как решать без чужой помощи.

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

18-го — целый день возни и вывод:

Со старым ядром нихера не выйдет, даже если купить моды. То есть нужно и ядро тоже, и их версия клиента, которая идёт с ядром.

Подогнать имеющийся клиент под это ядро не получилось: мешает служебная часть самого клиента.

Это весь год, по сути, еботни зазря?

Если душу не продам — то да.

Хотя не совсем. Сборка игровых модов, настройка, конфиги, переделанные моды, созданные рецепты, оптимизация клиента — всё это сделано и годится. Только чтобы этим воспользоваться, нужно ядро, которое не будет подкидывать дерьмо при генерации, и 12 модов, которые заменят плагины.

Проси ипотеку, хуле.

Не дают. Да и чем я отдавал бы? Натурой? По пятьсот рублей в месяц пятнадцать лет?

А 19-го я всё-таки увидел, ради чего всё это. Удалил конфликтующий мод ещё и с клиента — и вошёл в игру. Дальность прорисовки — 32 чанка, а активных чанков вокруг игрока всего 3 на 3; клиент при этом ест столько же, сколько раньше.

Запустил встроенную предгенерацию. Радиус мира 10 тысяч — это 1 565 000 чанков. 25 тысяч, 30, 36 — и сервер даже не тормозит и не жрёт память: 12–20 процентов процессора и 7 гигабайт.

После месяцев, когда за сутки набегал один процент, это выглядело чудом.

Довольно быстро. Я бы сказал — очень быстро по сравнению с говноплагином.

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

Нужно нормальное ядро.

20-го мне задонатили 2 тысячи.

Шо купить? Я реально хз, чо делать с этими деньжищами при этих ценах.

Полезного и бесполезного там нет — там всё нужное. Самое нужное: права 7,5 тысячи, приваты 7,5, экономика полторы. Без остального тоже нельзя.

Генерация на новом ядре шла на лету и памяти хватало. Только ошибки чанков никуда не делись:

Хз, как это повлияет в итоге. Может, вся карта забагует, а может, дыры в карте будут.

Ни инструкций, ни поддержки: ядро старое, и мало кто его использовал — как раз потому, что плагинов оно не держит.

Сентябрь 2024. Последние варианты

21-го я подвёл итог по людям. Идей никто не выдвинул. Программист на Java хочет денег. Человек, который интересовался проектом, забил.

Без денег вариантов ноль.

От авторов модов щедрости ждать тоже не пришлось. Сначала мне сказали: найди бесплатный мод на права — сделаем, чтобы наш мод с ним работал. Я нашёл. Ответ:

ТАК У ТЕБЯ ЖЕ ЕСТЬ, НУ ПОЛЬЗУЙСЯ ЧЕМ ЕСТЬ.

Тогда же вернулся старый сюжет с той программисткой, которая когда-то взялась помогать. Она полезла в исходное ядро — то самое, кривое, которое держит плагины, — нахуевертила там и осталась довольна.

Я расписал ей по пунктам, чем другое ядро лучше. По всем пунктам лучше.

ВСЕГО ЛИШЬ?

Заебало всё. Ради чего я загибался с этим сервером больше года? Чтобы потерять всё из-за того, что я нищеброд?

Последнюю попытку я сделал в конце месяца. Они собрали сборку своего ядра «с поддержкой плагинов» — если бы она работала, покупать моды не пришлось бы вовсе.

Мы собрали ядро с поддержкой плагинов. Но оно не поддерживает плагины.

Стоит добавить плагины — сервер сразу после запуска отрубается. Я стал искать, какой именно его кладёт. Думал, тот, что отвечает за приваты. Оказалось — редактор мира.

Какого хуя. А замена ему стоит четыре тысячи. Даже при условии, что два других у меня есть.

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

Больше у меня никаких вариантов не осталось. Вообще, совсем.

Нихуя не выходит, как ни ебись. Нужны моды.

В те же дни мне посоветовали объявить сбор на 30 тысяч.

Как будто у меня тут аудитория сто тысяч человек.

Сентябрь 2024. Сколько нас на самом деле

Короче, без денег проекту пизда, и это факт.

Мне возразили: внезапно, для этого дела недостаточно сервера и года отладки.

Да в смысле? Я отладил, железо есть. Что я сделаю, если ядро и плагины — говно? Перепишу? Напишу свои?

Дальше мы посчитали, могло ли это вообще окупиться. Кто-то донатит 500–1000 в месяц; я лично знал людей, которые вкладывали и по 15 тысяч, даже если сервер так себе. Возьмите 10 игроков, из них пятеро по 500 рублей в месяц, год — уже сумма. Если заниматься сервером, слушать игроков, а не творить что хочется, и добавить его во все возможные топы, а не в 3–4 самых больших, — игроков привлечь можно. Школьники за лето неплохо набегают на сервера и вливают донаты, и на зимних каникулах тоже. Только сервер тяжёлый, школьников там вряд ли будет много.

Отличие моего сервера от обычных здесь: у большинства платный вход по белому списку — от 400 рублей до сколько попросят, — но нет границ мира. У меня наоборот: границы есть, входной платы нет.

Границы — не прихоть. Мир радиусом 50 тысяч весит 150 гигабайт. Уберите границу — и любой желающий может летать по карте просто чтобы прогрузить чанки: чем больше прогрузит, тем больше весит мир. А если работает случайная телепортация, ей нужно указывать пределы — иначе она будет считать, куда закинуть игрока, в бесконечном поле, а игрок может дёргать её каждые 30 секунд.

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

В любом случае у меня нет даже тридцати тысяч, и взять их негде. Моя аудитория не настолько заинтересована — особенно после того, как задонатили на железо.

А от тех, кто помогал мне с оптимизацией и списками, доната ждать и вовсе не стоит: они на Украине, они там пытаются выжить и мастерят себе что-то из аккумуляторов, чтобы пережить зиму.

27-го я посчитал эту аудиторию вслух. Вышло 2 человека из России, двое с Украины — и собеседник, который в эту игру вообще не играет.

В группах при этом 2,5 тысячи человек и 2 тысячи.

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

Или чего, закрывать проект к хуям? Оставить говноядро, миры без предгенерации, тэпээс в жопе — и очередной сломанный мир, который придётся сносить целиком?

Сентябрь 2024. Почему два ядра

28-го мне задали резонный вопрос: зачем тебе сразу 2 ядра, это же 2 сервера.

Незачем. Дело в другом.

Первое ядро стоит 25 тысяч, второе — 35. Второе намного лучше: новее, продуманнее, больше исправлений, другая система сжатия данных, из-за чего производительность заметно выше. Но с ним могут не заработать многие моды сборки — как минимум 2 не работают точно.

Ты понятия не имеешь, с каким из них у тебя нормально заработает. А если не заработает — что тогда? Покупать второе? Тридцать пять плюс двадцать пять — это нихуя не пятьдесят.

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

И отдельная деталь: сборку, на которой у меня всё построено, они на своих ядрах не тестировали и не собираются.

Они считают её говном, и вообще грегтех не нужен, ты не понимаешь, это другое.

Была и мысль, которую я всё-таки додумал до конца.

Может, продать видеокарту и купить моды?

30 тысяч хватит на моды, разовой покупкой. На ядро — уже нет.

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

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

Условие авторов не менялось: либо покупай, либо реклама.

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

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

Дерьмо. Но если он не закончит — можно использовать. Только толку от сайта без сервера.

Октябрь 2024. Дал потыкать

Чел, считай, влил в проект двенадцать тысяч. А почитать про это ядро, поискать альтернативы, предложить хоть какие-то идеи — до сих пор хер.

В ночь на 1 октября я собрал сервер на том самом старом бесплатном ядре и открыл его — пусть генераторы гениальных идей потыкают сами.

Первое, что выяснилось: те огромные прямоугольные дыры в карте, которые меня пугали, — графический баг клиента. Чанков на месте всё это время не было только в клиенте, помогает выйти и зайти обратно; видимо, 32 чанка прорисовки для него многовато. В самой карте дыр нет.

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

Не, ну охуенно, прямо скажем. Красиво и пиздец производительно.

Выдавало 20 тэпээс — при том что я в это время летал и грузил карту. И 21 — во время предгенерации.

Говноядро выдаёт десять тэпээс и кладёт железо, а тут двадцать один и никаких лагов.

Под конец я запустил генерацию сразу в 2 мирах. Процессор на 30 процентах.

И ведь не виснет, сука.

А будь это то же ядро, но с их исправлениями…

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

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

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

И главное, чего не умело старое ядро: здесь прогрузка и дальность прорисовки разведены. У меня стояла прорисовка 32 чанка, а грузилось 3 на 3 вокруг игрока — и это ещё можно было уменьшить до одного чанка в каждую сторону. На прежнем ядре так нельзя: там прогрузка намертво привязана к дальности прорисовки.

У самой генерации нашёлся и минус, но не в ядре, а в сборке: в ней нет океанов, а биомы огромные — чтобы найти нужный, придётся не один час летать.

Как всё заебало. Хочу холодильник. Хочу стиралку. ХОЧУ МОДЫ. ХАААААААААЧУ ЯДРО.

Заодно я попробовал и те бесплатные моды, которые идут к этому ядру от самих авторов. Результат: работает только один — команды. Экономика роняет клиент, скрипты роняют сервер, права работают через жопу и не годятся, потому что не умеют в базу данных, а приваты засыпают сервер ошибками.

Без покупки модов ни хуя не выйдет. Как ни ебись.

Но одну вещь эти дни всё-таки доказали. За всё время работы этого ядра — с перезагрузкой машины раз в 6 часов — сервер не лёг ни разу, и железо ни разу не пропадало из сети. Со старым такое было регулярно.

У кого занять тридцать тысяч на три года без процентов?

Заебало терять проект из-за мудака, который не мог закончить вовремя, из-за своей нищеты, из-за отсутствия альтернатив, которых я не вижу. Заебало в конец. Найти бы, у кого занять: по тысяче в месяц вытяну даже без донатов.

Если бы он закончил в своё время, мы вышли бы в продакшен ещё на старой сборке — уже какая-то аудитория была бы. Может, и место в топе не потеряли бы.

Был и способ обойтись без него совсем: у авторов модов есть внутриигровой магазин, и тогда сайт с его магазином вообще не понадобился бы — голоса и деньги переводились бы во внутриигровую валюту прямо в игре. Только это ещё 7,5 тысячи сверх тех 30, которых и так нет.

И отдельно — про то, как выглядела помощь:

Пить пиво в среду — время есть. Потыкать сервер, подумать, погуглить, предложить идеи — ИЗВИНИ, Я ЗАНЯТ.

Октябрь 2024. Первый купленный мод

Занять 30 тысяч не вышло. Я спросил у своих, спросил знакомого айтишника из другого города — тишина.

10-го пришла зарплата. Отложил я 1000 — вместе с прежним донатом на моды стало 3. В тот же вечер dukeabv написал: «удвою». Стало 6.

Дальше я считал уже по-другому. У авторов была скидка 10 процентов на всё сразу: от 30 тысяч это 3 тысячи. А от одного мода за 7,5 — 350 рублей. Мне объяснили, что по другим модам скидки другие и в сумме выйдет те же 3 тысячи.

11 октября я оплатил первый мод — тот самый, на права и группы. Оставалось доплатить 1150.

Один хуй других вариантов нет. А бросать полтора года работы коту под хвост — у меня никаких нервов не хватит.

Расклад на тот момент был такой: 2 тысячи задонатили раньше, 3 тысячи добавил он, 1000 отложил я сам. Откуда взять оставшиеся 24 — непонятно.

Остальная аудитория донатить ещё не хочет.

И их можно понять:

Представь: ты донатишь на железо, железо собирается, а тебе потом говорят — ВСЁ ДЕРЬМО, НУЖНЫ ЕЩЁ ДЕНЬГИ. Захотел бы ты ещё донатить?

В тот же день я отпинал программиста по сайту, чтобы он переделал магазин под новую систему прав, и объяснил, почему его план не годится вовсе: новое ядро плагинов не держит. И выяснил, что понадобится ещё один мод — на выдачу вещей, 1250.

В следующем месяце смогу только доплатить остаток за права. И только ещё через месяц купить этот мод.

За что там вообще берут деньги — я, в общем, понимаю. Обычные моды на права хранят всё в текстовых файлах, которые надо править руками. У того, чем я пользовался раньше, был удобный веб-редактор и хранение в базе данных — я через него всё и настраивал. Сделать такое — работа.

Ещё бы настроить сейчас то, что есть. Но сил вообще не осталось.

Октябрь 2024. Цены выросли через 2 дня

13-го, через 2 дня после покупки, я открыл их страницу и увидел новые цены.

Пара новых команд — плюс три тысячи. И плюс семь тысяч к доступу.

Мод, экземпляр которого стоил 2 тысячи, стал стоить 5. Доступ к нему с обновлениями — 12 вместо 5.

Я не вытяну. С таким ростом цен, когда я соберу на очередной мод, он уже будет стоить много дороже, чем сейчас, — не говоря об остальных. Я никак не вывезу.

Проект утекает сквозь пальцы. Только подумал, что надежда хоть какая-то есть, — и на тебе.

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

Я снова возвращаюсь к тому, чтобы продать душу или почку.

15-го я настроил то, что купил, — насколько это вообще настраивается без остального. Права: пока только группа по умолчанию и количество домов для остальных. Один человек взялся попробовать перенести команды из старого плагина прямо в ядро, чтобы не покупать их заново.

На этом мои полномочия всё, можете тыкать, если хотите. Без модов на приваты и прочее я один хуй ничего не смогу, а перенести такой функционал из плагинов в ядро нереально.

Даже так оставалось найти 23,5 тысячи, доплатить 1150 за права и купить мод на замену корзины для магазина.

Октябрь 2024. Нейросеть, которой у меня нет

В те же дни я пробовал зайти с другой стороны — приспособить к работе нейросеть.

Сперва локальную, на своей машине. Модель на 70 миллиардов параметров требует 128 гигабайт видеопамяти; самая большая — 800 гигабайт оперативной. Та, что поменьше, съела у меня 13 гигабайт памяти и всё равно висла, потому что ей мало.

Ясно, понятно: локальные нейронки отменяются.

Машины, на которых это работает по-настоящему, я потом из любопытства посчитал: получалось миллионов 9–10 рублей.

Оставалась платная подписка на обычный чат — 20–25 долларов в месяц, тысячи 2,5.

Даже если бы они были — её не оплатить российской картой.

А без подписки упирается всё в лимиты. Работал я с ней так: даёшь архив с исходниками и задание. В первый раз дал ядро и один плагин, чтобы переписать плагин в мод под интерфейс ядра, — упёрся в ограничения на анализ. Во второй раз дал только ядро с задачей обновить библиотеки и заставить его работать на современной Java — опять упёрся.

Он и это выполнял. Только там жёсткие ограничения на анализ данных, и в итоге всё стопорится.

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

А осилил бы он с подпиской или нет, я не знаю. Попробовать-то не могу.

18-го мне всё-таки дали попробовать — с чужого общего аккаунта, где лимиты были сброшены.

Дал ядро, дал задачу — обновить библиотеки и завести его на современной Java. Начался анализ. «ОШИБКА СОЕДИНЕНИЯ, ПОВТОРИТЕ». Нажимаешь повторить:

А ХУЙ ТЫ НЮХАЙ, ЛИМИТА ТЮ-ТЮ, ПЛОТИ, СУКА, ПЛОТИ.

Со второго захода дело пошло. Он исправлял проект по ошибкам раз за разом — я сбился на 8-м.

Названия архивов убивают: финал, финал компайл, финал компайл фиксед, фиксед фиксед фиксед.

В итоге он обновил всё: библиотеки, зависимости. И упёрся в 2 вещи. Первая — недоступные репозитории, откуда тянутся сторонние библиотеки: из России они не открываются. Вторая — одна-единственная ошибка, которую он после каждого исправления выдавал снова. Я подсунул ему даже документацию — то же самое.

Понятия не имею, как это исправить.

По ходу, нихуя у меня с этим не выйдет. Даёшь ему примеры, ставишь конкретные задачи одну за другой — а на выходе хуйня. Только покупать моды, видимо.

20-го я записал:

Может, залезть в кредит на моды…

И тогда же окончательно похоронил надежду на человека, который обещал подключиться:

Можно не ждать. Он так же с сайтом обещал помогать когда-то.

Возвращаться назад я при этом не собирался, и объяснил почему:

Постоянно ломающиеся чанки, постоянно ломающиеся миры, постоянно ломающиеся сущности — нет, спасибо.

Я уже расписывал по пунктам, чем новое ядро лучше. Ответ был: «И это всё?» — а это, по-моему, говорит о многом. Невозможность нормально сгенерировать мир, постоянные краши, дохнущие миры и железо, которое на старом ядре не вытягивает даже с одним игроком, а то и вовсе без игроков.

Что она предложит — собрать сервер со ста двадцатью восемью гигабайтами памяти?

Октябрь — ноябрь 2024. 330 рублей

28-го я посчитал, сколько собралось после того самого длиннопоста, который я всё-таки выложил.

Триста тридцать рублей.

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

Справедливости не существует.

А 30-го случилось то, чего я не ждал. Человек из игровой гильдии, где я состою, скинул мои сообщения в свой чат, гильдмастер lachaton закрепила их — и задонатила 2 тысячи на моды.

Надежда жива!

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

На эти деньги я в тот же день докупил ещё 3 мода: перезапуск сервера, случайную телепортацию и начисление игровой валюты за время в игре. Самые дешёвые из списка — по 500 рублей каждый.

Список у меня к тому моменту был поделён на 2 части. «Желательно» — это ядра. «Полная необходимость» — приваты за 7,5, регенерация карты за 4, чат за 1850, варпы за 1600, очистка миров, экономика и наборы — по полторы тысячи, логирование действий игроков за полторы, баны за 1000.

Осталось собрать всего-то двадцать одна тысяча девятьсот пятьдесят.

Тут же вылезло и первое, за что я заплатил не глядя. Купленный рестартер — не то же самое, что был плагин: он умеет только безопасно выключить сервер, сохранив миры, игроков и инвентари. Расписание на 4 раза в сутки я настроил, перезагрузку самой машины через планировщик тоже: она поднимается минуты за 2, следом стартует панель управления, а ещё через 2 минуты — сервер. А вот как предупреждать игроков перед остановкой, я не понял вовсе: заданиями это делается только на конкретное время, а значит, их нужно больше 30 на каждый перезапуск — и умножить на 4. Они и так иногда глючат; при таком количестве забагуют наверняка.

И ещё одно, о чём я забыл: нужен мод, отвечающий за выдачу предметов в магазине. Без него магазин не работает вообще — ни тот, что делает программист, ни любой другой. Ещё полторы тысячи.

Дальше цены снова пошли вверх. 3 ноября обновление для регенерации карты подорожало с 4 тысяч до 7,5.

Как я и говорил: пока насобираю на один мод, он будет стоить уже куда дороже. С такой инфляцией, пока соберёшь на один, другие будут стоить как подбитый боинг.

Итог этих дней такой. В своей группе на 150 человек я выложил всё как есть — задонатили 330 рублей. В игровой гильдии на 28 человек одна женщина дала 2 тысячи. Потом, после второго поста, кто-то добавил ещё 1000 — её я сразу пустил на очередной мод.

Осталось двадцать тысяч сто пятьдесят.

Чувствую, с таким дерьмом, как водоканал и энергосбыт, хуй я даже по тысяче-полторы в месяц смогу выделять на моды. Без света и воды бы не остаться.

А программист по сайту в те же дни выдал новую причину, по которой ничего не сделано: у него сломалась клавиатура.

Ноябрь 2024. Письмо в чат

Просить я не решался полгода. Страница со сбором была заведена ещё в мае 2024-го, и весь вопрос, который я себе тогда задавал, звучал так:

Интересно, сколько человек ливнет из группы, если я скину туда это.

Мне ответили, что скидывать такое, наверное, не стоит — по крайней мере без запроса. Я и не скинул.

4 ноября я написал и в группу с тестерами, и в ту, где сидят товарищи, обещавшие помогать. Тишина.

На моих знакомых рассчитывать не приходится. Администрировать чужой говнопроект — С РАДОСТЬЮ! Заняться нашим общим — ДА НЕ, ЧУВАК, РАБОТА, ДА И ВООБЩЕ Я ТУТ В ДРУГУЮ ИГРУ ИГРАЮ, ГЛЯДИ, ЧО ПОСТРОИЛ.

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

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

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

Этот же текст — историю проекта с самого начала, со всеми цифрами — я попросил закрепить в группе.

Те 10 тысяч, что я добавил от себя на этапе проблем с железом, складывались так: 5 с зарплаты и 5 из денег, которые собирали мне на видеокарту, — и то только потому, что недостающее за видеокарту мне отдал другой человек в счёт оплаты за проводку.

Мне ответили — по-деловому. Посоветовали ещё несколько чатов, в том числе городской чат разработчиков игр, и клуб, где можно месяцами писать о себе в разделе самопиара, — правда, вход туда стоит тысячи 2,5. Посоветовали оформить всё одним постом со ссылками на дневник разработки и на сбор, по плану: привет, меня зовут так-то, я делаю то-то, вот история, вот что получилось, вот сколько ещё нужно.

И сказали прямо:

А то много буков путаного повествования читаются с трудом.

Здесь и вылезло то, чего у меня нет.

По поводу дневника разработки — в том и смысл, что его как бы нет. Всё сводилось к сообщениям в телеграме.

Информацию на сайте я давно не обновлял, руки не доходят: там бы с серверной и клиентской частью разобраться.

В том же чате, к слову, за год с лишним собрали на нужды всей группы 65 тысяч.

Пока это тянулось, я делал то, что мог делать сам. 6 ноября потратил день, чтобы разобраться в структуре серверных команд и выпилить всё лишнее — то, что уже заменено, будет заменено или работает криво. Отдельный мод с командами я почистил быстро, а вот в самом ядре понять, что для чего напихано, оказалось тяжело: если точка появления игроков и так задаётся через варпы, зачем существует ещё и отдельная команда, которая делает то же самое другим способом? Разобрался. Спавн наконец стал работать нормально, а не через варпы.

8-го я решился написать автору исходного ядра — того самого, от которого ушёл.

Может, поможет. А может, пошлёт.

Библиотеки и методы в ядре я к тому времени обновил сам. А вот заставить его запускаться на современной Java — не смог.

Он на своём ядре это сделал. Авторы сборки на своём сделали. А я хочу на этом.

А 12 ноября пришла хорошая новость — редкий случай. Совершенно посторонний человек сделал ровно то, чего не смог я: заставил это ядро запускаться на современной Java. И выложил в общий доступ, бесплатно.

Хоть где-то хорошо.

У тех, кто продаёт моды, эта возможность стоила 5 тысяч.

Минус пять тысяч у них.

Радости, впрочем, хватило ненадолго. Ушли 5 тысяч из списка — а всё остальное осталось.

Так что опять моя работа с проектом всё. Без денег, либо джависта, либо результата от программиста нихуя не могу.

Тогда же сорвалось и последнее, на что я рассчитывал. Человек обещал собрать весь мой текст воедино, структурировать, привести в вид, который не стыдно выложить. Кормил завтраками и в итоге проебался. А без такой подготовки я не могу отправить это ещё в пару городских групп — в надежде, что помогут собрать.

Я не умею нормально текст расписать. А чатжпт творит хуйню.

Дневник разработки я в итоге завёл сам — в ноябре же — и написал о проекте везде, где мог.

После этого не задонатил больше никто. Помогать трудом не захотел никто из тех, кто умеет. Деньгами за всю кампанию собрали 7 тысяч из минимально необходимых 30.

Зато регулярно появлялись люди с предложением, которое я к тому времени уже узнавал с первой строки: «давай ты будешь делать мне бесплатно?»

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

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

Ноябрь 2024. По полторы тысячи в месяц

18-го я решил: плюнуть на всё и выделить с зарплаты полторы тысячи на один мод.

Ну не трубы же делать в самом деле.

Труб, кстати, нужно было на 2,5 тысячи — и они тоже не появились.

Дальше начиналась арифметика бедняка: из оставшегося списка за полторы тысячи и дешевле шло 6 модов, один стоил 2, один 5, один почти 7 — и это уже со скидкой. Я спросил у тестеров, какой брать первым.

Один промолчал. Второй ответил, и в ночь на 19-е кто-то задонатил ещё 2 тысячи. Вместе с моей 1000 это дало 3 — и я купил сразу 2: чат и варпы.

Скидки у них при этом считались, кажется, от балды: на один мод 6 процентов с небольшим, на другой 18.

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

Логика, впрочем, объяснимая: моды теперь пишет в основном другой человек, и он получает процент с продаж. А как ему считать свой процент, если скидки берутся из головы?

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

И всё-таки нужен процессор со встроенной графикой и мини-монитор.

И отдельная старая боль — место. Внешний диск нужен хотя бы на пару терабайт: мультфильмы, которые мать смотрит онлайн через торренты, виснут, если раздающих мало, а скачать их некуда — там по 200–300 гигабайт.

Ссэдэ на терабайт от семи тысяч, жёсткий от пяти с половиной. А когда-то я брал внешник на два терабайта за пять.

Доллар в те дни перевалил за сотню, и цены летели вверх на всё сразу.

К 22 ноября список выглядел так. Куплено: права, чат, варпы, баны, рестартер, выдача валюты за время, случайная телепортация, 2 мелких фикса, вспомогательный мод — и команды, взятые ещё в начале, по старой цене в 2 тысячи и без обновлений, которые теперь стоят 3.

Осталось 6: приваты, регенерация карты, очистка миров, экономика, наборы и логирование действий игроков.

Общая необходимая сумма по скидкам — семнадцать тысяч сто пятьдесят.

Цены за это время успели ещё подрасти: приваты с 7,5 тысячи до 7,5 с копейками, а регенерация карты — с 4 тысяч до 7,5.

Ноябрь 2024. Ищем программиста

22 ноября истёк последний срок, который я дал человеку по сайту.

Двадцать второе уже, а этому хоть кол на голове. Времени дал до двадцать четвёртого — и тишина полная.

Ну и по всей видимости, ищем пхпшника.

Тогда я сел и выписал, что вообще нужно сделать. Получилось 8 пунктов.

Первое: поменять настройки и запросы к базе для покупки игровых групп — со старой системы прав на новую. Второе и третье: то же самое для игровой валюты и для банов. Четвёртое: доработать продажу групп, чтобы человек, купивший старшую, не мог купить младшие. Пятое: разобраться в структуре проекта и в голосовании, при необходимости доработать его и написать задания в планировщике для еженедельных и ежемесячных наград. Шестое: починить пополнение через одну платёжную систему — сменился домен, возможно, изменился протокол. Седьмое: добавить вторую платёжную систему.

И восьмое, самое сложное: сделать магазин предметов с продажей за деньги сайта, за деньги плюс голоса и просто за голоса — либо с нуля, либо так, как задумывал он (наработок он не оставил никаких), либо вернуть старый магазин из прежней версии личного кабинета и дописать к нему нужные валюты.

Дальше я стал спрашивать по знакомым. Мне ответили, что ребята за копейки не работают: минимальная цена — 1000 долларов. И это за 7 пунктов, без магазина. Ровно столько же назвал и тот, кто пропал, — теперь уже бывший соотечественник, живущий в Польше.

Как бы, блядь, алё. За штуку баксов тут реально можно купить сайт под ключ куда лучше, чем можно представить.

А семь пунктов за тысячу рублей я считаю нормально. Поправить чужой код в местах запросов к базе, со старой структуры на новую, и написать скрипты в планировщик, если умеешь, — ты же не с нуля сайт пишешь.

Один знакомый — программист на Java, а не на PHP — сказал, что за ту же 1000 долларов он мне сам с нуля напишет и сайт, и личный кабинет, и магазин.

Короче, к ребятам своим с их запросами можешь даже не писать. Я с такими героями программирования работать не смогу, им в гугл устраиваться нужно.

И на этом мои знакомые пхпшники иссякли.

Оставалось одно: выкатить пост про того, кто пропал, и в той же группе искать ему замену.

Ноябрь 2024. Он объявился

24-го, пока я обдумывал этот пост, он позвонил сам — первый раз за всё время.

Голосовым, на 2 минуты. Смысл такой: у него на работе завал, неделю работал по 16 часов в день, срочные заказы, домой приходит и за компьютер даже не садится. Ещё 4 дня будет по 12, а вот с 10 декабря времени станет много — тогда максимум по 8 часов, а может, и выходные освободятся.

Мне, конечно, будет очень обидно, если ты выложишь что-то.

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

Была и претензия ко мне: у него нет прямого доступа к сайту, и файлы приходится перекидывать по одному, а потом каждый раз сверять, что я там поправил сам.

Заодно выяснилось, что и второй человек, тот, что делал лаунчер, тоже пропал:

Она не отвечает мне уже неделю или две, играет в свою террарию. Я не уверен, что над лаунчером вообще что-то продолжится с такими темпами.

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

27-го он вернул деньги, выдал наработки и пообещал доделать бесплатно.

Переводить их из Беларуси, кстати, оказалось отдельным приключением: прямых переводов между странами давно нет, на его карту не отправишь, а про то, что у них есть система быстрых платежей, он и сам не знал.

Ноябрь 2024. 3 статьи

25-го мне наконец отдали текст — тот самый, который человек обещал структурировать.

Аж на три статьи расстарался.

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

И одна фраза меня развеселила отдельно:

«Причём цены не стоят на меньше». Где-где цены не стоят?

25-го вечером я выложил всё это 3 статьями и разослал везде, где мог.

В чате проектов первый же ответ на мой пост выглядел так: человек рассказал, что занимается проектом куда масштабнее, и дал ссылку на свой.

Я скинул проект в проекты, а он ответом на моё сообщение рекламу себе делает.

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

Рад за вас.

27-го пришли 2 тысячи от человека, которого я не знаю, — в переводе только имя и первая буква фамилии.

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

А расчёт по модам стал выглядеть так: мод для магазина выйдет в декабре, примерно за 2200; экономику я куплю сейчас, и тогда у меня будут все базы, под которые надо переделывать запросы в личном кабинете, — права, экономика, баны. Плюс придётся заказывать у них отдельный мод на добавление предметов в магазин и выдачу их игрокам.

Итого необходимая минимальная сумма — пятнадцать тысяч семьсот пятьдесят.

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

Нихуёвый ещё списочек.

Ноябрь — декабрь 2024. Я делаю сайт сам

Раз программиста не было, за сайт я сел сам.

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

Ебучее униксовое время. Так-то лучше.

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

Ненавижу медиа-запросы.

Кое-что так и не поддалось. Рейтинг новостей и комментариев включён в настройках, по идее работает и по идее выводится — но иконки не появляются вовсе, а если выбрать режим оценки от 1 до 5, движок выстраивает 5 цифр столбиком сверху вниз, и никакие стили на это не влияют.

А у комментов как ни ебись — вообще не появляется рейтинг. Совсем. Абсолютно.

К концу ноября осталось 3 пункта: правила, список модов и голосование. Список модов взялся переделать человек с Украины — в выходные. У второго оттуда же к тому моменту сутки не было света.

Голосование — тут сами знаете, сложно. Я вообще не уверен, что оно в голом виде пашет, пока нет скриптов в планировщике и сервер не добавлен в топы.

29-го я на сутки открыл доступ к сайту — пусть посмотрят и скажут, если что заметят. Первое, что заметил я сам: сдохли подпункты меню.

А назавтра нашёлся баг, которым я даже немного горжусь:

Хотите знать, как превратить свой телефон в кирпич? Открываете мой сайт через телегу, мотаете до подвала, там есть логотип, нажимаете на него и перетаскиваете. Всё, ваш телефон — кирпичик.

Экран перестаёт реагировать на что-либо, даже перезагрузить нельзя — только физическими кнопками. Скриншот этого я снял тоже кнопками.

И в те же дни — ещё одно письмо из тех, что приходят регулярно:

ДАВАЙ ТЫ БУДЕШЬ ДЛЯ МЕНЯ БЕСПЛАТНО ДЕЛАТЬ.

Я понимаю, всем нужны энтузиасты. Но писать такое владельцу другого проекта — это уже верх наглости.

Такие письма пошли потоком. Каждый раз одно и то же: либо делай мне бесплатно, либо поделись купленными модами.

А под моим постом в чате проектов человек выложил рекламу своего сервера — того самого, на базе которого мне до этого предлагали всё переделать. Начиналась она так:

Пока ребята там что-то пилят, в Иркутске уже как два года крутится образовательный сервер для детей и родителей.

Нормально так выехал на чужой теме.

И тогда же я записал то, что думал на самом деле:

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

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

А даже после составления дневника и написания постов везде, где только можно, никто больше не донатил.

К середине декабря пропал и он.

Скотомудилище капитально проебалось. Молчит везде, и никто не знает, где этот пидор.

23-го он объявился сам — и даже не стал объяснять, где был. Впрочем, в любом случае это было бы очередное оправдание.

В те же дни я задумался о другом: как вообще закрепить за собой название проекта. Оказалось, для регистрации товарного знака нужно быть юридическим лицом или предпринимателем, а стоит это неподъёмных денег.

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

Так что требуется от меня? У меня проект не готов; если нужна информация по нему, всё есть в дневнике, кроме последних событий.

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

Майнкрафт — вопрос творческий, будем развивать.

Творческий он, наверное, только ванильный. В остальном он финансово затратный, как выяснилось.

Декабрь 2024. Он зависает

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

К 28-му стало понятно другое: система зависает. Причём чаще именно тогда, когда на ней нет нагрузки, — то есть когда сервер не запущен.

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

Отозвался человек. Цена — около 1000, самовывоз с другого конца города, после 7 вечера. Я поехал.

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

Выехал в 18:30, вернулся в 21:30. Пробки были 10-балльные; по дороге туда я дважды уснул в автобусе.

Старый монитор, который я хотел приспособить к серверу, не подошёл: повесить его рядом можно только боком, а поворота изображения в нём нет.

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

Причина, судя по всему, в процессоре. Под Windows он работал нормально, под Linux — то работает, то нет. На моей собственной материнской плате он когда-то в Linux просто перезагружался сам, и чем выше была нагрузка, тем чаще.

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

Декабрь 2024 — январь 2025. «Давай ты будешь мне делать»

Двадцать девятого закончилась история с человеком, который выложил рекламу своего сервера под моим постом. Он написал мне лично.

У меня сервер уже как два года крутится, тематика та же. Могу предложить тебе воплощать свои хотелки на базе моего сервера. У меня и инфраструктура поднята, и юзеры есть. Боюсь, что это единственная точка сотрудничества, что я могу предложить.

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

И он такой не первый.

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

В том чате мне ответили спокойно: у него проект есть и работает, он его сам сделал; пришёл, предложил — нет так нет. А потом добавили то, что стоит запомнить целиком:

Вообще, в корне неправильно предполагать, что люди пойдут помогать делать что-то, что ты сам захотел сделать. Им надо понимать, почему им самим это может быть надо.

Не предполагать, а надеяться. Тем более что в посте расписано, почему это им может быть интересно. Ну и опять же, люди, которым это было надо изначально, слились, как только от них реально что-то понадобилось, — хотя проект задумывался вместе с ними.

Это стандартная ситуация — по быстрому сливу, когда дело доходит до момента, когда уже надо реально что-то делать и вкладываться.

Тут ещё нужно смотреть, что на пост с просьбой о помощи только такие люди и откликнулись: «У МЕНЯ СВОЙ ПРОЕКТ, ДАВАЙ ТЫ МНЕ БУДЕШЬ ДЕЛАТЬ». То есть о каком общем деле может идти речь, если каждый хочет для себя.

Купленная затычка, кстати, оказалась не решением, а новой проблемой.

Она просто адски шумит, дичайше. Даже когда монитор отключён и кабель от неё отсоединён — работает и шумит как ёбаный боинг.

Так что процессор со встроенной графикой всё равно нужен. Тем более что для этой игры важна именно частота — чем ближе к 5 гигагерцам, тем лучше, — а у процессоров со встройкой базовая частота как раз выше.

В первые дни января я обошёл всё: в городе на барахолке нужных нет вовсе, в других городах те же модели стоят вдвое дешевле, а в магазинах цена доходит до 15 тысяч. Кинул объявление в чат — тишина.

4 января я наконец поймал ошибку — ту самую, которую 2 месяца не мог увидеть, потому что нечем было смотреть на экран.

Чтож, земля пухом, процессор.

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

Цены при этом росли на глазах: за полчаса, пока я составлял список, 2 позиции подорожали.

Кончилось тем, что я взял новый — за 8400.

Это на три тысячи четыреста больше, чем я рассчитывал, и я пиздец расстроен этим. Прямо скажем, вообще не рассчитывал, что придётся брать процессор. Но хотя бы в пять тысяч хотел уложиться.

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

Был и вариант проще: у одного знакомого стоит ровно тот процессор, который мне нужен, и он сам говорит, что ему не хватает и пора менять. Не захотел.

Надо, но денег нет. Гендиректор, денег нет.

И отдельная история тех же дней. Я спросил у человека, какой процессор лучше, и не согласился с ответом.

ИДИ НАХУЙ, БАН.

Мало того что забанил в переписке — забанил заодно мой айпи-адрес, который у меня постоянный. А через него у меня работал VPN — и на компьютере, и на телефоне через домашнюю сеть. Полдня я сидел без доступа вообще.

Подло.

К ночи бан он снял.

А 5 января в том же клубе со мной заговорил другой человек — и это был первый за долгое время разговор, в котором мне что-то предложили, ничего не попросив взамен.

Почитал про твой проект. А что надо вообще? Я могу и мониторы подогнать, если надо, то можно договориться по серверному железу. Или ещё чего?

Я объяснил, что нужен-то мне всего один маленький монитор для домашнего сервера: тот, что повесил для проверок, слишком большой и греется так, что воздух от него идёт прямо в сервер.

Дальше он спросил, что это вообще за сборка. Сын у него играет, а он не понимает, в чём соль.

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

Он спросил, есть ли у нас сообщество, — хотел записать туда сына, 12 лет.

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

Я честно рассказал, что и как: сервер и сайт сейчас выключены, процессор под замену, наскрёб 8 тысяч на новый. Мощности нужны такие-то: памяти хватит, а вот места мало — 57 миров, их копии, да ещё резервные копии основного мира каждые 3 часа за трое суток. Прошлая сборка, где миров было заметно меньше, занимала 700 гигабайт без копий.

В общем, я понял. Вернусь, погляжу одно и другое, а там и решим чего.

Я тут буду серверную одной крупной компании разгребать — можно что-то и списать на развитие.

Тогда же он предложил свести меня с одним свободным программистом — про пропавшего сказал коротко:

Их если не бить и в страхе не держать — они все такие.

Правда, дальше он пропал — и я не стал навязываться.

Он мне сам не писал после этого. А я не хочу навязываться. Может, он уже вовсе там передумал.

7 января процессор в сервере окончательно встал: теперь он не работал даже пары часов.

8-го пришёл ответ от авторов модов насчёт того, отдельного мода, который они обещали сделать после праздников:

НЕ СДЕЛАЕМ, ТАМ ПЛАТЯТ БОЛЬШЕ.

Потом, впрочем, передумали и сказали, что сделают сами.

9-го я собрал новый дневник — отдельной страницей, чтобы было куда отсылать людей. И заодно посчитал всё ещё раз.

Даже если не платить за свет и взять себе всю зарплату, даже если она придёт полностью, — это 10 тысяч. Из них полторы уйдут на новый блок питания: тот, что стоит в сервере, старше некоторых людей, и после замены всего остального он там последний из старого. Ещё 3,5 на трубы и фитинги. Телефон 9 с лишним. Монитор 15. И 2200 я отложил на тот самый мод для магазина — он нужен в любом случае, с программистом или без.

14 января я снова попросил своих поискать человека на сайт.

По идее, скоро придёт процессор, будет готов мод на выдачу предметов — упираемся только в сайт и покупку модов. Этот явно уже нихуя не собирается заканчивать.

И приложил тот же список из 7 пунктов, который висит с ноября.

Процессор ехал 19 дней. Дата доставки менялась 4 раза: 21-е, 23-е, снова 21-е; после Москвы о нём вообще пропала всякая информация.

По ходу, с Домодедова до Иркутска проц пошёл на своих ножках.

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

Никому, никогда не посоветую. Даже врагу.

Но сервер завёлся — и даже без обновления прошивки, которого я боялся.


В следующей части — 2025 год: поиск программиста, чужое ядро за 50 тысяч, месяц отладки NEID без знания Java и ночь, когда оно наконец заработало.