Остров, которого не было
Последний день июля. Мы собрали сервер и клиент в одну мастерскую, открыли мир — и не нашли в нём главного острова, который знал каждый игрок.
Плоская трава и горстка жителей
31 июля, без десяти три часа дня, в одну папку легли две большие программы: наш сервер и наш клиент. До этого они жили порознь и держались друг за друга на честном слове. Переезд сразу это показал — пришлось развязывать узлы, которых никто раньше не замечал.
Новый сервер к тому дню умел немало: пятьдесят видов существ, больше двух тысяч рецептов крафта, которые проверяет сервер, жители и надписи, режим островов и переход между мирами за двадцатую долю секунды — без переподключения. Но сами миры были заглушками: три плоских поля по пять слоёв земли с подписями «Хаб», «Острова», «Выживание».
Через пару часов на месте заглушек появились настоящие карты: земля хаба и арена сплифа. Вечером мы зашли посмотреть — и увидели плоскую траву с горсткой жителей. А где же остров?
Остров жил только в коде
Каждый, кто играл на Mypex раньше, помнит парящий остров-хаб. Мы искали его в файлах карт и не нашли. Оказалось, что прежний сервер строил остров заново при каждом запуске — кодом — и никуда его не сохранял. Он существовал только в те минуты, пока сервер работал.
Остров восстановили по чертежу, деталь за деталью: радиус тридцать блоков с волнистым краем, площадь из кварца и призмарина с кольцом и диагоналями, световой колодец посередине, восемь фонарей по кругу, две ели и два дуба, красная стрелка над колодцем и четыре маленьких острова-спутника вокруг. Колодец, как и раньше, вёл в мир выживания.
Забегая вперёд: всего через неделю мы от этого острова откажемся. Но в тот вечер он вернулся — и стало понятно, сколько всего придётся собирать заново, а не переносить.
«Кто строит главный хаб?» — «Никто»
Так честно прозвучал ответ на вопрос, кто отвечает за место, куда попадает каждый вошедший. К восьми вечера оно появилось: каменный зал общего лобби. Тёмный сланец, белый кварц, колоннада и две большие арки в режимы с цветным стеклом над проходом, подсветка бирюзовыми фонарями, двое встречающих и табло «сейчас здесь: N». Материалы выбраны нарочно: ни травы выживания, ни песка островов — третье место узнаётся без единого слова.
С этого вечера любой вход на сервер шёл через общее лобби, у каждого режима появилось своё лобби, а вещи и здоровье перестали переезжать между режимами. И ещё одна важная мелочь: каждый остров стал отдельным миром. Раньше все острова лежали рядом, и со своего участка были видны чужие.
Вещи, которые живут
1 августа ушло на то, что делает мир обжитым. Сундуки стали настоящими хранилищами — до этого сундук отличался от кирпича только картинкой. Клиент научился рисовать мебель, и первым предметом стал обычный стул. На островах появились кисть-перекраска, готовка в коптильне и печи, раковина, в которую можно набрать воды, и грядка, которая растёт, даже пока хозяина нет. Новичок находил в сундуке стартовой хижины хлеб, книгу-руководство и деревянный топор.
Из чата пропадали тире. Строка топа «1. Игрок — 1 000» доезжала без тире, потому что такого знака не было в шрифте. Таких «невидимых» символов нашлось 665 вхождений, из них 425 — тире. Шрифт вырос почти вдвое, а незнакомый знак теперь рисуется коробочкой, а не исчезает.
Стоп-кран
2 августа стал самым плотным днём недели — больше пятисот правок. И в этот день прозвучало первое решение, которое разом поменяло планы: большой каталог мебели поставили на паузу — «просто не делай… совсем пока что». Силы ушли туда, где игрок почувствует разницу без единой новой картинки.
Например, в бой. До этого кулак и лучший меч снимали одинаково, а мирные существа не могли ответить на удар — никогда. Теперь урон зависит от оружия, существа дают сдачи и роняют добычу. Чужие руки ожили: клиент давно отправлял взмах, но сервер его никому не пересылал, и руки других игроков висели, как у манекена.
В мире выживания впервые появилась жизнь: вокруг спавна — пастбище со зверями, к северу — пустоши с монстрами. До этого дня правил появления существ не было ни в одном мире. Ломать стало честно: время слома считает сервер по твёрдости блока. Сплиф превратился в настоящую игру: башня из четырёх травяных этажей, этажи пропадают по одному, а под конец раунда исчезает блок под ногами у каждого. На прежнем сервере вход на арену стирал вещи навсегда — у нас они убираются и возвращаются при любом выходе.
А первым «станком» стал котёл, который сам варит по рецептам. В первой версии свекольный суп оказался недостижим: котёл считал клетки, а свёкла ложится в одну клетку стопкой. Научили считать штуки.
Пойманное до игроков
Часть работы этих дней никто из игроков так и не увидит — и это хорошо. При переподключении можно было потерять всё, что нажил во второй сессии. Повторно пришедший сетевой пакет ронял кусок мира в дыру. Самый нижний, несокрушимый слой перенесённых карт приезжал воздухом — 224 640 клеток, сквозь которые можно было провалиться. Вода и лава стояли неподвижно. Всё это нашли и починили до того, как новый сервер увидел первого игрока.