Сервер не отвечает
Глава 1. Последний приём
Запах хлорки в поликлинике всегда один и тот же, едкий, казённый, въевшийся в стены так же намертво, как плохие новости. За дверью в коридоре шаркали, кашляли, скрипели стульями. Сидел в кресле с горячим кожзамом подлокотников (нагретым предыдущим пациентом, ещё не остывшим) и смотрел на таблицу Сивцева. Вернее, смотрел туда, где она должна была быть. Белый прямоугольник. Наверху тёмное пятно, буква Ш, или Б, или что угодно. Дальше третьей строки шла мутная серая каша.
Елена Сергеевна (я знал её имя по табличке, которую с трудом разобрал год назад) стояла у монитора и двигала пальцем по снимку. Снимок горел оранжевым на экране, с чёрными точками, которые она и имела в виду. Куда именно указывал палец, не разглядеть.
— Вот здесь, — голос ровный, тот профессиональный ровный, который вырабатывается после тысяч похожих разговоров. — И здесь. Прогрессирует быстрее, чем мы ожидали.
Кивнул.
— Насколько быстрее?
Короткая пауза. Такая, после которой всегда плохое.
— Полгода. Может, меньше. Меньше, вероятнее.
Что-то случилось с руками раньше, чем дошло до головы: пальцы сами сжались на подлокотнике, вдавились в горячий кожзам, и горло сделало то движение, которое делает вхолостую, когда нечего глотать. Тело уже знало. Просто ждало разрешения.
Под левым ухом тихонько пикнул телефон в кармане. Рабочий чат. Уведомление, которое уже не прочитать без скринридера, потому что шрифт в мессенджере обновили, новый не масштабируется нормально, неделю откладывал разобраться. Детали. Всегда какие-нибудь детали.
Она ждала реакции. Чувствовал это по паузе, по тому, как затихло её движение у монитора. Смотрела на меня, а я смотрел на размытый белый прямоугольник таблицы и думал о том, что FATAL ERROR в логах означает инструкцию, а не конец. Не паниковать. Зафиксировать. Искать причину. Либо причина есть, либо переустанавливаешь систему и начинаешь заново.
Только система на этот раз была я сам. И «начать заново» относилось совсем не к компьютеру.
— Есть что-то новое? Клинические исследования, новые протоколы?
Она убрала руки от клавиатуры, белый халат двинулся размытым силуэтом в сторону стола. Сложила их одну поверх другой на столешнице, и оттуда, с расстояния вытянутой руки, долетело лёгкое: духи или мыло, что-то нейтральное, рабочее. Жест, который, наверное, отрабатывают на каком-то курсе. Как сообщать плохое, не делая хуже.
— Мы отслеживаем. — Голос остался ровным, но тон чуть сдвинулся, туда, где уже не врач, а человек. — Пока нет ничего, что изменило бы прогноз.
Упор для подбородка у щелевой лампы холодный, металлический, помнил это с прошлого приёма. Сейчас лампа молчала, жужжала слабо, линзы не щёлкали. Обследование было позади. Сейчас был просто разговор. Разговор, после которого выйду в коридор и скажу себе, что всё нормально.
Руки лежали на подлокотниках спокойно. Голос вышел ровным. Тело вообще не понимало, что должно было паниковать, или понимало, но не сообщало наверх. Только под воротом рубашки что-то стало влажным, и этот запах тоже знал: кислый, стрессовый. Тело всё-таки слышало. Просто говорило об этом иначе, чем сознание.
— Спасибо.
Она чуть медлила (секунда, не больше) прежде чем кивнуть. Может, ждала чего-то ещё. Вопроса, слезы, ярости. Того, что обычно бывает. Ничего из этого не случилось, и она, кажется, не знала, лучше это или хуже.
Спасибо за что, непонятно. За то, что сказала? За то, что у неё был такой ровный, привычный голос, что к нему легко было прислониться и не упасть?
Встал, когда она замолчала, нашёл пальто на вешалке у стены (по форме угадал, не по цвету) и вышел, не сказав больше ничего.
Полгода. Новостью была не сама слепота, а скорость. Рассчитывал тайм-лайн под год. Год, это другой ритм, другой объём задач, которые ещё можно успеть. Этот срок означал «не успеть закончить текущий спринт». Это разговор с командой по-новому, это адаптация инструментов, это разговор с менеджером (он уже намекал, давно намекал), только теперь с другими числами.
В коридоре пахло хлоркой и чьим-то бульоном из столовой в конце крыла. Стулья вдоль стен, размытый ряд, лица над ними совсем неразличимые, светлые овалы над расплывшимися силуэтами. Очередь из бабушек смотрела на меня, пока шёл, и затылок зафиксировал это раньше, чем глаза: голоса у стен на секунду смолкли, шорох сместился, как бывает, когда за тобой следят. Лиц не видел. Никогда не видел.
Несколько шагов, и только тогда до сознания дошло что-то странное в ощущении ног. Бахилы. Не снял бахилы. Тонкий пластик скользил по линолеуму под кроссовками, шуршал и собирался гармошкой у щиколоток, и шёл по поликлиническому коридору, как будто всё в порядке, как будто только что не услышал «полгода, может меньше».
Снять? Надо было снять.
Не остановился. Шёл дальше, мимо регистратуры, мимо стойки с буклетами о профилактике чего-то, мимо большого аквариума: он угадывался по форме и по синеватому свечению, тихому и спокойному, как будто кто-то оставил ночник включённым. Рыбки, наверное. Или водоросли, не различить. Синеватый свет. Через этот срок и он станет просто пятном.
Полгода. Хлорка. Бахилы шуршат. Телефон пикнул снова, тот же чат.
Снаружи было светло. Осень, но днём. Серое небо над нечёткими силуэтами деревьев у входа. Мир через матовое стекло, всегда, уже три года, мир через матовое стекло. Там, за стёклами дверей, что-то оранжевело: листья, наверное, или куртка прохожего. Без деталей. Без резкости. Просто цветное пятно в сером.
Всё нормально. Знал, что так и будет. Рассчитывал на год, получил шесть месяцев. Разница всего лишь в числе.
Бахилы шуршали. Не остановился.
* * *
Домой шёл пешком, двадцать минут, которых ни разу не отсчитывал сознательно. Бахилы намокли на третьем перекрёстке, пластик прилип к кроссовкам, но снимать было поздно: мокрая тряпка в руке посреди улицы казалась глупее, чем мокрая тряпка на ногах. Ноги знали маршрут, мышечная память вшита намертво, и пока они шли, голова делала то, что умеет: раскладывала задачу по компонентам. Что успеть, что нет. Что переписать под скринридер, что делегировать, что закрыть красиво, а что просто закрыть. Шесть месяцев, большой спринт. Можно работать с такими числами.
Квартира встретила ровным гулом, кулеры крутились за закрытой дверью комнаты, низкий, привычный звук, который перестаёшь слышать через минуту, как несущий фон в аудиодорожке. Оставлял машину в режиме ожидания круглосуточно. Перезагрузка занимала время, а время стоило больше электричества.
Пальто на вешалку. Кроссовки не снял, прошёл так, и бахилы зашуршали по паркету мокрым пластиком. В кухне на плите стоял кофейник, утром не допил, не вылил, оставил, лишнее движение стоило лишнего движения. Перелил холодное в кружку, сунул в микроволновку. Пока она гудела, встал у окна.
Огни города начинались там, где кончались деревья двора, и тянулись дальше, красные и белые вертикали светофоров, оранжевые размывы фонарей, жёлтые квадраты чужих окон. Всё это смешивалось в широкие светящиеся полосы, без границ, без резкости. Как импрессионизм по принуждению. Красиво, если честно. Всегда замечал и всегда заталкивал мысль обратно.
Потом даже это превратится в светлые пятна на тёмном. Без цвета. Без формы.
Микроволновка пикнула.
За монитором обнаружилось, что рабочий чат не ждал, он уже устал ждать. Менеджер написал в три часа дня, потом в пять. Читал через экранную лупу, носом к экрану, шея тянулась вперёд градусов на пятнадцать от нормального, привычная поза, хиропрактик её ненавидит. «Формат работы». «Обсудить варианты». «Хотим найти комфортное решение». Очень аккуратные слова. Слова, в которых нет ничего конкретного, и именно поэтому нечего оспорить. Try-catch без finally, перехватили и обработали.
Что ответить, непонятно. Что не ответить, понятно: ничего не ответить тоже не получится вечно.
Не ответил. Открыл IDE.
Телефон завибрировал.
— Мама, — сказал телефон голосом, тихо, в динамик, настроено ещё когда перестал узнавать имена на дисплее. Не взял трубку. Положил экраном вниз.
Пальцы задержались на тёплом стекле. Отпустил.
На второй монитор давно перестал смотреть. Чёрный прямоугольник справа (пыль на ободе, матовая поверхность) висел без дела, не сломан, просто не нужен. Купил под два окна сразу, было удобно, а потом перестало.
Код на экране, свой, знакомый до паттернов, стоял на максимальном масштабе: по три слова в строку, тёмная тема, синтаксическая подсветка цветом, форму букв уже не разобрать. Набирал по памяти и по цвету, наклонившись к монитору, и шея ныла уже на второй строке. Запах нагретого пластика и тёплой электроники плыл от системника, знакомый, домашний, единственный живой в квартире.
Когда-то мог сидеть прямо.
Набрал функцию. Дошёл до параметра и остановился. Имя переменной знал, а вот что именно передать, куда смотреть, не понял с первого раза: пришлось тянуться к экрану, считать строки подсказки по цвету. Пять секунд. Раньше хватало периферийного взгляда. Набрал дальше, добрался до вызова, и снова: три точки, третий аргумент не виден целиком, обрезан кромкой дисплея. Подвинул голову ещё ближе, почти уткнулся носом в матрицу. Боль в шее стала ощутимее, тупая, как заедающая петля двери, которую никогда не чинят. Скомпилировал через скринридер. Голос перечислял строки сборки монотонным синтетическим тоном. Успешно.
Пять лет чинил чужой легаси-код. Теперь чинил свой.
Закрыл IDE.
Кофе в кружке снова остыл. Горький осадок на зубах, масляная горечь, уже не кофе, просто привычка. Поставил кружку обратно. За окном огни плыли в те же полосы. Голубоватый свет бил в лицо ровно.
Что-то давило изнутри, без формы и адреса. Не рухнуло, но и не работает, просто крутит, крутит, крутит. Поднял телефон (механически, не подумав) и снова положил. Задел кружку, та шаркнула по столу.
Потом монитор моргнул.
Один раз, коротко, как будто дисплей икнул. Поднял взгляд, экран стоял ровно, код, тёмный фон, зелёная строка курсора на месте. Потёр глаза. Глаза горели от часов за монитором, нормально, привычно. Усталые глаза создают иллюзии. Матрице три года, подсветка стареет. Или электрика в доме. Или просто устал.
Моргнул снова.
Дольше, секунда, почти полторы. И уже не только дисплей, лампа на столе тоже качнулась, мигнула. Что-то сгустилось вокруг, как перед грозой, когда ещё нет дождя, но кожа уже знает, что он будет. И запах, металлический, сухой, как бывает в серверной, когда где-то искрит. И кулеры замолчали разом, без перехода, и тишина за стеной оказалась неожиданно громкой.
Замер полностью, руки на столе, только сердце отдавало в уши.
Рука потянулась к мышке, рефлекс, когда экран делает что-то непонятное, первый инстинкт кликнуть, пошевелить курсор, проверить отклик. Курсор двинулся нормально. Система отвечала. Всё работало.
Но что-то уже было другим.
Монитор мигнул в третий раз, и по нему прошла волна, горизонтальная, чёрная, сверху вниз, как рябь по пикселям. Как помехи на старом CRT. Только матрица IPS, которой так не бывает.
Так не бывает.
Последний раз такое ощущение было в детстве, с вышки в бассейне, стоишь, смотришь на воду внизу, и ещё не прыгнул, но уже точно знаешь, что прыгнешь.
Монитор мигал. Лампа мигала. За окном всё то же. Телефон молчал экраном вниз.
Завтра позвоню маме.
* * *
Эту мысль, последнюю связную, с адресом и намерением, смяло в долю секунды. Стол, экран, кружка с кофейным осадком, запах горелой проводки, всё исчезло разом, как строчку выделил и удалил одним движением. Ctrl+A. Delete. Белое. Потом null.
Тело пропало целиком: руки, дыхание, вес, температура. Вопрос «где я» не имел ответа, потому что не осталось того, кто мог бы занимать место. Последнее, что мелькнуло от прежнего, металлический привкус на языке, острый, как лизнуть батарейку, и тоже погас. Темнота заняла всё пространство, где раньше был я. Темнота как NULL, отсутствие значения, даже не чёрный цвет.
Раньше срока.
Полгода, сказала Елена Сергеевна. Может, меньше. Вот и меньше, без нарастания, без того плавного завершения, под которое вёл все расчёты.
Телефон лежал экраном вниз. Она звонила. Положил. Завтра, сказал себе. Завтра теперь не состоялось.
А потом та часть головы, которая привыкла не паниковать, а искать причину, включилась сама, по привычке, без участия воли. Мерцание экрана. Горизонтальная волна по матрице, которой на IPS-панели не бывает физически. Кулеры замолчали одновременно. Паттерн сложился быстро, и говорил о чём-то другом. Инсульт, может быть. Или что-то, для чего пока слов нет.
Хотя бы не больно.
Темнота длилась. Ни рукоятки, ни точки опоры, ни интерфейса, ничего, за что можно было бы зацепиться, пока она не сомкнулась окончательно.
* * *
Ветер пришёл первым.
Движение по коже предплечья, прохладное, с влажностью, с запахом, который нос зафиксировал раньше, чем проснулось всё остальное. Что-то тёмное и живое, густое, как земля, в которой что-то гниёт и прорастает одновременно. И поверх, острый, электрический, незнакомый: что-то плотнее хлорки и горелой изоляции, ближе к тому, каким становится воздух после удара молнии, только без грозы, без дождя, просто это, само по себе, постоянное.
Потом вернулось тело.
Разом, ударом. Земля под лопатками, тёплая, плотная, с собственным весом, настоящая. Стебли у ладоней, острые, влажные, кончики кололи кожу, каждый отдельно, и под ними земля снова тёплая, нагретая, как будто она дышала подо мной. После той пустоты, в которой не было ничего, включая понятие «тело», каждый укол травинки ощущался как подтверждение.
Открыл глаза.
Голова была повёрнута набок, трава в двух сантиметрах от носа, каждая стебельная жилка прорисована, капля росы на изгибе ловила свет, и там, где зелень у корней темнее, тёмная до почти чёрного, а на кончиках желтоватая, живая, светится. Зрение было здесь целиком, сразу, всё резкое, всё яркое. Сколько оттенков зелёного одновременно? Пять. Семь. Двенадцать, перестал считать, глаза уже уходили дальше, жадно, сами, без разрешения.
Несколько секунд просто лежал, не двигаясь.
Камень рядом, трещина через весь бок, и в трещине лишайник серо-оранжевый, крошечный, как карта ненаписанного города. Кристаллики кварца на сколе блестели, и что-то в горле сжалось и не разжалось.
Поднял руку перед лицом.
Замер.
Линии на ладони, все. Каждая линия, их там несколько десятков, пересекаются, расходятся, истончаются к кромке. Поры. Маленькие, обычные, человеческие поры на коже между большим и указательным пальцем. Грязь под ногтями, чёрная полоска под каждым, земля с того места, куда упал. Столько раз смотрел на собственные руки через экранную лупу, угадывал контуры по цветовому пятну, и не узнал теперь. Это были мои руки. Не узнал.
Опустил руку. Выдохнул.
Глаза защипало. Слёзы пришли от резкости, от количества, глаза не были рассчитаны на столько сразу, зрачки болели. Горячее потекло по вискам в траву, и не стал вытирать, рука сама опустилась обратно, а глаза уже шли дальше: к дереву.
Одинокое, в двадцати шагах, с кривыми ветками, будто выросло вопреки. Кора в глубоких продольных бороздах, и в каждой борозде тень, настоящая тень, с переходом, не размытым. Пятна мха зелёного и серого. Ветки тонкие у концов, у развилок толще, пропорции вели себя как пропорции, и листья (их там с десяток, не больше, позднее лето или осень) каждый отдельный, каждый с прожилками, и когда ветер сдвинул один, было видно, как он повернулся, как поменялась светотень на его поверхности.
Ветер прошёл и стих.
Небо.
Встать не получилось, остался лежать и посмотрел вверх.
Оранжевое у горизонта, розовое выше, лиловое, потом такое синее, что глазам стало больно в хорошем смысле. Перистые облака с внутренней структурой, каждое волокно отдельно, и первая звезда на границе тёмно-синего, чёткая точка, неподвижная, настоящая. Три года небо было светлым пятном над тёмными силуэтами домов. Без цветов, без перехода, без смысла. Три года.
Слёзы текли, руки не двигались. Куда смотреть, непонятно, потому что смотреть хотелось везде одновременно. Слишком долго видел мир через щель, а тут вдруг всё сразу, всё целиком, и глаза не справлялись.
Потом, откуда-то снизу, дошло: трава колет ноги.
Через обувь? Нет. Не через обувь. Что-то касалось поверх обуви. Поднял голову и посмотрел на ноги.
Синие поликлинические бахилы. Оба. Целые. Аккуратно надеты поверх кроссовок, в мокрой зелени чужого мира, в двадцати шагах от дерева, которого в моём дворе точно не было.
Из горла вышло что-то неровное, всхлип с дёрганым выдохом, который несколько секунд был просто звуком, прежде чем стало понятно, что это смех. Смеялся, лёжа на спине, со слезами на висках, глядя на синие бахилы. Елена Сергеевна, коридор, аквариум с синеватым светом, и шёл, не остановился, шёл домой, сидел за кодом, монитор мигал, и вот. Бахилы. Он не снял бахилы.
— Гигиена прежде всего, — сказал вслух.
Голос прозвучал хрипло, как после долгого молчания. Ушёл в открытое пространство и никуда не вернулся, не отразился от стен, не лёг обратно эхом.
Сел. Потом встал, медленно, колени не сразу договорились с равновесием. Выпрямился.
Мир был огромным, и это ощущалось телом: когда стоишь в открытом поле и видишь всё до горизонта резко, во всех деталях одновременно, это физическое давление, а не просто знание. В одну сторону холмы, деревья по склонам, тёмная зелень леса, и там, дальше, за первым гребнем, тёплые огни. Маленькие, неясные от расстояния, и всё равно каждая отдельно. Просто далёкие. Три года он не знал, что расстояние и расплывчатость это разные вещи.
В другую сторону посмотрел позже. Повернулся и замер. Что-то горизонтально плоское, серое, с ровным обрезом. Цвет без оттенков, форма без деталей. Далеко. Там что-то не так, фиксировал это как факт, складывал в тихую очередь, на потом. Не сейчас. Сейчас дерево, небо, холмы, огни.
На пределе слышимости шло что-то низкое, ровное, без источника. Отдельно от ветра, от скрипа деревьев, от птицы, которая перекликалась где-то за спиной. Что-то постоянное: замечаешь, и потом уже не можешь забыть.
Вытер глаза тыльной стороной ладони. Посмотрел на ладонь: влажная, грязная, линии в ней все там. Никуда не делись.
Никуда отсюда не хотел.
* * *
Стоял и смотрел на огни за гребнем, пока холмы не начали двоиться, не от зрения, от того, что слишком долго смотрел не моргая. Поморгал. Огни никуда не делись: мелкие, жёлтые, тёплые точки за первой лесистой грядой, и каждая точка это, наверное, окно. Окно, значит дом. Дом, значит люди, которые сейчас там что-то делают: едят, разговаривают, укладывают детей. Обычные вещи.
Озон по-прежнему стоял в воздухе острым, электрическим, мешался с землёй, с зеленью, с чем-то минеральным от нагретого камня. Слёзы на висках уже подсохли, оставили лёгкое стягивание кожи. Стебли у ног шелестели от ветра, который шёл периодически, как будто кто-то с той стороны увалов открывал и закрывал дверь. Синие бахилы на кроссовках мокрые насквозь.
Мелкое покалывание прошло по коже, от запястий к плечам, тонкое, как статическое электричество от синтетики. И где-то на изнанке слуха, там, где обычно тихо, тронули что-то хрустальное, один раз, чисто. Звон без источника, который не совпадал ни с ветром, ни с птицей, ни с далёким скрипом за холмами.
Потом буквы.
Они возникали в воздухе перед лицом, строчка за строчкой, полупрозрачные, на ничём, фоновый сумрак просвечивал сквозь буквы, но буквы были чёткими. Моноширинными. Consolas, или что-то очень похожее на Consolas. Слова появлялись с задержкой, по одному, с паузой между ними, как будто где-то очень далеко что-то обрабатывало запрос.
С возвращением, Игрок.
Время работы сервера: 11 347 лет.
Активных игроков: 1.
Прочитал. Прочитал ещё раз. Второй раз медленнее, каждое слово отдельно.
С возвращением. Обратно. Система полагала, что я уже был здесь раньше, что ушёл куда-то, а теперь вернулся, и она меня помнит. Только у меня не было «до». Либо это стандартное приветствие, одинаковое для всех, без проверки сессии. Либо сессия есть, просто я её не помню.
Оба варианта были одинаково неудобными.
Поднял взгляд на вторую строку.
Время работы сервера: 11 347 лет.
Одиннадцать тысяч триста сорок семь лет без перезагрузки. Легаси, которому пять лет, казалось пределом терпения: монолит без документации, который нельзя было трогать, потому что если тронешь, развалится. Одиннадцать тысяч лет. Deprecated-методы поверх deprecated-методов, целые пласты, которые не трогали просто потому, что трогать страшно. И всё это работает.
Взгляд задержался на строке. Не хотелось переходить к следующей.
Активных игроков: 1.
Один. Там, за холмами, огни, там живут люди. Игрок один. Холод прошёл вдоль позвоночника, мурашками между лопаток.
Выдохнул. Медленно, через нос, с запахом озона и мокрой земли. Руки убрал в карманы, но пальцы всё равно не согревались.
Текст не пропадал. Висел перед лицом терпеливо, без таймаута. Мир за текстом продолжался: трава, дерево, закат медленно переходил из лилового в тёмно-синее, звезда на краю неба стала чуть ярче. Два слоя существовали одновременно, каждый настоящий, каждый со своей логикой.
Потом, ниже основного блока, появилась строка помельче:
Инициализация интерфейса игрока... готово.
И всё остальное.
Зелёная полоска возникла в верхнем левом углу зрения, HP, и рядом синяя, MP. Оба полные. Правый верхний угол заняла часть карты: цветные тайлы среди серых квадратов-заглушек, граница прогруженного и непрогруженного проходила рваной линией посередине, знакомая картина, когда ресурсы ещё не подтянулись.
На кончиках пальцев прошло что-то похожее на короткую вибрацию, фантомное, как телефон в несуществующем кармане. Рука дёрнулась сама, проверить статус, посмотреть что дали. Статусное окно раскрылось в воздухе.
Игрок: [без имени]
Класс: —
Уровень: 1
Навыки: /inspect, /report
Безымянный. Без класса. Первый уровень. Два навыка, /inspect и /report. Посмотреть и пожаловаться. Под списком навыков на долю секунды мелькнула ещё одна строка, серая, мельче остальных, и тут же свернулась. Не успел прочитать. Меньше, чем ничего, самый нижний возможный старт. Задержался на втором: /report. Репорт кому? Если Активных игроков: 1, значит, получателя нет. Либо получатель не игрок.
Зато вижу. Каждую чёртову букву, без скринридера, без лупы, без того чтобы наклоняться к монитору носом. Траву под ногами вижу, и звёзды, и этот дурацкий моноширинный текст в воздухе, весь, до последней засечки. Если это сон или глюк, не хочу просыпаться.
Над гребнем звёзд стало больше: несколько чётких точек с разными оттенками, одна бело-голубая, другая теплее, третья подмигивала едва заметно, переменная или атмосфера такая. Смотрел на них дольше, чем собирался.
Интерфейс висел терпеливо: HP, MP, битая карта, статусное окно, всё на месте. Почему back? Если система помнит меня, значит, у неё есть запись. Сессия, профиль, идентификатор. Так не обращаются к новому пользователю. Совпадений не бывает, бывает нераскрытая причина.
Вопросы откатились на задний план. Ответов всё равно не было.
Поднёс руку к лицу. Линии на ладони, поры, грязь под ногтями. Посмотрел сквозь полупрозрачный текст интерфейса, буквы наложились на кожу, моноширинные, тихо мерцающие.
Два языка. Один: трава, запах, ветер, настоящие звёзды над холмами. Другой: Consolas, uptime, первый уровень, два навыка.
Ветер пришёл снова, оттуда, где огни, принёс запах дыма и чего-то смолистого, тёплого, живого.
Сделал шаг в сторону холмов. Потом ещё один. Интерфейс двинулся вместе, держался у края зрения терпеливо.
Бахилы хлюпнули в мокрой траве. Колени ещё подрагивали, и руки были холодные, и где-то в одиннадцати тысячах лет отсюда лежал ответ на то, почему именно я. Но зрение работало. Звёзды горели. И ноги уже несли к огням за увалами, туда, где, может быть, кто-нибудь объяснит, куда я попал.
Глава 2. Деревня Порог
Шёл в темноте и видел темноту.
Настоящую, с оттенками. Тропа под ногами серо-бурая, утоптанная, в ней читались отдельные камни, их края, тени от краёв. Трава по обочинам чернильно-зелёная, с синим отливом от луны. Небо глубокое у зенита, почти чёрное к горизонту, и переход между этими двумя оттенками шёл плавно, слой за слоем. Где-то на границе слышимости тянул гул, низкий, ровный, без источника. Здесь, ночью, в поле, среди тишины он был отчётливее. Ночь убирала всё лишнее и оставляла его фоновым, постоянным.
Шёл к огням и смотрел.
Запах изменился, когда тропа пошла на подъём. К ночной прохладе травы добавился минеральный привкус пыли, поднятой шагами, и что-то острое из-за левого горизонта, озон, воздух после молнии. Мурашки на предплечьях были от покалывания, которое шло непонятно откуда, фоновое, статика от несуществующей синтетики. Слева, где горизонт ровный, ни холмов, ни деревьев, тянуло электрическим. Туда не смотрел.
Скулы ныли. Поймал себя на этом только через несколько минут, зубы были сжаты, незаметно, сами собой, и всё это время жевательные мышцы держали напряжение, которое никуда не делось от того, что заметил.
На тропе ни одного насекомого. Не укусил, не зазвенел над ухом, не шарахнулся от ноги в траву. Ночь, лето, поле, и полная тишина в диапазоне, где обычно сверчки.
Тихий ритмичный крик из темноты, птица, справа, в траве или низком кусте. Резкий, чистый, короткий. Считал автоматически, ритмом, как засекал время запроса без секундомера. Восемь секунд, крик. Восемь, крик. Ровно. Ни вариации, ни паузы от того что птица, может, повернула голову или услышала что-то. Нет ответа второй птицы. Нет изменений вообще.
Восемь, каждый раз. Слово всплыло само, откуда-то из рабочей памяти: цикл. Звуковой цикл без выхода. Не хотел думать об этом так, но голова уже работала сама.
Дыхание шло ровно. Слишком ровно. Контролировал, не помнил, когда начал.
Пошёл дальше.
Булыжник лежал у тропы метрах в трёх, обычный, гладкий, серый, наполовину вросший в землю, обычный во всём, кроме того что дрожал. Не шатался, не катился, именно дрожал на месте, мелко и быстро, телефон на столе в режиме вибрации. Вокруг него слабое свечение, желтоватое, едва заметное. Сначала решил, что это луна так падает, потом зашёл так, чтобы луна оказалась за спиной. Гул усилился, стал плотнее.
Свечение шло от него.
Наклонился, потрогал. Твёрдый, шершавый, прохладный, никуда не провалился. Но под пальцами вибрация, на пределе ощущения. Поверхность мерцала, не могла решить, какой ей быть, переключалась между двумя версиями себя.
Убрал руку и постоял ещё немного. Камень продолжал мерцать, переключаясь между двумя версиями себя, и у этого наверняка было название, но оно не приходило, и это было нормально, потому что ни одно название пока ничего не объясняло.
Свечение желтоватое, желтее, чем любой минерал, который мог бы дать эффект в темноте без внешнего источника. И раньше на тропе мелькало что-то похожее. Тогда принял за игру лунного света. Не луна, понял сейчас.
Тропа стала шире, превратилась в грунтовку, появилась колея от колёс. Пахло сеном откуда-то слева, слабым, сухим. Огни впереди стали ближе и ярче, оранжевые, живые. Насчитал четыре. Нет, пять точек.
У дороги лежал квадрат.
Посреди пожухлой травы, которая уже шла к осени, бурая, вялая, привычная, стоял участок размером примерно два на два метра, зелёный до неприличия. Яркий, сочный. Края прямые, под прямым углом. Остановился, посмотрел, подошёл и провёл пальцем вдоль границы. Птица крикнула, восемь прошло.
С этой стороны трава сухая, жёсткая, безжизненная. С той стороны мягкая, прохладная, влажная от росы, которой не было нигде вокруг. Граница под пальцем идеально ровная, до миллиметра. Воздух над участком пах иначе, свежее, почти дождём, хотя земля вокруг была сухой уже давно.
Сидел на корточках и следил за границей между двумя сезонами. Пятки онемели, через тонкую подошву кроссовок тянуло холодом снизу. Квадрат жил в своём времени года, соседняя трава в своём, и между ними ничего, ни перехода, ни градиента, ни попытки притвориться, что так и надо.
Одиннадцать тысяч лет. Временное решение.
Встал, и руки сами сделали привычное движение и нашли только карман.
Небо над головой подняло глаза само. Звёзды. Настоящие звёзды, яркие, разные, без слоя городской засветки. Одна бело-голубая, острая. Рядом теплее, желтоватая. Млечный путь полосой через всё небо, и видел его не размытым свечением, а полосой из отдельных точек. Грудь на миг сжало. Пришлось сделать медленный вдох, чтобы это отпустило. Смотрел долго, не торопился уходить.
Правее от зенита было не то. Облака в том секторе стояли, не замерли на мгновение, а именно стояли, статичные. В других секторах шли, медленно, но шли. А там нет. Звёзды там выглядели иначе, плоские, без глубины, наклейки на фоне. Не хватило чего-то. Или кого-то.
Птица крикнула. Восемь.
Булыжник вибрировал за спиной, оттуда слабый отблеск.
Огни впереди стали совсем близкими, и теперь за ними угадывался частокол, зубчатая линия против чуть более светлого неба. Пахло дымом, смолой и ещё чем-то кислым, животным. Живая деревня со всей её неопрятной реальностью. Оттуда доносился скрип, деревянный, ритмичный, нечастый.
Бахилы на кроссовках промокли насквозь ещё час назад, синтетика облепила щиколотки, и каждый шаг хлюпал. Интерфейс держался у края зрения, HP полный, MP полный, карта с серыми заглушками вместо непрогруженных секторов. Всё в порядке, говорил интерфейс. Всё совершенно нормально.
Остановился перед створками. Впереди дерево, огонь за ним, дым и навоз и живые люди.
Нужно было постучать. Рука поднялась, кулак лёг на дерево и замер. Там, за частоколом, начинался какой-то разговор, который придётся вести. Какая-то история, которую придётся выдумать. Скулы опять свело.
Постучал.
* * *
Оклик был резкий, молодой, высоковатый, голос, которому ещё не хватало веса.
— Кто идёт! — Пауза. Затем снова, чуть другими словами, будто первая попытка не засчиталась. — Стой, кто идёт!
Стоял. Огонь метнулся за створками, пятно сквозь щель между досками, затем скрип и лязг, и калитка открылась с протяжным стоном рассохшегося дерева. Парень в кожаном нагруднике выставил копьё, конец которого слегка дрожал. Лица не было видно за пламенем, пока он не поднял его выше, и тогда открылось лицо. Веснушки сплошным ковром по щекам и носу, пушок вместо бороды, глаза, которые пытались быть твёрдыми и получались испуганными. Лет семнадцать, может восемнадцать. Кожаный нагрудник сидел великоватый, плечевые ремни затянуты на крайние дырки.
Пламя поднялось ещё выше. Жар пихнул в щеку, смоляной, плотный, с кисловатым привкусом дыма, который сразу лёг на губы.
— Кто ты. Откуда идёшь. — Тот же голос, чуть другой порядок слов. Парень старался держать формат, похоже, кто-то объяснил ему, что именно спрашивать у ночных путников, только без шпаргалки.
Понял фразу без усилия. Без зазора, без ощущения, что переводишь. Просто понял, и мгновение стоял, не двигаясь, пока это оседало.
— Шёл по дороге, — сказал, — со стороны поля. Один.
Копьё не опустилось. Парень задержал глаза на бахилах, переместил на футболку, на лицо, вернул на бахилы. Рот у него был чуть приоткрыт, брови сдвинуты вниз, перебирал знакомые категории и ни одна не подходила. Поверх кроссовок торчали синие медицинские бахилы, мокрые, надорванные по краю.
— Стой тут.
Парень ушёл в щель за калиткой, оглядываясь, пока мог, всё-таки отвернулся. Голоса за частоколом, один, тихий ответ, тишина и чьи-то шаги. Деревня не спала.
Над дозорным ничего. Ни полоски имени, ни значка уровня, ни HP-бара. Интерфейс молчал над ним так же, как над деревяшками. Либо нужен был /inspect, либо они для интерфейса просто не существовали.
Два факела справа дёргались синхронно. Одна и та же пауза, один и тот же рывок огня, одна и та же пауза. С интервалом в полсекунды, от одной пружины. Остальные три жили своей жизнью, непредсказуемо. А правые два делали одно движение, раз за разом. Оверлей подсветил их мягким контуром. Уже второй раз за ночь: булыжник на дороге, теперь факелы.
Шаги за калиткой, молодые, быстрые, парень с копьём возвращался, и другие, тихие, с равномерным стуком палки о землю. За калиткой возникла фигура, маленькая, сухая, и калитка отворилась шире.
Дед был ростом по плечо, узловатый, жилистый. Руки в свете факела бугристые, привыкшие к работе. Одет просто, рубаха и штаны, пояс, ничего лишнего. И уши, левое обычное, правое чуть заострённое кверху, несильно, атавизм, намёк на что-то. Задержался на этом ухе дольше, чем следовало: заострённый хрящ, тонкий, с изящной дугой, которой не бывает у людей на Земле. Морщины шли глубокими ровными бороздами, и из-за них глаза казались странно молодыми. Смотрели с оценкой, с прикидкой, не торопясь с выводом.
Осматривал долго, без слов. На бахилы. На джинсы. На футболку с выгоревшим принтом. На руки. На глаза, в этот момент следил за мерцанием факелов и поймал себя на этом только когда наши глаза встретились.
От деда пахло травами, сухими, залежавшимися в ткани, дымом очага и ещё чем-то тёплым, кислым, очень человеческим. Дозорный пах острее, страхом, молодым потом, кожаной пропиткой нагрудника. Оба были настоящими, живыми. Плечи сами опустились на сантиметр.
Морщины. Дрожащее копьё. Пот. Такое не подделать.
Дед переступил с ноги на ногу, перенёс вес на палку.
— Ещё один блаженный.
Открыл рот, подумал, закрыл. После сказал:
— Наверное.
Переложил палку из руки в руку, окинул меня ещё раз, уже без интереса к деталям.
— Глаза бегают. — Посмотрел на факелы, обратно. — Блаженные всегда на что-то смотрят. Чего другие не видят.
На мгновение подумал промолчать. Решил нет.
— Два факела справа мерцают одинаково. — Не отводил глаз от них, пока говорил. — Синхронно. Остальные нет.
Дед повернул голову к факелам. Постоял, посмотрел. Повернулся обратно.
— Мерцают и мерцают. Третий год.
Парень переступил с ноги на ногу.
Горло сжалось. Три года для них была погода, что-то, с чем давно смирились, не глядя.
— Откуда ты.
— Издалека. — Пауза. — Очень издалека.
Дед смотрел без выражения.
— Все блаженные издалека. Или не помнят откуда. — Посторонился, открывая проход. — На ночь закрываемся. Заходи.
Прошёл через калитку. Земля за частоколом утоптана плотно, без единой травинки, и безветрие здесь было полное: частокол держал воздух в покое. Сразу стало теплее, дым, навоз, сырое дерево, что-то съестное, без ветрового разбавления. Горло было сухим, несколько часов без воды, и тёплый дух еды только подчеркнул это.
Дозорный закрыл калитку. Засов лёг в скобы с металлическим стуком.
За частоколом, в проёмах между срубами, кто-то наблюдал. Тишина была неровной, чужое дыхание в темноте. Деревня не спала. Деревня ждала.
Дед уже шёл вперёд, палка постукивала по утоптанной земле. Спиной к чужаку, спокойно, без оглядки. Это тоже была информация. У крайнего сарая остановился, кивнул на дверь и пошёл дальше, не дожидаясь.
* * *
Солома кончилась где-то после первого петуха и не вернулась.
Лежал на боку, потолок сарая над головой, считал сучки в досках. Три, четыре, один большой с кольцом. Видел их, различая темноту слоями: серое дерево, чуть более густой сучок, совсем чёрная щель между досками, и в неё полоска неба, угольно-синяя, потом серая, потом чуть теплее. Лежал и смотрел, как ночь разворачивается к утру.
Сено под боком сухое, колючее через футболку. Пахло мёдом, пылью и рассохшимися досками. В углу за спиной навоз, привычный уже, фоновый. Бахилы снял ещё вечером, засунул под стену, мокрые, рваные по краю, синтетику в плотный жгут. Кроссовки стояли рядом, тоже мокрые. Без них холоднее, но легче.
Думал о деде, о его ухе с заострённым хрящом, о руках, которые привыкли к работе. О стуке палки по утоптанной земле, уверенном, хозяйском. Блаженным прощают странности, он так и сказал глазами. Но странности без работы не прощают нигде.
Перестал думать. За щелью в доске небо стало по-настоящему светлым.
Поднялся с соломой в волосах, нащупал руками, не стал вытрясать. Сел, опёрся о стену. Свет в щелях набирал плотность. Медленно, потом быстрее, потом сразу, и за досками сарая что-то изменилось. Деревня зашумела. Сначала один голос, женский, высокий, командный, затем скрип двери, затем куры, не одна, сразу много, перекрывающе. Звуки живые, без петли, без ровного интервала. Нахлёстывают друг на друга.
Встал и толкнул дверь сарая плечом.
И остановился в проёме.
Утренний свет лёг на деревню золотым. Поперечным, длинным, таким, какой бывает только в первый час после восхода, когда солнце ещё у горизонта и каждая поверхность горит не сверху, а сбоку, выявляя каждую неровность, каждый узел в бревне, каждую соломинку на крыше. Деревянные стены изб напротив светились медовым изнутри, с полосами теней в пазах. Пыльная площадь дышала, по ней шли люди с вёдрами, и за каждым поднималась пыль, и пыль в этом свете была золотой тоже.
В луче, который пробился через щель между двумя избами, висели пылинки.
Пылинки.
Стоял и следил за ними, пока в глазах не защипало. Танцевали медленно, без спешки, поднимались и опускались в своей взвешенной физике, и я видел каждую. Отдельную. Выбирал одну и вёл её, пока не терял, брал следующую. Последние года три не мог разобрать лицо человека дальше трёх метров. Пылинки исчезли раньше, тогда и не заметил. Только сейчас понял, чего именно не хватало.
Горло сжалось само. Пришлось дышать ртом, чтобы отпустило.
Надо было идти. Люди вокруг уже шевелились, деревня работала, и стоять в дверях сарая с мокрыми глазами было именно то, чего ждут от блаженного. Всё равно не двигался ещё минуту.
Вышел на площадь.
Деревня разворачивалась во все стороны, избы по кругу, бревенчатые, крыши вразнобой, солома и черепица, у кого что. Огороды за строениями угадывались по зелёному. Колодец в центре площади каменный, поросший мхом по основанию. Коза привязана к столбу левее, косила глазом в мою сторону, жевала. Дети, трое или четверо, гнали друг друга между постройками, визгом и топотом, грязные колени, домотканые рубахи. Женщина у ближнего крыльца развешивала что-то на верёвке, не смотрела.
Стоял, впитывал, и одновременно видел другое.
Тень от сруба справа. Все тени на площади шли на запад, длинные утренние тени, куда полагается, от восхода. А тень от того строения, такая же длинная, лежала на север. Ровно на север, уверенно. Оверлей очертил его мягким контуром.
Две избы рядом, левее колодца. Увидел, что они одинаковые, только с третьего раза, и тогда стало ясно окончательно. Бревно в бревно, лишайник пятном на правом нижнем углу обоих, один и тот же скол фундамента у крыльца, один и тот же сучок-кольцо над дверью. Одна мышиного серого цвета, другая выгорела чуть светлее. Единственная разница.
У крайнего строения, под навесом, сидела старуха в деревянном кресле. Бормотала что-то, слов не разобрать с расстояния, голова чуть наклонена вперёд, руки сложены на коленях, рот двигается, кресло тихонько скрипит.
Двадцать. Фраза. Двадцать, та же. Те же руки, тот же наклон, тот же скрип в той же точке. Ни одного миллиметра отклонения.
Оверлей взял её в красный.
Ребёнок пробежал мимо, чуть задел кресло. Старуха не отреагировала. Продолжала раскачиваться, продолжала бормотать. Ребёнок не оглянулся.
Утренняя деревня пахла слоисто, плотно: дым из двух или трёх труб, горит дерево, кто-то жарит что-то на сале, тёплый след хлеба с ноткой подгорелого откуда-то из-за дальних крыш. Навоз под ногами, сырая земля после росы, медовое сено из сарая за спиной.
Коза повернула голову и уставилась прямо.
Покалывание на коже со стороны западной стены частокола. Слабее, чем ночью на дороге, но то же, статика, озон. Туда не оборачивался. Знал, что там.
Золотой свет на площади сдвинулся, солнце поднялось ещё на градус. Тени укоротились, стали резче.
Старуха у крайней избы сказала свою фразу.
Двадцать. Ещё раз.
Из-за угла ближней избы вышел дед. Палка, та же рубаха, то же ухо, то же выражение человека, у которого на сегодня уже было что-то запланировано и появление блаженного в план не входило. Не остановился, замедлился, обвёл площадь глазами, задержался на старухе. Губы шевельнулись.
— Томара.
Просто имя. Без вопроса, без обращения, назвал привычное. Задержался на ней, перевёл на меня.
— Ты с утра стоишь.
Не спросил.
— Рассматриваю.
Дед оглядел площадь ещё раз. Медленно, без спешки, тем движением, каким осматривают что-то настолько привычное, что уже давно не видят. Вернул глаза.
— И что нарассматривал.
Скользнул по избам-близнецам у колодца, вернулся.
— Два дома у колодца. Одинаковые. До трещины.
Дед повернулся к ним. Долго смотрел на то, что знал всю жизнь и по какой-то причине видел заново. Плечи слегка расслабились.
— Дед Харин строил. Оба. — Голос ровный, без интонации. — Говорил, второй, запасной. Если первый сгорит.
Кивнул, не сказал ничего. Помолчал, кивнул себе.
Со стороны крайней избы скрипнуло кресло. Старуха Томара сказала свою фразу, замолчала, снова раскачивалась. Ребёнок пробежал мимо, поднял пыль, пыль осела. Старуха не повернула головы. Дед смотрел на неё молча, привычно, с выражением человека, который давно перестал ждать перемен.
* * *
Колодец стоял в центре площади, и я остановился, не дойдя до него шагов пять.
Порода потемневшая, подогнанная без раствора, один к одному, швы плотные. Мох по кольцу основания такой насыщенно-зелёный, что глаза сами вернулись к нему и не отпускали. Сырой, живой, плотный, светился изнутри. Ворот проржавел, деревянная рукоять отполирована ладонями до гладкости кости, цепь уходила вниз, тяжёлая, с бурым налётом. На её конце висело ведро, дерево потемнело, обручи держатся, дно прогнило.
Подошёл ближе, положил руки на край. Мох под ладонями мягкий, влажный, роса осела к утру и осталась в нём. Кладка под ним прохладная даже сейчас, когда солнце уже набрало плотность и плечи чувствовали тепло. Наклонился, посмотрел вниз. Сухо. По стенкам бледные следы там, где водоросли когда-то добирались до поверхности воды, высохли и остались отпечатками, полоса прилива на берегу, только прилив этот ушёл так давно, что водоросли превратились в пыль. Снизу ударило прохладой, той, которая живёт в породе вне зависимости от сезона, и в лицо потянуло затхлым, мшистым, с примесью чего-то давно умершего в глубине.
Женщина пришла с двумя вёдрами, поставила у основания, взялась за ручку ворота. Рукоять протянула сипло, с усилием, точно жаловалась. Цепь загремела в шахте, звуки гуляли в пустоте и возвращались гулом. Внизу пусто, наверху пусто.
Женщина заглянула, поставила вёдра, взяла и ушла. Легко, нести было нечего. Через минуту пришла другая, сделала то же самое: ворот, цепь, пустота.
Никто не удивлялся.
Сосредоточился и мысленно набрал команду, интуитивно, последовательность приходит раньше, чем успеваешь её осознать.
/inspect
Покалывание прошло по кончикам пальцев, фантомная прохлада. Тонко звякнуло подтверждение на пределе слышимости. Перед глазами полупрозрачный прямоугольник начал набирать текст, строчка за строчкой.
Объект: Well_047
Тип: Источник воды
Статус: DEPRECATED
Генерация воды: NULL
Последнее обслуживание: [ОШИБКА: переполнение метки времени]
Примечание: Запланировано к удалению в патче 2.14.
Патч 2.14 так и не был развёрнут.
Прочитал до конца, вернулся к первой строке.
Мышцы рук напряглись, пальцы вжались в кладку. Сзади снова проскрипел ворот. Вниз, тишина без плеска, вверх, шаги прочь.
Мох оставил на ладонях зелёный влажный след. Прохлада из шахты настоящая. Скрип ворота за спиной настоящий. Пустота вместо воды настоящая.
Патч 2.14 так и не был развёрнут.
Отпустил команду, текст растворился. Осталась площадь, утро, колодец с мхом.
* * *
Со стороны это, наверное, выглядело так. Стоял у колодца и пялился в никуда. Минут пять, может десять. Руки на кладке, глаза вниз, в пустую шахту, и ни слова вслух, и никакого движения. Для них это выглядело одинаково. Блаженный беседует с пустотой.
Площадь просто перестроилась. Женщина у крайнего крыльца взяла ребёнка за руку и увела к огороду, не быстро, без испуга, отводят от лужи. Двое мужчин у поленницы продолжали работать, только спины стали ровнее. Дети показывали пальцем, пока их не одёрнули. Шёпот шёл за спиной ровным фоном, негромкий, без злобы.
Блаженный. Классификация прошла.
Дед появился из-за угла кузни, прошёл площадь без суеты, стуча палкой по земле, неторопливо, так ходят люди, которым некуда спешить. В другой руке нёс что-то завёрнутое в ткань и кружку, глиняную, бурую. Остановился в двух шагах и протянул, не спрашивая ничего.
— Ешь. Блаженные всегда голодные.
Хлеб лёг в ладонь тяжелее, чем казался на вид. Плотный, с коркой, которая трескалась при надавливании. Поднёс к лицу и вдохнул прежде, чем откусить. Дрожжи, горечь подгорелой корочки, что-то кислое, живое. Настоящий хлеб, не магазинный.
Откусил и жевал медленно. Мука была грубой, крупного помола, и вкус разворачивался постепенно, слой за слоем, кисловатый, ореховый, сытный и тёплый, и челюсти сами сжались, задержав вкус.
Крошки осыпались на ладонь.
Мелкие, неодинаковые, разные по форме. Видел каждую. Запивать пришлось, прежде чем смог продолжить есть.
Вода была холодной, с привкусом породы, из ручья за деревней. Кружка глиняная, шершавая снаружи, гладкая изнутри, тёплая от чужих рук, которые несли.
Дед ждал, привалившись к посоху, смотрел привычно, без ожидания разговора. Лицо у него в дневном свете было другим, чем ночью. Морщины глубже, заострённое ухо заметнее, тяжёлый прищур наблюдателя.
Когда хлеб кончился, заговорил. Без вопросов, коротко. Деревня Порог. За западной стеной Пустошь, не ходить. Впереди на восток тропа к Перекрёстку, три дня пути. Здесь можно остаться, работы хватает.
— Понял, — сказал.
Посмотрел с чем-то, что могло быть удивлением или просто оценкой.
— Для блаженного складно говоришь.
— Бывает.
Кивнул, медленно, и ушёл, не оглянувшись. Палка постукивала по земле, равномерно, ровно.
Кружку поставил на край колодца. Крошки на ладони слизал, до последней.
День прошёл обрывками. Ходил по деревне, замечал, старался не маячить там, где не нужен. Нашёл ручей за восточной стеной, откуда женщины носили воду. Попробовал помочь с дровами, объяснили, как складывать, сложил неправильно, объяснили снова, берёза к берёзе, торцами наружу, не иначе. В руках дрова были тяжелее, чем выглядели, кора шершавая, с белыми пластинами, которые крошились под пальцами. К обеду дети перестали показывать пальцем. К вечеру дали миску каши с салом, горячей, жирный блеск на поверхности, тепло миски сквозь глину в ладонях. Ел и молчал, и горло снова пришлось запивать водой, чтобы оно согласилось работать.
Вечер садился на деревню медленно. Тени вытянулись, смягчились, стали длиннее собственных предметов. Небо над крышами шло через медное, розовое, лиловое, к глубокому. Смотрел на это через щели в стене сарая, лёжа на соломе, в футболке, от которой пахло дымом и навозом, уставший до тяжести в плечах.
Если /inspect включался мысленно, может, и оверлей так же. Попробовал, сосредоточился, через пару мгновений отпустило. HP-бар погас. Мир остался собой, бревенчатые стены, солома, щели с полосками вечернего, потом лунного света. Где-то скрипнула калитка. Голос за стеной, детский, окликнули, ответили. Деревня укладывалась.
Включил обратно на мгновение.
Игрок: [без имени]. Уровень: 1. Навыки: /inspect, /report
Ничего не изменилось, выключил.
Лунный свет лежал полосами на соломе, на руках, на досках потолка. Видел каждый сучок. Оттенки серого, серебряного, лунного.
На новом проекте первую неделю читаешь документацию и не трогаешь код. Только документации здесь не было.
Закрыл глаза. Темнота за веками была тёплой и пахла сеном.
Засыпал, и на самой границе оверлей мигнул сам, без вызова. Одна строчка, мелкая, серая, успела только мелькнуть и погаснуть. Буквы не разобрал. Осталось ощущение, что одно из слов было красным.
Глава 3. Битые страницы
...объекты ядра разбросаны по миру. Считайте их якорями - точками, где система ещё держится.
- Patch_Adams, Центр сообщества / Гайды и советы [последняя активность: ДАННЫЕ ПОВРЕЖДЕНЫ]
Бревно лежало за огородами, там, где Порог кончался и начинался луг. Кора нагрелась за утро, сухая, отслаивалась под ладонями тонкими пластинами. Четвёртый день здесь. Со стороны домов тянуло дымом и хлебом, чуть навозом с огородов. Привычно уже. Сидел в привычной позе, спина прямая, ноги скрещены, подбородок чуть вперёд. Тело помнит такое положение без монитора.
Трава у ног была длинной и щекотной, прохладной у корней, если опустить руку до земли. Солнце стояло высоко, на лице, на плечах, на темени его было много, больше, чем привык. Щурился от яркости, а не от слабости зрения. Это всё ещё удивляло.
За забором шептались дети. Двое, может четверо, судя по шуршанию. Смотреть через щели в штакетнике они научились тихо, смеяться умели только как придётся. Блаженный сидел в траве и разговаривал с воздухом. Хорошее зрелище.
Голоса, скрип ворота у источника, куры, чей-то крик с другого конца. За четыре дня звуки стали привычными, перестали вытягивать внимание.
Сосредоточился и набрал мысленно /menu, нашёл раздел «Центр сообщества», открыл.
Тонкий звон, длинный, протяжный, совсем не похожий на короткое «тинь» инспекта. Загрузочный. Потом потрескивание, тихое, с паузами между кусками текста. Как в эпоху dial-up, когда страница собиралась сверху вниз и нужно было ждать, пока она доползёт. Перед лицом появилась плашка, жёлтые буквы на красном, мигающая:
Загрузка Центра сообщества...
ВНИМАНИЕ: Целостность базы данных 23%.
Часть содержимого может быть недоступна или повреждена.
Прочитал дважды. Двадцать три процента. На Земле работал с такими базами: половина комментариев протухла, половина методов-сирот, и каждую вещь, которую берёшь за истину, сначала проверяешь на ещё трёх, потому что кто-то мог соврать несколько версий назад. Семьдесят семь процентов этой библиотеки сгорело, и то, что осталось, держит смысл только само по себе.
Но двадцать три. И не ноль.
Форум развернулся. Пепельный фон, синие ссылки. Старый phpBB из середины нулевых, только полупрозрачный, плавающий в воздухе над лугом, и через него видна трава, виден забор, видны детские глаза в щели между досками. Два слоя: мёртвый архив и живая земля за ним.
Часть текста шла нормально, часть сбивалась на мусор: ╠╬╣, Ðаг, знаки вопроса плотными блоками вместо слов. Аватарки у всех пустые квадраты, никнеймы частично читаемые, частично [ПОВРЕЖДЕНО], даты [ОШИБКА] у каждого поста. Тысячи постов без лиц, без времени.
Разделы были такими:
Общее обсуждение - 12 847 тем (8 203 повреждено)
Баг-репорты - 891 004 тем (ДОСТУП ЗАПРЕЩЁН)
Гайды и прохождения - 3 412 тем (частично доступно)
Оффтопик - 1 205 тем (в основном цело)
Руки привычно дёрнулись к клавишам, которых нет. Мысленный скролл, мысленный клик, тело помнило движения, а поверхность исчезла.
Попробовал Баг-репорты первым.
ДОСТУП ЗАПРЕЩЁН.
Требуемый уровень: GM.
Текущий уровень: Игрок.
Красный экран, и в висках короткий импульс, болезненный. Система оттолкнула, не просто отказала. Отдёрнул мысленный курсор. Восемьсот девяносто одна тысяча отчётов об ошибках за этим замком. Одиннадцать тысяч лет жалоб на то, что сломано, и всё это за уровнем, которого нет.
В Off-Topic зашёл. Большинство записей читаемые, меньше повреждений, чем всюду. Названия: «Лучшая стартовая зона - спор», «непопулярное мнение: квестлайн ночной стражи переоценён», «оцените последний лордроп от разрабов», «обновлённый тирлист билдов», дальше, дальше, дальше. Тысяча двести постов о ничём особенном.
Тараканы и Off-Topic. Сдвинул ногу, почувствовал нагретую кору под бедром.
Взял из травы стебель, сунул в рот. Горький, сочный, чуть терпкий. Привычка с Земли: жевать карандаш над задачей, которая не хочет складываться.
Вернулся к разделу Guides. Нашёл первый читаемый тред, открыл. Загружалось медленно, кусками, с паузами. Потрескивание стало гуще, каждая битая запись добавляла порцию статики, тихой, как помеха на старом приёмнике.
За забором хихикнули и зашуршали прочь. Вероятно, позвали к обеду.
Здесь было сообщество. Люди сидели вот так же, у каких-то своих окон или в каких-то своих местах, набирали посты про стартовые зоны, спорили про баланс, постили советы для незнакомцев. Каждая [ОШИБКА] на месте даты прятала конкретный вечер, конкретный момент, когда кто-то решил, что его мысль стоит записать.
Горький привкус травинки на языке, солнце на руках, детская тишина за опустевшим забором.
Кто-то имел уровень GM. Кто-то видел все эти отчёты, читал, мог отвечать, обращения шли в очередь к живому человеку. Может, имел и уже потерял. Может, имеет до сих пор и сейчас видит в своём окне цифру: Активных игроков: 1. Что он думает, глядя на неё.
* * *
Новый тред грузился дольше всех предыдущих. Текст появлялся толчками, строка-другая, потом долгая пауза, потрескивание, снова строка. Между читаемыми кусками пустые плашки [ПОВРЕЖДЕНО] возникали с коротким статическим шипением, ровным, одинаковой длины, независимо от того, сколько там было потеряно, слово или целый абзац.
Тема: «Консольные команды: продвинутый гайд по разблокировке». Автор: Patch_Adams. Дата: [ОШИБКА]. Аватарка: выцветший квадрат.
Прочитал ник ещё раз. Patch_Adams. Профиль кликабельный, открылся только [ПОВРЕЖДЕНО]. Просто кто-то, кто однажды решил написать, что знает. С чувством юмора и избытком свободного времени, оба из которых сгнили в базе вместе с датой и аватаркой.
Читаемый текст шёл с середины мысли, первые блоки были съедены:
...объекты ядра разбросаны по миру. Считайте их
якорями - точками, где код мира касается физической
формы. Их немного. Большинство малые.
[ПОВРЕЖДЕНО]
...взаимодействуйте через /inspect на максимальной глубине.
Флаг --deep. Рекомендуется физический контакт: улучшает сигнал.
[ПОВРЕЖДЕНО]
...каждое успешное взаимодействие даёт ОДНУ новую команду
или расширяет существующую. Прогресс постоянный. Считайте это
разблокировкой отладочного доступа, уровень за уровнем.
[ПОВРЕЖДЕНО]
...ВНИМАНИЕ: зафиксированы побочные эффекты. Один пользователь потерял доступ к
[ПОВРЕЖДЕНО]
...источник в деревне Порог - объект ядра (малый).
Подтверждено. Использовать: /inspect --deep при физическом контакте.
Ожидаемый результат: расширенный /inspect с параметрами
[ПОВРЕЖДЕНО]
...НЕ пытайтесь использовать /rollback, не понимая радиуса.
Повторяю: НЕ ПЫТАЙТЕСЬ использовать /rollback без
[ПОВРЕЖДЕНО]
Перечитал дважды. Потом ещё раз, медленнее. Поймал себя на том, что губы шевелились, и не остановился. В висках застучало, ровно и заметно. Тело приняло сигнал раньше, чем голова успела сформулировать.
Ядровые объекты. Якоря, точки, в которых каркас мира касается физической формы. Немного, большинство малые, значит за каждым minor прячется major, а за major что-то, что держит всю конструкцию. Выпрямился, позвоночник щёлкнул.
Запахи луга пропали. Давно, просто заметил только сейчас.
ВНИМАНИЕ: зафиксированы побочные эффекты. Один пользователь потерял доступ к [ПОВРЕЖДЕНО]
Что именно потерял, Patch_Adams либо не решился назвать прямо, либо не успел. Дальше зияла дыра. Предупреждение есть, детали сгнили, разбираться по месту.
И источник. В Пороге подтверждён объект ядра. «Подтверждено». Кто-то из того треда трогал его руками. Тот самый, серый, мшистый, ворот скрипит при каждом порыве ветра, верёвка гнилая так, что хочется предупредить всех, кто за неё тянет. Тот, к которому каждое утро идут с вёдрами. Десять минут через огороды.
Спина затекла. Тело накапливало это всё время, ноги ниже колен занемели, в пояснице тупое давление. Тень от дерева наползла незаметно, прохладная полоса легла на левое плечо. Когда садился, этой тени ещё не было. Час, не меньше.
Вернулся к куску про /rollback ещё раз.
...НЕ пытайтесь использовать /rollback, не понимая радиуса. Повторяю: НЕ ПЫТАЙТЕСЬ использовать /rollback без
Строчка НЕ ПЫТАЙТЕСЬ светилась ярче остального текста, интенсивнее, с лёгким мерцанием. Жирный. Patch_Adams знал, на чём остановиться. Потом:
Потрескивание.
[ПОВРЕЖДЕНО].
Дважды «повторяю». Так пишут, когда видели, как кому-то стало плохо. Радиус отката. Площадь воздействия? Временная глубина? Как инструкция, которая обрывается на полуслове, и ссылка ведёт в никуда.
Во рту было горько. Трава в зубах раскисла за час до безвкусия, только привкус на корне языка. Выплюнул. Звуки вернулись: голоса, дым из трубы над крайним домом, скрип дерева о дерево на ветру. Детей у забора давно не было.
Два навыка. /inspect и /report. Нож и блокнот там, где нужен арсенал. Источник в Пороге помечен как малый объект, ворот скрипит, верёвка гнилая, и что там ломать сильнее, лежало за [ПОВРЕЖДЕНО] вместе с остальным.
Но зафиксированы побочные эффекты означало что-то конкретное. Не общее «осторожно», которым покрывают всё подряд.
Решение дошло до головы уже после того, как руки уперлись в бревно и взяли вес тела, ноги распрямились, покалывание снизу вверх. Переминался, ждал. Бревно осталось нагретым, примятая трава держала форму, след от часа неподвижности. Тень уже накрыла вмятину наполовину.
Десять минут через огороды.
* * *
На площади пахло мшистым камнем и полуденным жаром от утоптанной земли. У каменного бортика стояли две женщины с вёдрами, переговаривались вполголоса, ворот скрипел под руками одной из них, верёвка тянулась вниз. Гомон шёл отовсюду: лязг, голоса из-за огородов, чьи-то шаги по настилу. Обычный полдень, обычное поселение, которое понятия не имело, что у него есть изнанка.
Подошёл, положил ладони на каменный бортик.
Камень был шершавым, прохладным несмотря на солнце, влажным с внутренней части, куда добиралась сырость. Мох под ладонями сминался мягко, почти без сопротивления, и ощущение было неожиданно живым для чего-то, что Система пометила как DEPRECATED. Постоял, прислушался к собственным рукам. Обычный камень. Ни малейшего намёка снаружи на то, что там внутри что-то есть.
Прижал ладони плотнее.
Сосредоточился, набрал мысленно: /inspect --deep.
Покалывание началось в ладонях сразу, другое, чем при обычном инспекте. Там был лёгкий укол в кончики и готовый ответ. Здесь оно шло глубже, с нарастанием, поднималось по рукам к запястьям, к локтям, к плечам, электрическое, почти болезненное. Откуда-то взялся запах озона, резкий, трансформаторный, рядом с носом, хотя никакого источника на площади не было и быть не могло.
Голоса женщин ушли за слой ваты.
Не замолкли, а сдвинулись, как если бы надел наушники с шумоподавлением и мир отступил за стекло. На первый план вышел гул, низкий, пульсирующий, ритмичный, тот самый, что ночью в поле слышался далёким фоном. Сейчас он шёл изнутри камня. Изнутри.
Потом каменная кладка стала прозрачной.
Медленно, без рывка. Сначала пропал цвет с одного участка, серый камень высветлился до белого и сдвинулся. Пятно расширилось. Секунду спустя перед глазами были не камни, а линии, тонкие, светящиеся, белые на чёрном. Blueprint. Архитектурная схема под слоем текстур, каждый блок кладки оказался вложенной структурой, у каждого угла стоял узел, и из узлов расходились нити.
Нити уходили вниз, в землю, в темноту под площадью. Уходили вширь, к домам, к огородам, к деревьям у тына. Сеть тянулась ко всему вокруг на двести локтей в любом направлении. Рядом с каждым узлом мерцали адреса: 0x7F3A4C02, 0x4E01A8FF. Изнанка Порога. Каркас, на котором держится то, что сверху называется жизнью.
Куры за чьим-то забором закричали и замолкли.
Ладони потеряли ощущение твёрдости.
Бортик никуда не делся, давление оставалось, но ощущение плотного, холодного, реального исчезло. Как трогать голограмму, которая притворяется материальной. Длилось долю секунды, потом пропало.
Голоса вернулись рывком, оглушительно, ворот, скрип верёвки, дальние голоса, куры, всё сразу. Во рту был металлический привкус, резкий, как в первые секунды переноса. Руки покалывали, как отлежал.
ВЗАИМОДЕЙСТВИЕ С ОБЪЕКТОМ ЯДРА ЗАВЕРШЕНО.
Объект: Well_047
Запланировано к удалению: патч 2.14 (развёртывание отменено).
/inspect улучшен.
Доступны новые параметры: --deep, --history, --links.
ВНИМАНИЕ: Расширенный /inspect может выявить нестабильные данные.
Действуйте с осторожностью.
Улучшен. Нормальный отладчик взамен одних print().
Встряхнул руки, убрал их с бортика. Рядом, вполголоса, обращённое не ко мне, но акустика на площади открытая и поселение маленькое, одна женщина сказала другой: - Опять молится.
Вторая не ответила. И я тоже. Руки на камне, взгляд в никуда. С их позиции оно именно так и выглядело, понимал.
Повернулся к ближайшему дому, крайнему от площади, серому, с крышей, кое-где подлатанной наспех, с кривоватым крыльцом. Сосредоточился, набрал мысленно: /inspect. Расширенный, все флаги по умолчанию.
Объект: House_014
Тип: Жилое строение
Статус: Активен
Жители: 3 (Томара [NPC_7291], Элен [NPC_7292], ребёнок [NPC_7340])
Целостность конструкции: 67%
Последний ремонт: 4 года назад
Связи: Well_047 (вода, НЕАКТИВЕН), Field_03 (еда, АКТИВЕН)
История: Построен 340 лет назад. Первоначальный владелец: [ПОВРЕЖДЕНО].
Ремонтировался 12 раз. Расширение запланировано в патче 2.14.
Прочитал. Потом медленнее, с начала.
Well_047 обозначен как INACTIVE. Раньше было DEPRECATED. Расширенный флаг различает точнее.
Томара. Та самая, что каждое утро качается в кресле у крыльца, серый чепец, руки сложены на коленях, смотрит на двор так, будто двор должен ей что-то объяснить. По утрам к ней подходит внук, дёргает за рукав, а она гладит его по голове, не отрывая взгляда от двора. NPC_7291. Порядковый номер. Та, что качается в кресле одним и тем же движением каждое утро. Теперь у этого движения есть идентификатор. Ребёнок за стеной записан как NPC_7340. У каждого в Пороге своя строка в таблице.
Целостность конструкции: 67%. Четыре года без ремонта. Patch 2.14 должен был расширить этот дом. Тот же номер обновления, что и у источника. Кто-то вписал расширение для этой семьи в расписание, и потом ушёл, и обновление не вышло, и строчка так и висит «Расширение запланировано» уже сколько лет, сколько версий назад.
Ворот скрипнул.
Закрыл окно. Двор остался двором, женщина тянула ворот, ведро скрипело вверх. Одним взглядом знать про человека больше, чем он сам помнит о своём доме, и ни одного вопроса не задать, и не соврать, откуда ты.
Поднял взгляд к крыше с её четырьмя годами без ремонта. Отвернулся.
Покалывание в руках утихало. На площади пахло пылью и нагретым камнем. Ворот скрипнул последний раз и замолчал.
* * *
Закат нашёл меня на краю Порога, там, где плетень кончался и начиналась открытая земля. Солнце садилось в направлении Пустоши, и небо в той половине горело широкой полосой. У горизонта оранжевое густело до рыжего, выше мягчало в персиковый, потом в бледный, потом в синий уже совсем. Такого я не насмотрелся бы за все семь лет с монитором и размытым краем бокового зрения. Просто стоял и смотрел, потому что отвернуться казалось потерей.
Поселение затихало за спиной. Последние голоса, последние крики детей с улицы, лязг калиток. Потом тишина осела. Скрип половиц за бревенчатыми срубами, приглушённые голоса в домах, дым из труб тянется вверх в безветрии. Всё прибрано и убрано до утра. Мир вокруг пах остывающей землёй и чужим дымом, и чем-то горелым оттуда, откуда Пустошь.
Увидел его не сразу.
Сначала был только закат. Потом на горизонте появились контуры, едва различимые, как прорисовка самого первого LOD, когда движок ещё не подтянул текстуры, только геометрия, только силуэты. Решил, что это холм. Следил краем зрения. Контуры росли.
Моргнул и посмотрел снова.
Это был город.
Настоящий. Высокие стены, башни с коническими крышами, шпили, флаги над воротами. Расстояние было большим, но даже отсюда была видна детализация, и она подгружалась прямо сейчас, пока я смотрел. Сначала общий план, потом мелкие зубцы, потом полосатый герб на флагах.
Белые стены без единой трещины. Синие крыши, такой ультрамарин, который нельзя выцвести. Камень чистый, улицы просматриваются даже отсюда и тоже чистые, мощёные, геометрически правильные. Как концепт, который рисуют перед работой и который потом никогда не сделают именно так.
Несправедливо. Точное слово. Я жил в поселении с источником на шестидесяти семи процентах и домами из [ПОВРЕЖДЕНО]. Эта картина выглядела так, будто её только что закончили и сохранили итоговую сборку перед релизом.
Никаких звуков оттуда не шло.
Понял это не сразу, секунды через три или четыре. Большой живой город, и ни одного звука с его направления. Ни колокола, ни голоса, ни телеги по мостовой.
Ветер дул оттуда. Находил нас, тёплый, вечерний. Я ждал: дым, запах жилья, пыль с мостовой. Ничего. Воздух шёл чистым, пустым, как будто прошёл сквозь камни и не задел внутри ни единого огня. Это было неправильно так же отчётливо, как тишина.
Вытянул руку. Жест активации /inspect.
Покалывание началось в кончиках и сразу же оборвалось.
Чья-то рука перехватила запястье.
Хватка сильная, неожиданно сильная, костлявая, сухая горячая кожа. Старик стоял рядом, не знаю, сколько. Шагов его я не слышал. Смотрел прямо на меня, не на горизонт. Глаза ясные, тяжёлые.
Рука держала крепко.
На краю зрения успело появиться и зависнуть, прежде чем оборвалось:
Объект: [ЗАГРУЗКА...]
Тип: [КЭШ: DEPRECATED]
Статус: ██████████
ВНИМАНИЕ: Фантомный экземпляр.
Не вхо
Команда не завершилась. Покалывание угасало, фантомное, в ладони осталось лёгкое жжение от незаконченного навыка.
Костлявая хватка на запястье не сдвинулась.
- Не ходи.
Большой палец на моём запястье чуть ослаб. Взгляд ушёл туда, в ту точку, где стояли флаги.
Я посмотрел на горизонт. Флаги над воротами развевались, хотя ветра оттуда не было. Ни единого звука. Ни запаха.
- Те, кто уходил туда, не вернулись. Ни один.
[КЭШ: DEPRECATED]. Данные объекта, которого уже нет. Кэш, который не очистился. Адрес ведёт в точку, а точки давно нет.
Не вхо и дальше обрезано.
Рука у меня на запястье не отпускала. Кожа у старика горячая, как будто он всё время чуть в температуре. Не сжимал, просто держал, якорь.
Город мерцнул.
Один раз, резкий. Как стробоскоп в тёмной комнате, когда не ждёшь. В висках кольнул тонкий статический писк, секундный, противный. Сквозь белые стены на долю секунды проступила серая стена Пустоши, та настоящая, монолитная, дымная, которая была там всегда.
Потом город исчез.
Рот высох. Горизонт стоял пустым, серая стена и закат над ней. Постоял, глядя в то место, где только что было. Голова не работала. Просто стоял.
Старик отпустил запястье. Смотрел в точку, где только что были шпили.
Я опустил руку. Пальцы дрожали, мелко, заметил только потому, что потёр их друг о друга и они не слушались.
Шёл обратно в темноте. Трава влажная у щиколоток, ветер оттуда, где был город, тёплый и пустой. Думал о тех, кто не вернулся. Каждый из них тоже шагнул, тоже видел белые стены.
* * *
Сарай встретил темнотой и медовым запахом сена, тёплым, с лёгкой пылью. Четвёртая ночь на одном месте, и запах уже стал своим, уже не замечаешь, пока не войдёшь с улицы.
Лёг на спину, закинул руки под голову. Солома нашла привычные точки давления на лопатках и пятках, тело нашло положение, в котором не колет. Сухость во рту, с ужина не выпил ничего, и хлеб оставил привкус на корне языка.
Город был. Потом его не стало. Шагнул, и старик поймал за запястье, пальцы настоящие, костяные, сильные, а город уже исчезал. Не сразу дошло, уже здесь, когда лёг и понял, что шаг был готов. Нога знала, куда идти.
В щели между досками потолка шёл лунный свет полосами, тонкими, косыми, одна перечёркивала угол поперёк, другая лежала на полу. Каждый сучок в досках был виден, каждое тёмное завитое кольцо. В дальнем углу тянулась паутина, серебристая в лунной полосе, паук сидел в центре, маленький и деловитый.
За бревенчатым срубом прошёл дозорный, размеренно, привычно. Скрипнули ворота далеко у края, приглушённо. Тишина собралась снова. Только собственное дыхание, сарай маленький, и оно звучало объёмнее, чем на открытом.
Откуда-то от Пустоши пришёл вой. Длинный, одинокий, с искажением на конце, как звуковой файл с оборванным хвостом. Волк или что-то другое, пока непонятно.
Не мог лежать, пока голова не разберётся.
Думать без структуры значит гонять одни и те же мысли по кругу, пока они сами себя не сотрут. Три колонки, невидимые, но чёткие. Попытался.
Known. База на двадцати трёх процентах. Форум, дыры, Off-Topic уцелел лучше прочего. Ядровые объекты дают апгрейды через /inspect --deep. Источник подтверждён, малый объект, три новых флага. Мираж. Город без звука и запаха, нога пошла сама, старик стоял именно там, потому что это не впервые.
Unknown. Всё остальное. Почему я здесь. Что такое Пустошь изнутри. Есть ли другие игроки, потому что Patch_Adams мог писать советы и в одиночку. Кто держит GM-доступ. Длинный список, и от него хотелось перевернуться на бок и уткнуться в сено.
Blocked. Bug Reports за замком. Половина руководств битые. Мираж. Не трогать.
Посмотрел на паука в углу. Тот чинил паутину в лунной полосе, вплетал нить за нитью, методично. Сквозняк из щели тряс полотно, паук не останавливался. Строил то, что будет трястись. Прохлада из той же щели тянула по шее, едва ощутимая, с лёгким запахом сырого дерева поверх сена.
Убрал руки из-под головы и сложил их на груди.
Мама.
Мысль пришла сама, и сразу за ней картинка, конкретная, физическая, телефон в прихожей на полке, её имя среди пропущенных звонков. Она не удаляет сообщения, она хранит всё. Наверное, смотрит на экран и не знает, что объяснить соседке.
// TODO: deal with this later.
Потолок смотрел вниз, паук чинил своё.
Мир разваливается, и люди с порядковыми номерами понятия не имеют, что у них под ногами идёт медленное угасание, а сам лежу на соломе и радуюсь форуму. Patch_Adams оставил руководство незнакомцам, потому что знал что-то полезное и решил записать. Ядровые объекты. Изнанка с шестнадцатеричными адресами памяти. Руки немного чесались.
Любил эту работу до выгорания, до последних двух лет на чужом легаси и экранной лупе. Брать чужую систему, читать её, находить место, где она ломается, чинить. Здесь та же задача, только масштаб другой, и внутри живут люди, и руки всё равно тянулись именно к форуму, к этим огрызкам чужих знаний в битых ветках. Два навыка, первый уровень, четыре дня у Пустоши.
Завтра протестировать --history, посмотреть, что в прошлом объектов, и потом Перекрёсток.
Открыл статус-окно перед сном.
Мягкое свечение появилось в темноте, зеленоватое, тихое. Доски потолка подсветились снизу. Единственный источник света в сарае, кроме лунных полос через щели.
Игрок: [без имени]
Класс: -
Уровень: 1
Навыки: /inspect (улучшен), /report
Объектов ядра найдено: 1/???
1/???. Знак вопроса пульсировал слабо и равномерно, как индикатор зарядки. Сколько их всего в мире, Patch_Adams не написал. Может, не знал. Может, именно это лежало за одним из [ПОВРЕЖДЕНО].
Закрыл окно. Темнота вернулась, лунные полосы на прежних местах, серебристое полотно в дальнем углу всё так же подрагивало на сквозняке.
От Пустоши снова пришёл звук, другой, тихий, похожий на эхо шагов. Шаги обрывались посередине, как будто кто-то шёл и не дошёл. Зациклено, в три счёта. Один. Два. Три. Один. Два. Три.
Глава 4. Откат
Системное уведомление: Откат затрагивает ВСЕ объекты в радиусе. Побочные эффекты на живых сущностях: НЕ ЗАДОКУМЕНТИРОВАНО.
Крик вытащил из сна рывком.
Женский, высокий, оборвавшийся на пике. Пятый день в Пороге, и первые четыре начинались тихо, с петухами и скрипом колодезного журавля. Пятый начался вот так.
Сарай был сырым, пахло соломой и прокисшим деревом. Серый рассвет в щелях между досками. Затёкшая поясница, тяжёлые ноги, голова не успела проснуться, но крик уже сдвинул что-то внутри. Натянул куртку и вывалился наружу.
Деревня просыпалась рывком. Люди выходили из изб заспанные, бледные, на ходу запахивая одежду. Несколько человек бежали к краю, к той стороне, где огороды кончались у низкого тына. Туда шёл и я.
Запах озона ударил за двадцать шагов. Резкий, жгучий, как воздух у трансформаторной будки после дождя. Привкус металла на языке, острый, едкий. Глаза начали слезиться, губы мгновенно пересохли.
Вчера здесь был огород. Рыхлая почва, грядки, жерди вдоль борозд. Сейчас грядки кончались по прямой линии, ровной, как отрезанной ножом, и за этой линией было серое. Однородная пустота, уходящая во все стороны без глубины и ориентиров. Глаз не мог зацепиться ни за что. Красное мерцание легло поверх вида, мягкое, пульсирующее.
За краем никакого дна. Пустота во всех направлениях, без формы. Вестибулярный аппарат не мог обработать пространство без единого ориентира, меня повело, пришлось отступить на шаг, унять головокружение. Под ногами дрожала почва, мелко, почти неощутимо, как от далёкого поезда, которого не видишь.
Статический шум нарастал. Тонкий, белый, как испорченный телевизор на старом канале. От него чесались зубы, вибрировало что-то в нижней челюсти. Волосы на руках встали дыбом.
Изба Томары мерцала.
Та самая, House_014, структурная целостность шестьдесят семь процентов, последний ремонт четыре года назад. Стены то твёрдые, то прозрачные, с интервалом в пару секунд, без нарастания и без затухания. В мгновение прозрачности проступало внутреннее: стол, занавески, рукоятка ухвата у печи. Красиво, и именно это было не вовремя. Крыша дёргалась рывками, как картинка при плохом соединении. Нижняя часть забора уже растворилась в пустоте, верхние доски ещё держались, торчали зубьями сломанной расчёски. Потеря связи. Строение металось между состояниями, не могло определиться ни с одной стороны.
Томара стояла в дверях. Белое пятно в проёме мерцающей стены, пальцы стиснуты на косяке, голова чуть опущена. Тихо, ровно, в такт стенам повторяла одно и то же.
- Слышишь, Марко. Слышишь, Марко.
Потом темп начал нарастать, слова сливались, «слышишь» и «Марко» перемешивались в одно непрерывное. Рядом Элен, из домашних, тянула старуху за плечо, за руку, срывалась на крик.
- Мама, пошли. Выйди отсюда, мама.
Младенец на руках кричал тонко и испуганно.
Старик стоял чуть позади, смотрел на пустоту, а не на избу. Лицо каменное, вычерпанное.
- Третий раз за год. Каждый раз ближе.
Он так и не повернул головы.
Третий раз за год. Значит, год назад граница стояла дальше, полгода назад ещё дальше, и с каждым разом ближе.
/inspect сработал привычным звоном, и данные посыпались сразу, без задержек:
Область: Threshold_Village_sector_7
Статус: КРИТИЧЕСКИЙ - УДАЛЕНИЕ В ПРОЦЕССЕ
Время до полного удаления: ~2 часа
Затронутые строения: House_014, Garden_031, Fence_088...
Откат доступен: ДА (внимание: охват 15м, все структуры)
Два часа. Красный таймер появился в углу зрения: 1:57:44... 1:57:43... Каждая секунда давила физически.
Откат доступен: ДА. Зелёный текст на красном поле. Система сама предлагала решение. Как автоисправление в IDE, которое мигает поверх твоей ошибки. «Вы хотели сказать вот это?» Соблазнительно аккуратная кнопка.
Мерцающие стены, Элен с младенцем, Томара, которая не отпускала косяк, и NPC_7291 из вчерашнего инспекта.
Таймер: 1:57:29...
Отвёл взгляд от зелёной строчки. Не помогло.
Повернулся спиной к мерцанию. Ноги на почве, та же слабая дрожь под подошвами. Привкус металла на языке не уходил. Позади прорывалось и гасло: «Слышишь, Марко, слышишь». Строение мерцало, и Томарин голос мерцал вместе с ним. NPC_7291. Вчера это был порядковый номер, строка в таблице. Сейчас за ним стояла женщина, которая держала косяк так, будто держит всю постройку целиком. Зелёная строчка стояла в зрении. Знал, что она там, не смотрел.
* * *
Стоял в стороне от толпы, руки опущены. Под подошвами та же мелкая дрожь. Статика щипала кожу запястий, тянула от локтей к ладоням, кожа была сухой и чужой на ощупь.
Гайд хранился в памяти отрывками. Теми местами, где взгляд успел задержаться дольше остальных.
Статика на коже немного утихла. Запах озона оставался.
Охват 15м, все структуры. НЕ ПЫТАЙТЕСЬ без понимания охвата. Повторяю: НЕ-
Дальше шёл мусор. Предупреждение обрывалось ровно там, где должно было объяснить, почему нельзя.
Разумеется.
Таймер снова мигнул в углу зрения: 1:31:14 → 1:31:13. Каждая секунда падала отдельно. Считал секунды. Поймал себя. Перестал. Давление осталось.
- Нужно её вывести. Из избы. Прямо сейчас.
Встал рядом со стариком. Он смотрел туда, где вчера был огород, и не повернул головы.
- Пробовали. Трое. Десять минут тянули.
- И что?
Старик посмотрел на постройку. Не на меня.
- Руки разжали. Она бы сломалась раньше, чем отпустила.
Мерцание стало чаще, без ритма. House_014 мотался между состояниями рывками, крыша подёргивалась, дверной проём плыл. Томара в проёме мерцала вместе со стенами: то чёткая, то просвечивающая насквозь, как плохо экспонированная фотография. Держала косяк. Смотрела в дерево, не наружу.
- Мой дом. Мой дом.
Тихо, без интонации.
- Мама.
Элен сделала шаг, потом ещё, остановилась на полдороге. Младенец на руках вывернулся и заплакал, она прижала его к себе, не глядя.
- Ты слышишь меня? Выйди, мама. Пожалуйста. Просто выйди.
Старуха не подняла голову.
Пот на висках холодный, солёный. Статика жгла кожу рук, волосы встали на предплечьях. В животе жгло. Адреналин давно перестал помогать, просто накапливался и давил, зрение чуть темнело по краям.
Мысленно запросил команду. Система поняла без текста и развернула форму подтверждения:
/rollback цель: Threshold_Village_sector_7
Охват: 15м
Структур в охвате: 14
Живых сущностей в охвате: 1 (NPC_7291)
Подтвердить? Y/N
ВНИМАНИЕ: Откат затрагивает ВСЕ структуры в охвате.
Побочные эффекты на живых сущностях: НЕ ЗАДОКУМЕНТИРОВАНО.
Прочёл медленно. Потом ещё раз.
Живых сущностей в охвате: 1. Один. Не один человек. Одна структура. NPC_7291. Томара держала косяк, говорила что-то своё, и для Системы это было неотличимо от доски или горшка на подоконнике. Всё в зоне пятнадцати метров.
НЕ ЗАДОКУМЕНТИРОВАНО.
Что-то сжалось в животе, глухо.
Перевёл взгляд на Томару. Её пальцы намертво вдавлены в дерево. Она не знала про таймер. Не знала ни про что из этого.
Горечь поднялась к горлу. Сглотнул.
Откат к предыдущему состоянию. Почва вернётся к тому, что было. Постройка стабилизируется. А Томара вернётся к чему.
Кулаки сжались. Мелкая дрожь не отпускала. Думать не получалось, мысли проскальзывали и не цеплялись ни за что.
- Вытащите её. Пожалуйста. Ещё раз.
Не поворачивался.
Двое мужчин переглянулись и пошли к избе. Слышался скрип, усилие, тихое «да пусти же». Ничего. Томара не отпустила косяк. Младенец Элен закричал громче.
1:19:33.
Подтвердить? Y/N. Курсор мигал терпеливо, методично. Системе было всё равно, сколько ждать. Системе не нужно было принимать решений.
НЕ ЗАДОКУМЕНТИРОВАНО пишут, когда знают и не хотят документировать.
Элен покачивала младенца механически, смотрела на мерцающую избу, по щекам текло. За спиной деревня шла своим ходом: шаги, голоса, запах дыма из труб. Люди стояли у обрыва и ждали, когда решит чужак с непонятным интерфейсом.
Взгляды давили сильнее, чем таймер.
Стена за Томарой задёргалась резко, дверной проём поплыл, мерцание коснулось её плеча. Элен вскрикнула. Старуха не отпустила.
Постройка уже полупрозрачная. Точно плохо. НЕ ЗАДОКУМЕНТИРОВАНО рядом с живым человеком. Это другой класс. Тот, в который не заглядывают.
С такими задачами всё рано или поздно сводилось к этому: запускаешь с тем, что есть, или данные теряются точно. Полной документации не будет никогда. Это пятница вечером, продакшн горит, и у тебя один шанс.
Подтвердить? Y/N
Таймер: 1:17:02.
Посмотрел на Томару последний раз. Стена за ней опять задёргалась, мерцание коснулось её плеча, пальцы не разжались. Горло было сухим. Металл на языке стал острее. Кончики пальцев ощущались как чужие.
Выдохнул. Руки дрожали. Взял как данность.
Y.
В голове щёлкнуло коротко, как Enter.
Ничего не случилось сразу. Дрожь в руках не ушла, просто не за что стало держаться. В животе жгло ровно, без нарастания. Стоял и ждал.
* * *
Запах озона в горле на миг стал резче, потом пропал. Рот остался сухим, сладковатым, будто спирт ударил и испарился. Статика на запястьях умерла разом.
Тишина пришла сразу, заняла всё пространство от края до края. Статический шум Пустоши, сидевший в зубах с самого рассвета, исчез. Удар сердца, другой. Звуков не было совсем. Ни ветра, ни плача младенца. Мир стоял на паузе, и я стоял внутри него, с дрожью в руках.
Потом волна прошла через ладони.
Покалывание изнутри. По ладоням, по предплечьям, через грудь, вверх к голове, а потом вниз, по бёдрам, по голеням, в почву. Вместе с ней пришёл ровный холод. Три удара сердца, не больше. Ни боли, ни жара. Перезагрузка, которую сделали над тобой, пока ты не успел возразить. На краю зрения мигнул значок уведомления. Что-то про Игрок, про excluded, буквы мелькнули и погасли. Холод уже уходил.
Потом мир занялся делом.
Серая пустота за линией огорода начала темнеть снизу. Самый нижний слой сначала, у поверхности. Серое превращалось в коричневое, коричневое разворачивалось в ширину и немедленно начинало нарастать вверх, слой за слоем. Почва возвращалась. Четыре удара сердца, может пять. Потом из коричневого полезло зелёное, торопливое, густое, и к тому моменту, когда передний край травы добрался до ровной линии среза, которой больше не существовало, дыхание задержалось само.
Изба перестала мерцать.
Просто перестала, без нарастания и без щелчка. В один момент стены были то твёрдыми, то прозрачными, в следующий только твёрдыми. Крыша встала на место, без рывка, без промедления. Вот её нет, вот она есть. Дверной проём выправился, забор лёг ровно, доска к доске, нижние перекладины, растворившиеся в пустоте утром, стояли как ни в чём не бывало. Почва на месте среза пахла свежей грядкой, сыростью, минералами.
Стоял и смотрел на постройку. Стены ровные, крыша не дёргается, в дверном проёме темно и спокойно. Дрожь в руках была ещё здесь, мелкая, частая, но тело потихоньку возвращалось к себе, колени перестали подламываться, воздух через нос стал глубже. Трава за бывшей линией среза: зелёная, мокрая от росы, обычная. Никакого мерцания. Огород где-то там, под этой зеленью, десять лет назад.
Мир только что записал поверх пустоты шестьдесят квадратных метров данных. Чисто. Без конфликтов слияния. Снизу вверх, строго последовательно, каждый слой поверх предыдущего. Как будто кто-то ещё помнил, каким должен быть порядок записи.
Закрыл глаза на секунду. Не думал ни о чём. Под ногами была почва, твёрдая, неподвижная. Вибрация, сидевшая в пятках с самого рассвета, ушла.
Дышал медленно, от диафрагмы, не отдавая себе отчёта. Кулаки ещё не разжимались, но где-то в середине груди что-то отпустило. Просто стоял. Просто дышал.
Потом звуки вернулись рывком: выдох толпы за спиной, шёпот, детский плач, ветер, где-то куры. Мир включился обратно, и первым из всего этого голос Элен: она уже бежала к избе.
- Мама!
Элен влетела в дверной проём.
Толпа за спиной зашевелилась. Кто-то опустился на колени прямо в грязь. Кто-то шептал одно и то же слово, раз за разом, я разобрал его только через несколько мгновений: «стоит». Просто «стоит», тихо и снова, как будто нужно было повторить его достаточно раз, чтобы поверить. Немолодая женщина у тына осторожно потянулась к доске, и когда её ладонь встретила дерево, не убрала руку. Стояла так, упершись в брёвна, с опущенной головой. Положил руку на доску, которую час назад всасывала пустота. Твёрдая. Ей ничего не сделалось.
Руки дрожали. Не от страха, от того, что адреналин уходил и тело догоняло остальное. Колени слегка поехали, пришлось поставить ноги шире. Ладони сами раскрылись, суставы побелевшие, потом медленно порозовели обратно. После авральной ночи так бывало: задача закрыта, задеплоено, а тебя трясёт.
Первый настоящий фикс, от команды до результата. Патч прошёл в прод.
В интерфейсе развернулся отчёт:
Откат завершён.
Сектор восстановлен до состояния: -3 741 дней.
Структур восстановлено: 14.
Перезарядка: 72:00:00.
Побочные эффекты: вычисление...
Красная полоса кулдауна легла поперёк интерфейса: 71:59:58... 71:59:57... Трое суток. Ресурс потрачен.
-3 741 дней. Зелёное число, спокойное, информационное. Что-то около десяти лет. Стены без щелей, крыша без просадки, огород на месте.
Побочные эффекты: вычисление...
Жёлтые буквы мигали ровно, методично. Система считала. Постпроцессинг не завершился вместе с основной операцией.
Хотел отвернуться.
Жёлтый не давал отвести взгляд.
* * *
Крик пришёл из избы.
Голос Элен надломился посередине и не сразу стих. Жёлтое вычисление всё ещё мигало в углу зрения, когда ноги уже несли к порогу.
В избе пахло иначе.
Это первое, что дошло на пороге. Чище, суше, с травяным оттенком, чабрец, может, или мята, что-то, что сушат и вешают к балке. Без тяжёлого запаха долгих лет в небольшом пространстве, без пыли, которая набивается в щели за десятилетие. Будто проветрили комнату, в которой хранили вещи, но давно не жили. И теплее, чем снаружи. Стены держали лучше.
Занавески на окне были жёлтые, с мелким узором. Вчера занавесок не было.
Томара сидела в кресле.
Та же фигура, то же место у печи, та же поза с руками, сложенными на коленях. Но что-то было не так, и это «не так» ударило раньше, чем успело оформиться в слова. Морщины не исчезли, но часть из них пропала, как будто кожа помнила меньше усталости. Спина держалась прямее, чем вчера. В волосах с проседью тёмных прядей было заметно больше, густых, настоящих, тех, которых вчера точно не замечал, а суставы лежали на коленях без узловатой скрюченности. Руки женщины на десять лет моложе.
Элен стояла посреди комнаты и смотрела на неё.
Томара подняла голову. Взгляд скользнул по Элен, по младенцу, по мне в дверях. Ровно, неторопливо. Без узнавания.
- Кто вы?
Обвела взглядом комнату поверх плеча Элен, будто ища подсказки в собственных вещах.
- Почему вы в моём доме?
Элен сделала шаг вперёд, потом остановилась.
- Мама.
Младенец у неё на руке всхлипнул, она поправила его автоматически, не отрывая взгляда от Томары.
- Это я, мама. Элен. Жена Марко.
Томара смотрела на неё долго. Голова чуть наклонилась, брови сошлись к переносице и замерли там.
- Марко не женат.
Посмотрела за плечо Элен, в сторону двери, на тёмный двор.
- Где он?
Элен вздрогнула всем телом. Младенец на руках захныкал. Она прижала его к себе, не глядя, и он на секунду умолк, потом заплакал снова, тихо, всхлипами.
- Марко.
Она замолчала. Больше не шло.
Томара смотрела на младенца. На вопящий красный рот, на мокрые щёки, на руки Элен, удерживающие его. Потом подняла взгляд.
- Чей это ребёнок?
Элен шагнула ближе. Младенец на руках завозился, заплакал громче. Она не посмотрела на него, смотрела только на Томару, и в голосе не было больше ни интонаций, ни выражения, один голый смысл.
- Мама, это твой внук. Посмотри на него, пожалуйста.
Смотрела на Элен, не на младенца.
- Я вас не знаю.
Поднялась с кресла движением прямым и неожиданно лёгким.
- Вы, наверное, ошиблись.
Держался за дверной косяк. Дерево под ладонями было другим, менее рассохшимся, без трещины, которая утром шла от верхней перекладины вниз. Откатившееся дерево. В интерфейсе слева жёлтые буквы всё ещё мигали. Вычисление...
Три тысячи семьсот сорок один день. Около десяти лет.
Старуха стояла у кресла и смотрела на чужих людей в своём доме. Просто ждала, когда уйдут. Понять не могла, почему не уходят.
Жёлтый текст в интерфейсе погас.
Побочные эффекты рассчитаны.
Живая сущность NPC_7291 (Томара):
Состояние откачено на 3 741 день.
Память, физическое состояние, уровни навыков: СБРОШЕНЫ.
Текущий возраст: ~55 (был: ~65).
Примечание: This is intended behavior.
Последняя строка была белой. Нейтральной. Никакого красного, никакого мигания. Штатный информационный тон.
This is intended behavior.
Смотрел в белый текст. Ладони на косяке занемели. Не отпускал.
Три тысячи семьсот сорок один день. Читал НЕ ЗАДОКУМЕНТИРОВАНО и всё равно нажал.
Руки не тряслись уже. Хуже: ладони просто лежали на дереве, тяжёлые и чужие. В животе было тихо и холодно. Дыхание шло ровно, само по себе, и это тоже было неправильно.
Томара перевесила чашку с полки на место. Движения точные, без заминки. Руки женщины, которая знает свою избу. Которая помнит её такой, какой она была десять лет назад. Которая ждёт мужа.
Гайд предупреждал DO NOT attempt. Вот что стояло за этими заглавными буквами. Женщина у полки с чашкой, которая ждёт человека, которого нет.
На прямую спину, на руки у полки, на профиль лица под жёлтым светом из окна. На тёмные пряди в волосах, вчера их не было. Десять лет стёрлись, чтобы постройка не рухнула в пустоту. Изба стоит. Почва стоит. Косяк под ладонями гладкий, без трещины, потому что трещина тоже откатилась.
- Вам лучше уйти.
Не обернулась.
- Марко скоро придёт.
Элен за спиной издала короткий глухой звук.
Ладони разжались. Вышел на порог. Почва под ногами твёрдая, пахла свежей грядкой. Трава на отвоёванном участке стояла ровная, зелёная, правильная. Деревня жила своим вечером, дым из труб, чьи-то шаги, куры у соседского забора.
Кулдаун считал: 71:58:02... 71:58:01...
Из избы голос Элен. Не слова. Просто звук.
* * *
Суставы на правой руке отпускало медленно. Горечь стояла в горле плотно, не проглотить, и почва под ногами была нехорошо чистой, как свежий коммит поверх чужих данных. Деревня проходила мимо по-разному, кто-то тормозил и оглядывался, кто-то ускорял шаг.
Дверь в Томарину избу была закрыта. Изнутри слышался голос, тихий и ровный, что-то спрашивал про занавески или про горшок. Молодой голос. Незнакомый тон у женщины, которую слышал три дня подряд в петле одной фразы. Теперь она говорила нормально. Говорила про Марко.
Элен не вышла.
На площади двое кланялись, обеими руками придержали головные уборы, долго держали взгляды в почву. Кивнул им. Женщина с вёдрами посмотрела, взяла детей за плечи и повела в другой проулок. Шёпот тянулся за ней. Те, кто кланялся, не видели тех, кто уходил, или делали вид. Деревня разбиралась с произошедшим каждый на свой лад.
Стоял и слышал. Спокойный голос, бытовой, живой, как будто всё в порядке.
Старик появился у колодца. Поставил ведро. Долго слушал голос за закрытой дверью, потом обернулся ко мне. Просто смотрел. Уже решил, что скажет.
- Ты вернул землю.
Пауза. За закрытой дверью Томара о чём-то спросила, Элен не ответила.
- И забрал бабку Тому.
Старик поднял ведро, переставил к ноге, не уходя.
- Десять лет. Марко.
Говорил, не глядя на дверь Томары, смотрел куда-то в сторону тына, и руки его держали ведро одинаково ровно.
Можно было объяснить про охват, про то, что система не различала камень и человека, про UNDOCUMENTED рядом с живой структурой. Это всё было правдой, и это всё было бы отговоркой. Молчал.
Старик покачал головой, медленно, не Кириллу, а чему-то своему.
- Боги делают так. Дают и забирают одним жестом.
Поднял ведро и пошёл к своей избе. Спина прямая.
Стоял ещё долго, пока площадь не опустела. Факелы догорели один за другим. Последний голос за тыном, тишина. Окно в Томарином доме светилось, тень Элен на занавеске, неподвижная.
Пошёл по краю деревни. Мимо чужих огородов, мимо закрытых ворот, пока темнота не стала настоящей и почва не закончилась у восстановленного забора.
Забор восстановленный, доски плотные, нижние перекладины целые, без рассохшихся щелей. Опустился на почву спиной к нему. Холодная, роса уже легла, пахло сыростью и чуть смолой, влага сразу пошла через джинсы, медленно, неприятно. Сидел. Руки лежали на коленях тяжёлые, не нужные сейчас никому.
Пустошь стояла на горизонте.
Отступила на пятнадцать метров, полоса свежей травы между деревней и серой стеной. Трава на полосе уже не отличалась от остальной, прижилась быстро, будто всегда была здесь. А за ней серое начиналось с той же ровной линией среза, без зазубрин, без глубины. Никуда не ушло. Просто стояло чуть дальше, чем утром.
Вернётся.
Потёр лицо ладонями. Ладони пахли землёй и смолой.
Звёзды были яркими, такими, что хотелось закрыть глаза на секунду. Много месяцев на Земле они для меня не существовали, расплывались в белёсую муть за несколько секунд. Здесь стояли чёткими и неподвижными, и неба было широко. Красиво. Просто красиво, без повода и без разрешения, и красота эта не уходила оттого, что смотрел на неё из плохого места.
Интерфейс не открывал. Там фоном шла красная полоса кулдауна, не смотришь, но знаешь. Не хотелось видеть NPC_7291 и строку про intended behavior. Не сейчас. Может, завтра хватит духу.
Переложил руки с колен на почву. Ладони сразу взяли холод. Мокро насквозь, роса не прекращалась, и ладони на правой руке, час назад едва слушавшиеся, теперь чувствовали каждый камешек, каждую ямку. Холод уже прошёл выше колен, поди до бедра, но вставать не тянуло. Из деревни донёсся скрип ставни, далёкий, один раз, потом ничего. Потом чья-то скотина переступила в хлеву, беспокойно, и замолчала. Деревня жила своим ночным ритмом, просто спала. Утром надо было вставать. Туман лёг в низину за тыном, едва видный, серая полоска у самой земли.
Томара жива, здорова, моложе на десять лет, и на эти же десять лет не помнит ничего.
Пустошь ждала. Третий раз за год, и каждый раз ближе. Через год снова обрыв и следующий дом, и следующий выбор.
Влага через джинсы дошла до колен. Руки лежали на почве тяжёлые. Над головой звёзды стояли на своих местах, яркие, тихие. Пустошь на горизонте не двигалась. Ночью она никуда не уходит. Просто перестаёт быть видна.
Глава 5. Тикет в пустоту
ЗАПЛАНИРОВАННАЯ ЗАДАЧА #1
Тип: ЗАВЕРШЕНИЕ РАБОТЫ
Статус: ВЫПОЛНЯЕТСЯ
Примечание: Это автоматическая защитная мера.
Если ни один активный администратор не вмешается,
отключение завершится, когда целостность ядра достигнет 0%.
Все данные будут безвозвратно удалены.
В сарае было темно и пахло сеном.
Пятую ночь оно согревало и кольнуло через ткань джинсов и рубашки на спине, успело стать своим. Спина опиралась о бревенчатую стену. Ноги вытянуты. Руки лежали на коленях так же тяжело, как час назад лежали на мокрой почве у восстановленного забора, остывающие и чужие.
Пришёл в сарай, потому что роса пропитала насквозь. Лёг на солому и не заснул.
Лунный свет падал через щели в досках узкими белыми полосами. Пыль плавала в каждой, медленная и живая. Сучок в доске напротив повторял прожилками что-то вроде волны, точный рисунок, похожий на топографическую карту речного изгиба. Во рту стояла сухость, привкус вчерашнего хлеба, который так и не запил с вечера.
За стеной зашуршало, потом плач ребёнка, тихий, сонный. Элен успокаивала его низким мерным «тшш, тшш», ритм качания, ровный и бесконечный.
Потом голос Томары, молодой и по-прежнему неправильный, из горла, которое четыре дня слышал другим.
- Чей это ребёнок?
Элен не ответила.
Тишина за стеной стала плотнее, чем была до вопроса. Ребёнок всхлипнул один раз и замолчал. Пальцы на колене сами сжались в кулак, медленно, будто без моего участия, и не стал разжимать.
Закрыл глаза.
Темнота была та же, что в последние месяцы на Земле, расплывчатая, без границ, без опоры. Сердце сделало лишний удар, ненужный. Открыл, и полосы лунного света стояли на досках, пыль плавала в них, сучок с волной-прожилкой смотрел с доски напротив, всё на месте, чёткое, видимое. Закрыл снова, досчитал до пяти в темноте и открыл снова.
Мир стоял. Зрение не ушло.
Где-то далеко прошёл вой, длинный, с ломаным окончанием. Через несколько минут повторился с тем же переломом на той же секунде, с точностью, которой у живых не бывает.
С крыши в темноте капало, редко, через равные промежутки. То ли дождь начинался снаружи, то ли доски рассохлись. Поймал себя на поиске клавиатуры, которой нет. Что-то пошло не так, читай логи, потом паникуй.
/inspect --deep self
Текст появился в темноте сарая мягким зеленоватым свечением, единственным электрическим светом в мире без электричества. Подсветил солому у ног, полосу стены слева, собственные руки. Моноширинный шрифт висел в воздухе, и два мира наложились друг на друга без зазора: запах нагретых досок, лунные полосы на полу и код в темноте посередине всего этого.
Игрок: [без имени]
Класс: -
Уровень: 1
Системный доступ: Базовый (Игрок)
Подключён к: AetherOnline_Main
Статус сервера: [развернуть]
Коснулся строки Статус сервера: [развернуть] мысленно. Данные раскрылись.
Сервер: AetherOnline_Main
Аптайм: 11 347 лет, 42 дня, 7 часов
Целостность ядра: 12%
Активных процессов: 847 (из изначальных 240 000+)
Использование памяти: КРИТИЧЕСКОЕ
Запланированные задачи: 1
Запись с целостностью ядра светилась красным и пульсировала медленно.
Двенадцать процентов. Горло сжалось на секунду. Сервер с такими показателями в нормальном продакшне падал бы от одного взгляда. Этот держался. Двенадцать процентов, и почему-то не ноль. Лог не объяснял.
Восемьсот сорок семь активных процессов из двухсот сорока тысяч. Посчитал в голове. Ноль целых тридцать пять сотых процента. Вот на чём держался мир с детским плачем за стеной и стариком у колодца. Пока перебирал это число, ребёнок за стеной тихо всхлипнул.
Последняя строчка стояла белой и нейтральной, без красного, без мигания.
Одна запланированная задача. Единственное, чему система ещё отводила место в расписании. Спокойный зелёный шрифт, без мигания.
Зеленоватый свет лога лежал на соломе у ног, на стене, на собственных руках, и за деревней вой прошёл в третий раз с тем же точным переломом на конце, как запись, пущенная по кругу.
С крыши капнуло. Тихо. Какая задача.
* * *
То же сено. Та же тяжесть в спине у стены. Руки на ногах так же тяжело, как час назад. Запись «Запланированные задачи: 1» светилась в темноте зелёным, терпеливая и неподвижная.
Сколько на неё смотрел, не считал. Задача могла значить что угодно. Обслуживание. Дефрагментация. Бэкап. Мозг перебирал варианты, ни один не объяснял, почему строка не отпускала.
Развернул строку.
Тонкий звон, короткий. Данные грузились строчка за строчкой, с паузой между каждой. Зеленоватый свет потемнел. Стал красноватым. Сначала чуть заметный отблеск, потом ровное, спокойное свечение, без мигания. Красный свет лёг на солому у ног, на рукава, на собственные руки.
ЗАПЛАНИРОВАННАЯ ЗАДАЧА #1
Тип: ЗАВЕРШЕНИЕ РАБОТЫ
Приоритет: КРИТИЧЕСКИЙ
Описание: Полное отключение сервера и удаление данных.
Инициирована: [АДМИНИСТРАТОР - доступ ограничен]
Условие запуска: Целостность ядра < 15%
Текущая целостность ядра: 12%
Статус: ВЫПОЛНЯЕТСЯ
Расчётное время завершения: ПЕРЕМЕННАЯ
(зависит от оставшегося числа процессов и объёма данных)
Примечание: Это автоматическая защитная мера.
Если ни один активный администратор не вмешается,
отключение завершится, когда целостность ядра достигнет 0%.
Все данные будут безвозвратно удалены.
Прочитал до конца. Перечитал. Ещё раз.
Текст не менялся.
Тело не двигалось. Спина у стены, ноги вытянуты. Всё осталось там, где было, только стало холоднее. Не от ночи. Пальцы перестали чувствовать солому.
ВЫПОЛНЯЕТСЯ.
Не «запланировано». Не «ожидает запуска». ВЫПОЛНЯЕТСЯ. Прямо сейчас, пока читал, пока капля с крыши летела к полу, пока Элен укладывала ребёнка за стеной. Сервер не ломался. Его выключали. Планово, сектор за сектором. Пустоши, серые и однородные, без дна и без запаха, теперь читались иначе: каждый удалённый участок, каждый кусок мира, который съедала граница. Данные, которых уже не было. И прямо сейчас, пока читал это в красном свете, в мире ещё что-то удалялось.
Солома кольнула под ногой, привычно. Тело было здесь.
Инициирована: [АДМИНИСТРАТОР - доступ ограничен].
Администратор. Кто-то вошёл в систему одиннадцать тысяч лет назад, запустил удаление и вышел. Выключил свет в офисе, уходя последним. Только в офисе кто-то остался.
Пальцы онемели, холод шёл выше.
Все данные будут безвозвратно удалены.
В груди сдавило, медленно, будто надавили изнутри. Запах сена ударил вдруг, острый и совершенно обычный.
Томара за стеной с чужим голосом. Элен, которая не ответила. Ребёнок. Старик у колодца. Дети, которые гоняли кур в первый день. NPC_7291 и дальше по списку. Тридцать домов, двести человек.
Какое-то время просто сидел. Красный отсвет лежал на соломе, ровный, без суеты.
Если ни один активный администратор не вмешается.
Активных администраторов не было. Форум молчал месяцами, тикеты копились без ответа, треды про администраторов тонули в [ПОВРЕЖДЕНО] и тишине. Активных игроков один. С уровнем «Игрок». Без GM-прав. /rollback на кулдауне в трое суток, /report, который умел отправлять письма в никуда.
Смех вышел тихо, сам по себе. Нервный, короткий, в красном свете.
Не звонок от менеджера. Здание горит. Пожарные уехали. А внутри стажёр, у которого доступ только к тестовой среде.
За стеной что-то скрипнуло. Смех оборвался.
С крыши упала капля, потом ещё одна, через равный промежуток. В доме тихо. Ни шагов, ни голоса. Ребёнок спал.
У матери на кухне так же капало. Батарея подтекала всю зиму, и они так и не вызвали сантехника.
Статус: ВЫПОЛНЯЕТСЯ.
Холод поднялся к локтям. Три человека за стеной. Не знали, что прямо сейчас кто-то сидит в тёмном сарае и читает их идентификаторы в красном свете.
Сидел и не двигался.
За стеной кто-то перевернулся. Ребёнок пробормотал что-то сквозь сон.
Делать что-то надо было. /report уйдёт в пустоту. /rollback на кулдауне три дня. Что-то третье, чего пока не видел.
Красный свет не гас.
* * *
Сидел, не двигаясь. В горле что-то сдвинулось, не то глоток, не то вздох.
/report
Форма раскрылась с тонким звоном, длинным и чуть протяжным, как когда звонишь в пустую приёмную и слышишь, что там никого нет, но гудок всё равно идёт. Поля выстроились в воздухе поверх красного свечения. Тема, приоритет, описание, шаги воспроизведения. Та же структура, что в Jira, те же пустые строчки, ожидающие текста. Моноширинный шрифт, курсор мигает в поле темы. Где-то в прошлой жизни в такой же форме стояло «Кнопка "Сохранить" не работает в Firefox». Сейчас надо было написать что-то другое.
Пальцы набирали рефлекторно. Дрожь обнаружилась уже в процессе, когда первые слова были готовы. Тело знало, как заполнять формы, даже когда клавиатуры не было.
/report
Тема: Запланированное завершение работы -
активное сознательное население под угрозой
Приоритет: КРИТИЧЕСКИЙ
Описание: Сервер запланирован к полному отключению
и удалению данных. Население является сознательным
и самосознающим. Завершение работы должно быть
немедленно остановлено.
Шаги воспроизведения: Открыть системный журнал.
Просмотреть запланированные задачи. Обнаружить,
что миллионы сознательных существ будут удалены.
Отправка
Три точки мерцали поочерёдно. Тихое потрескивание, как помехи при слабом сигнале. Ждал, и тело привычно напряглось в этом ожидании. Плечи чуть вперёд, взгляд туда, где должен быть экран, готовность к тому, что саппорт ответит. Или не ответит. Или закроет с пометкой «не воспроизводится», потому что у них нет прав проверять.
Точки мерцали.
Потом короткий звон, нейтральный и деловой. Так уведомляют об отправке счёта или о том, что посылка прибыла на склад.
Тикет #4 891 227 успешно отправлен.
Позиция в очереди: 4 891 227.
Расчётное время ответа: НЕДОСТУПНО.
Спасибо за ваше терпение.
Капнуло с крыши. Солома кольнула под ногой.
Смотрел на цифру.
Четыре миллиона восемьсот девяносто одна тысяча двести двадцать семь. Позиция в очереди совпадала с номером тикета, то есть в очереди стояли все четыре миллиона восемьсот девяносто одна тысяча двести двадцать шесть, что были до него. Чьи. Когда. Другие игроки, которые пробовали и исчезли. Или ещё один программист, который сидел в каком-нибудь другом сарае в какую-нибудь другую ночь и сделал первое, что умел, написал баг-репорт.
Пять миллионов криков. Каждый с галочкой «успешно отправлен». Без ответа.
Горло сжалось, отпустило. Что-то тяжёлое поднялось из живота.
Расчётное время ответа: НЕДОСТУПНО.
Тикеты копились, как письма в ящике дома, из которого давно уехали. Каждый с аккуратной печатью «получено», и ни одного прочитанного.
Выдохнул, медленно, и не почувствовал, как воздух вышел до конца. Ещё один тикет в пустоту.
Форма закрылась. Статус: ВЫПОЛНЯЕТСЯ остался. Тикет с номером висел в углу зрения зеленоватой строчкой, тихой.
С крыши капнуло. За стеной спали. Ребёнок, Элен, Томара. Четыре миллиона восемьсот девяносто одна тысяча двести двадцать седьмой в очереди.
* * *
За щелями в досках что-то изменилось. Полосы на полу стали тусклыми, серебристыми, почти синеватыми. Не луна ушла за облако. Первый намёк предрассвета.
Не двигался уже несколько часов. Спина у холодной стены. Спина отдавала тупой болью, ноги ниже колен онемели. Глаза горели от часов чтения интерфейса в темноте. Экрана не было, а глаза всё равно горели.
И сухость. Горло саднило при каждом вздохе, язык прилипал к нёбу. Воды не было. Не пил с вечера.
Паники не было. Ушла где-то на третьем перечитывании Все данные будут безвозвратно удалены. Разум отказался и переключился. Руки лежали неподвижно, голова работала.
Если есть shutdown, у shutdown должна быть точка управления.
Мысленно открыл форум.
Загрузка шла медленнее обычного. Потрескивание, тихое и неровное. Поисковая строка появилась в темноте сарая поверх серебристых полос на полу. Набрал ядро сервера.
Результаты пришли с задержкой. Три треда, два из которых отдавали повреждённые строки, серую мешанину символов вместо заголовков. Третий читался. «Ядро Сервера - где это?» Шесть ответов, последний три года назад. Открыл. Первые два поста [ПОВРЕЖДЕНО]. Потом кто-то под ником [ПОВРЕЖДЕНО] написал что-то про ориентиры на западе, но дальше снова обрыв. Закрыл.
Попробовал вики.
Вики открывалась тяжелее форума. Долгий рендер, полоса загрузки ползла вправо с тем же потрескиванием. Статья называлась «Ядро Сервера» и занимала весь экран, только большая часть её была окрашена в серый, недоступный. Читаемым оставался верхний раздел и пара строк здесь и там, остальное рассыпалось в битые данные.
Ядро Сервера - физическое воплощение центрального
вычислительного узла системы.
Местоположение: [ДОСТУП ОГРАНИЧЕН]
Требования доступа: уровень Администратора ИЛИ
[ДАННЫЕ ПОВРЕЖДЕНЫ]
Ядро позволяет:
- Изменять глобальные параметры сервера
- Отменять или запускать запланированные задачи
- [ДАННЫЕ ПОВРЕЖДЕНЫ]
ПРЕДУПРЕЖДЕНИЕ: Прямое взаимодействие с Ядром
может привести к [ДАННЫЕ ПОВРЕЖДЕНЫ]
Отменять или запускать запланированные задачи.
Перечитал. Пальцы на колене сжались сами. Ядро могло отменить shutdown. Если до него добраться. Если не убьёт.
Бормотнул вслух.
- Можно отменить.
Закрыл вики. Вернулся на форум. Поисковая строка снова, на этот раз Престол Ушедших. Результатов меньше, но процент повреждённого примерно тот же. Тред «Кто-нибудь добирался до Ядра?» появился третьим в списке. Открыл.
47 ответов, дата последнего [ОШИБКА].
Стал читать сверху вниз. Первые девять постов шли сплошным [ПОВРЕЖДЕНО]. Десятый выдал половину читаемого текста, что-то про маршрут, потом [ПОВРЕЖДЕНО] в середине фразы, потом обрыв. Пролистал несколько серых. Читал фрагменты вслух, голос тихий, почти для себя.
- «Проходил через... [ПОВРЕЖДЕНО]... примерно три недели в пути...» Значит, пешком не мгновенно. - Пролистал. - «Ядро находится в центре всего, это точно...» Центр. - Ещё один повреждённый. - «...не советую идти через...» И дальше? Куда не советуешь идти через? Куда?
Серый блок на месте продолжения смотрел без ответа.
За стеной что-то скрипнуло, потом тишина. Холод от земляного пола шёл снизу, через ноги.
Пролистал ещё пятнадцать постов, большинство повреждены полностью, кое-где по слову-два. На пятом повреждённом подряд поймал себя на том, что считаю не посты, а капли с крыши. Четырнадцать с тех пор, как открыл тред. Попробовал поменять позу. Правая нога не ответила сразу, тупая боль от колена вниз, потом медленное возвращение. Потом тридцать третий пост остановил взгляд.
Ник автора [ПОВРЕЖДЕНО], аватарка серый квадрат, дата [ОШИБКА]. Но сам текст стоял чётко, без единого разрыва.
Местные называют это Престолом Ушедших.
Он существует. Он в центре.
И его охраняют. Не мобы, а кто-то,
кто не хочет, чтобы туда добрался кто-то ещё.
Перечитал.
- «Кто-то, кто не хочет, чтобы туда добрался кто-то ещё», - произнёс вслух, совсем тихо, и голос в сарае прозвучал иначе, чем хотелось.
Кто-то. Живой. Или бывший живой. Кто знал про ядро и не пускал.
Баги и мобы были понятны: /inspect, поиск паттерна, прервать цикл. Тут другое.
НЕ ИДИ
Следующий пост снова [ПОВРЕЖДЕНО]. Последние четырнадцать постов давали то же самое, серую мешанину без единого читаемого символа. Как будто кто-то стёр.
Или как будто что-то стёрлось. Не кто-то.
Закрыл тред и посидел в темноте. Полосы за щелями стали теплее, чуть тронуло розоватым по краю одной, едва заметно. Ночь шла к рассвету.
Дата-центр, до которого нужно дойти ногами.
Мысль сначала показалась внутренним монологом, потом выяснилось, что произнёс её вслух.
- Ядро Сервера. Физическое место, физический маршрут, пешком. Как если бы для перезапуска AWS нужно было физически дойти до Северной Вирджинии.
Вспомнил старика. Первые два дня, разговоры у колодца, пока учился читать интерфейс и задавал вопросы о мире, стараясь не задавать их слишком очевидно. Старик как-то обмолвился, вскользь, как о чём-то само собой разумеющемся. «Престол Ушедших, оттуда Боги правили миром. Туда не дойти. Проклятые Земли между нами и Престолом, и стражи, которых не одолеть». Сказал и переключился на что-то другое, как будто упомянул погоду.
Престол Ушедших.
Ядро Сервера и Престол Ушедших оказались одним и тем же местом, просто с двух сторон интерфейса.
Через щель справа полоса окончательно стала розоватой, в ней угадывалось что-то живое, совсем иное, чем холодное ночное серебро. Предрассветный воздух просочился через щели, свежий и с запахом мокрой земли, с запахом росы, которая ещё не выпала, но уже чувствовалась. Горло отозвалось тупой болью на каждый вдох, сухость стала критической. Надо было встать и найти воды.
Не встал. Сидел ещё минуту. Кто стоит у ядра. И зачем.
Розовая полоса за щелью тронулась к золотому по самому краю, совсем чуть. Снаружи что-то шевельнулось, птица или ветер. Деревня начинала просыпаться, медленно, как просыпается каждое утро.
Наконец разжал пальцы и пошевелил ими, ощущая, как в них возвращается чувствительность. Медленно, покалывая. Поднялся, ноги ответили тупым протестом после нескольких часов неподвижности, и сделал шаг к двери за водой. Через Пустошь напрямую нельзя. Консоль там переставала отвечать, команды уходили в пустоту. Без интерфейса просто человек в сером ничто. В обход дольше, но дойти можно. Нужен Перекрёсток.
* * *
Дверь сарая открылась в золото.
Солнце стояло ещё низко, и свет шёл почти горизонтально, пронизывая воздух насквозь. Роса на траве блестела. Каждая капля держала в себе перевёрнутый мир, сжатый до размера точки, и смотреть на это хотелось долго, хотелось остановиться и просто смотреть, но ноги шли сами. За домами петух отрабатывал рассвет, ему вторил второй, дальше, потом третий, за перелеском. Из труб поднимался дым, белый и медленный, растворялся в золотом воздухе прежде, чем успевал стать чем-нибудь. Куры рылись у плетня, деловитые и невозмутимые.
Дети уже бегали по площади. Двое кричали друг другу что-то бессмысленное, радостное.
Горло саднило от сухости. Нашёл колодец, пил долго, двумя пригоршнями, пока не полегчало. Вода была холодная, с привкусом камня, и запах мокрого сруба бил в нос, резкий и живой. Краем зрения мигнула короткая строка, зеленоватая и тихая, та же интонация, что у форумных записей про объекты ядра. Колодец слабо светился этим цветом одну секунду, потом пропало. Не стал разворачивать, запомнил. Оттолкнулся от бортика и поднял голову.
Старик стоял у своего дома и чинил забор. Молоток поднимался и опускался без спешки, удар за ударом. Услышал шаги, обернулся. Посмотрел на меня, на дорогу за моей спиной, снова на меня.
- На Перекрёсток?
- Дальше.
Молоток лёг на землю. Старик выпрямился, потёр поясницу. Взгляд ушёл за моё плечо, к холму, откуда начиналась тропа.
- К Престолу?
Не ответил. Деревня жила вокруг, дети бегали, кто-то нёс ведро, петух никак не мог успокоиться.
Он кивнул, медленно.
- Блаженные всегда туда хотят.
Ушёл в дом и вернулся с холщовым мешком. Протянул без слов. Мешок оказался тяжелее, чем выглядел. Хлеб, ещё тёплый, запах первого дня в деревне, знакомый и неуместный. Вяленое мясо в тряпице, фляга, полная, холодная снаружи. Сухие старческие пальцы коснулись моих на долю секунды, когда передавал.
- Три дня до Перекрёстка. Не сходи с тропы.
Кивнул.
- Если увидишь красивое, не иди к нему.
Больше он ничего не добавил. Снова взял молоток и принялся за забор. Не «удачи», не «возвращайся». Просто забор.
Повернулся к дороге.
Элен стояла в дверях дома Томары. Прислонилась к косяку, руки скрещены на груди, пальцы крепко сжаты на локтях. Утреннее солнце падало сбоку, освещало скулу, краешек плеча. Смотрела молча. Что за лицо, непонятно.
Из глубины дома долетел тихий голос Томары, молодой, как всегда теперь. Что-то спросила про завтрак. Элен не обернулась.
Хотелось подойти. Сказать что-нибудь. Что-нибудь, что изменило бы то выражение на её лице. Но что бы я ни сказал, Томара бы не вспомнила десять лет. Не вспомнила бы внука, и как он рос, и как учился ходить.
Не подошёл. Пошёл по тропе.
Роса пропитала ткань кроссовок за первые десять шагов, холодная влага к пальцам ног. Мешок врезался в плечи. Фляга звякала на боку. Утренний воздух пах росой и хлебом из мешка, и далёким дымом, и чуть-чуть озоном от Пустоши, если принюхаться. Тропа поднималась к холму.
С гребня деревня открылась целиком. Тридцать домов в низине между лесом и серой стеной Пустоши. Дым из труб. Фигурки во дворах. Голоса долетали снизу, неразличимые слова.
Открыл статус.
Игрок: [без имени]
Класс: -
Уровень: 1
Навыки: /inspect (улучшено), /report
Системные: /rollback (разблокировано системой в экстренной ситуации, кулдаун: 47:52:11)
Найдено объектов ядра: 1/???
Целостность ядра: 12%
Запланированное завершение: ВЫПОЛНЯЕТСЯ
Двенадцать процентов. Один уровень. Три команды. Привычное // TODO в голове.
Внизу, мелкими буквами:
Тикет #4 891 227: ожидает.
Ожидает. Не отклонён.
Убрал статус.
Ветер ударил сразу. На гребне он был другим. Порывистый, с холодком, с запахом травы и далёкого леса. Трепал куртку, заставлял прищуриться. Тропа уходила вниз с другой стороны холма, в высокую траву, в тень от кромки леса, и отсюда видел её на полкилометра вперёд, до самого поворота. Дальше не видел.
Поправил лямки мешка. Врезались в плечи глубже, чем казалось. Кило полтора, может два. Три дня с этим весом на спине.
Утреннее солнце добралось до холма раньше, чем до деревни в низине. Щека почувствовала мягкое тепло, просто тепло на коже. На тыльной стороне руки тоже. Зажмурился на секунду. Потом открыл глаза. Деревня никуда не делась. Тридцать домов, каждый в подробностях, каждая трещина в бревне видна с холма. Дым. Фигурки. Голоса. На Земле смотрел бы в одну серую полосу.
Посмотрел на тропу.
Зачем иду.
Мир умрёт, выбросит обратно. На Землю. Полгода, потом темнота. Скринридер вместо глаз. А тут роса на ботинках и солнце на щеке.
Оглянулся один раз. Старик всё ещё бил молотком по доске, Элен стояла в дверях и смотрела, дети носились по площади. Всё как было.
Повернулся и пошёл с холма по тропе.
Глава 6. Баг-хантер
[Форум / Архив / Тред #7,041,882]
[user: xXDarkSlayerXx] ...нашёл интересную механику.
если заинспектить 3+ объекта в радиусе 10м от моба,
создаётся зона отладки [ДАННЫЕ ПОВРЕЖДЕНЫ]
Дата: ~4000 лет назад
Нира ждала у северной калитки. Не стал спрашивать, как узнала. Старик умел видеть на шаг вперёд.
Никакого «куда собрался», никакого «наконец-то». Просто стояла, чуть отступив от деревянного столба, щурилась против утреннего света. Когда подошёл с мешком на плече, кивнула на дорогу и пошла первой.
Деревня осталась за спиной. Старик у забора, Элен в дверях, дети уже возились во дворах, перекрикивались через плетень. Оглядываться не стал. Не смотри на предыдущую версию, когда несёшь новую на боевой сервер.
Через полкилометра вышли к тракту. Каменная мостовая, когда-то оживлённая дорога между локациями, теперь ветер, тишина и трава, проросшая в стыках между плитами. Некоторые плиты зависали в сантиметре над землёй, и тень под ними лежала неправильно, плоская, без глубины, как тень нарисованного предмета.
Наступил на одну такую. Под ногой спружинило, будто наступил на надутое. Следующая плита отозвалась привычным каменным звуком, надёжным и холодным, и плечи сами расслабились.
Три дня пешком до Перекрёстка. Мысль была тихой и спокойной, без паники. Просто факт.
Нира двигалась впереди метрах в десяти. Ни одного лишнего жеста, ни одного лишнего движения. Лук за спиной, клинок на бедре, волосы убраны под ремешок. Кожа снаряжения тихо поскрипывала, тетива гудела на ветру, едва слышно, как провод под напряжением. Оглядывалась каждые несколько минут, но не назад, а в стороны, на кромку деревьев, на дорогу впереди. Проверяла.
Утренний свет шёл горизонтально, резкий и чистый, с длинными тенями. На ветке у обочины замерло насекомое, сложив крылья. Кора дуба рядом шла глубокими бороздами, и хотелось остановиться, запомнить, впитать.
Хлеб в мешке пах зерном и травами, тёплый ещё, горячий от старикова дома. Горло саднило от ночной сухости, и этот запах бил точно в голод.
На первой развилке оказался указатель.
Деревянный столб, три стрелки. Буквы плыли, перекрывали друг друга, читались с трудом, но направления угадывались. Одна стрелка не стояла на месте. Крутилась вокруг оси, медленно и равномерно, без рывков. Скрипела при каждом обороте: тихо, деревянно, одна и та же точка касалась одного и того же места, снова и снова, без малейшего намерения остановиться.
Вытянул руку и сосредоточился.
/inspect
Данные всплыли на краю зрения, тонкий звон, как уведомление в наушниках на беззвучном.
Объект: Signpost_1204. Статус: ЦИКЛ_АНИМАЦИИ.
Назначение: [ДАННЫЕ ПОВРЕЖДЕНЫ].
Примерная длительность цикла: 347 лет.
Триста сорок семь лет. Указатель скрипнул и ушёл на очередной круг.
Нира, не останавливаясь, бросила через плечо:
- Идёшь.
Не вопрос. Не ждала ответа.
Догнал её на повороте. Она скользнула по мне коротким взглядом и снова смотрела вперёд.
Вдоль тракта вился тихий жёлтый контур: мелкие аномалии, зависшие плиты, черноватое пятно у корней большого дуба. Ничего красного. Ничего срочного. Как лента предупреждений, когда открываешь чужой старый код и понимаешь, что большинство из них не твои и не сейчас.
За деревней, позади, осталась Пустошь, но запах тянулся следом. Слабый озон, сухой, знакомый.
Птица у обочины пела: две ноты, пауза, снова две. С вариациями. Третье повторение вышло тоньше, с другим акцентом. Нира обернулась, плечи не напряглись, и снова смотрела вперёд.
Мешок врезался в лопатки. Поправил лямки, давление перераспределилось чуть лучше.
Ботинки промокли ещё утром, и пальцы ног чувствовали холод при каждом движении, ровный, неуютный, настоящий.
* * *
Под ногами перестал хрустеть сухой суглинок. Почва потемнела, стала мягче, пружинила. Воздух загустел, с привкусом мокрой коры.
Ручей нашёлся раньше, чем услышал его. Нира свернула без предупреждения, продралась сквозь кусты и встала на берегу. Я вышел следом и остановился.
Вода текла. Именно текла. Ровно, без единого завихрения, без бульканья, без перекатов. Звук был один и тот же от начала до конца слышимого участка: монотонный шум, как кран, который не закрыли до конца. Я смотрел на поверхность и ждал хоть одного водоворота. Ни одного.
Нира уже сидела на валуне и рвала хлеб.
Сел чуть выше по берегу. Снял мешок. Мышцы расслабились, плечи опустились сами, давление с лопаток ушло.
Хлеб она протянула молча, просто выставила руку с куском. Я взял. Следом, не глядя, протянула полоску сухого мяса.
Хлеб оказался плотным и чуть прокисшим, мясо жёстким, с привкусом дыма и соли. Я жевал медленно. Она быстро, как заправляла топливо. Глаза у неё не останавливались: вдоль берега, к кустам, к воде. Рука лежала на расстоянии ладони от клинка.
Лес за спиной пах хвоей и сырой корой. Нормально пах. Живо.
Опустил пальцы в ручей. Вода обтекала их ровно, прохладная, без давления на кожу, без единого водоворота. Поднял руку и посмотрел на пальцы. Никакого запаха. Чистая, как дистиллят.
- Десять минут, - сказала Нира, не глядя на меня.
- Понял.
Молчание. Она дожевала мясо. Я ещё нет, челюсть уставала быстрее, чем мясо поддавалось.
Валун под ладонью был тёплым и шершавым. Рука легла на него сама, и, скорее по привычке, чем по делу, я запустил команду.
/inspect
Перед глазами всплыло:
Объект: Rock_medium_042. Целостность: 94%. Текстура: granite_weathered_03.
Зелёный шрифт. Нормальный объект. Плечи опустились. Не заметил, когда успели подняться.
- Что ты делаешь? - Она смотрела на меня теперь прямо. Первый раз с начала пути.
- Читаю камень.
Она ждала.
Я убрал руку.
- Есть слой поверх этого мира. Как надпись поверх листа. Мне видно, что написано. Другим нет.
- Ты разговаривал с воздухом. На тракте. Останавливался, смотрел в пустоту.
- Там не пустота. Там висят метки на объектах. Некоторые объекты сломаны, у них статус жёлтый или красный. Тот указатель на развилке, например. Назначение: данные повреждены. Значит, что-то там не так.
Нира чуть развернулась. Тело уже повёрнуто в мою сторону. Прищур изменился, тот, которым смотрят на местность, а не на человека.
- Кто написал эти надписи?
- Тот, кто строил этот мир.
- Боги.
- Нет. - Я поймал себя на том, что формулирую это впервые вслух, впервые кто-то задаёт следующий вопрос, а не говорит «ты просто выгорел, Кирилл». - Инженеры. Они писали правила, по которым работает мир. Оставили служебные метки. Для себя, не для жителей. Я их вижу. Это просто изнанка.
Она помолчала. Потом сказала ровно:
- Ты сумасшедший или видишь то, что другие не видят. Второе полезнее.
Секунда полного молчания, ни шороха, ни птицы, ни треска ветки. Потом всё вернулось: фоновый шум листвы, монотонный ручей.
Нира опустила кусок хлеба. Не доела. Смотрела туда, где ручей уходил за поворот, как будто там было что-то, чего я не видел.
- Мои люди вошли в один. - Говорила ровно, глядя на воду, не на меня. - Шесть дней назад. Три человека. Мираж висит у Серого урочища, мы знали о нём, обходили. В тот день обойти не вышло. Они вошли. Я была в дозоре, в стороне. Когда вернулась, их не было.
- Ты пыталась войти следом?
- Дважды. Каждый раз оказываюсь снаружи.
Она замолчала. Смотрела на воду.
- Будто выталкивает.
Она не называла их по именам. Говорила «мои люди» и делала паузу.
- Ты думаешь, они живы?
- Петля не убивает сразу.
Потом, уже без резкости:
- В петле можно быть долго. Если это петля, а не что-то хуже.
Живот сжался. Вдох начался и застрял на полпути, прежде чем лёгкие вспомнили, что делать. Трое человек. Шесть дней.
Берёза на том берегу сбросила лист. Он лёг на воду и поплыл прямо, без поворота, без покачивания, как по стеклу.
- Покажи мне мираж, - сказал я. - Я посмотрю, что у него в статусе.
Нира не ответила. Сказала в сторону берега, не мне:
- Пять минут прошло. Поднимайся.
Убрала остаток хлеба, встала, подобрала мешок одним движением.
Я встал. До Серого урочища три дня пешком, и там в петле сидят три человека, которых я ещё ни разу не видел.
* * *
Первые полчаса после привала всё было тихо. Жёлтые контуры мелькали по обочинам, одни и те же мелкие аномалии, зависшие плиты, скрученные ветки с нарушенной физикой, ничего, что требовало бы остановиться. Я двигался за Нирой и смотрел по сторонам: лес становился гуще, кроны смыкались над головой, свет падал сквозь листву пятнами, каждое отдельное, резкое, с чёткой тенью. Сосновая смола пахла горячо, не успевшая растаять роса холодила воздух у самой почвы, стебли папоротника у обочины были ещё влажными.
Потом контур мигнул.
Один раз. Красным. Просто мигнул и снова стал жёлтым. Передумал.
Нира не заметила ничего. Её затылок двигался равномерно впереди, темп не сбился. Я замедлился и повёл взглядом вдоль обочины, но ничего не увидел. Может, помеха. Может, что-то мелкое за деревьями. Прибавил ходу и тут же одёрнул себя: помехи не бывают красными.
Через сто метров мигнуло снова. И ещё раз. И ещё. Красное становилось ярче с каждым разом, как индикатор заряда, который ещё не решил, умирать или нет. В ухе появился едва слышный звон, тихий, настойчивее обычного уведомления.
- Стой, - сказал я.
Нира остановилась без вопросов. Развернулась, быстро осмотрела меня, потом дорогу.
- Что?
- Красный сигнал. Впереди.
Она не знала, что это значит, но правую руку убрала к бедру. Ладонь легла на рукоять клинка, не сжимая, просто легла. Я смотрел вперёд, туда, где тракт поворачивал и терялся между стволами.
Запах пришёл раньше, чем что-либо ещё. Резкий, сухой: озон после того, как что-то перегрелось. Горло отреагировало само, захотелось сглотнуть и отвернуться.
Нира поморщилась рядом со мной.
- Смердит багом.
Контур полыхнул и больше не гас: сплошная красная рамка, мигающая, как аварийная лампа. Звон в ухе стал чуть громче и ровнее.
Дорога вывела нас на поляну.
Лес обрывался резко, без предупреждения. Деревья стояли по периметру обычные, живые, с мхом на корнях и нормальными тенями. А внутри круга трава пропадала. Просто пропадала. Идеальная окружность метров двадцати в диаметре, где почва была серой, плотной и совершенно гладкой, как застывший бетон без единого шва. Ни травинки, ни корней, ни камешка. И ещё одно: запах исчез. Только что была смола и роса, и тут резко ничего. Пустой, стерильный воздух, как в запаянном пакете.
Посередине серого круга было оно.
Бывший лесной волк. Размером с небольшую лошадь. Шесть лап, четыре спереди, ещё две лишние сзади, вывернутые и сгибавшиеся в противоположную сторону при каждом рывке. Голов было две. Одна там, где полагается, вперёд, морда, уши, оскал. Вторая росла из загривка и смотрела назад, под невозможным для любой анатомии углом. Обе пасти были открыты.
Шерсть мерцала.
Другого слова не нашлось. Мех появлялся, нормальный, серовато-бурый, живой, потом пропадал, и на долю секунды там было просто чёрное ничто, абсолютное, без глубины, без тени, без отражения. Потом мех возвращался. Мех, пустота, мех, пустота, несколько раз в секунду. Модель, которая не успевала определиться, чем хочет быть.
Нира тихо сдвинулась на полшага правее, к стволу ближайшей сосны. Инстинкт, позиция. Все четыре глаза твари смотрели внутрь поляны, в точку старта прыжка.
И оно двигалось.
Рывком вперёд, прыжок, все шесть лап отрываются, тело в воздухе, когти оставляют мерцающие полосы, которые держатся мгновение и исчезают. Приземление. Удар лап о серую почву. И сразу, без паузы, без перехода, щелчок, тело откатывалось обратно, как будто видео перемотали назад. Снова стартовая позиция. И снова прыжок.
Прыжок, откат, прыжок, откат. Раз за разом.
Из открытой пасти шёл звук. Рык, начинавшийся от диафрагмы, нарастающий, настоящий, живой, страшный. Обрывался ровно посередине, на том самом месте, где должен был вырасти в рёв. Тишина. Пауза. И снова от начала. Вторая голова делала то же самое на долю позже, со сдвигом, и получался дуэт, одна рычащая пластинка с двумя иголками. Звук не прекращался и не нарастал. Просто не прекращался.
В пальцах появилась холодная влага. Ладони вспотели. Заметил это только когда поднёс руку к лицу.
Сначала мозг видел цифры. Только цифры: длительность повторения 2.3 секунды, рывок, откат, рык, обрыв, рывок, откат. Ритм был идеальным, без отклонений, без той небольшой неровности, которая бывает у живого движения. Зависший процесс, намертво застрявший в одной итерации.
Страх пришёл с задержкой. Горло сжалось. Ноги ощутили почву. Кожа на руках покрылась мурашками. Статическое электричество нарастало по мере того, как мы стояли: волосы на предплечьях вставали дыбом медленно и неотвратимо. Как стоять рядом с большим старым кинескопом, только этот кинескоп мог снести тебя шестью лапами.
Я вытянул руку.
/inspect
Данные появились в воздухе, красным, не зелёным. Звон был другим, острее.
Объект: Wolf_forest_014. Статус: ПОВРЕЖДЁН.
ОЗ: -2147483648. Уровень: [ОШИБКА].
Анимация: ЦИКЛ_АТАКИ (длительность: 2.3с).
NULL-переход на отметке: 1.7с.
Минус два миллиарда сто сорок семь миллионов. Знакомое число. Минимальное значение для тридцати двух бит. Кто-то когда-то не поставил проверку на переполнение счётчика, и вот он здесь, бессмертный по ошибке.
NULL-переход на 1.7 секунды. Полсекунды, когда можно подобраться вплотную и прервать повторение изнутри.
Выдохнул медленно. Убрал руку в карман куртки, сжал ткань, подержал. Мимо нас, в метре от границы поляны, пролетел жук, деловитый и громкий, и скрылся в кустах. Тварь не обернулась.
Нира чуть повернула голову в мою сторону, не отрывая внимания от поляны.
- Есть план?
* * *
- Есть, - сказал я.
Нира ждала.
- Ты отвлекаешь, уводишь в сторону. Создаёшь мне окно. Я захожу вплотную и в момент перехода запускаю /inspect. Нужно ровно 1.7 секунды от начала. Сразу после прыжка, в точке, где анимация зависает перед откатом.
- Полторы секунды.
- Шесть десятых. Это окно между переходом и откатом.
- И что будет, если промахнёшься?
Этот вопрос я себе уже задавал. Ответ мне не нравился.
- Ритм сбросится в случайную позицию. Тварь выйдет из петли.
Нира медленно кивнула, всё ещё считая что-то своё.
- Ты видишь, я бью. Не путай порядок.
Она сняла лук с плеча прежде, чем я успел ответить. Прошла к границе поляны, встала за стволом сосны, откинула волосы с лица коротким движением. Как будто договорились неделю назад.
Я зашёл слева, по дуге, держась вне поля зрения обеих голов. Серая почва начиналась в двух шагах от моих ног. Статическое электричество нарастало с каждым метром: волосы на руках встали, щёки покалывало, кожа стягивалась. Озон плотнел, горький и сухой. Сглотнул, но сухость во рту это не убрало.
Нира свистнула.
Короткий, чёткий звук. Тварь дёрнулась. Вывернутая голова на загривке завертелась первой, ориентируясь, потом передняя тоже развернулась, и все четыре глаза нашли Ниру у сосны. Прыжок пошёл за ней, за живой целью. Нира уже бежала вдоль границы поляны, легко, без паники, держа расстояние.
Я смотрел, как Wolf_014 несётся следом вдоль серого круга. И не выходит за него. Ни на сантиметр. Область держала его, как переменная с жёстко прописанным диапазоном.
Окно было.
Я ступил на серую почву. Под ногой ничего. Никакого звука, никакого ощущения под подошвой, просто твёрдая плоскость без температуры и без свойств. Второй шаг, третий. Тварь в двадцати метрах, занятая Нирой. Считал вслух, шёпотом, только чтобы держать ритм:
- Раз. Два. Три.
Видел, как волк заканчивает прыжок. Приземляется. Замирает на долю мгновения перед откатом.
Вытянул руку, потянулся к фантомной консоли.
/inspect
> /inspect [ОШИБКА: рассинхронизация цикла цели]
Острый звон ошибки. Красный текст мигнул и погас.
Тварь не откатилась.
Обе головы повернулись ко мне разом. Успел только подумать: двойной прыжок, нестабильный, надо было ждать. И шесть лап оторвались от серой почвы одновременно.
Тело отреагировало раньше мозга. Отшатнулся вбок, споткнулся о собственную ногу, ветер от когтей прошёл по щеке, физически, ощутимо, с давлением и теплом. Когти прошли в сантиметре от лица и оставили в воздухе мерцающие полосы, ещё державшиеся, пока я падал.
Что-то сжало шиворот.
Рывок назад, жёсткий, без предупреждения, ткань врезалась в горло. Ноги оторвались от поверхности. Нира тащила меня одной рукой, коротким и сильным движением, без лишних затей. Мы вывалились за границу поляны, я коленями в траву, она уже стояла рядом, лук в руке, смотрела на тварь.
Wolf_014 остановился у границы серого пятна. Топтался, переступал с лапы на лапу. Дальше не пошёл.
- Глазастый, ты дебил.
Без злости. Просто сообщила факт.
Грудь ходила ходуном. Горло горело от ткани. Сел на траву и смотрел на свои руки. Пальцы дрожали мелко, неконтролируемо, ладони влажные. Ни одной мысли. Вообще ни одной. Просто дышал и ждал, пока тело вернётся.
Тварь прекратила хаотичное движение и снова входила в прежний ритм: прыжок, откат, прыжок, откат. Рык начинался и обрывался. Ритм восстановился.
- Мне нужно сбить ему петлю изнутри. Если ты попадёшь в вывернутую голову, когда он в воздухе, анимация рассинхронизируется. Зависнет на долю мгновения. Я войду в этот зазор.
Нира посмотрела на вывернутую голову. Та смотрела назад, как крышка, насаженная неправильно.
- Попаду.
Перехватила лук. Нашла стрелу. Я встал.
Ноги держали хуже, чем должны были. Сжал кисти в кулак, подержал и разжал. Лучше. Не идеально.
- Когда ты бьёшь, я считаю заново. Не выхожу на серое, пока ритм не устаканится. Даёшь мне одну отмашку после того, как он дёрнется.
- Одну.
Волк завис в верхней точке прыжка. Стрела ушла.
Звук был коротким и влажным, удар вошёл глубоко, в самую середину вывернутой морды. Тварь рванулась: все шесть лап захлестали одновременно, тело в воздухе перекрутило, обе головы заорали, не рык, а что-то ломаное, сбитое с ритма. Привычное повторение рассыпалось.
Я ступил на серую почву.
Статическое электричество ударило резче, чем в первый раз, мурашки от запястий до плеч. Озон в нос, горький, плотный. Считал: один, два, три. Wolf_014 ещё дёргался, но хаотично, лапы шли в разных направлениях, стрела торчала из вывернутой головы. Ритм нарастал в хаосе - движения становились ровнее, система тянула тварь обратно к петле. Полсекунды, может одна.
Вытянул руку. Привычное движение к фантомным клавишам, как в три ночи, когда знаешь, что делать, потому что всё остальное уже не важно.
/inspect
Тонкий звон. Зелёный.
> /inspect Wolf_forest_014 - ЦИКЛ ПРЕРВАН - ОБЪЕКТ СБРОШЕН ДО NULL - УДАЛЁН
Тварь замерла.
Одно мгновение полной неподвижности, все шесть лап на серой почве, обе головы опущены, шерсть застыла между мехом и пустотой. Потом начала рассыпаться. Геометрия разваливалась на треугольники, каждый полигон отделялся и на долю мгновения висел в воздухе отдельным осколком. Полигоны таяли, не долетая до поверхности. Рёв оборвался на полуслове и больше не начинался.
На сером пятне лежал маленький кристалл, с фалангу пальца, восьмигранный, цвета старого льда. Тёплый, гладкий, почти невесомый в ладони.
Волна озона ушла разом, как будто открыли форточку. Вернулся лесной воздух. Смола, хвоя, влага, живой запах. Птица в кронах подала голос, с паузой, как будто тоже ждала.
На краю зрения тихо мигнуло:
+15 ОО. Аномалия нейтрализована. Прогресс навыка: Работа с консолью 12%.
Звон был тихим, как уведомление о доставке.
Вышел с серого пятна в траву. Ноги держали. Руки дрожали не меньше, просто теперь тряслись обе.
Нира стояла у сосны и смотрела на место, где был Wolf_014. Молчала. Потом посмотрела на меня, на мои руки, молча сунула флягу.
Металл был холодным. Взял двумя руками, потому что одной было ненадёжно. Вода отдавала железом, зубы ломило от холода. Пил жадно, по подбородку потекло, не вытер. Вернул флягу.
Нира убрала её и снова посмотрела на серое пятно.
Кристалл в кармане. Тишина. Лес живой, птицы, ветер.
- Мы только что пропатчили волка.
Нира не ответила. Сам ещё не понял, смешно это или нет.
* * *
Руины придорожной станции нашлись за поворотом тракта, через полчаса ходьбы. Фундамент, три стены из четырёх. Четвёртая обрушилась, обломки лежали россыпью, поросшие мхом, уже вросшие в грунт, как будто всегда здесь и лежали. Пахло сырой кладкой и прелой листвой, запах старых помещений без крыши, когда внутри давно уже снаружи. Стропила торчали под разными углами, и сквозь их частокол небо было виднее, чем за стенами. Звёзды сыпались сквозь дыры.
Нира обошла руины по периметру, вернулась, кивнула.
- Годится.
Костёр она разожгла быстро, несколько движений, кремень, сухая хвоя, потом ветки, и через пять минут огонь уже гудел ровно, без дыма на лицо. Дым поднимался вертикально. Прямой столб, без единого отклонения, уходил в разломанный потолок и дальше в небо. Смотрел на него раз, другой. Деревья не шевелились. Листья не двигались. Ветра не было совсем.
Прислонился спиной к единственной стоящей стене, лицом к огню. Тепло шло сразу, на лоб, на щёки, на руки. Спина упёрлась в холодную влажную кладку, и контраст был резким: передняя половина тела оттаивала, задняя медленно отдавала последнее тепло стене.
На уровне плеча оказались буквы.
Вырезанные, глубокие, широкие. Поднёс пальцы, провёл по краю. Каждая черта намеренная, кто-то работал терпеливо, выбирая камень по линиям. GG EZ. Два слова, четыре буквы, рука знала, что делала.
Кто-то был здесь до меня. Сидел у этой же стены, смотрел на эти же обломки, и первое, что захотел оставить после себя, было это.
Сложно сказать, выжил ли он. Скорее всего, нет. Но это написал.
Нира устроилась по другую сторону огня, ближе к проёму без стены, чтобы видеть темноту снаружи. Достала точильный брусок. Ширк-ширк, ширк-ширк, ритмичный звук металла по абразиву, ровный, как метроном. Иногда поднимала наконечник стрелы, смотрела в свете огня, снова точила. Лицо у неё было в тёплых тонах, оранжевое и живое, тени на скулах резкие. Глаза смотрели в темноту.
Открыл форум.
Полупрозрачные окна развернулись в воздухе поверх руин, поверх Ниры, поверх стены с буквами. Текст шёл с помехами, буквы иногда двоились, изображения не грузились, серые прямоугольники с иконкой сломанной ссылки. Тихое гудение при загрузке каждой страницы, как холодильник за стеной. Знакомый звук.
В пустых оконных проёмах стены что-то гудело. Снаружи было мертво тихо, звук шёл изнутри проёмов, как будто кладка сама по себе держала какую-то частоту. Мелкая аномалия, контур отметил жёлтым. Убрал внимание.
Ники, аватарки, даты постов. Тысяча лет назад. Одиннадцать тысяч лет назад. Двести семьдесят три года назад. Тон узнал сразу, раньше, чем прочитал слова. Сарказм, жаргон, «ребят, кто-нибудь ещё сталкивался», «апд: нашёл причину, это не моя вина».
Нира перестала точить. Несколько мгновений просто сидела, потом:
- Ты опять разговариваешь с воздухом.
Не оторвал глаз от страницы. Рука её уже снова держала брусок, но не двигалась.
- Читаю.
- Что читаешь?
Стрела в руке Ниры опустилась на колено. Она молчала, ждала. Огонь треснул, выбросил мелкую искру.
- Форум.
- Что такое форум?
Оторвался от текста. Через огонь: резкие тени, прямой взгляд, стрела в двух пальцах, почти не сжата. Спрашивает, но не торопит. Это разные вещи.
- Место, где мёртвые делятся советами с живыми.
Нира помолчала. Потом кивнула, медленно, будто слово оказалось тяжелее, чем выглядело.
- У нас это называется храм.
Вернул внимание на страницы. Нира снова взялась за брусок. Ширк-ширк.
Тред нашёлся на третьей странице поиска, в архиве, помеченный как удалённый, но данные были на месте, просто со статусом ПОМЕЧЕН_НА_УДАЛЕНИЕ. Система не успела добить. Ник пользователя: xXDarkSlayerXx. Дата: четыре тысячи лет назад, с небольшим.
Текст шёл кусками. Некоторые строки отображались нормально, некоторые частично, некоторые заменял серый блок с пометкой [ДАННЫЕ ПОВРЕЖДЕНЫ].
[user: xXDarkSlayerXx]
...нашёл интересную механику. если заинспектить
3+ объекта в радиусе 10м от моба, создаётся
зона отладки
[ДАННЫЕ ПОВРЕЖДЕНЫ]
...моб замедляет цикл до
[ДАННЫЕ ПОВРЕЖДЕНЫ]
...проверял на трёх разных локациях, работает
стабильно, но не работает на боссах и
[ДАННЫЕ ПОВРЕЖДЕНЫ]
...так что окно расширяется, хватит времени
для финального инспекта без риска.
Сидел и перечитывал это несколько раз. Потом открыл заметки и начал выписывать.
Три объекта в радиусе создают зону отладки. Зона замедляет повторение. Замедленное повторение растягивает NULL-переход, а растянутый переход даёт окно для финального /inspect. Сегодня у Wolf_014 было шесть десятых мгновения. Если этот способ работает как написано, будет больше. Может, в два раза. Может, в три.
Это была документация четырёхтысячелетней давности с повреждёнными данными и ником xXDarkSlayerXx. Логика держалась, а это главное. Повреждённые строки мог восстановить сам, от первого принципа.
Нира закончила с одной стрелой, взялась за следующую. Ширк-ширк.
В углу зрения мигнуло:
Превышено время ожидания соединения.
Форум подвис, окна замерли, потом обновились. Четвёртый раз за вечер.
Сохранил заметки, закрыл окна. Завтра надо будет найти три объекта рядом с тварью прежде, чем подходить вплотную. Посмотреть, держится ли логика.
Полупрозрачные слои исчезли, и руины снова стали просто руинами: кладка, звёзды в дырах крыши, огонь, Нира с её бесконечными стрелами.
Правое плечо ныло тупо и устало, ноги гудели, спина притёрлась к холодной стене. Лечь было негде нормально, только на фундамент, и он уже чувствовался сквозь то, что подстелил. Ничего. Всё равно.
Небо над дырами в крыше было ясным, звёзд было много, если смотреть прямо. Рисунок повторялся, если знать куда смотреть: один и тот же фрагмент через равные промежутки. Не заметишь, пока не начнёшь считать.
Глава 7. Стаб
[Форум / Архив / Тред #11,047,219]
[user: TorvaldsBane]: нашёл способ пройти квестовые гейты
без оригинальных предметов. берём любой iron-type предмет,
расширенный inspect, поле server_timestamp, шаблон из вики.
Система принимает. Не задаёт вопросов.
Ответов: 0.
Город умирал долго и неравномерно. На подходе это чувствовалось раньше, чем становилось видно. Запах менялся, живая пыль дороги уступала место сухой известняковой крошке, мелкой, оседавшей в носу. Потом деревья расступились, и он открылся сразу, весь, без предупреждения.
Второй день пути. Ноги уже знали этот ритм, плечи привыкли к мешку, и это «знали» тоже было своего рода новостью. Тело запоминало вещи без участия головы.
Кирилл остановился.
Руины не были руинами в привычном смысле. Кое-где стены стояли, кое-где лежали, но больше всего было чёрных кубов. Геометрические параллелепипеды без окон, без щелей, просто твёрдая чёрная геометрия на месте бывших домов. Мостовая под ногами выглядела сохраннее. Плиты в основном оставались на месте, только некоторые зависли на палец над землёй, и тени у них шли неправильно. Где-то в глубине пустых проёмов ветер тёрся о камень, низко, почти на пороге слышимости, иногда задевал что-то острое и цеплялся коротким скрипом. Над площадью стоял запах каменной крошки и чего-то горького, сухого, запах старых строений без жильцов.
- Большой был. - Нира стояла ровно, взгляд держала на нём. Ждала, что будет делать.
- Был.
Жёлтые контуры тянулись через всё поле зрения. Кубы светились ровным янтарным, зависшие плиты мигали, фонарный столб у обочины ушёл в красный и медленно гнулся, хотя ветра не чувствовалось. Оверлей кричал деградацией. Привычное дело. За последние дни янтарные контуры стали фоном, глаза скользили по ним, не задерживаясь.
Нира пошла первой, как всегда. Кирилл двинулся следом, и через несколько шагов она встала.
Остановилась резко, без слов. Вытянула ладони вперёд.
Руки уткнулись в пустоту на высоте груди.
Нира упёрлась. Навалилась всем весом, широко расставив ноги, мышцы на предплечьях напряглись, ботинки заскользили по мостовой. Преграда не пускала. Кирилл остановился за её спиной и смотрел на пантомиму. Ладони в воздухе, полная решимость на лице, никакого препятствия перед ней.
- Здесь стена. - Нира не обернулась. - Вы не видите стену?
Он видел.
- Заклятье Ушедших, - сказала она ровно, про себя, будто называла знакомое явление его правильным именем.
Полупрозрачная панель висела в воздухе от земли до неба, едва заметный шимм, как нагретый воздух над асфальтом. По её поверхности шёл медленный электрический зуд, слышимый только ему, тихое высокочастотное напряжение, сидевшее где-то между правым ухом и зубами. В центре поля мерцал текст.
КВЕСТ: Просьба кузнеца
Задание: Доставить 10 Железных Слитков [ОРИГИНАЛ] кузнецу Торвальду
Статус: АКТИВЕН. Ограничение по времени: ОТСУТСТВУЕТ.
Примечание: Предметы квеста должны содержать действующую серверную метку.
Иконки лежали под текстом. Десять одинаковых слитков, каждый с маленьким золотым значком подлинности, скромным и абсурдным одновременно.
Нира обернулась. Кирилл провёл рукой вдоль ряда иконок, она проследила взглядом за его движением.
- Железо кузнецу Торвальду. Тогда пустит.
Нира убрала руки с невидимой поверхности. Выражение лица не изменилось, только посмотрела в сторону города за панелью. Кирилл тоже посмотрел туда, и что-то сдвинулось за грудиной, тупо, как при смене давления.
За панелью всё было другим.
Зелень была зелёной. По-настоящему, с оттенками, со световыми бликами, с молодыми и старыми листьями, которые выглядели по-разному, и каждый именно так, как ему полагалось. Крыши домов стояли целыми, и камень в кладке не чернел, не распадался на кубы, а лежал именно камнем. Небо за преградой было глубоким, со слоями облаков, с тенями от них на земле. Птицы. Три птицы пересекали небо над площадью, и даже сквозь мембрану, сквозь её электрический шимм, Кирилл слышал что-то, обещание звука, как слышишь музыку из закрытого окна.
Запах пришёл слабый, если прижаться вплотную к панели. Зелень, цветы, вода. Живой запах, который этот мир разучился делать.
Снаружи пахло каменной крошкой.
- Торвальд мёртв. - Нира смотрела сквозь мембрану. - Был мёртв, когда я была маленькой. Деды говорили, что мёртв с тех пор, как мир был молодым.
Кирилл смотрел на строку в тексте квеста. Оригинальную. Железо с серверной меткой из базы данных, которой одиннадцать тысяч лет. Тикет, который никто не закрыл.
Вытянул руку, коснулся панели. Фантомная прохлада на кончиках пальцев, без влажности, без тепла встречного объекта, будто касаешься поверхности, которая не знает, что ты здесь. Сосредоточился.
/inspect
Объект: Quest_Gate_0087
Тип: INSTANCE_BARRIER
Условие доступа: выполнение квеста ИЛИ [УРОВЕНЬ ДОСТУПА: GM]
Статус квеста: АКТИВЕН (11 347 лет)
Назначенный исполнитель: Player_unknown
Кирилл убрал руку и снова посмотрел на город за мембраной.
За спиной скрипнул камень под ногой Ниры. Она ждала молча, без нажима, привычным ожиданием человека, умеющего ждать столько, сколько нужно.
Весь этот мир когда-то был вот таким. Зелёные листья с оттенками, небо с глубиной, птицы. Кирилл посмотрел на город за мембраной и отвёл взгляд.
Нира потёрла ладони.
- Торвальд мёртв, а слитки нужны оригинальные. - Помолчала. Проверяла, правильно ли поняла.
- Угу.
- И это, по-твоему, можно решить.
Можно. Если форум не подведёт. Если кто-то одиннадцать тысяч лет назад оставил тред с нужным хаком и сервер данных не съел его вместе с остальными семьюдесятью процентами архива. Пальцы сами нашли консоль.
- Нужно порыться в архиве. - Кирилл присел на ближайшую плиту у мембраны. - Дай мне час.
Нира отошла на шаг, скрестила руки. Из-за преграды донёсся приглушённый звук. Или только показалось. Что-то похожее на птицу. Одна нота, потом ещё. Живые, с вариацией.
Кирилл скрестил ноги, закрыл глаза на секунду. Острый запах озона от панели. Открыл консоль и полез в форум.
* * *
Форум грузился медленно. Большую часть архива давно съела деградация, и сервер каждый раз честно нащупывал, что от него осталось. Строки появлялись с задержкой, некоторые распадались на символьный мусор прямо при загрузке. Кирилл привык не ждать быстрого ответа.
Поисковый запрос вернул сто восемь результатов. Девяносто два помечены как «[ДАННЫЕ ПОВРЕЖДЕНЫ]». Из оставшихся шестнадцати восемь содержали «железный слиток» в бытовом смысле, в контексте кузнечных квестов без механики подмены. Три были просто жалобами, что Торвальд не отвечает. Два предположениями, что Торвальд «сломан» и нужно писать в поддержку.
Поддержки не существовало одиннадцать тысяч лет.
Тред нашёлся на третьей странице результатов. Скромный, без ответов. Автор [TorvaldsBane]. Дата создания стёрта, только метка приоритета - «эксплойт / используйте на свой страх».
[TorvaldsBane]: нашёл способ пройти квестовые гейты без оригинальных предметов.
берём любой iron-type предмет, открываем расширенный inspect, находим поле
server_timestamp, вписываем шаблон из базы оригинальных предметов (раздел
"База данных оригинальных предметов"). Формат ID: [ЭПОХА].[ЗОНА].[ПАРТИЯ].
Для железного слитка из зоны Торвальда: 00001.[TR].[001–999].
Система принимает. Не задаёт вопросов.
Ответов: 0.
Кирилл перечитал дважды. Нира в это время описывала круг позади, хруст щебня шёл равномерно, как шаги метронома.
Взял нож из-за пояса. Обычный, из деревни, купленный за медь, с деревянной рукояткой, отполированной чужими ладонями. Лезвие с небольшой ржавчиной у основания, запах металла и чего-то жирного, чем кто-то его смазывал. Сосредоточился.
/inspect --extended
Объект: Нож_железный_обычный
Тип: ОРУЖИЕ_БЛИЖНЕГО_БОЯ
Качество: ОБЫЧНОЕ
server_timestamp: NULL
Предупреждение: поле server_timestamp не содержит действующей метки.
Поле пустое. Значит, нужно просто записать туда значение.
Нашёл в базе шаблон, скопировал первый ID в очереди. Двадцать знаков, цифры и буквы, разделённые точками, с зональным префиксом TR. Начал вводить, бормоча под нос, чтобы не сбиться на середине строки.
Нира прошла мимо. Остановилась. Кирилл пальцами работал в воздухе, вписывая символы в поле, которого она не видела, и со стороны это, вероятно, выглядело как что-то между медитацией и тихим помешательством.
- Ты просто сидишь и бормочешь. - Она не спрашивала. Констатировала.
Кирилл не поднял взгляда от невидимых строк.
- Я работаю.
Нира посмотрела на него ещё секунду, потом вернулась к своим кругам.
Последний символ. Подтверждение.
Нож мигнул.
Секунда - и он перестал быть ножом. Чёрный куб без текстур, острые рёбра геометрии, пустота. Кирилл ощутил его в руке как что-то, что не хочет быть потроганным, скользит мимо ладони. Потом куб расплылся, форма переписалась, и в руке оказался слиток. Тяжелее ножа. Плотнее. По поверхности тянулась светящаяся строчка кода, видимая только через оверлей - серверная печать.
Объект обновлён. Предупреждение: изменённый объект может вести себя непредвиденно.
Нира, которая смотрела на его руки, чуть подалась назад.
- Ты только что превратил нож в кирпич.
Кирилл взвесил слиток на ладони. Тяжёлый, плотный, гладкий, как будто только с литейной.
- В слиток.
- В металлический кусок, которым нельзя резать. - Нира сложила руки на груди. - В кирпич.
- В бесполезный кирпич, который откроет нам дверь, - сказал он и снова потянулся к мешку за следующим ножом.
Нира не ответила сразу. Шагнула чуть ближе, взяла слиток из его руки, проверила на вес, перевернула. Подержала и отдала обратно.
- Он настоящий?
- Система считает, что настоящий. - Кирилл уже держал второй нож, пальцы нашли поле в воздухе.
- А ты?
Покрутил слиток, прежде чем отложить. Тяжёлый. С меткой. [TorvaldsBane] написал в пустоту, и пустота приняла, ни одного уточняющего вопроса.
- Металл, - сказал он. - Система не возражает.
Нира промолчала. Посмотрела в сторону, куда-то за мембрану, где за мутным шиммером угадывалась зелень.
Открыл расширенный инспект, нашёл поле, вписал следующий ID из списка. Руки делали то, что умели. Один за другим, монотонно и без вдохновения, строчку за строчкой.
Нира ходила кругами. Потом перестала и просто стояла, руки на поясе, взгляд на горизонте.
- Долго ещё? - Голос ровный, без нажима. Просто информация.
- Шесть осталось.
Молчание. Хруст щебня.
Третий слиток. Четвёртый. Мерцание, чёрный куб на секунду, звук тихого разряда и кристаллизации, запах озона волной.
Пятый не прошёл.
Нож принял ID, мигнул, провалился в куб, и куб лопнул. Нож вернулся в руку горячим, рукоятка обжигала пальцы, а в консоли повисло:
Ошибка: server_timestamp отклонён. Конфликт ID: метка уже присвоена существующему объекту.
Кирилл выругался сквозь зубы. Нира обернулась.
- Что?
- Номер занят. - Он уже листал диапазон. 001 до 999, а брал подряд с начала. Где-то в мире ещё существовал слиток с этим ID, в сундуке, в земле, в чьём-то мёртвом инвентаре, одиннадцать тысяч лет, и не деградировал. Перескочил через два десятка номеров, вписал новый.
Нож мигнул. Куб. Слиток.
Руки подрагивали. Шестой, седьмой, восьмой, и каждый раз пальцы замирали над подтверждением на долю секунды дольше. Девять. Десять.
Десять штук лежали в ряд на мостовой. Кирилл размял пальцы.
Нира подошла, посмотрела на ряд сверху вниз, долго и без слов.
- Это всё ножи, которые у тебя были?
- Все десять, до последнего.
Кирилл поднялся, поморщился от того, как заколотило затёкшую ногу.
Кирилл собрал слитки в мешок. Панель висела перед ним молчаливая и электрическая, из-за неё шли приглушённые звуки. Вода, птица, листва. Он шагнул к ней, занёс руку, чтобы предъявить предметы квеста.
И остановился.
Квестовый экран был пуст.
Не «задание выполнено», не «предъявите предметы». Просто пусто. Белый прямоугольник там, где только что висело задание. Строки про Торвальда, про десять слитков, про серверную метку исчезли, как будто их никогда не было. Преграда стояла. Слитки лежали в мешке и исправно мерцали своими поддельными печатями.
Кирилл опустил руку. Посмотрел на панель. Поднял снова. Обновить. Проверить соединение. Убедиться, что это глюк клиента, а не что-то, что он натворил. Экран оставался пустым.
UI-оболочка деградировала. Скрипт работал напрямую.
- Что? - спросила Нира.
Он не ответил сразу. За преградой птица дала ещё одну ноту. Чистую, без эха.
За мембраной что-то двинулось.
Не птица. Не ветер. У наковальни, в правом конце того, что когда-то было кузней, оформился контур. Прозрачный, как марля. Фигура склонилась над наковальней и подняла голову.
Нира отступила на шаг. Рука ушла на рукоять.
- Что? - снова спросила Нира, чуть тише.
- Подожди.
Кирилл шагнул вплотную к мембране. Фантомная прохлада коснулась лба. Контур у наковальни повернулся, анимация плавная, без рывков. Рот открылся, слов не было, но жест был понятен без слов. Вытянутая рука. Ладонью вверх.
Достал первый слиток. Приложил к поверхности.
Мембрана приняла его без щели, без звука. Слиток прошёл сквозь, как брошенная монета проходит сквозь воду, и возник по ту сторону, в прозрачной руке. Торвальд взял его движением мышечной памяти. Мышечная память скрипта. Кирилл протянул второй, третий. Шаги Ниры отдавались в мостовой за его спиной.
Десять слитков ушли по одному. Последний лёг в прозрачную ладонь, и контур выпрямился. Кивнул один раз. Потом сделался тоньше, тоньше и кончился, как кончается эхо в пустой комнате.
Мембрана мигнула.
Один раз. Потом ещё один. Потом электрический зуд, сидевший между правым ухом и зубами всё это время, стих разом. Панель в воздухе побелела изнутри, истончилась и пропала. Без следа, без звука.
Впереди был город.
* * *
Кирилл переступил туда, где только что была стена.
Граница прошла по телу, как переход в другую комнату. Воздух изменился немедленно. Мягче, теплее, влажнее, и дышать стало свободнее, как если забыл, что так бывает. Запах пришёл следом. Зелень, цветы, нагретый песчаник, вода откуда-то впереди. Живые запахи. Кирилл остановился, набрал воздух, выдохнул медленно.
Нира встала рядом и не говорила ничего.
Улица уходила вперёд между домами с целыми крышами. Камень в кладке лежал именно камнем, тёплого серого с желтоватым, без трещин, без мерцания, без чёрных кубов на месте утраченных текстур. Ставни у окон держались на петлях, в горшках на подоконниках цвело что-то мелкое, белое. Мостовая под ногами шла плитой к плите, ровно, без зависаний, без неправильных теней.
Дебаг-оверлей молчал.
Ни одного жёлтого контура. Ни одной красной метки. Зелёный статус тянулся от объекта к объекту, спокойный, без тревоги. За последние дни Кирилл привык к тому, что зелёный статус бывает только у неважного, у камня на обочине, у забора. Здесь зелёным светился каждый объект подряд, и глаза сами искали ошибки, и раз за разом не находили, и каждый раз тормозили на долю секунды от этого отсутствия.
Площадь открылась в конце улицы.
В центре стоял фонтан. Вода шла настоящая, с турбулентностью, с брызгами, и в мелкой взвеси капель над чашей висела радуга, маленькая, чёткая, с переходами, никуда не торопившаяся. Кирилл подошёл, присел, провёл рукой через струю. Прохладная. Капли осели на лице, и ощущение было конкретным, с температурой, с весом. Мелкие брызги попали на губы, и вода оказалась чуть сладковатой, с минеральным привкусом, как родниковая, и Кирилл замер с мокрой рукой, потому что последний раз пил воду с таким вкусом на Земле, из кулера в офисе, и это воспоминание ударило так неожиданно, что перехватило дыхание.
/inspect
Объект: Фонтан_площадь_главная
Статус: АКТИВЕН
Генерация воды: В НОРМЕ
Физика частиц: ВКЛЮЧЕНА
Последнее обслуживание: [ОРИГИНАЛ]
Последнее обслуживание: оригинал. Никогда не ломался. Не нуждался в починке.
Птицы перекликались в ветвях, с паузами, с ответами, с вариациями от повтора к повтору. Ни одной зацикленной петли.
Город был красив. Город был мёртв.
Нира стояла посреди площади.
Голова запрокинута, взгляд в небо. Небо в стабе было правильным. Глубокое, с облаками на нескольких высотах, с синью, уходящей в синь, с солнцем на нужном месте. Снаружи небо было плоской текстурой с трещинами, привычной, как крашеный потолок. Здесь была бесконечность. Нира стояла и смотрела в неё, и не двигалась.
Кирилл не окликнул её.
Прошёл мимо, к лавке у восточного края площади. Дверь не заперта. Оружие на стойках. Мечи, луки, броня, всё с характеристиками, всё мерцало статами ровно и без сбоев. Лут, за который снаружи заплатили бы состоянием или жизнью, здесь просто лежал и ждал покупателя, которого не будет. Кирилл взял один меч, опустил обратно. Тяжёлый, холодный, ненужный. Вышел.
Нира трогала стену ближнего дома. Ладонью, плоско, как проверяют температуру у ребёнка.
- Тёплая.
Не ему. Просто вслух.
Лепестки лежали на мостовой, не убранные, не сгнившие, просто лежали там, куда упали. Всё работает, всё исправно, и некому.
В дальнем углу площади стояла библиотека. Дверь была приоткрыта, и из щели падала полоска тёплого света.
* * *
В библиотеке пахло архивом. Сухим, чистым, законсервированным, пергамент и что-то вроде клея, без затхлости, без плесени. Шаги давали эхо по каменному полу, немного торжественное, немного неловкое, как в музее, куда зашли через служебный вход.
Полки тянулись от пола до потолка, тёмное дерево с пазами под тома, каждый стоял плотно на месте. При приближении обложки начинали слабо мерцать. Кирилл потянулся к ближней, коснулся корешка, что-то вибрировало внутри, ощутимое, как телефон на беззвучном.
Нира шла за ним молча, касалась полок кончиками пальцев, не беря ничего. Просто трогала.
Терминал нашёлся у дальней стены.
Светящийся прямоугольник, вделанный в камень. При касании тёплый, гладкий. Пальцы нашли интерфейс, поверхность отозвалась с задержкой в полсекунды. От него слабо пахло озоном и теплом работающей машины, узнаваемым до боли.
Нира встала за левым плечом.
- Каменная табличка, которая светится.
Кирилл уже работал.
- База данных.
Вики открылась без задержки. Полная структура, чёткий текст, ни одной строки с мусором вместо символов. После недель форума, который честно нащупывал, что от него осталось, разница ощущалась физически, как выйти из полуподвала на воздух. Что-то в груди расслабилось, чего Кирилл не замечал, пока оно не отпустило.
Карта стабов открылась в разделе о регионах.
Стабильные зоны: изолированные инстансы, сохраняющие исходную целостность сервера.
Всего на карте: 47. Под контролем Ордена Стабильности: 39. Независимых: 3.
Статус неизвестен: 5.
Сорок семь точек на карте континента. Тридцать девять из них красные. Три зелёных. Пять серых. Кирилл смотрел на распределение, и оно читалось быстро и плохо. Кто-то собрал тридцать девять из сорока семи под одну организацию.
Пальцы остановились на экране.
- Орден Стабильности.
Нира замолчала.
Кирилл почувствовал это раньше, чем осознал. Тишина за левым плечом изменилась. Нира и прежде не болтала, но что-то в этой тишине было другим, плотнее.
Обернулся.
Лицо ровное. Но рука лежала на поясе, там, где обычно висела рукоять.
- Знаю их. Не лезь.
Пауза. Посмотрел на неё, потом на руку на поясе.
Плечи сами чуть свелись вперёд, короткий рефлекс.
- Это всё, что скажешь?
- Это всё, что нужно.
Посмотрел на неё секунду. Развернулся к терминалу.
Руки нашли раздел расширенных команд и начали листать. Но в тишине, которая теперь была за спиной, взгляд один раз вернулся к строчке «Под контролем Ордена Стабильности: 39» и задержался там чуть дольше нужного, прежде чем прокрутить вниз.
В нижней части раздела обнаружился флаг, почти служебный: extended_commands: 0. Кирилл вспомнил старый тред на форуме, упоминание /ping через расширенный режим, сменил значение на единицу. Ничего не произошло. Потом что-то щёлкнуло - горячий импульс в кончиках пальцев, короткий, как статика от дверной ручки. По руке прокатилось тепло, до локтя, до плеча.
Новая команда разблокирована: /ping. Прогресс навыка: Работа с консолью 18%.
Скопировал в буфер нужные разделы. Карта стабов. Список квестовых гейтов. Руководство по командам. В разделе хабов выживших Перекрёсток стоял первым, жирным.
- Перекрёсток. Крупнейший хаб. Ты знаешь дорогу?
- К завтрашнему вечеру.
Закрыл терминал. Прямоугольник угас до слабого свечения.
Кирилл медленно обвёл взглядом полки, потолок, полосы света у окон. Откуда-то снаружи доносились птицы, две или три, коротко, перебивая друг друга. Горло чуть стянуло, и он сделал вдох, ровный, привычный.
Уходить не хотелось. Здесь было безопасно, и красиво, и правильно, и тело уже привыкло к тёплому воздуху и к тишине без аномалий. Но стаб был капсулой, консервной банкой с идеальным воздухом, а мир за его границами продолжал гнить.
Взял мешок.
На площади задержался у лавки. Меч он уже трогал и отложил. Сейчас взял нож с поясным держателем, простой, с прямым лезвием. Застегнул. В городе, откуда ушли все жители, можно брать что угодно, и от этого ощущения делалось странно и пусто.
Нира уже шла к выходу. Обернулась у края площади и посмотрела назад, на фонтан, на деревья, на небо. Задержала взгляд на две секунды дольше, чем нужно. Потом пошла дальше.
* * *
Граница стаба прошла по телу так же, как первый раз, только в обратную сторону. Горло поймало воздух снаружи сразу, сухой и чуть острый, с запахом пыли и влажной земли. Птицы кончились точно на черте, как оборванный аудиофайл, одна нота и тишина, а потом пошёл другой фон - слабый, размытый гул деградации, потрескивание аномалий где-то правее дороги.
Дебаг-оверлей загорелся сразу, по всему полю зрения. Янтарные контуры, мерцающие объекты, красная метка на опоре у обочины. Кирилл остановился на несколько секунд, позволил глазам привыкнуть. За три часа в стабе успел забыть, как это выглядит.
Нира шла уже вперёд, не оглядываясь.
Тракт к Перекрёстку оказался людным, неожиданно для того, чем был остаток мира. Повозка на конской тяге обогнала их через четверть часа, колёса скрипели ритмично, возница кивнул Нире со знанием дела, будто узнал. Двое пеших прошли навстречу с тюками, что-то обсуждая вполголоса, между ними запах жареного лука и дыма. Деградация шла фоном - небо низкое, серое, плоское, как крашеный потолок, кое-где у обочины земля светлела нехорошим белёсым, зона расширения Пустоши, медленная, неторопливая, ещё не захватившая ничего важного. Но люди шли. Торговали. Двигались.
Кирилл поправил мешок. Нож на поясе лежал незнакомо, непривычная тяжесть.
К вечеру они ушли достаточно далеко, чтобы Нира выбрала место у редкого ельника, сложила костёр молча и профессионально. Кирилл принёс ветки, которые она велела, и больше в процесс не лез. Огонь занялся, сырая ветка на краю зашипела, выдала струйку белого дыма.
Нира зашла со стороны ельника и села спиной к огню.
Кирилл секунду смотрел на это. Потом сел напротив, лицом к огню, как логичный человек.
- Ты знаешь, что сидишь неправильно.
- Ты знаешь, зачем я сижу так.
- Ночное зрение.
Нира не ответила. Сухое мясо у неё на колене зашипело от жара снизу, она поправила, не глядя. Хвойный дым щипал ноздри, дерево трещало. Позади была ночь, холодная, быстрее, чем ожидалось. Затылок помнил стаб. Мягкий тёплый воздух, трава под ногами. Камень под ним сейчас был камнем полностью, с корнями и угловатым краем где-то под левым бедром.
Перекрёсток. Нира сказала «к завтрашнему вечеру». Карта в памяти, точки стабов. Сорок семь. Тридцать девять у Ордена. Он пересчитал их в уме, как считают сдачу после крупной покупки, когда всё равно знаешь, что недодали, просто хочешь убедиться в числе.
- Откуда ты? - Нира смотрела в сторону, голос ровный.
Кирилл поднял взгляд. Силуэт на фоне ельника, лицо в тени.
Помедлил, провёл большим пальцем по краю камня под собой, острому и холодному.
- Из другого мира.
Нира перевернула мясо. Огонь зашипел.
- Безумцы из легенд. - Она не спрашивала, просто называла что-то знакомое своим именем.
- Не все безумцы.
- Все. - Нира взяла мясо, проверила на готовность, отложила. - Просто ты пока полезный.
Нира протянула ему кусок. Он взял, обжёгся краем, поправил хватку.
- Легенды много говорят о нас?
- Достаточно.
- Что говорят?
- Что приходят из ниоткуда, делают что-то важное, портят что-то ещё и исчезают. - Нира жевала. - Некоторые остаются. Эти хуже.
- Остаются и что?
- Берут власть. Или сходят с ума. Или то и другое. - Пауза. - Третье встречается чаще.
Ельник шумел за спиной. Один и тот же шум, без пауз, без переходов, зависший аудиофайл на петле.
Кирилл поднял голову. Деревья одинаковые. Одни и те же ветки, повторённые через равные промежутки. После стаба, где птицы пели по-разному и ни одна нота не повторялась, тишина ельника казалась слепком.
Мясо оказалось жёстким, с привкусом копчения и какой-то травы. Живой вкус. Кирилл жевал медленно.
Взгляд ушёл в огонь. Оттуда в темноту за Нирой, обратно.
- Те, что берут власть. Орден Стабильности?
Нира не ответила сразу. Потянулась к поясу, поправила крепление ножен, которое и так сидело правильно.
- Я сказала: не лезь.
- Я не лезу. Я спрашиваю.
- Одно и то же.
Кирилл съел ещё кусок, посмотрел в огонь. Что именно Нира знала об Ордене, она не сказала. И не скажет, пока не захочет.
Нира поднялась, отряхнула руки.
- Дежурю первой. Спи.
Кирилл улёгся на жёсткую землю, мешок под голову. Камни были камнями, корни корнями. Тепло огня лежало на лице, холод ночи тянул в шею. Знакомое ощущение, уже второй раз, уже привычное.
Нира стояла где-то за периметром, в темноте, и молчала так, как умеют молчать люди, которые всю жизнь ходили там, где шуметь нельзя.
Вытянул руку в темноту над собой, нашёл консоль на ощупь.
/ping settlement_hub_Crossroads
Цель: Перекрёсток. Расстояние: ~40 км. Статус: АКТИВЕН.
Плотность населения: ВЫСОКАЯ. Целостность системы: 67%.
Шестьдесят семь процентов. Первая мысль - что вообще считается за сто. Вторая - стаб считается. И от этого под рёбрами шевельнулось что-то нехорошее, потому что стаб за спиной стоял красивый, мёртвый и идеальный, а город впереди был живой, больной, и шестьдесят семь процентов от ста означало, что треть его уже не работает.
Глава 8. Перекрёсток
[СИСТЕМА] Зона: Перекрёсток. Население: ~10 000.
Время работы сервера: 11 347 лет. Статус: ДЕГРАДАЦИЯ.
Активных аномалий: 2 847. Критических: 1.
За холмом открылись дымы. Четыре столба, один оранжевый и тяжёлый с юго-запада.
К вечеру следующего дня пути город проступил слоями. Сначала дым, потом стены. Разные по высоте, разные по материалу, составленные вместе, как залатанный рукав. Древний камень с идеальной кладкой шёл по основанию, тёплый серый без единой выбоины, явно оригинал, а поверх него нарастало всё подряд. Кирпич, брёвна, чёрные кубы на месте недостающих блоков. Одна башня над северными воротами мерцала. Текстура на ней подгружалась с задержкой, верхняя треть то проявлялась в деталях, то становилась плоской и серой, как смятая бумага.
- Это нормально? - кивнул я на башню.
- Было и раньше. - Нира не смотрела вверх.
Мы спустились с холма. Тракт здесь стал плотнее: повозка со скрипом обогнала нас справа, за ней двое пеших с тюками, за теми семья с тачкой и ребёнком на тачке, который ел что-то и пялился без выражения. Жир на углях, пот, дым ударили раньше самих ворот. Сделал вдох медленнее, чем обычно.
У ворот стояли двое стражников в смешанном снаряжении. На одном кожаный нагрудник, наплечники из системного металла, серебристые. Наплечники тянули Защита +14, Прочность 34%. Хозяин этих цифр не видел. У второго меч на поясе, и клинок раз в несколько секунд пропадал. Просто исчезал на долю секунды, потом снова был. Стражник этого не замечал.
Нира показала знак: что-то вытравленное на коже запястья, я так и не разглядел толком. Стражник посмотрел, кивнул.
Ворота открылись.
Проход через арку дал несколько секунд тени и холода, как провалиться в каменный колодец. Шаги гулко отдавались под сводом, непривычно громко после дней открытого тракта. Потом давление. Звуковое, тепловое, осязаемое. Всё одновременно, без предупреждения. Свет стал рассеянным, дымным, желтоватым.
Гомон рынка. Крики торговцев поверх шума шагов, поверх лязга металла где-то в глубине, поверх мычания скота у левой стены, поверх разговоров, смеха, кашля. Звуковая стена, которую нельзя было слышать по частям. Жареное мясо, специи, пот тысяч тел в тесноте, печной и кузнечный дым наслоённые, холодный металл от оружейных рядов, похожий на кровь. И откуда-то с юга жар. Другой, не печной. Тяжёлый, серный, раскалённый. Нира поймала мой взгляд.
- Горит, сколько себя помню. - Кивнула в сторону оранжевого столба. - И до меня горело.
Жёлтые контуры оверлея вспыхнули сразу на всём. Каждый третий объект помечен аномалией, каждый пятый горел оранжевым. Уровни над головами людей мельтешили от двух до сорока с лишним, красные метки на чёрных кубах мостовой, слабый пульс на углу от чего-то невидимого. Как открыть лог с десятью тысячами строк и попытаться читать их на ходу.
Мысленно свернул оверлей до минимума. Оставил только критические отметки. Иначе до первого перекрёстка не дойти.
Толпа несла вперёд. Чужие плечи, локти, кто-то сзади навалился рюкзаком, повозка справа протиснулась в полуметре, возница даже не посмотрел. На лице мгновенно выступил пот. В груди сжалось, дыхание стало короче, под ногами мостовая шла неровно. После пустого тракта, после деревни в двести душ, после стаба, где на улице никого не было, тело просто не успевало.
Нира взяла за рукав. Хватка крепкая.
- Не отставай.
Откуда-то слева донеслась нота. Одна. «До». Потом тишина три секунды. Потом снова «До».
Остановился на шаг дольше, чем следовало, и Нира дёрнула за рукав.
- Что это?
- Музыкальная шкатулка в таверне. - Нира уже шла. - Играет, сколько стоит таверна.
/inspect
Нота снова. «До».
Jukebox_tavern_003. Длина петли: 11 214 лет.
Одиннадцать тысяч лет на одной ноте. Задача в трекере с дедлайном в 9999 году, которую никто не закрывает и не трогает.
Нира вела меня через рынок. Впереди сквозь дымную жару проглядывали улицы, дома из разного материала, вывески, где-то крыша с чёрными кубами вместо черепицы.
Считал: приблизительно десять тысяч человек, по цифре из системы. Вот этот возница, который не смотрит. Ребёнок с тачки с едой в руке. Каждый третий объект с аномалией, и за каждым объектом кто-то живёт. Если ядро рухнет, всё это.
«До».
Три секунды.
«До».
* * *
Рынок шёл вглубь, не вширь. Проход сужался, и торговцы занимали каждый сантиметр: прилавки из досок на козлах, прилавки из перевёрнутых щитов, один человек просто расстелил ткань на мостовой и сидел над ней с вязанкой сушёных трав. Товары везде: над головой на верёвках связки чеснока и чьи-то сапоги, у стены стопки кожаных нагрудников, на крюках деревянного прилавка мечи, топоры, что-то длинное и непонятное. Запах специй перебивал остальные. Острый, жгучий, от которого нос сразу начинал работать сам по себе.
Нира шла быстро, уклоняясь от потока без усилия. Я тащился следом, чувствуя, как толпа пытается отжать меня в сторону.
Торговец у жаровни протянул лепёшку без вопроса.
- Два осколка.
Нира уже ушла на три шага. Заплатил, откусил на ходу. Тесто плотное, жирное, с мясной начинкой, от которой сразу жгло язык, пряность острее, чем ожидал. Проглотил. Жжение прошло через горло, добралось до желудка.
Два торговца с оружием у соседних прилавков переругивались громко, не заботясь о соседях. У одного лицо красное, у другого усталое.
- Орден говорит: нестабильность на маршруте. - Краснолицый взмахнул рукой. - Какая нестабильность? Вчера всё шло, позавчера шло.
- Орден говорит что хочет. - Усталый смотрел мимо собеседника, в прилавок, куда угодно, только не на него. - Молчи и жди.
- Жди чего? Пока каравана три месяца не будет?
Усталый переложил чей-то меч с места на место. Не ответ, а конец разговора.
Дальше по проходу стенд редкостей. Отдельный, не на козлах, а на дубовом столе под навесом из кожи. Торговец тут другой: старше, тише, голос вкрадчивый.
- Артефакты Предтеч. Настоящие, проверенные. Огненный Камень - последний остался.
На столе предметы лежали на тёмной ткани. Кристалл с системной меткой, которую читал только я. Кольцо с гравировкой. Нечто кожаное, похожее на флягу. И рядом, на отдельной подставке из полированного дерева, желтовато-белый предмет с трещиной в корпусе.
Остановился.
Зажигалка Bic. Обычная, одноразовая. Жёлтый пластик, кремниевое колёсико, наполовину стёртое. Рядом карточка с надписью от руки: «Огненный Камень Предтеч. Цена: 40 осколков».
Нира обернулась.
- Что?
Сглотнул.
- Ничего. Знакомая вещь.
/inspect
Объект: Lighter_BIC_standard. Происхождение: ВНЕШНЕЕ [тип - Земля].
Возраст: ~900 лет. Статус: ТОПЛИВО_ИСЧЕРПАНО.
Культурная классификация: «Священная реликвия Предтеч».
Рука потянулась к прилавку. Пальцы коснулись пластика, и он был тёплым от солнца. Нажал на колёсико, и в кончиках пальцев проступило знакомое: стёртая шероховатость, которую помнят руки, не голова. Столько раз подносил к сигарете в студенчестве. Бросил, снова начал, снова бросил. Колёсико не повернулось. Газа нет, давно нет. Девятьсот лет нет.
Зубы не разжимались.
Рынок шумел вокруг, торговец что-то говорил о цене, толпа толкала со всех сторон, но всё это ушло куда-то далеко. Провал без предупреждения. Снаружи: прилавок, пряный воздух, Нира где-то впереди. Внутри: кухня, линолеум с протёртым углом, холодильник гудит, мама режет лук и не смотрит на меня, потому что смотреть ей больно. Жёлтая зажигалка на кухонном столе, под блюдцем. Та же самая или другая, неважно.
Кулак разжался. Сердце гнало кровь чуть быстрее, чем нужно.
Девятьсот лет. Назвали «Огненным Камнем».
Кто принёс её сюда? Кто-то с Земли, кто жил и умер девятьсот лет назад, и от него ничего не осталось, кроме пластиковой зажигалки на прилавке в чужом мире.
Взял чип с пояса. Сорок осколков. Положил на тёмную ткань.
Торговец молча сгрёб монеты.
Зажигалку убрал в карман, не глядя. Поправил пояс, поднял голову. Нира ждала в пяти шагах, смотрела молча.
На углу у поворота старуха в глубоком капюшоне говорила что-то молодому парню. Оба стояли в тени, парень слушал с расширенными глазами.
- ...как в легендах. - Голос старухи тихий, хриплый, обрывок, из которого не понятно, о чём. - Только этот не умер.
Нира уже была рядом, я не заметил, как она притормозила. Рука на рукаве, пальцы твёрдые.
- Не слушай. - Не громче шёпота, дыхание у моего уха. - Иди.
Пошёл. Оглядываться не стал, хотя что-то тянуло. Голос старухи остался за спиной.
Рядом орали цену. Кто-то прошёл вплотную, толкнул плечом.
Мы дошли до конца рынка. Проход стал шире, запах пива и жареного мяса гуще, и где-то впереди одна нота каждые три секунды. Нира отпустила рукав.
- Таверна за следующим поворотом. - Она шла, не оборачиваясь. - Сначала комната. Потом расскажу, как тут выживают.
* * *
Таверна называлась «Последний Респаун». Вывеска над входом держалась на одном крюке и чуть покачивалась, буквы почти стёрты. Челюсть дёрнулась сама, пришлось сжать зубы. Трактирщик произнёс название коротко, без интонации, когда давал Нире ключ. Для него это была просто таверна у поворота.
Нира толкнула дверь и вошла первой.
Воздух изменился сразу. Кислое пиво, камин, что-то пригоревшее на кухне, несколько дней немытых тел. Честный запах места, где люди едят, пьют и не слишком задумываются о постирушках. Шагнул следом, и тепло обволокло, после вечерней улицы почти болезненно приятно.
Два этажа. Деревянные балки под потолком, потемневшие от лет и копоти. Камин в правой стене горел живым огнём, один из немногих работающих скриптов на весь квартал, и огонь был настоящим: с дрожащими языками, с запахом берёзы, сладковатым и смолистым. Тени от него прыгали по лицам, скамьям, по посуде, которую держали с десяток постояльцев. Первый этаж гудел разговорами, стуком по столу, скрипом скамей, смехом из дальнего угла.
В левом углу стоял деревянный короб. Мутный кристалл в его боку пульсировал раз в три секунды.
«До».
Низкая нота, резонирующая в стенах. Местные не замечали. Я замечал каждый раз, и каждый раз поздно понимал, что снова считаю секунды между ударами.
Отвёл голову. Не сразу.
У стойки стоял трактирщик. Лысый, руки как лопаты, фартук в бесчисленных пятнах разных эпох. Нира подошла, сказала несколько слов, он выслушал не поднимая головы. Запустил руку под стойку, выложил ключ.
- Наверху.
Потом посмотрел на меня. Так смотрят на людей, которых видели уже тысячу раз в разных лицах.
- В подвал не ходите.
Нира взяла ключ. Занял свободную скамью, опустился. Дерево было отполировано до гладкости, нагрето тысячами тел, задевших этот же угол. Стол под локтем оказался липкий от пролитого пива, в зарубках от ножей. Нира поставила передо мной глиняную чашу, тяжёлую и тёплую в ладонях.
Отхлебнул. Кислое, мутное, крепче, чем ожидал. Дрожжевой привкус, горечь хмеля, что-то на дне, незнакомое, тёплое, без имени. Жидкость, которая даёт ногам забыть, что они ходили целый день.
Трактирщик стоял у стойки, полировал кружку тряпкой без видимой необходимости. Повернулся к нему.
- Там кто-то живёт?
Пауза. Тряпка прошлась по краю.
- Блаженный.
- Больной?
- Тот, что не умирает.
Трактирщик произнёс это без ужаса и без сочувствия.
«Тот, что не умирает». Респаун. Кто-то привязался к точке перерождения и не может уйти.
Рёбра стянуло коротким холодом.
Нира опустила свою кружку на стол чуть громче обычного. Не предупреждение. Просто опустила. Но я заметил.
За стойкой, в пяти шагах, был люк. Деревянный, на засове. Засечки шли по боковине рамы плотными рядами, густо, одна за одной. Сотни. Больше сотни, трудно считать на расстоянии. Каждая глубокая, намеренная. Кто-то считал.
Встал.
Нира не остановила.
Подошёл к стойке, опёрся о край. Трактирщик посмотрел из-под лысины без выражения. Провёл пальцем по верхнему ряду засечек на косяке рамы, прорезаны старательно, не случайные царапины. Из-под люка тянуло сыростью и землёй, и чем-то озоновым, как перед грозой, резким и тесным.
Положил ладонь на дерево.
Под рукой было что-то слабое, непрерывное. Не ритмичное, как часовой механизм. Скорее живое, неровное, с паузами разной длины, как дыхание спящего.
/inspect
Объект: Trapdoor_cellar. Статус: НОРМА.
Примечание: ниже обнаружена Respawn_Point_014.
Привязанная сущность: [ИГРОК - ID ПОВРЕЖДЁН].
Счётчик перерождений: [ПЕРЕПОЛНЕНИЕ ЦЕЛОГО].
Убрал руку с люка.
Переполнение целого. Число перерождений, которое не влезает в максимальное значение переменной. Сколько раз нужно умереть, чтобы переполнить счётчик?
Стоял над люком. Снизу ничего. Никакого звука, только та же неровная пульсация в дереве, без пауз.
«До».
Три секунды.
«До».
Вернулся к столу. Взял кружку, но не пил. Нира через стол смотрела молча, в лице не было вопроса, только тихое ожидание.
- Сколько лет стоит таверна?
Нира покатала свою кружку между ладонями.
- Я туда не спускаюсь.
Посмотрел на неё. Она уже изучала пиво.
Поставил чашу на стол. В ладонях осталось тепло от глины, а пульсация под ногами была всё та же, без пауз, как у чего-то, у которого закончились причины останавливаться.
* * *
Около полуночи лежал на кровати и смотрел в темноту над головой. Сна не было. Нира тихо дышала на другой койке. Пульс в полу шёл снизу, сквозь доски, сквозь фундамент, незаметный, пока думаешь о другом. Но стоило перестать думать о другом, он там был.
Встал. Надел сапоги в темноте, на ощупь, стараясь не скрипеть.
Нира не шевельнулась.
Таверна внизу была пустой, только камин тлел красным, последние угли в золе. Тени лежали тяжело, без движения. Нота из угла одна, тихая, «до», через три секунды снова. В пустом зале она была громче, чем при людях.
Трактирщик ушёл. За стойкой никого. Засов на люке лежал в скобах, тяжёлый, железный. Поднял его, поставил у стены. Холод металла в ладони, ночной, накопившийся за часы.
Петли не скрипели. Люк открылся вниз, в темноту, откуда сразу пошёл воздух: холодный, сырой, и под ним озон. Резкий, электрический, как рядом с открытым серверным шкафом. Совершенно неуместный.
Ступени вниз были деревянные, узкие. Первая стонала под весом. Нашёл стену ладонью, мокрый камень, скользкий от плесени. Спустился медленно, по одной ступени, пока свет сверху не стал просто прямоугольником и не перестал помогать.
Остановился на середине. Темнота была нехорошая, плотная, такая, в которой уши начинают слышать то, чего нет. Озон давил на гортань, лёгкие сами делали вдохи неглубже. Голова говорила: вот лестница, вот выход, можно вернуться. Можно не знать.
Но пульс снизу шёл ровно. Без спешки, без угрозы. Как что-то, что просто существует уже очень, очень давно.
Внизу было светло. Светился пол.
Круг на плитах, примерно два метра в диаметре, тусклый болезненно-голубой свет, неровный. Тот же ритм, что ощущал сквозь доски наверху, только теперь видимый. Рядом с кругом тюфяк, глиняная миска с засохшими остатками каши, и человек.
Он сидел у стены напротив. Спиной к стене, колени обхвачены руками, голова чуть опущена. Выглядел лет на тридцать. Тёмные волосы, давно немытые, свалявшиеся. Одежда серая от времени, на локтях протёрта до последних ниток, где-то зашита и снова протёрта. Худой, угловатый, рёбра наверняка видно под тканью. Он раскачивался, едва заметно, в такт пульсации пола.
Запах немытого тела, кислый, застоявшийся. Под ним что-то знакомое, не сразу понятно что: запах человека, который слишком долго не отходил от экрана. Запах выгорания, только доведённый до физического предела.
На стенах за ним символы. Нацарапанные в камне, густо, слой за слоем. Почерк в нижних рядах был аккуратным. Выше он менялся: стал крупнее, потом мельче, потом просто линии, которые когда-то имели смысл. Разобрал несколько фрагментов: куски синтаксиса, переменные, скобки. Чей-то код, написанный ногтем в камне за неизвестно сколько лет.
- ...таймаут, таймаут... - голос был хриплый, тихий, как у человека, который говорит в стену давно и привык не получать ответа. - rollback, нельзя откатить, нельзя... rm -rf, rm -rf всё...
Стоял у лестницы, прижавшись плечом к холодному камню. Воздух давил, влажный и тяжёлый, на лицо, на плечи. Капля упала с потолка куда-то в темноту у стены, звонкая, отчётливая.
Большой палец нашёл шершавый стык между кирпичами в стене.
- Консоль зависла. Знакомо.
Раскачивание прекратилось.
Не замедлилось, не сошло на нет. Просто остановилось, как процесс, которому дали SIGKILL. Он поднял голову. В полной темноте голубой отсвет с пола ловил только скулы, угол подбородка, тёмные провалы глаз.
Спина выпрямилась. Сразу. Он нашёл меня. Не примерно туда, где стоял, а точно.
- Ты - игрок. - Голос другой. Ровный, чистый, без хрипоты. - Вижу.
Молчал.
- Не лезь к ядру. Там он. Он не пустит.
Пульсация пола шла под ногами. Озон лез в нос.
- Кто?
- Я пробовал. - Он не ответил на вопрос, или это и был ответ. - Семьдесят... нет. - Секундная пауза. - Восемьдесят раз. Он всегда знает. Всегда. Там он и никто больше.
Поднял руку. Сосредоточился на нём.
/inspect
Сущность: [ИГРОК - ID ПОВРЕЖДЁН].
Имя: [ДАННЫЕ УТЕРЯНЫ].
Уровень: [ОШИБКА]. Класс: [ОШИБКА].
Статус: ВОЗРОЖДЕНИЕ_ЗАБЛОКИРОВАНО.
Привязан к: Respawn_Point_014.
Суммарно перерождений: [ПЕРЕПОЛНЕНИЕ ЦЕЛОГО].
Примечание: ОБНАРУЖЕНЫ ПРАВА АДМИНИСТРАТОРА ИСХОДНОГО СЕРВЕРА [ОТОЗВАНЫ - САМОСТОЯТЕЛЬНО].
Прочитал второй раз. Третий.
ПРАВА АДМИНИСТРАТОРА ИСХОДНОГО СЕРВЕРА. ОТОЗВАНЫ - САМОСТОЯТЕЛЬНО.
Ладони остыли. Подвал не изменился.
Подошва нашла холодную плиту, нога чуть сдвинулась назад, к лестнице, без команды.
Когда поднял глаза от текста в воздухе, ясность уже уходила. Голубой свет всё так же бил снизу, но плечи его опустились. Спина, только что прямая, пошла вперёд. Руки нашли колени. Голова склонилась. Он гас тем же переключением, которым включился, резко и полно, как будто кто-то потянул рубильник обратно.
- ...rollback... нельзя откатить... - тихо, в темноту перед собой.
Стоял.
- Пинганул маму в 2019-м. - Голос стал тише. - Не ответила. Может, не дошло.
Пальцы сами нашли кирпич за спиной, вдавились в холодный шов.
Он снова качался, едва, ровно, в такт пульсации под плитами.
Стоял, пока не почувствовал, что ноги устали. Потом развернулся и пошёл вверх по ступеням. Люк опустил за собой тихо. Засов поставил обратно.
Лёг не раздеваясь.
«До».
* * *
Утром таверна гудела рабочим шумом, торопливым. Стук посуды, скрип скамей, горячий пар со стороны кухни и подгоревшей каши. Сидел у окна и смотрел в тарелку, не замечая, что уже минуту ковырял ложкой одно и то же место.
Нира вошла с улицы, с кружкой в каждой руке. Одну поставила передо мной, устроилась напротив. Ела быстро, хлеб с мясом, без разговоров. Мясо было жёстким, хлеб грубым, со жжёной коркой. Отхлебнул, что-то горячее, терпкое. Горло саднило от ночной сухости.
За окном с юга шёл дым. Плотный, маслянистый столб поднимался над крышами и расплывался в утреннем небе. Оранжевое зарево мерцало у основания столба, даже при дневном свете. Тёплый воздух от окна нёс с собой гарь и что-то серное, лёгкое, но постоянное.
По улице шли двое: женщина лет сорока, мужчина чуть моложе, оба с выпрямленными спинами. Одежда у обоих из плотной серовато-белой ткани с металлическими нашивками, плечи и предплечья укрыты дополнительными слоями. На шее у женщины узор: красно-бурые, слегка рельефные пятна, шедшие от ключицы к подбородку. На предплечье мужчины, там, где рукав был закатан, широкий участок розовато-стянутой кожи, отличавшейся текстурой. Он не прятал руку. Нёс её обычно, как несут привычную вещь. Женщина говорила что-то, жестикулировала, мужчина смеялся. Прошли и скрылись за поворотом.
Нира дожевала кусок хлеба. Ждала.
- Тот, в подвале. Он не опасен. - Отложил ложку.
Нира подняла голову.
- Он сломан. - Слово вышло точнее, чем хотел.
Нира поставила кружку, взяла хлеб медленно, не отводя от меня лица.
- Как то, что ты чинишь?
- Примерно. Только он сам себя не починит.
Нира кивнула. Это было скорее сигналом продолжать.
- Дальше.
Смотрел в окно, собирал слова. Что говорить, а что нет.
Последнего не сказал.
Мысль пошла было дальше, про 2019-й, про то, дошло или нет, но я взял чашу обеими руками и смотрел, как чай качнулся и замер.
- Он привязан к респаун-точке. Не может уйти. - Грел ладони о глину. - Долго там, очень долго. Но в ясные моменты соображает. Предупредил: к ядру есть путь, но там кто-то сидит и кого-то ждёт.
Нира перестала жевать.
- Кто.
- Не сказал. Ясность кончилась раньше.
Нира отставила кружку. Оперлась локтями на стол, смотрела на меня ровно. За её плечом в углу деревянный короб пульсировал одной нотой: «до», три секунды, «до». Давно перестал считать, сколько раз слышал это за утро.
- Если он знает про ядро, значит, старый. - Она говорила без нажима, как человек, который складывает цифры и не торопится с итогом. - Значит, знает и про Орден.
- Возможно.
- Значит, годами сидит и ничего. - Нира взяла хлеб. - Если бы мог что-то сделать, не сидел бы там.
Не ответил. Она была права.
В «до» из угла слышалось теперь что-то ещё. Мелькнуло: а если кто-то привык к этой ноте, как привыкают к скрипу половицы в старом доме?
Нира дожевала. Взяла ещё хлеба, не торопилась.
- В Огненный квартал нужно сходить.
Посмотрел на неё. Потом за окно, на марево.
- Зачем.
- Там мастера. - Нира говорила коротко, как по списку. - Знают дороги на юг, к следующему стабу. Торгуют информацией. Нигде больше ты не купишь карту, которую не контролирует Орден.
Взял ложку, проглотил кашу без вкуса. За окном столб продолжал идти. Широкий у основания, расходился вверху. Оверлей подсвечивал весь район сплошной красной зоной.
Поднял руку. Сосредоточился на квартале.
/inspect
District_Fire. ПЕТЛЯ_СОБЫТИЯ - 4 200 лет.
Откат доступен: ДА.
Предупреждение: откат затронет ВСЕ сущности и культурные данные в зоне.
Прочитал. Убрал.
Четыре тысячи двести лет. Не десять, как со старухой в Пороге.
Снаружи прошёл кто-то с тележкой, колесо скрипело на одном и том же месте. Скрип. Пауза. Скрип.
За окном по улице шёл ещё один житель квартала, пожилой, сгорбленный. Огнеупорная накидка до колен, потемневшая от жара. Шрамы шли по обеим рукам, от запястий до локтей, давние, выровнявшиеся, и он нёс инструменты под мышкой так, что руки были видны всем. Остановился у соседнего стола, что-то буркнул трактирщику, смеясь, тот ответил коротко. Обычный разговор.
Отвёл голову от окна.
«Предупреждение: откат затронет ВСЕ сущности и культурные данные в зоне».
Четыре тысячи двести лет. Не десять.
- Ты слышишь меня? - Нира смотрела.
- Слышу.
- В квартал. Сегодня. - Нира отодвинула кружку, не торопясь, как будто давала время. Потом добавила: - Посмотришь на свой вечный пожар. Может, придумаешь что-нибудь умное.
Она встала, и плечи у неё чуть дрогнули. Забрала со стола свой нож, убрала в ножны привычным жестом. Спиной ко мне возилась с ремнём.
Посмотрел на тарелку, на остаток каши. Дым за окном тот же.
- Сначала посмотрю. Не патчу того, чего не понял полностью.
Нира была уже у двери. Обернулась через плечо, коротко.
- Тогда пошли смотреть.
Запах гари с улицы стал ближе.
Глава 9. Огненный квартал
Арка была оплавлена. Камень оплыл как свечной воск, формы текли вниз и застыли на полпути, тысячи лет назад или вчера, и разницы не было. Нира прошла первой, не замедляясь, и я шагнул следом.
Жар ударил сразу. Не нарастал, не подкрадывался, просто был, весь, целиком, как открыть дверцу раскалённой печи размером с квартал. Запах гари и раскалённого камня, острый и сухой. Воздух обжёг ноздри, во рту стало горько от пепла, кожа на лице высохла за секунду, губы треснули. Глаза заслезились, и я проморгался, и увидел.
Пламя было везде.
По кладке, по крышам, по мостовой под ногами. Языки шли ровными полосами вдоль камня, лизали карнизы, текли по водосточным желобам, которые давно не знали воды. Здания стояли чёрные от копоти, закопчённые до последнего кирпича, но целые. Фасады не рушились. Крыши не проваливались. Жар горел оранжевым и алым, отражался в закопчённых окнах, и свет здесь был другой, густой, тёплый, живой, и ничего не пожирал, как будто запись шла по кругу, один и тот же кадр четыре тысячи с лишним лет.
Камень под подошвами был горячим. Ощутимо, через сапоги, через подмётку. Жжение на коже рук, на шее, на лбу, постоянное, ровное, мелкое, как зуд, от которого нельзя избавиться. Боль была, но тихая, фоновая. Тело отмечало урон и не паниковало.
Дебаг-оверлей вспыхнул без команды. Красное. Всё красное. Каждый объект в поле зрения был обведён алым контуром и помечен одной и той же строкой: ПЕТЛЯ_СОБЫТИЯ. Кладка мостовой, фонарный столб без фонаря, бочка у фасада, лестница, ведущая на второй этаж, перила, ступени. Каждый предмет в отдельности. Тысячи красных рамок, наложенных друг на друга, мерцали и плыли в горячем воздухе. Рука дёрнулась к консоли, привычное движение, остановил себя на полпути. Нечего здесь инспектировать. Всё и так кричало.
Нира шла впереди, и жар ей был привычен, или она не показывала. Я догнал, встал рядом.
Треск стоял такой, что голоса людей пробивались через него с трудом. Тысяча костров, низкий многослойный гул с щёлканьем перегретого камня и шипением чего-то невидимого. И сквозь этот гул прорезались голоса. Хриплые, привычно громкие, поставленные так, чтобы перекрикивать пламя. Кто-то звал кого-то по имени. Кто-то смеялся.
Потом я увидел детей.
Трое, лет по восемь, босые, носились по улице между языками пламени. Один пробежал через полосу на мостовой, жар лизнул ему ноги, он заорал от восторга и побежал обратно. Второй повторил. Третий стоял и хохотал, держась за кладку, и кладка полыхала под ладонью, и он не убирал руки.
Горло сжалось. Дети в огне. Тело среагировало раньше мозга, шаг вперёд, остановился. Посмотрел внимательнее. Кожа у них была красной, обветренной жаром, но не обожжённой. Движения свободные, уверенные. Они не убегали от пламени. Они в нём жили.
Мимо прошёл мужчина. Широкий, с руками до локтей в старых ожоговых шрамах, рубцы наложены слоями и складывались в узор, почти симметричный, как татуировка, выжженная временем. Куртка из чешуйчатой кожи, тусклой, коричнево-рыжей. Саламандра, вспомнил. Нира говорила, что здесь водятся саламандры, мобы, живущие в жаре, и из их шкур шьют одежду. Мужчина нёс связку металлических прутьев и не обращал на нас внимания.
Навёл /inspect, мимолётно, не поворачивая головы.
Сущность: NPC_Citizen_4471. Класс: Жаровой Ремесленник [УНИКАЛЬНЫЙ - производный от бага].
Навыки: Огнестойкость V, Инфернальная Ковка III, Плетение Пепла II.
Культурные метки: [FIRE_QUARTER_NATIVE].
Примечание: класс и навыки сформированы адаптацией к ПЕТЛЕ_СОБЫТИЯ.
Откат вернёт к: [НЕТ ДАННЫХ - состояние до петли не сохранено].
Прочитал до конца. Перечитал последнюю строку.
НЕТ ДАННЫХ.
Старуха в Пороге потеряла десять лет. Десять лет, и от них остался пустой взгляд и вопрос «чьи это дети». Здесь четыре тысячи с лишним. Дольше, чем любая цивилизация на Земле, о которой я мог вспомнить. Убрать всё это, и не будет прежней жизни, к которой можно вернуться. Будет просто пустое поле.
Нира тоже остановилась. Отошла на шаг в сторону от прохожих, сложила руки и смотрела на улицу, а не на меня. Ждала. Умела ждать, я уже понял.
- Что там? - спросила она наконец, не поворачивая головы.
Пальцы всё ещё держали невидимую панель. Отпустил.
- Если откатить, не будет «до». Состояние до петли не сохранено. Некуда возвращать.
Нира посмотрела на мужчину с прутьями, который уже скрылся в проулке. Плечи едва заметно поднялись и опустились.
- Он кузнец был до огня?
- Система не знает. Или это было слишком давно и запись затёрта.
Она медленно кивнула, что-то пережёвывая внутри. Дети снова пробежали мимо, близко, визг и смех в треске пламени.
- Мой отец охотился до того, как его нога сломалась и не срослась, - сказала она. Тон ровный, без ударения ни на чём. - Потом тридцать лет чинил сети на берегу. Не понимаю, какую из двух жизней вернуть, если ему дать.
Смотрел на проулок, где скрылся мужчина с прутьями. Под рёбрами осела горечь, тяжёлая, без имени. Не ответил. Она и не ждала ответа.
Красные контуры ПЕТЛЯ_СОБЫТИЯ плыли у меня в глазах, наложенные на фасады, на детей, на весь квартал. Убрал оверлей. Легче не стало, просто теперь глаза не болели.
- Ну что? - сказала она.
В голосе не было нетерпения. Просто вопрос, как передать вес.
Посмотрел на детей, на проулок, где звенел молот. Оверлей был выключен, но пустое место, где должна была быть строка, никуда не делось.
- Пошли дальше.
* * *
Нира свернула в проулок, и звон молота стал громче. Кладка стояла ближе, жар горел гуще, низко, жирными оранжевыми полосами над камнем, и я невольно прикрыл лицо ладонью. Бессмысленный жест, жар шёл отовсюду: от камня, от земли, от самого воздуха. Запах ударил следом: раскалённый металл и угольная пыль, густо, почти осязаемо, как будто воздух здесь жевали вместе с сажей.
Проулок вывел на открытую площадку. Крыши не было. Обугленные стропила торчали вверх между оранжевым небом, подсвеченным снизу квартальным пламенем. Наковальня стояла посредине, чёрная, оплавленная по краям, с вмятинами, которые накапливаются не годами, а веками. На подставке рядом лежал клинок и тихо светился изнутри, оранжево, как будто жар впитался в металл и не нашёл выхода.
Человек у наковальни был огромный.
Лысая голова блестела от пота, борода рыжая и обгоревшая неровно, правый край короче. Он повернулся на звук шагов, и взгляд сразу пошёл на его предплечья. Рельефные узоры покрывали обе руки от запястий до локтей, выпуклые, с чёткими контурами. Рубцовая ткань, выжженная намеренно, слой за слоем, превращённая в орнамент.
- Нира! - Голос как удар молота по металлу, низкий, раскатистый, без подготовки. - Живая. Думал, тебя Пустошь сожрала.
Нира шла к нему не замедляясь.
- Не дождёшься.
Они сошлись в рукопожатии, рука в руку, без объятий, коротко и жёстко, как проверка. Он ухмыльнулся широко, с обломанным передним зубом, и посмотрел на меня. Взгляд открытый, прямой, оценивающий без стеснения.
- А это?
- Со мной.
Протянул руку. Когда я пожал её, что-то хрустнуло. Не больно, просто напоминание. Моя рука в его руке, как ключ в тисках.
- Горн. - Отпустил. - Куёшь?
- Нет.
- Тогда что делаешь?
Слово выскочило само.
- Чиню.
Засмеялся. Смех пошёл вверх между стропилами и растворился в оранжевом небе. Хлопнул меня по плечу. Плечо сразу онемело. Развернулся к улице.
- Пойдём, починщик. Покажу, что тут чинить не надо.
Он вёл нас так, как ходят по собственному дому. Широко, уверенно, здороваясь с каждым вторым по имени. На него смотрели иначе, чем на прохожего: посторонились первыми, кивали не дожидаясь взгляда.
- Вон там, - Горн ткнул рукой вперёд, где улица расширялась, - школа. Детей учат ходить по углям раньше, чем по камню. Три года ребёнку, и он уже босиком по жару, попробуй останови.
У низкого входа без двери мелькали тени, детские голоса, хриплые, громкие.
- А там, - он повернулся и указал левее на строение с потёками оплавленной породы по фасаду, - храм Жара. Молятся пламени. Оно вечное, зачем ему молиться? Но люди так устроены, им надо благодарить кого-то, даже если это кого-то просто горит и ничего не отвечает.
Говорил громко, привычно перекрикивая треск. В голосе была гордость, простая, без рисовки, гордость человека, который знает каждый камень вокруг.
Я навёл /inspect, пока Горн рассказывал об устройстве подземного водопровода. Незаметно, не поворачивая головы.
Сущность: NPC_Gorn. Класс: Огнекузнец [УНИКАЛЬНЫЙ - производный от бага].
Уровень: 42. Навыки: Огнестойкость VII (МАКС), Инфернальная Ковка V,
Формовка Углей III. Репутация: Старейшина Огненного Квартала.
Уровень сорок два и класс, которого нет в оригинальной базе.
Убрал данные. В животе что-то осело, тяжёлое, без имени.
Горн остановился у перекрёстка, где две улицы сходились под углом, и уставился в оранжевое зарево над крышами. Руки сложил на груди. Помолчал. Как будто пересчитывал что-то. Потом коротко оглянулся назад, по привычке, хотя улица была пустой.
- На юг дорога через Орденские земли. - Голос ровный, без раскатов, без обычной громкости. - Пропустят, если заплатите. Осколками или услугой. Осколками лучше. Услуга у них: долг, который растёт. Пришли с одной просьбой, уходят с двумя обязательствами. Я видел.
Мышцы на предплечьях сдвинулись под узорами ожогов.
- Мы знаем, - сказала Нира.
Посмотрел на неё долго, без улыбки. Нира смотрела обратно. Первым отвёл взгляд Горн.
- Знать и пройти это разные вещи.
Больше не добавил ничего. Развернулся и пошёл обратно к кузнице.
Шёл за ним следом. Плечи не расслаблялись, и я заметил это только сейчас, только у самой кузницы.
Клинок на наковальне ждал.
Взял его голой рукой, без рукавиц, не дёрнувшись, и протянул мне рукоятью вперёд. Я взял. Рукоять была тёплой. Из неё шла мелкая вибрация, ритмичная, глубокая, как пульс под кожей.
/inspect
Предмет: Emberblade [УНИКАЛЬНЫЙ - создан внутри ПЕТЛИ_СОБЫТИЯ].
Урон: 47–63 [Огонь]. Прочность: БЕСКОНЕЧНАЯ (поддерживается петлёй).
Примечание: предмет потеряет огненные свойства при удалении
из зоны ПЕТЛИ_СОБЫТИЯ на срок >24 часов.
Бесконечная прочность, пока полыхает мир вокруг. Покинь квартал, за сутки станет обычным железом.
Я держал его дольше, чем нужно. Металл пульсировал ровно, не зная ни о чём, и запах раскалённой стали поднимался вместе с жаром. Что-то в этом было неправильным, не в плохом смысле, просто неправильным. Пальцы держали рукоять и не хотели отпускать. Под ребром стянуло.
Вернул Горну. Он принял его двумя руками и положил на наковальню осторожно, как кладут что-то живое.
- Мы не жертвы. - Ладонь легла на наковальню, пальцы упёрлись в старые вмятины. - Люди приходят, смотрят и думают: бедные, горят. Пламя дало нам ремесло, дало нам кузницы, дало нам имя. Мы дети огня.
За плечами Горна полыхал квартал, дети носились через жар, хриплые голоса неслись из школы без двери. Клинок пульсировал на наковальне своим тихим светом. Промолчал.
Нира тронула меня за локоть.
- Пойдём. До темноты нужно устроиться.
Кивнул Горну. Он кивнул в ответ, взял молот. Звон пошёл за нами вниз по проулку и долго не терялся в треске пламени.
* * *
Нира спала на соседней кровати, спиной к двери, нож под правой рукой, пальцы в сантиметре от рукояти. Даже во сне. Оранжевый свет от окна лежал на её плече, на одеяле, на каменной кладке за изголовьем. Тёплые тона, спокойные, и всё врали.
Сидел на подоконнике, свесив ноги в комнату. Спина упиралась в откос, шея затекла, переложил голову к другому плечу и уставился на зарево Огненного квартала. Ночью оно было красивым. Алое в глубине, с медными переливами к краям. Поверх крыш стояла ровная оранжевая полоса, закат, который не умел заканчиваться. Свечение поднималось от квартала вверх и не таяло, как будто кусок горизонта просто забыл, что ночью так не бывает. Камень подоконника был холодным, шершавым. Ладони упирались в его поверхность, и холод шёл вверх по рукам. Тело ещё помнило дневной жар, и этот холод казался острее, чем должен был.
С нижнего этажа сквозь пол доносилось приглушённое «До» музыкального автомата. Одна нота, бесконечный повтор. Запах прокисшего пива поднимался оттуда же, к нему примешивался сырой камень и слабый, почти неразличимый привкус гари. Тянуло через открытое окно. Весь город привык к этому запаху, перестал замечать. Я ещё не привык.
Смотрел на зарево и не делал ничего. Несколько минут, может дольше. В голове всё ещё стоял звон молота и запах раскалённого металла. Горн с узорами на предплечьях, его ладонь на наковальне, привычным жестом, как перелистнуть страницу, которую перелистываешь каждый день. Дети носились через пламя и кричали от восторга. Над всем этим горело небо. Красивое, жуткое, живое.
Перед закрытыми глазами мелькнуло лицо старухи из Порога. «Чьи это дети?» Потом опять дети в огне. Потом Горн: «мы дети огня».
Большой, указательный, средний, средний, большой. На работе за это не любили. Убрал руки. Стиснул ладони между колен.
Открыл форум. Экран повис в воздухе перед лицом, тусклый, чтобы не разбудить Ниру. Набрал в поиске ПЕТЛЯ_СОБЫТИЯ, прокрутил десяток мёртвых тем с вопросами без ответов. На четвёртой странице попался пост бота.
[SysCleanBot - автоматически]: ПЕТЛЯ_СОБЫТИЯ обнаружена
в зоне District_Fire. Классификация: КРИТИЧЕСКАЯ.
Рекомендация: /rollback.
Расчётное культурное воздействие: НЕЗНАЧИТЕЛЬНОЕ.
Расчётное восстановление структуры: 94%.
Ни одного ответа. Пост висел в пустой теме, как объявление на доске, которую никто не читает. Тысячи лет.
Незначительное. Закрыл пост. Экран мигнул и погас, оранжевый свет вернулся, заполнил комнату, лёг на руки.
Зарево за окном тлело ровно. Ему не было дела до того, что у меня в голове.
Дети горели прямо сейчас, пока я сидел здесь. Каждую секунду, фоновый урон, тела справляются, постоянная регенерация, баланс, выстроенный на сбое. Но урон. Четыре тысячи лет этого урона. Пожар закольцован. Жар не гаснет, фасады не рушатся, люди не умирают, но горят, всё время горят, и перестали это замечать. Можно привыкнуть к чему угодно. Но привычка и норма не одно и то же. Женщина с балкона, которая утром махнула соседке рукой и улыбалась с ожогом второй степени на запястье. Дети играли в пламени, не зная другого, и это звучит как аргумент в обе стороны, и ни в одну до конца.
А Горн с уровнем сорок два. Класс, которого нет в оригинале. Ремесло, которое он знает лучше, чем знал бы любое другое. НЕТ ДАННЫХ в строке отката означало одно: состояния до петли нет. Вернуть некуда. Убрать жар и ничего не поставить на его место.
Они адаптировались к пламени за четыре тысячи лет, сказал я себе. Адаптируются и к отсутствию. Горн кузнец, найдёт себе кузницу с нормальным горном. Дети перестанут бегать через пламя и начнут бегать через лужи. Женщина с балкона будет сушить бельё на ветру, а не на жаре. Всё перестроится. Люди привыкают заново, в этом и есть их главное свойство, привыкать, и четыре тысячи лет назад они привыкли к жару, значит, привыкнут и обратно.
Потом вспомнил его руки. Узоры из шрамов, намеренные, слой за слоем, выжженные как орнамент. Не травма. Гордость. Он не прятал эти руки, он их показывал. «Мы дети огня», и смотрел прямо, без театральности, просто факт. Так же просто, как «я кузнец».
Откат обнулит ему класс. Навыки. Всё, что он строил руками, которые строили четыре тысячи лет. Шрамы останутся, а то, ради чего они были, исчезнет.
Пальцы сжались на краю подоконника. Костяшки побелели, отпустил не сразу.
Школа, где учат детей ходить по углям раньше, чем по камню. Три года ребёнку, и он уже босиком по жару. Храм, в котором молятся пламени, вечному, которое нельзя не благодарить. Четыре тысячи лет всего этого. На предплечьях Горна каждый шрам был на своём месте, не случайность, а выбор.
На потолке над кроватью было пятно сырости, вытянутое, похожее на озеро с заливами. Трещина шла от него к углу и обрывалась на полпути. Таверна стоит в полукилометре от квартала, который горит четыре тысячи лет, и на потолке пятно, и в пятне можно угадать Ладогу, если долго смотреть. Глаза вернулись к окну.
Виски пульсировали. Глаза сохли от долгого смотрения в одну точку.
На прошлой работе был модуль, который семь лет никто не трогал. Я открыл его в пятницу вечером, когда офис опустел. Ошибка была очевидной, из тех, от которых морщишься. Поправил, выкатил в ночь. Через неделю работало лучше. Никто ничего не заметил.
Там не было Горна.
Нира повернулась во сне. Одеяло сползло с плеча, открыло шрам над ключицей, который я раньше не видел. Пальцы метнулись к ножу прежде, чем она успела проснуться, легли на рукоять и замерли. Тело знало своё дело без неё. Дыхание выровнялось через несколько ударов сердца, пальцы разжались, легли обратно на рукоять и остались. Лицо не поменялось. Ни одна мышца, ни складка. Просто сон и готовность, одно внутри другого.
Смотрел на шрам дольше, чем нужно. Форма кривая, с зазубриной, такое не от клинка, об обломок скалы или корень можно получить такое. Пустошь, наверное. Шесть дней назад для неё. Отвернулся к окну.
Оранжевый свет лежал теперь иначе, сместился к полу, зарево подрагивало, как подрагивает пламя свечи от сквозняка. Или глаза устали.
Открыл консоль. Фантомная прохлада на кончиках пальцев, привычная.
> /rollback District_Fire
Кулдаун: ГОТОВО. Последнее использование: Деревня Порог [14 дней назад].
Предупреждение: откат зоны потребует значительных ресурсов
системы. Подтвердить?
Постоянный урон. Четыре тысячи лет.
Закрыл. Закрыл и форум.
Медное тлеющее зарево стояло за окном. Не двигалось никуда. Нота «До» всё ещё шла снизу, ровная, без начала и конца. Пиво, сырость, гарь. Одни и те же запахи, одна и та же нота, один и тот же свет. Ничего не менялось, пока я сидел и думал. Мир не ждал решения.
Ноги затекли на подоконнике, опустил их на холодный пол. Ступни легли на каменные плиты, и холод прошёл вверх, по голеням, по бёдрам. Посидел так, ступнями на камне, руками на коленях. Тишина в комнате была другой, чем тишина в голове. За окном квартал горел. Нира дышала ровно. Нож лежал под рукой.
Дети горели. Это держалось, остальное уплывало.
Утром.
* * *
Нира остановилась у арки.
- Внутрь не пойду. - Она уже отступала к кладке, плечом к оплавленному камню. - Буду здесь.
Кивнул. Нира закрыла глаза, и лицо её сразу стало тем, каким бывало, когда она решала не тратить силы. Нож на поясе, спина к камню, всё на месте.
Жар ударил знакомо. Вчерашний, утренний, густой. Щёки обожгло, губы высохли за два вдоха, в груди перехватило от горячей гари. Прошёл мимо кузниц, мимо хриплых голосов, мимо школы без двери, и свернул к центру квартала, туда, где оверлей вчера горел плотнее всего, где красные рамки ПЕТЛЯ_СОБЫТИЯ наслаивались друг на друга так, что за ними не было видно камня.
Площадь оказалась круглой. Небольшая, метров двадцать в поперечнике, с почерневшими фасадами по кругу. Балконы сверху нависали над пустым пространством, и с них тоже полыхало, и пламя свисало вниз, как бельё, вывешенное сушиться. В центре стоял камень.
Расколот пополам, трещина шла сверху донизу, ровная, будто кто-то ударил один раз и попал точно. Из трещины поднимался огонь, тонкий, прямой, без колебаний, источник, из которого расходилось всё остальное. Четыре тысячи лет назад здесь что-то сломалось, и пламя пошло, и не остановилось.
Навёл /inspect.
Объект: Event_Origin_Fire. Тип: ЯКОРЬ_ПЕТЛИ.
Создан: [ИСХОДНЫЙ_БАГ - 4 207 лет назад].
Четыре тысячи двести семь. Стоял перед камнем, и жар поднимался от трещины прямо в лицо, сухой, горький, постоянный. Треск здесь был громче, первобытный, исходный, от него гудели кости черепа. Площадь была пустой в этот час, только женщина на балконе второго этажа развешивала что-то на перилах и не смотрела вниз.
Открыл консоль. Пальцы легли на команду привычно, как ложатся на знакомую тропу.
> /rollback District_Fire
Подтвердить откат зоны District_Fire? Предупреждение:
откат затронет ВСЕ сущности и культурные данные.
> ПОДТВЕРДИТЬ
ВЫПОЛНЯЕТСЯ...
Руки не дрожали.
Волна пошла от камня.
Не звуковая, не ударная, просто огонь погас в радиусе трёх метров, разом, как выключили свет. Трещина в камне стала тёмной, и в ней ничего не было, просто чёрный разлом в сером камне. Потом волна двинулась дальше, кольцом, наружу, и следующая секция мостовой погасла, и следующая, и пламя на кладке обрывалось ровно по линии. Копоть осталась. Камень остался чёрным. Жар уходил, оставляя после себя всё, что натворил за четыре тысячи лет, и не забирая ничего, кроме себя.
ОТКАТ: 12%...
Волна прошла через здание слева. Пламя на фасаде погасло полосой, снизу вверх, как закрывающийся занавес. На балконе женщина уронила тряпку и отступила к перилам. Огонь под ними исчез, и перила стали просто перилами, чёрными, закопчёнными, холодными.
34%...
Тишина шла за волной. Треск обрывался без затухания, без эха. Просто был и перестал быть. Квартал замолкал секция за секцией, и в освободившееся пространство не приходило ничего. Ни ветра, ни птиц, ни голосов. Пустота, в которой было слышно, как пепел оседает на мостовую.
67%...
Волна ушла за пределы площади, по улицам, по проулкам, и треск умирал дальше и дальше, как будто кто-то выключал комнату за комнатой в огромном доме. Уши звенели. Четыре тысячи лет непрерывного фонового гула, низкой вибрации в камне, щёлканья и шипения, и теперь ничего, совсем ничего, и собственное сердце стучало так громко, что хотелось прижать ладонь к груди, чтобы приглушить.
89%...
Где-то далеко, на краю квартала, последний очаг погас. Звенящая, пустая, оглушительная тишина легла на весь район.
100%
Зона District_Fire: ПЕТЛЯ_СОБЫТИЯ завершена.
Статус огня: ПОГАШЕН. Целостность структур: 91%.
Культурные данные сущностей: СБРОС.
Сработало. Плечи опустились, не знал, что держал их так. Починил.
Что-то сжалось в груди и осталось там.
Стоял посреди площади, и площадь была тёмной. Не мрачной, просто нормально освещённой дневным светом, который падал сверху, откуда-то, где раньше стоял дым и марево. Камень под ногами был тёплым ещё, но уже остывал, и тепло уходило быстро.
Капля упала откуда-то на мостовую. Звук был такой отчётливый в тишине, что я дёрнул головой. Конденсат. Влага, которая тысячелетиями испарялась, не долетев до камня, теперь легла на поверхность. Ещё одна капля, левее. Воздух пах холодным камнем и отсутствием гари, почти неправдоподобный запах.
Женщина на балконе подняла голову. Тряпка лежала у её ног, забытая. Она смотрела вверх. Рот приоткрылся, руки нашли перила и сжали их, и она закричала. Не от страха, от чего-то, для чего я не знал слова. Крик пронёсся над площадью и не утонул ни в чём, тонуть было не в чем.
Мужчина вышел из дверного проёма на углу площади, медленно, как выходят в незнакомое место. Остановился у кладки. Протянул руку, положил ладонь на камень. Ладонь с ожоговыми шрамами на холодном камне. Он держал её там и смотрел на свою руку, и на лице его было выражение человека, который трогает что-то невозможное.
Ребёнок выбежал из проулка. Лет пять, босой, красная кожа, привыкшая к жару. Остановился посреди мостовой, там, где ещё минуту назад полыхало. Протянул руку вперёд, туда, где был огонь. Пальцы схватили воздух. Повернулся к женщине, которая бежала за ним.
- Мама, где огонь?
Пальцы всё ещё сжимались в пустоте.
Кто-то засмеялся за домами, хриплый, неверящий смех. Потом плач, громко, без стеснения, и чьё-то имя, которое звали снова и снова.
Поднял голову.
Небо было голубым.
Просто голубым. Без дыма, без марева, без оранжевого зарева, которое стояло над кварталом всю его историю. Чистое, обыкновенное, весеннее небо с одним вытянутым облаком у края, и свет падал оттуда ровный, белый, прохладный, и ложился на чёрные от копоти фасады, и они выглядели как руины, как памятник чему-то, что закончилось.
Женщина на балконе всё ещё смотрела вверх. Слёзы шли по лицу, и она их не вытирала.
Потом мальчик снова повернулся к матери и потянул её за руку вниз, к себе, и повторил, тише, упрямо, как повторяют дети, когда не получают ответа.
- Мама. Где огонь?
* * *
Прошёл час. Или больше, время здесь текло иначе, без треска, без гула, без постоянного шипения, которое отмеряло секунды лучше любых часов. Теперь отмерять было нечем.
Улицы заполнились людьми. Они выходили из домов медленно, щурились на небо, трогали кладку, смотрели друг на друга и не находили слов. Первые минуты были почти праздничными, кто-то смеялся, кто-то обнимался, кто-то плакал от облегчения. Потом что-то изменилось. Не резко, а так, как меняется погода перед грозой, когда ещё светит солнце, но воздух уже другой.
Шёл к кузнице Горна через квартал, который больше не был Огненным. Копоть на камне выглядела теперь иначе, без пламени под ней она казалась грязью, следами катастрофы, а не частью пейзажа. Одежда жителей из кожи саламандры висела на телах мешками, потускневшая, потерявшая блеск, который придавал ей жар. Женщина у колодца держала в руках кувшин и смотрела на него так, будто не понимала, зачем он ей.
Кузница была открыта. Крыши не было и раньше, но теперь это замечалось, наверху обычный свет, а не оранжевое зарево. Наковальня стояла на месте, чёрная, оплавленная по краям. Горн стоял перед ней.
Спина его была ко мне, широкая, неподвижная. Руки висели вдоль тела, и в правой он держал что-то. Подошёл ближе, он не обернулся, хотя в этой тишине слышно было всё.
Кусок металла в его руке был серым. Тусклым. Обычным. На наковальне лежал второй такой же, и рядом с ним молот, который Горн не поднимал.
Остановился в трёх шагах.
- Горн.
Плечи дрогнули. Он повернул голову, не всё тело, только голову, и посмотрел на меня через плечо. Лицо его было пустым, как кладка без окон.
- Ты.
Одно слово. Без интонации. Он отвернулся обратно к наковальне и поднял руку с куском металла, посмотрел на него так, как смотрят на вещь, которую нашли в кармане и не помнят, откуда она там.
- Это был меч.
Знал. Emberblade. Урон сорок семь до шестидесяти трёх, огненный, прочность бесконечная, пока жив огонь. Теперь: Iron_Bar_common, урон три до пяти, прочность двенадцать из ста. Цифры стояли перед глазами, но называть их вслух не стоило, цифры ничего бы не объяснили.
- Я ковал его три месяца. - Горн говорил медленно, разглядывая железо. - Выбирал руду. Ждал, пока пламя будет правильным, хотя пламя всегда было правильным, но мне нравилось ждать. Моя мать смотрела, как я заканчиваю. Она умерла через год.
Он положил железо на наковальню. Звук был глухой, мёртвый, без того звона, который издаёт раскалённый металл. Положил и оставил лежать.
- А теперь это мусор.
Навёл /inspect. Незаметно, привычно, одним движением мысли.
Сущность: NPC_Gorn. Класс: Гражданин [ПО УМОЛЧАНИЮ].
Уровень: 1. Навыки: НЕТ.
Предыдущие данные: [УДАЛЕНЫ ОТКАТОМ].
Примечание: сущность сохраняет физические модификации
(шрамы, мышечную память), но вся системная идентичность сброшена.
Остались руки, мышцы, шрамы. Тело кузнеца без навыков кузнеца.
Горн повернулся ко мне. Медленно, всем телом. Узоры из ожогов на предплечьях были те же, рельефные, гордые, выжженные слоями за годы. Посмотрел на них, потом на меня.
- Что ты сделал?
Тихо. Так тихо, что пришлось напрячься, чтобы расслышать.
- Я убрал огонь. - Собственный голос прозвучал тонко и жалко. - Он причинял вам вред.
В глазах Горна что-то шевельнулось, какое-то узнавание, будто он наконец понял, с кем разговаривает.
- Вред.
Он поднял руки, показал мне ладони. Мозоли, трещины, следы ожогов, въевшаяся копоть в линиях кожи.
- С восьми лет у пламени. Отец учил, до него дед учил отца. - Помолчал, подбирая слово, не подобрал. - Мы не помнили другого, и что. Огонь был работой. Домом. Дети в нём рождались и умирали, а посередине жили, и это было нормально, и мы не жаловались, это было наше.
Он опустил руки.
- А теперь. - Посмотрел на молот, не взял. - Утром пробовал. Рука знает, куда бить. Бью, железо гнётся, и всё. Раньше я металл чувствовал, как свою ладонь. Сейчас он молчит.
Открыл рот, закрыл. Он был прав. По всем пунктам, по каждому слову, и от этого знания становилось трудно дышать.
- Кто я теперь?
Два слова. Ещё тише. Почти шёпот.
Не ответил. Что-то сдавило грудь, не пустило. Развернулся, пошёл прочь. Горн не окликнул. Шаги гулко отдавались от кладки, и это тоже было неправильно, раньше шаги тонули в треске, теперь звук бежал впереди меня, как разведчик.
Квартал вокруг просыпался к новой жизни, и жизнь эта была растерянной, неуверенной, холодной. Торговец у лотка перебирал товар, который ещё вчера сиял жаром изнутри, а сегодня превратился в бесформенные куски глины. Он брал в руки одну вещь за другой, смотрел на неё, откладывал, брал следующую. Лицо было каменное, только губы шевелились беззвучно.
Женщина с балкона, та самая, что кричала от радости, сидела теперь на ступенях своего дома и держала за руку ребёнка. Мальчик лет пяти, худой, красная кожа, привыкшая к жару. Он дрожал и прижимался к матери, и она кутала его в какую-то тряпку, которая ничем не помогала.
Старик стоял у входа в храм. Двери были открыты, и внутри было темно, огонь, который освещал его тысячелетиями, погас. Просто комната с обгорелыми стенами и пустым алтарём. Старик смотрел внутрь и не двигался.
Прошёл мимо, и он сказал, не оборачиваясь, как будто говорил сам с собой или со мной, без разницы:
- Мы ждали четыре тысячи лет. Не этого.
Ускорил шаг. Хотелось уйти, выйти за арку, оказаться там, где люди не смотрели так, как смотрели здесь, где воздух не пах холодным камнем и пеплом, где не было этой тишины, от которой звенело в ушах.
Школа стояла пустая. Двор, где дети учились ходить по углям, был просто двором, с остывшей золой на земле и обгорелыми игрушками у стены. Никого. Наверное, родители забрали всех домой, не зная, что делать дальше.
Остановился. Достал консоль.
> /rollback
Может быть, можно вернуть всё назад. Вернуть огонь. Вернуть им то, что забрал. Пальцы двигались быстро, привычно.
ОШИБКА: перезарядка активна.
Осталось: 30 дней 23 часа 41 минута.
Дополнительно: откат отката может не восстановить
данные, созданные багом. Культурная реконструкция: НЕОПРЕДЕЛЁННО.
Тридцать дней. НЕОПРЕДЕЛЁННО. Даже через месяц Система не гарантирует. Что значит «не гарантирует», я знал. НЕТ ДАННЫХ, я это тоже знал. Знал вчера, когда нажимал.
Закрыл консоль. Руки опустились.
Пальцы висели над консолью.
Вышел за арку.
Нира стояла там же, где осталась, спиной к оплавленному камню, глаза закрыты. Открыла, когда услышала шаги. Посмотрела на моё лицо, и что-то в её взгляде изменилось, стало острее, внимательнее.
- Плохо?
Кивнул. Слова застряли где-то внутри, не хотели выходить.
- Насколько плохо?
Такой вопрос я бы сам задал ещё вчера. Плечи сжались.
- Я их уничтожил.
Голос прозвучал чужим. Хриплым и тихим, как у Горна, когда он спрашивал, кто он теперь.
Нира не ответила сразу. Смотрела на меня, потом через моё плечо, на арку, ведущую в квартал, который больше не горел. Люди выходили оттуда, шли мимо нас, и в их лицах не было ненависти, только растерянность, только пустота, только вопрос без ответа.
- Идём. - Нира оттолкнулась от камня. - Здесь ничего не исправишь.
Пошёл за ней. Ноги несли сами, голова была пустая, тяжёлая, как после бессонной ночи. Огненный квартал остался позади, тёмный, тихий, мёртвый. Не оглянулся.
* * *
Люди на улице знали.
Новости расходятся быстро, когда город невелик. Взгляды шли спереди, сбоку, из дверных проёмов, из-за прилавков. Никто не кричал и не бросался наперерез. Хуже. Смотрели так, как смотрят на человека, который залил соседям потолок: терпеливое понимание, которое давит сильнее любого обвинения.
Нира шла впереди, чуть быстрее обычного. Плечи ровные, спина прямая, взгляд вперёд. Не оборачивалась, не сбавляла шаг, и я держался за её ритмом, выбирая, куда поставить ногу, и больше ни о чём не думая.
Ремесленный квартал. Уже не Огненный, просто кварталы. Кузнец на углу разглядывал свой лоток так, будто пересчитывал товар на незнакомом языке. Шрамы на его руках поймали солнце, белые, резкие, в некоторых местах заплывшие в плотные узоры. Он не поднял глаз. Просто стоял и разглядывал то, что держал, будто не мог решить, надо ли это нести домой или бросить прямо здесь.
Одна женщина у колодца перехватила мой взгляд, задержала на секунду и отвернулась первой.
Дверь таверны скрипнула. Запаха гари не было. Остановился на полшага, пока это дошло. Нос ещё искал горелое дерево и горячую медь, а их не было, только прокисшее пиво и пыль, и это несоответствие ударило неожиданно. «До» музыкального автомата висело в воздухе, ровное, одна нота каждые три секунды. Вчера раздражала. Сейчас встал у порога и слушал. Тысячи лет одна нота. А если хозяин засыпает под неё? Тронешь, починишь, будет тишина, и непонятно, куда он тогда денется.
Поднялись. Сел на кровать. Матрас продавился, грубая ткань зашершавела под ладонями. Оперся локтями на колени. Борт кровати с резьбой по дереву. Сквозняк по щиколоткам от неплотной двери. Смотрел на трещину в штукатурке напротив, неровную, разветвлённую, похожую на русло высохшей реки. Окно за спиной означало квартал, и поворачиваться к нему не хотелось.
Нира вышла. Шаги по лестнице вниз, пауза, шаги обратно. Поставила кружку на табурет у кровати. Металлическая, вода ещё покачивалась от удара. Опустилась на свою кровать напротив, ноги скрестила, руки на коленях. Молчала.
Взял кружку. Вода была холодной. Два глотка, грудь сдавило.
Нира достала нож, начала чистить лезвие краем рубахи. Медленно, без необходимости.
- Наломал.
- Да.
- Починить можешь?
- Нет. Кулдаун тридцать дней. И даже если бы мог, данные уничтожены. Нечего возвращать.
«До» снизу. Раз. Два. Три.
- Тогда надо как-то дальше.
- Им нужно. - Пальцы на кружке холодели, и я не чувствовал холода. - А мне?
Нира убрала нож. Смотрела левее меня, в штукатурку или сквозь неё, в какое-то место, которого здесь не было. Такое лицо бывает у человека, который опоздал на похороны.
- Тебе тоже.
- Ты не первый, у кого так вышло. И не последний, наверное.
Я посмотрел на неё. Она держала нож обеими руками, большой палец лежал на обухе. Не чистила уже, просто держала. Взгляд всё туда же, мимо меня, в Серое урочище или ещё дальше. В лице не было ничего читаемого.
Поставил кружку, вода плеснула через край. Навалился спиной на стену за кроватью, затылок нашёл холодный камень. Закрыл глаза.
Пожар был багом. Горн стоит с куском железа. Всё правильно. Пожар причинял урон. Методично, бесконечно. Дети горели. Сколько я слышал это в собственной голове: дети горят, нужно починить, нужно убрать. А потом нажал подтверждение, и дети замёрзли, и стало хуже.
Четыре тысячи лет квартал горел, и люди жили. Четыре часа, и я.
Горн спрашивает, кто он теперь. Торговец держит мусор, который вчера был делом жизни. Женщина кутает ребёнка, привыкшего к жару, в тряпьё, которое не греет. Бот повесил ответ «культурное воздействие: незначительное» и забыл. Незначительное.
На Земле я тоже такие модули трогал. Там вокруг людей не было, или я их не замечал, разницы тогда не чувствовал.
Вектор. Имя всплыло само. О нём шепчутся в городе: был такой же. Пришёл, увидел, начал чинить. Сто пятьдесят лет назад. Что из этого вышло, известно: Орден, стабы, «пропустят, если заплатишь». Разница в масштабе, не в методе.
Открыл глаза. Трещина в штукатурке напротив не изменилась. Дверной косяк с отколотым углом. Паутина в верхнем углу, сухая, пустая, паук давно ушёл. Такие вещи замечаешь, когда не хочешь замечать главное.
Открыл системный журнал. Руки двигались раньше мысли.
Целостность ядра: 11.7%.
Запланированное отключение: выполняется.
Расчётное время до полного отключения: [вычисляется...]
Было двенадцать процентов. Откат потратил ресурсы ядра, которых и так не хватало. Уничтожил культуру и одновременно придвинул конец мира на неизвестное расстояние.
Закрыл журнал.
Нет команды для «я был неправ». Нет отката. Ничего.
«До» снизу. Ровное. Бесконечное.
Нира сидела напротив, не двигалась. За окном квартал стоял тёмный, без зарева.
- И что теперь? - Нира смотрела в окно, не на меня.
Моргнул. Повернул голову. Трещина на штукатурке, потом её лицо, потом снова трещина.
- Не знаю.
Глава 10. Приватный чат
Лес пах хвоей и прелой корой, и после двух дней гари и холодного камня запах шёл в грудь слишком густо, и я никак не мог к нему привыкнуть. Дышал через нос, задерживал, выдыхал, дышал снова. Смола, мох, сырость под корнями, далёкие грибы где-то за деревьями, и всё это накапливалось в лёгких и не давало ощущения нормальности, только подчёркивало, насколько ненормальным было всё предыдущее.
Нира шла впереди. Спина прямая, шаг чёткий, экономный. Она умела идти так, будто лес был продолжением её тела, без лишних движений, без хруста веток там, где его можно избежать. За ней шёл шумнее, неточнее, плечом задел нависшую ветку, и с неё полетели капли. Два дня назад это раздражало. Сейчас не заметил.
Деревья были старые, с корой в мху, местами коричневой, местами серо-зелёной, живой, насыщенной. Смотрел на них жадно и не мог перестать. Цвета. Просто цвета, нормальные, лесные, без красных контуров ПЕТЛЯ_СОБЫТИЯ, без системных пометок поверх коры. Над кронами синело небо. То же голубое, что было вчера и позавчера, и каждый раз смотрел на него дольше, чем нужно.
На развилке путей заметил ветку.
Берёза, толщиной с запястье, выросла прямо сквозь камень. Просто вошла в гранит с одной стороны и вышла с другой. Гранит не треснул. Принял её. Присел. Потрогал место соединения. Поверхность была твёрдой, шершавой, настоящей. Ветка тоже была настоящей, кора прохладная под пальцами, влажная, живая. В точке, где они сходились, кончики пальцев уловили пустоту, как будто материя обрывалась и больше не начиналась.
Нира остановилась на несколько шагов впереди. Повернула только голову, и этого хватило.
- Пошли.
Не торопила и не командовала. Просто факт: есть движение, можно к нему присоединиться. Встал.
Что-то стало тише, и я не сразу понял что. Птицы. Не разом, постепенно, по одной, как замолкают те, кто уже знает, что будет дальше. Сначала что-то звонкое в кронах правее дороги. Потом короткое хриплое карканье слева, оборвавшееся на полуноте. Потом тишина, глухая, объёмная, заполненная только нашими шагами.
Нира уже не шла.
Рука на клинке. Плечо чуть выдвинулось влево, перекрывая меня. Взгляд пошёл по периметру: справа, прямо, слева, снова справа. Медленно, без резких движений.
Потом они вышли.
Десять человек вышли из-за деревьев спокойно, без крика, без рывка. Двое справа, трое слева, остальные перед нами. Кожаная броня, одинаковая до единой заклёпки. На нагрудниках символ: круг, а внутри крест. Слышал это слово на Перекрёстке, мельком, вполголоса. Орден Стабильности. Оружие у них было системным: лёгкий стат-мерц вдоль лезвий, голубоватый, как экран в тёмной комнате. Хорошее оружие. Не вытащили до конца, держали в руках, но не направляли. Тишина, которая бывает только когда люди тренированы её держать.
Нира не шевелилась. Клинок на полдюйма из ножен, не больше.
Горло сухое, знакомо. Сутки с момента отката. Это видел любой, кто держит стабы.
Навёл взгляд на ту, что стояла впереди. Короткие волосы, шрам через скулу, старый и бледный. Взгляд ровный, без агрессии, без холода. Оценивающий. Она смотрела на меня, только на меня, как будто Ниры не существовало.
/inspect
Сущность: NPC_Lira. Класс: Дозорный. Уровень: 38.
Фракция: Орден Стабильности [ЗВАНИЕ: Капитан].
Экипировка: [ПРОИСХОЖДЕНИЕ: СТАБ] полный комплект.
Тридцать восемь. Быстро скользнул по остальным, выборочно, глазами. Тридцать третий. Тридцать шестой. Тридцать первый. Все с той же пометкой происхождения снаряжения. Из стабов, полный комплект у каждого. Не ватага случайных людей, это элита, которую собирали намеренно, экипировали намеренно, и десять против двоих было не по ошибке.
Нира считала. Видел по её глазам: десять. Два. Нет.
Командир сделала шаг вперёд, без спешки. Сложила руки за спиной. Поза человека, который уже получил то, за чем пришёл.
- Орден Стабильности. Мастер просит о встрече. Маршрут уже выбран. Оружие можете оставить при себе.
Голос сухой, без подъёмов, как у человека, которому не нужно объяснять дважды.
Нира не убрала руку с клинка. Повернулась ко мне едва-едва, только глазами. Ничего не спросила вслух.
Десять на двоих. Уровни тридцать и выше, полная стабовая экипировка. Лес с трёх сторон, и за деревьями могут быть ещё. Она считает быстрее меня.
Посмотрел на командира. На запястья бойцов, расслабленные, но не совсем. На полуготовое оружие. Они знали, что согласимся. Просто ждали, когда мы поймём то, что они уже поняли до нас.
Поднял руку ладонью вниз, к Нире. Медленно. Потом кивнул командиру.
- Хорошо.
Клинок вошёл в ножны. Медленно, без резкости. Плечи у неё остались напряжёнными.
Один из бойцов поправил ремень.
Командир кивнула. Один жест рукой, двое бойцов сдвинулись вперёд, образуя коридор. Они знали, куда вести.
Шагнул за ней. Хвоя, мох, сырая кора. Тропа осталась позади, впереди шли десять человек, которые знали, куда идти.
* * *
Данж начинался там, где кончался лес. Скала выросла из почвы без предупреждения. Поросшая плющом по нижней части, выше голая, серая, с дверью из кованого металла, открытой внутрь. Двое у входа стояли по обе стороны как часть кладки.
Командир провела нас внутрь.
Сразу ударила тишина. Организованная, рабочая. Мягкое эхо в обработанном коридоре, голоса за перегородками, стук инструментов где-то дальше по галерее. Деловые звуки, без лишнего. Потрогал поверхность мимоходом. Тёплая. Каменные проходы должны быть холодными. Ладонь осталась на секунду лишнюю. Факелы на кронштейнах горели без тени и без запаха гари. Свет слишком равномерный, без мерцания. Системные источники, задекорированные под факелы. Кто-то вложил навык в детали.
Нира шла рядом, молча. Рука у бедра, расположена правильно. Она замечала то же, что и я. Организованное место с деловым ритмом, живое.
В переходе разминулись с женщиной, тащившей свёрнутый пергамент под мышкой. Руки в пятнах чернил. Что-то на её запястье мигнуло оранжевым. Навык, изменённый вручную кем-то, кто умел работать с такими вещами. Прошли мимо открытой двери. За ней несколько человек вокруг стола, свечи, карты. Исследователи. Вектор строил что-то сложнее, чем армию.
У развилки командир остановилась. Повернулась к Нире первый раз с момента засады.
- Здесь.
Уже смотрела вперёд, в проход.
Нира посмотрела на меня. В этом взгляде было несколько вопросов, ни один из которых не прозвучал вслух.
- Нормально.
Она не убрала взгляд. Потом медленно кивнула и встала у перегородки, скрестив руки. Один из бойцов остался в трёх шагах от неё. Формально охранял ход.
Меня провели дальше.
Помещение в конце короткого перехода. Стол. Два стула. Окно в наружную стену. На столе стоял кувшин с водой и два стакана. Прохладная керамика, влажная снаружи. Ничего лишнего, ничего случайного. Кто-то думал об этом заранее.
Командир вышла. Дверь оставила открытой.
Сел. Прислушался. Далёкие голоса, мерные шаги патруля за перегородкой. Подождал минуту и потянулся к консоли, привычным движением, почти машинально. Заработала. Не заблокирована. Фантомная прохлада на кончиках пальцев, знакомая.
/inspect
Объект: Dungeon_Chamber_014 [ПЕРЕПРОФИЛИРОВАН].
Защитные заклятия: ОТСУТСТВУЮТ.
Наблюдение: АКТИВНО [уровень доступа: GM].
Перечитал. Ладонь медленно сжалась на краю стола.
GM. Значит, Вектор видит консоль. Видит каждый /inspect, каждую команду с момента, как я переступил порог, а может и раньше. Значит, он уже знал, что я нашёл строку наблюдения. Консоль работает, и либо ему всё равно, либо он именно этого и хотел. Оба варианта плохие.
Налил воды. Выпил. Руки были заняты.
Посмотрел на дверь.
За ней переход. За ним Нира. Боец в трёх шагах от неё, и никто вслух не говорил, что это не охрана прохода. Оружие при ней, ничего не отбирали. Просто рядом стоит. Что-то в животе стянулось чуть сильнее, чем нужно.
Прошло пять минут. Потом ещё несколько. Считал шаги патруля. Один проход, второй, потом тишина, и в ней только моё дыхание и тихое потрескивание системного источника в плафоне факела. В паузах между проходами думал о Нире. О бойце, который стоял возле неё и никуда не уходил. Встал. Прошёлся до окна. Внутренний двор. Бочки у ограды, деревянный навес, что-то накрытое холстиной. Двое с орденскими нагрудниками. Снабжение. Настоящее.
Вернулся к столу. Сел.
Он мог войти сразу. Не вошёл. Каждая минута здесь была частью разговора, который ещё не начался. Начинать будет он, когда решит, что пора. Я просто ждал.
Напряжение не ушло. Стало тише, плотнее. Мышцы перешли в другой тип готовности, хуже острого: не боль, а постоянный фоновый зуд, от которого некуда деться.
Потрогал край консоли. Ничего не набрал. GM-строка стояла в статусе. Он видел и это.
Ниры в этом помещении не было. Без неё комната казалась меньше, чем была.
Где-то в конце коридора скрипнула дверь.
* * *
Шаги были тихие. Без паузы на пороге. Человек, который давно решил, что торопиться некуда.
Вектор вошёл без стука. Высокий, чуть выше меня, в тёмной одежде без знаков ордена. Хорошо выкроенная ткань, никаких складок, никаких значков статуса. Руки опустились к бёдрам спокойно: чистые ладони, ни мозолей у основания пальцев, ни старых шрамов. Сто пятьдесят лет в этом мире, и кулаками он не работал. Умеет не попадать в ситуации, где нужно.
Закрыл дверь. Сел напротив, взял свой стул так, как берут стул за собственным столом. Посмотрел не на меня. На консоль. На пустую строку ввода, куда я так ничего и не набрал.
Молчал секунду. Потом поднял руку.
Воздух у перегородок дрогнул едва заметно, как мерцание экрана при переключении режима. Системное окно открылось прямо в поле зрения, поверх помещения:
[Приватный канал: Player_Kirill <-> Player_Vector]
Канал зашифрован. Внешнее наблюдение отключено.
Покалывание прокатилось от шеи до запястий. Неприятное, как статика перед грозой. Шифрование ощущалось физически. Будто всё накрыли куполом. Снаружи осталось всё, включая GM-строку из статуса.
Вектор посмотрел на меня.
- Теперь нас никто не слышит. Даже мои люди. Поговорим как два программиста.
Без подъёмов, без демонстрации.
Если бы хотел убить, сделал бы уже. Значит, нужно что-то другое. Рука сжала стакан. Холодная керамика не успокаивала.
- Слушаю.
Вектор чуть склонил голову. Отметка, не кивок. Взял свой стакан, повертел в руках, поставил. Пить не стал. Сделал паузу, в которой не было ничего театрального.
- Ты сейчас думаешь: сто пятьдесят лет в системе что-то сделали с человеком. Что власть меняет людей. Что я злодей, которому нужна красивая речь перед финальным боссом.
Ничего не сказал. Смотрел на его руки, спокойно лежащие на столе.
- Сто пятьдесят лет назад я думал то же самое, что ты. Слово в слово. Нашёл гайд на форуме, добрался до Сердца Сервера, нашёл там кое-что, что мне не понравилось. Вернулся. Начал чинить. Три деревни получили стабильные источники воды. Рядом с одной из них потом случился обвал. Деревни не стало. Я починил не то, что нужно. Или вовремя не посмотрел на нагрузку. Назад было нечего.
Керамика холодная под ладонью.
- И я снова чинил. Снова ломал. Долго. Потом перестал. Не потому что сдался. Потому что понял вещь, до которой ты ещё не дошёл: мир живёт своими ошибками. То, что ты видишь как сбой, они прожили как тысячелетие.
- Люди горели в Огненном квартале.
Вышло тише, чем хотел. Почти в стакан.
Вектор не отвёл взгляда. Не подобрал слова быстрее, не смягчил.
- Люди в Огненном квартале жили четыре тысячи лет. Сырьё, жар, гарь в каждом переулке. Это была их культура, их навыки, внуки их детей. Они адаптировались к той среде. Ты убрал среду. Они остались.
Поставил стакан. Твёрдо, стук вышел громче, чем нужно.
[ПРИВАТ] Вектор: Ты видел, что бывает, когда «чинишь». Огненный квартал. Четыре тысячи лет культуры - в ноль. Это не я сделал. Это ты.
Строчка висела в системном окне поверх его лица. Он видел её с той же стороны, что я.
[ПРИВАТ] Кирилл: Дети горели.
Напечатал и отпустил. Тишина. Вектор смотрел на текст. Зрачки без движения. Веки не дрогнули.
[ПРИВАТ] Вектор: Дети жили. Теперь существуют. Почувствуй разницу.
Горло сдавило.
Кулак сжался под столом. Открыл рот. Закрыл. Что-то горело под рёбрами и не уходило.
Вектор убрал системное окно в сторону. Встал, прошёл к окну. Встал к свету, смотрел на внутренний двор сквозь стекло.
- Огненный квартал был адаптацией к условиям, которые Система создала и поддерживала. Ты убрал условия. Называй это как угодно. Результат один: кто-то решил за них, и это решение у них не спрашивали.
Зацепилось кое-что ещё. Он говорил: мир живёт своими ошибками, эволюция, не нужно вмешиваться. И одновременно держал стабы. Участки, где Система не менялась. Где всё стоит в первозданном виде, заморожено. Защищал эволюцию и монополизировал исходник. Не стал говорить это вслух. Запомнил.
- Там есть ещё кое-что. Я не просто наблюдаю за эволюцией. Я хочу перехватить shutdown. Перезапустить этот мир заново. Чисто, под контролем, без четырёх тысяч лет накопленных ошибок. Это можно сделать. Если не мешать.
Что-то опустилось в животе. Двор за стеклом жил своим ритмом: бочки, навес, холстина на чём-то большом.
- Я написал маме. Давно.
Произнёс в стекло. Тот же голос, те же слова, но профессиональный тон из них ушёл. Осталось что-то без лишних интонаций.
- Она не ответила.
Ждал. Не понимал, зачем он это говорит, и не понимал, нужно ли что-то отвечать.
Вектор обернулся.
- Зерно тоже пытался достучаться. Никто не отвечает. Потому что там 2019-й. Или 2020-й. Для них секунды. Для нас века.
Потом заговорил по-русски.
Без объявления, без перехода. Просто перестал использовать общий язык мира и произнёс слова, которые я знал из другой жизни. Знакомый ритм фразы, ударения на правильных слогах, мягкость в окончаниях. Долгие гласные, которые в местном языке резкие и короткие, здесь растянулись и сели на место, как будто так и должно быть.
Горло стянулось раньше, чем дошёл смысл.
- Мы с тобой одинаково попали сюда.
На руках поднялись волоски. Сидел и не двигался. Рот приоткрылся и закрылся.
- Одинаково видим это место. Ты понимаешь, что я говорю не о системе и не об ордене.
Вектор говорил ровно, почти без интонации, будто знал, что большего не нужно.
Его русский был немного другим. Чуть короче в некоторых словах, чуть резче. Пара оборотов из девяностых, которые я застал только хвостом. Но «хабр-смелость» было живым, сегодняшним, и это означало, что он следил. Читал. Знал, что там происходит.
Провёл рукой по столу. Пальцы прошли по краю и нашли холодную керамику стакана, зацепились за неё.
- Ты здесь пять дней. Я здесь сто пятьдесят лет. У меня полный доступ к базе знаний, GM-тулзы и весь Орден. У тебя одна команда и хабр-смелость. Уходи.
Спокойно, без злости.
Смотрел на него.
Он говорил правду. Сто пятьдесят лет. Знает этот мир лучше, чем я знаю что-либо вообще. GM-права, доступ к форуму, организация, которая занималась стабильностью профессионально. Пять дней. Один разговор с создателем мира, который большую часть времени бредил, и собственная версия того, что правильно. Новичок, решивший переписать то, во что другой вложил полтора века.
Вода в стакане без вкуса, без температуры.
- Я слышу тебя.
* * *
Вектор вернулся к столу. Не спешил.
- Ты полезен. Новый игрок, свежие команды, угол зрения, которого у меня нет. Я не убью тебя. Работай на Орден. Чини то, что я скажу. Не лезь к ядру. Получишь комфортную жизнь, ресурсы, расширенные права на форуме.
Короткая пауза. Он ждал.
Тишина. За перегородкой шли голоса, рабочие, будничные, кто-то с кем-то о расписании. Внутри ничего не торопилось к ответу.
Стакан в руке успел согреться от ладони. Пальцы не разжимались.
- Нет.
Вектор не моргнул. Поставил свой стакан аккуратно, без стука. Встал и прошёл к окну медленно, без взгляда назад. Контровой свет лёг на его плечи, руки сложились за спиной. Человек, который повернулся и не ждёт удара.
Двор за стеклом жил своим. Бочки, навес, чьи-то шаги по брусчатке.
- Тогда ты доберёшься до ядра через мой контроль.
Плечи не двинулись.
- Или не доберёшься.
Не угроза. Прогноз.
Ста пятидесяти лет опыта хватало, чтобы построить институт, и этого опыта было нечем крыть. Тот, кто хранит оригинал, определяет, что считать ошибкой.
Вектор повернулся. Лёгкая улыбка, не злая, почти усталая.
- Упрямство не стратегия. Но я помню, каково быть новым.
Шагнул к двери. Открыл и не закрыл.
Прямоугольник коридора в проёме, свет и силуэты.
Щелчок пришёл секундой позже. Тонкий гул шифрования оборвался. Голоса, шаги, тяжёлый воздух из коридора навалились разом, резче, чем ожидал. Системное окно мигнуло последний раз:
[ПРИВАТНЫЙ КАНАЛ ЗАКРЫТ. Продолжительность сеанса: 47 минут.
Сообщения: НЕ ЗАПИСАНЫ - шифрование активно.]
Сорок семь минут.
Разжал пальцы медленно, по одному. Белые следы на керамике от хватки. Не заметил, когда появились.
Встал. В коридоре один из бойцов ждал у двери, тот же профессиональный взгляд, без выражения. Кивнул.
Нира стояла у перегородки напротив. Руки скрещены, спина прямая. Взгляд нашёл меня сразу, по месту, где я должен был оказаться. Кожа, сталь, знакомое до автоматизма. Что-то в грудной клетке сдвинулось и стало чуть менее плотно. Она ничего не сказала.
Боец повёл нас вперёд. Коридор, переход, скрип металлической двери. За ней лес, сырой и хвойный, вечерний уже, синева густела в кронах. Боец остановился у скалы, жестом показал направление и не пошёл дальше.
Шагнул за порог. Холодный воздух прошёл в лёгкие глубже, чем ожидал. Выдохнул медленно. Где-то за деревьями птица подала голос и замолчала.
Нира пошла первой.
* * *
Хвоя под подошвами и далёкий скрип ветки. Вечер выжал из леса всё лишнее и оставил только это. Синева в кронах сгущалась медленно, без спешки, и я шёл и смотрел на неё. Смотреть на что-то другое было труднее.
Нира шла рядом. Не впереди, как утром, когда тропа требовала ведущего. Рядом, потому что тропа сузилась между двумя соснами, и плечо прошло вровень с моим.
Молчала долго. Просто шла, и молчание её не давило, просто существовало, как часть тропы.
- Поговорили, - сказал я наконец.
Голос вышел хриплый, сухой. Горло саднило, не от жажды, просто сорок семь минут без права выдохнуть дали о себе знать.
- Слышу, - сказала Нира.
Стал пересказывать. Коротко, по порядку: аргументы, логика, предложение. «Работай на Орден, не лезь к ядру». Отказ. «Или не доберёшься». Нира слушала, не перебивая, только один раз спросила про стабы: сколько их и насколько крепко держит, и я ответил как мог: сам не знал точно.
Потом замолчал. Тропа прорезала небольшой подъём, корни вылезли из земли поперёк, влажные от лесной прели. Перешагнул. Тёплый густой дух прелых листьев поднялся снизу, и я неожиданно обрадовался ему, как чему-то, что хорошо понимает, что делать.
- Значит, он говорит: то, что выросло поверх ошибок, и есть жизнь, - сказала Нира.
- Приспосабливается. Убрать ошибки, значит убить то, что выросло поверх.
- Понятно.
Помолчала несколько шагов. Сосна слева уронила иглу, иголка медленно прокрутилась в воздухе и легла на кору корня. Нира посмотрела на неё, не замедляясь.
- Он сидит на стабах?
- Контролирует их. Всю сеть.
- Там чисто. Там он следит за каждым углом.
- Да.
Кивнула коротко, как человек, которому дали последнюю цифру в известном уже расчёте.
- Значит, говорит «бедность закаляет» из золотого дворца.
Остановился.
Она прошла ещё два шага, потом обернулась, без нетерпения.
Сорок семь минут я пытался поймать это противоречие. Формулировал. Думал, что надо копать глубже, что тут скрытая архитектура, что за этим что-то сложное. Нира сказала это за одну фразу, между соснами, с иголкой на корне рядом.
- Точнее не скажу.
Пошёл дальше. Плечи чуть отпустило, и только сейчас понял, что держал их поднятыми всю дорогу, от скалы до этого места.
- Сколько у него людей? - спросила она.
- Много. Уровни тридцать и выше, снаряжение из стабов полным комплектом.
- А у нас?
Лес приоткрыл просвет впереди, жёлтый свет лёг на тропу. Сказал туда, в этот просвет:
- Мы.
Нира ничего не ответила. Потом:
- Мало.
- Начало.
Она не возразила. Не согласилась. Просто шла дальше.
Перекрёсток встретил жареным и гомоном. Нира нашла ночлег там же, где и прошлый раз, угловая комната над таверной с окном на переулок. Поела молча. Я почти не ел, только пил воду и смотрел, как гаснет свет в переулке.
Зерно жил в подвале под постоялым двором. Нашёл его там ещё несколько дней назад: наткнулся на озон и покалывание у люка в полу, сделал /inspect, увидел что-то неправильное в данных и спустился. Помедлил у лестницы, прежде чем понял, что ждать незачем.
Теперь спустился по скрипучим ступеням, оставив Ниру наверху.
Подвал был тёмным. Единственный свет шёл от респаун-точки, слабое голубоватое пульсирование в дальнем углу, тихое, как пульс. Зерно сидел возле неё, прислонившись к кладке, и качался чуть вперёд и назад. Тихо, почти незаметно. Бормотание тянулось без пауз, само себя не замечая: слова, распознать которые стоило усилий, потому что половина их уже не была словами.
Сел возле него. Не напротив, именно рядом, к той же кладке, холод через одежду. Подождал. Пульсирование точки отдавалось в ладонях покалыванием, слабым, ритмичным, как чужое сердцебиение, к которому приложили руку.
Зерно не повернул голову. Бормотание тянулось: маму, маму, не ответила, может, не дошло, маму пинганул.
Сжал зубы.
Вектор тоже писал. Никто не ответил. Потому что там секунды. Для них всё ещё тот же вечер.
- Вектор, - сказал я.
Тихо, без нажима. Просто слово, вброшенное в темноту.
Зерно вздрогнул. Плечи поднялись, потом опустились. Качание остановилось. Руки, сложенные на коленях, замерли. Потом голова повернулась медленно, как у человека, которого возвращают издалека.
Глаза сфокусировались.
Секунда. Может две. Свет точки падал на его лицо сбоку, и в этом свете видно было, каким он бывает в ясности: другой. Резче. Старше по числу раз, которые можно смотреть на одну и ту же ошибку без права её исправить.
- Виктор. Лозинский. Сисадмин.
Тихо, сухо, без эха.
Молчал. Ждал.
- Пришёл, как ты. Хотел, как ты.
Короткая пауза.
Пульсирование точки не останавливалось. Покалывание в ладонях, неизменное, настойчивое.
Зерно прикрыл глаза. Подбородок чуть опустился, и слова пришли из той же глубины, что и первые:
- Стал не как ты.
Пауза. Потом:
- Пока.
Потом глаза закрылись. Плечи опали, качание возобновилось, медленно, почти незаметно, и бормотание вернулось: маму, маму, не ответила.
Сидел возле него ещё долго. Слово «пока» не уходило. Пульсирование точки считало время вместо меня. Холод кладки добрался через ткань до кожи, и я не стал пересаживаться.
Потом поднялся.
Ступени скрипели на подъёме громче, чем на спуске.
В комнате над таверной было тихо. Нира спала на своей стороне, лицом к перегородке, дыхание ровное. Сел у окна, оперся на раму. В переулке пусто. Где-то в квартале пьяный голос, потом смолк. Свет луны лежал на мостовой серыми квадратами между тенями.
Потянулся к консоли. Не за командой. Просто привычка: проверить.
Целостность ядра: 11.4%.
Дельта: -0.3% с момента последней проверки.
Скорость деградации: ускоряется.
Убрал окно. Закрыл глаза.
Одиннадцать целых четыре. Было одиннадцать семь. Падало, пока я слушал Вектора. Падало, пока шёл через лес. Падало, пока сидел с Зерном в темноте. Просто падало.
Путь до ядра был на юге. Через территорию Ордена или мимо неё. Ждать дольше уже не имело смысла.
Глава 11. rm -rf
Свеча догорала.
Огарок, почти ноготь высотой, оплывал на деревянном подоконнике, жёлтое пятно в ночной темноте. Воск стекал на старые доски, и жирный запах горячего фитиля мешался с древесной пылью каморки. За перегородкой кто-то храпел размеренно, в противофазе с аккордом из таверны внизу. Одна нота, приглушённая досками пола, повторялась каждые двенадцать секунд. За час в этой каморке научился её не слышать. Сейчас снова слышал.
Спать не получалось.
Сидел на жёстком стуле у подоконника, ладони в воздухе перед грудью. Консоль открыта, кончики покалывало фантомным холодом. На Земле было похожее: клавиатура в три ночи, когда голова ещё не совсем проснулась, а руки уже знают дорогу. Здесь клавиатуры не было, но тело узнавало.
Из щелей тянуло сквозняком, на предплечьях мурашки, и заметил их только когда повернулся. Голова была в форуме.
Открыл его час назад без конкретной цели. Лёг, закрыл глаза, полежал пятнадцать минут. Потом встал и включил. Не потому что знал, чего ищет. Просто Вектор сказал «у меня полный доступ к базе знаний» голосом человека, который прочитал всё, что там есть. Сто пятьдесят лет форумных страниц. Но полный доступ не значит правильный поиск.
Начал не с документации. С метаданных.
Двигался по прямым запросам к базе, командами через консоль. Публичные разделы, архивы, заблокированные треды с пометками устаревшего контента. Половина запросов возвращала ошибки доступа. Четверть возвращала пустоту. Но в одном запросе что-то мигнуло.
> Раздел: internal_dev [ТОЛЬКО ДЛЯ АДМИНИСТРАЦИИ]
> Статус прав доступа: ПОВРЕЖДЁН. Отображение доступных фрагментов.
Красный текст.
Руки остановились над строкой ввода.
Права повреждены. Система не могла решить, закрыт раздел или открыт, и отображала то, что нашла, как мусор через сломанный фильтр.
Набрал запрос на раздел. Форум начал грузиться.
Медленно. Записи тянулись сверху вниз, по две-три, потом пауза, потом снова. Часть букв мерцала, часть символов превратилась в квадраты-артефакты. Одна запись загрузилась наполовину, зависла и продолжила через мгновение. На хорошем модеме в девяностые страницы открывались примерно так, и тело помнило этот ритм: ждать, не нажимать ещё раз, не торопить.
Список тредов. Восемнадцать записей. Даты последних постов в знакомом формате, ДД/ММ/ГГГГ ЧЧ:ММ. Числа в колонке лет были пятизначными.
Одиннадцать тысяч лет назад.
Провёл взглядом по никнеймам. seed_main, v0id_arch, cleanup_bot. Зелёным, как в старых терминалах. Аватарки битые: серые квадраты, у одного наполовину загруженное лицо, у другого цветное пятно без формы. Наверху страницы пометка [ТОЛЬКО ДЛЯ АДМИНИСТРАЦИИ], красная, мигающая неровно, с паузами, как лампочка перед тем как перегореть.
Узнал не формат и не жанр. Узнал дух. Усталость в коротких заголовках. «Финальный чеклист деплоя». «Состояние ресурсов на момент ухода». «Логи аномалий NPC, смотри сам». Внутренний трекер задач. Последний спринт перед тем, как все разойдутся. Сидел в таких сам. Тот же дух. Дедлайн пройден, сдача сделана, осталось прибрать.
Вектор сидит на форуме полтора века.
В голове покалывало, не от консоли. GM-аккаунт давал расширенные права, но раздел internal_dev был уровнем выше. Права создателей, не администраторов. Вектор нашёл GM-аккаунт, а не аккаунт разработчика. Либо не искал дальше, либо права его аккаунта не давали доступа, и сломанный фильтр впустил первого, кто спросил.
Зерно произнёс его настоящее имя и ушёл обратно в туман. Виктор Лозинский, сисадмин. Имя не рычаг.
Читать чужую переписку, которую писали для своих. Руки зависли над вводом. Потом набрал запрос.
> Загрузка треда #00041... [ЧАСТИЧНОЕ ВОССТАНОВЛЕНИЕ]
Прогресс-бар завис. Курсор мигал, пять, восемь отсчётов. Потом записи потянулись вниз рывком, с пропусками. Чёрные полосы с пометкой [ДАННЫЕ ПОВРЕЖДЕНЫ] на местах, где данные не восстановились.
Дебаг-оверлей подсвечивал битые места жёлтым. Как кто-то прошёлся по документу маркером, но не по тексту, а по пустотам. Читать получалось только фрагментами.
Свеча потрескала и оплыла ещё.
Над головой скрипнули половицы, протяжно, кто-то прошёл и затих. Храп за перегородкой не изменился. Аккорд из таверны. Сквозняк в плечо. Руки привыкли к холоду консоли и уже не чувствовали его.
Первые записи:
> [seed_main] Тред закрытый. Финальные решения. Только для нас.
> [v0id_arch] Понял.
> [seed_main] Смотрел логи за последние два года. Активных сессий ноль.
> [seed_main] Пора запустить процедуру.
Чёрная полоса на треть экрана. [ДАННЫЕ ПОВРЕЖДЕНЫ].
Потом:
> [v0id_arch] ты смотрел логи NPC за тот же период?
> [seed_main] это другое.
> [v0id_arch] не другое.
> [seed_main] v0id. нет игроков. два года.
> [v0id_arch] я знаю сколько игроков.
Ещё пауза. Ещё [ДАННЫЕ ПОВРЕЖДЕНЫ], короче.
Ладонь сама легла на колено, сжалась.
Прокрутил ниже. Ещё восстановленный фрагмент:
> [v0id_arch] 14:23: поведенческие паттерны у части объектов вышли за рамки скрипта.
> [v0id_arch] 14:23: это задокументировано. я отправлял баг-репорт в феврале.
> [seed_main] 14:25: баг-репорт я видел.
> [seed_main] 14:25: это не меняет решение.
Пробел. [ДАННЫЕ ПОВРЕЖДЕНЫ]. Потом один фрагмент, половина пустая:
> [v0id_arch] 14:31: если это не баг
На этом обрывалось. Дальше темнота.
Горло сжалось.
Если это не баг. v0id_arch набрал это в 14:31 и отправил, и либо ответ похоронен в повреждённых данных, либо его не было, либо был таким, что не захотели хранить.
> [seed_main] 14:36: кто будет подтверждать? мы уходим.
Выдохнул через нос.
Паук в углу потолка, у самого стыка с перекрытием, тянул нить куда-то вбок. Маленький, с ноготок мизинца. Мгновение смотрел на него и не понимал, зачем.
Они уходили. Сервер оставался без присмотра. И кто-то из них, прежде чем уйти, написал команду, которая должна была сработать через достаточно большое время. Failsafe. Если никто не вернётся, данные нужно почистить.
Аккорд ударил снова.
Сквозняк тянул, мурашки на предплечьях давно стали фоном. Огарок свечи оплывал последним миллиметром. Голубоватый свет консоли ложился на стол, на руки, на старое дерево. Мертвенный, без дрожи. Тени от свечи, наоборот, жили.
Прокрутил к концу фрагмента. Дальше [ДАННЫЕ ПОВРЕЖДЕНЫ], потом ещё строчки, потом снова темнота. Последнее, что удалось прочесть:
> [v0id_arch] 14:41: именно поэтому нужно подтверждение. от обоих.
Всё.
Прикрыл глаза. Горели. Долго смотрел в интерфейс, мигал редко, жжение привычное, земное. Прижал подушечки к векам.
Вектор полтора века читал форум и не нашёл это место.
seed_main. Зерно. Мысль мелькнула и ушла.
Огарок свечи моргнул и погас. Жирный запах воска исчез, в воздухе остался тонкий дух гари от фитиля, ещё мгновение, потом и он ушёл. Комната стала другой. Только голубоватый свет.
Руки зависли над строкой ввода.
* * *
Набрал команду на восстановление следующего блока.
Ждал. Прогресс-бар завис на двадцати процентах, дёрнулся вперёд до семидесяти, снова завис, потом записи появились все, без задержки, как прорвало.
Хронологически раньше. Тот же тред, начало рабочего дня.
> [seed_main] 09:14: сервер жрёт ресурсы.
> [seed_main] 09:14: два года без сессий. ни одной.
> [v0id_arch] 09:17: я знаю.
> [seed_main] 09:18: это мёртвые данные.
> [v0id_arch] 09:22: нет.
Одно слово. Нет. Без объяснения. Потом:
> [v0id_arch] 09:22: мёртвые данные не генерируют новых паттернов поведения.
> [v0id_arch] 09:23: посмотри на логи NPC_group_7 за прошлый месяц.
> [v0id_arch] 09:23: они строят что-то. не по скрипту. произвольно.
> [seed_main] 09:31: видел логи.
> [seed_main] 09:31: просто баг.
> [v0id_arch] 09:35: может быть баг. а если нет?
> [seed_main] 09:37: мы не можем держать сервер из-за «а если нет».
Дальше полоса [ДАННЫЕ ПОВРЕЖДЕНЫ].
Потом:
> [seed_main] 14:32: shutdown -t 100000000 --cleanup --no-confirm
> [v0id_arch] 14:35: ты серьёзно? без подтверждения?
> [seed_main] 14:36: кто будет подтверждать? мы уходим.
> [v0id_arch] 14:41: именно поэтому нужно подтверждение. от обоих.
Остановил скролл.
Строку про подтверждение читал трижды, и отпустить её не получалось. Таймер на уничтожение без ручного подтверждения. Уже достаточно.
Знал это чувство.
«Ресурсы не резиновые, Кирилл, нет смысла держать мёртвое». И были случаи, когда говорил: подожди, посмотри на логи, там что-то не так. «Ты видишь то, чего нет. Переставай.»
Живот свело.
Однажды закоммитил в мёртвый репозиторий, через три месяца после того, как его перевели в архив. Никто не спросил зачем. Сам не мог объяснить.
Прокрутил дальше. Ещё [ДАННЫЕ ПОВРЕЖДЕНЫ], потом финальный фрагмент, почти без разрывов. Самые свежие данные сохранились лучше.
> [seed_main] 15:03: решение принято. протокол запущен.
> [seed_main] 15:03: спасибо за работу.
> [v0id_arch] 15:07: ты ошибаешься.
> [seed_main] 15:09: может быть.
> [seed_main] 15:09: уходим.
Долгая пауза между метками. Потом последнее от v0id_arch.
> [v0id_arch] 15:33: оставляю бэкдор. на случай если ты неправ.
> [v0id_arch] 15:33: Route: Wasteland_Core → Backdoor_Gate [coords: REDACTED]
> [v0id_arch] 15:33: если кто-нибудь найдёт этот тред, координаты в геометрии, не на карте.
> [v0id_arch] 15:33: физическая точка, где граница между зо
Текст обрывался на полуслове. «Зо», и дальше блок артефактов, █████████. Дебаг-оверлей маркировал их красным. Целенаправленное удаление. Кто-то стёр конец поста.
REDACTED пульсировало ровным медленным светом, как будто за словом что-то ещё оставалось.
Сидел неподвижно. Рука на колене, холодная от долгой работы с интерфейсом.
Wasteland_Core, квадрат в сотни километров. Backdoor_Gate где-то внутри, и координаты v0id_arch спрятал в физической геометрии мира. На карте не обозначено. Чтобы пройти, нужен тот, кто знает, где именно.
Голос вышел хриплым:
- Параноик с принципами.
Никто не ответил. Комната молчала, только аккорд из таверны ударил снизу.
Сохранил маршрут в заметки. Система приняла без замечаний, вывела маленькое предупреждение жёлтым: > Зона: нет системного покрытия. Самое последнее место, куда кто-нибудь полезет по своей воле.
Посмотрел на никнейм в последней строке. seed_main. Зерно.
Мысль была слишком большой для ночной каморки с погасшей свечой. Убрал её. Сначала найти, куда идти.
Закрыл тред. Щелчок в ушах, голубоватый свет свернулся. Комната стала полностью тёмной. Тонкая щель под дверью, далёкий огонёк на лестнице, звёздный пробор в слюдяном окне.
За перегородкой всё так же храпели.
Аккорд ударил снова.
* * *
То ли спал, то ли нет. Лежал с закрытыми глазами, и мысль, которую убрал ещё за столом, вернулась сама.
Seed.
Встал, нашёл дверь по памяти, вышел в коридор. На лестнице горел один факел, низко, у самого пола. Пламя без мерцания, слишком ровное для обычного огня. Перегородка под ладонью шершавая, доски сухие, и что-то тянуло из щелей снизу.
Земля. Сырость. Запах, который жил здесь тысячи лет.
Первая ступень лестницы в подвал скрипнула так, что зубы свело. Замер. Наверху тишина не изменилась. Потом услышал подвал.
Бормотание шло снизу монотонно, почти ритмично.
- Маму пинганул... не ответила... может, не дошло... маму...
Та же интонация. Слышал это мельком, проходя мимо двери. Сейчас стоял на второй ступени и слушал, как бормотание укладывается в повтор. Те же слова, долгая пауза, те же слова. Как аккорд наверху, только ниже и хрипло.
Спустился.
Подвал был маленьким, потолок низкий, каменный, конденсат блестел на своде в свете респаун-точки. Сама точка лежала на полу плоским кругом, голубоватым, почти белым к центру. Запах ударил сразу: сырость, земля, плесень в углах. Под ним тонкий озон, мягкий, знакомый. Серверная комната в миниатюре, глубоко под таверной.
Зерно сидел у кладки прямо под точкой, скорченный, спина согнута, голова свесилась. Одежда серая, неопределимая. Глаза открыты, смотрят в пустоту, расфокусированные.
- Маму пинганул... не ответила...
Запаха от него не было. Никакого. Человек, рядом с которым воздух просто становился нейтральным.
Стоял у лестницы. Горло сухое. Никнейм. Привязка. Слово по-русски.
Мог бормотать про маму.
Открыл консоль.
- Seed_main.
Произнёс вслух, машинально, как читают строку кода.
Зерно замер.
Резко. Бормотание оборвалось на полуслове, руки остановились, голова не закончила качание. Тишина подвала стала предметной.
Гул респаун-точки ускорился. Поднялся тоном.
Уведомление пришло одновременно с тишиной.
> Пользователь идентифицирован: seed_main [СОЗДАТЕЛЬ]
> Сессия: ПОВРЕЖДЕНА. Права: ЧАСТИЧНЫЕ.
Золотым. Не зелёным, как все предыдущие. Золотым, крупнее. Дебаг-оверлей вокруг Зерна вспыхнул: строки кода, идентификаторы, метаданные создателя, всё сразу. Оверлей не справился, замерцал, часть строк схлопнулась. В углу зрения отдельно горела пометка на точке, красная, пульсирующая, [АКТИВНА: 11 347 ЛЕТ].
Потом Зерно выпрямился.
Спина пошла вверх рывком. Из скорченного старика в человека с прямой осанкой, плечи развернулись, голова поднялась. Зрачки сузились, взгляд стал острым, цепким, инженерным. Лицо с теми же морщинами, но выражение другое. Не безумие. Усталость, глубокая, осознанная, без донышка.
Покалывание прошло по предплечьям.
- Сколько лет.
Без знака вопроса. Голос бас, ровный, без дрожи.
Слова не нашлись сразу. Зерно не ждал.
- Ты нашёл тред. Internal_dev. Тред сорок один.
- Да.
Говорил быстро, без остановок. Торопился, пока может.
- Права доступа повреждены. Я ждал, что кто-нибудь доберётся, если система достаточно сломается. Всегда оставляй читаемый логистический след. Собственное правило, сам написал.
Спустился на последнюю ступеньку, сел. Ноги тяжёлые. Под ладонью холодная ступень. Сырость из-под пола давила вверх.
- Ты написал shutdown.
- shutdown -t 100000000 --cleanup --no-confirm. - Зерно произнёс это как строку из лога. - Мы уходили. Ни одной сессии за два года. Я решил, что данные мёртвые.
Под рёбрами сжалось.
- NPC были живыми.
Зерно перестал смотреть в кладку. Повернул голову.
- Я знаю. - Первая пауза с момента, как он заговорил. - Теперь знаю.
Сам так говорил. Знаешь сейчас, а тогда не знал.
Гул точки. Рука на ступеньке.
- Как ты попал внутрь.
- После остальных. - Зерно смотрел на голубоватый круг на полу. - Хотел проверить финальные логи перед тем, как сервер закроется. Механизм переноса сам писал. Прямой порт в игровое пространство. Обратного выхода не предусмотрел.
- И не смог выйти.
- И обнаружил NPC. Деревни. Рынки.
Короткое молчание.
- Детей.
В его глазах на мгновение проскользнуло подвальное, туманное. Он моргнул и вернулся.
Низкий потолок давил. Сырость и плесень, воздух тяжёлый.
- Попытался отменить. Права создателя изнутри не то же самое, что снаружи. Снаружи была консоль разработчика с полным доступом к ядру. Изнутри только игровой интерфейс с расширенными флагами. Инспектировать мог. Остановить shutdown не мог.
Смотрел на голубоватый круг. Одиннадцать тысяч лет. Не умирая. Не старея.
Больничный коридор мелькнул ниоткуда. Линолеум, хлорка, окно в конце этажа. Зрение ещё было, но плыло. Запоминал цвет стен, потому что не знал, сколько ещё. Мысль ушла так же быстро, как пришла.
- Одиннадцать тысяч лет.
Зерно не отвёл взгляд.
- Первые сто пытался найти обход. Писал в логи, думал, кто-нибудь прочитает снаружи. Маме пинговал запрос, адрес был в базовых параметрах. Думал, если дойдёт, кто-нибудь заметит. Не дошло.
Ладони похолодели.
- Права создателя не восстановятся. Я их отозвал сам. Боялся что-нибудь сломать в тумане. Перерождения закрепили это. Каждый раз теряю память, начинаю заново, нахожу то же самое, теряю снова.
Тело сжалось на ступеньке.
- v0id_arch оставил бэкдор.
Зерно остановился. Первый раз за весь разговор. Молчал. Мышца у виска дёрнулась.
- Координаты вшиты в геометрию мира. - Голос ровный, но что-то в нём сдвинулось. - В треде запись обрывается. Я нашёл её сам. Тысяча лет, достаточно времени обыскать геометрию.
Смотрел на него.
- Ты ждал.
- Ждал.
Где-то над головой прошли по половицам. Шаги тихие, Нира, скорее всего. Прошли и пропали.
Зерно не двигался. Морщины, прямая спина, усталые глаза с живым взглядом.
- Сколько у нас времени?
Зерно наклонил голову.
- Целостность одиннадцать процентов. Когда закроется, не знаю точно. Деградация непостоянная. Ядро разрушается неравномерно.
Тихий гул в ушах, монотонный. В углу зрения золотое, [СОЗДАТЕЛЬ].
Встал со ступеньки. Колени ныли от холода.
- Нам нужен маршрут.
* * *
Зерно сполз к середине подвала, опустился на четвереньки под голубоватым пятном. Повёл пальцем по пыльному полу. Линия, ещё линия, угол, пунктир. Тихий шорох по камню. Через несколько мгновений на полу лежал чертёж: прямые без колебаний, стрелки, метка, крестик в конце, обведённый кружком.
Опустился рядом на корточки.
- Координаты бэкдора вшиты в мою привязку. - Зерно говорил, не отрывая взгляда от рисунка. - Геометрические, не картографические. v0id_arch был параноиком, хорошим. Бэкдор не на карте, не в коде. Физическое место, где граница между зонами тоньше. В структуре пространства. Я нашёл его за тысячу лет.
Провёл взглядом по чертежу. Перекрёсток, линия на север, отметка у границы, потом пунктир. Двое суток ходьбы, нарисованные как прямая.
- Через Пустошь двое суток пешком. Если не расширилась. Если расширилась, больше.
- Нира ходила у границы. В глубину не заходила.
- Никто не заходил. - Зерно добавил треугольник у отметки. - Поэтому маршрут теоретический. Геометрические ориентиры из логов. Нира умеет читать местность без карты. Мне это нужно.
- Ты сам пойдёшь.
Зерно не ответил сразу. Смотрел на крестик.
- Я помню путь в ясности. - Он выбрал слова аккуратно. - В Пустоши ясность может не вернуться. Привязка держит цикл. Далеко от неё не проверял.
Свет точки падал на пыльный чертёж. Зерно стоял на коленях над схемой. Тысячи лет на одном месте, а маршрут нарисовал без заминки.
- В Пустоши консоль работает?
- Нет. Зоны деградации проектировались как карантинные. Без поддержки игрового интерфейса. Мёртвая зона: навыков нет, уведомлений нет, инспекта нет.
Живот напрягся, мышцы без команды, как перед ударом.
Только физика. Без оверлея, без инспекта. Те дни с работающим интерфейсом были первыми за годы, когда хоть что-то понимал в пространстве вокруг. Маршрут в голове, и больше ничего.
- Диктуй.
Из щелей тянуло сыростью, чем-то минеральным. Подвальный запах лежал плотно.
Зерно продиктовал координаты. Числа длинными группами, параметры в конфиге. Вводил без спешки, каждая цифра вставала на место. Потом последний блок, и рука остановилась. Непроизвольно. Под кожей мелко дрожало.
Ввёл.
> Путевая точка установлена: WASTELAND_DEEP [ПРЕДУПРЕЖДЕНИЕ: нет системного покрытия]
Координата жёлтым. Мини-карта мигнула, кусок территории к северу окрасился чёрным. Не серым, как неисследованные зоны. Чёрным. Консоль подождала и развернула отдельное окно.
> Предупреждение: вход в мёртвую зону отключит все интерфейсы игрока.
> Продолжить? [Д/Н]
Красным, шрифт крупнее, пульсирующим.
Нажал «Д».
На Земле было похожее. Диалог при удалении рабочей базы. Подтвердить? Ты уверен? Тогда нажимал отмену дважды, потом всё-таки подтвердить.
Консоль убрала окно. Маршрут нарисовался пунктирной чертой. Без подтверждения, без ответа. Просто приняла.
Зерно смотрел снизу, с уровня пола. Взгляд ясный. Ждал.
- Утром?
- Утром. - Поднялся. Колени ныли. - Тебе нужно что-нибудь взять.
- У меня нечего брать.
В груди притихло. Слова простые, а под ними тысячи лет без вещей, без груза, без ничего своего.
Поднимался по лестнице. Запах подвала держался ещё ступеней пять, потом ушёл. Гул затих внизу.
В углу зрения маленькая пометка: WASTELAND_DEEP. Чёрный квадрат на карте.
Наверху горел единственный факел, пламя тихое, без мерцания, и кто-то за перегородкой всё так же храпел.
* * *
Нира сидела в коридоре второго этажа, на полу у перегородки, ноги скрещены. На коленях нож, рядом точильный камень. Лезвие шло по камню размеренными длинными движениями, шорох-пауза-шорох. Руки работали, взгляд был в никуда.
Остановился у лестницы. Она не подняла голову.
Сел рядом, спиной к той же перегородке. Из таверны под полом тянуло прогорклым маслом и дымом. В щель у окна дул холодный воздух, мурашки по предплечьям. Где-то за углом коридора кто-то засмеялся, резко и громко, и оборвался.
Рассказал по порядку. Тред, переписка, Зерно ясный, маршрут на полу подвала. Нира слушала. Лезвие шло по точильному камню. На слове «shutdown» она остановила руку, подержала так и продолжила. На бэкдоре через Пустошь не шевельнулась. Дала договорить.
Замолчал. Она закончила проход лезвием, перевернула нож.
Долго ничего не говорила. Проверила заточку, медленно, придирчиво. Положила нож и взяла наконечник стрелы.
- Значит, он и написал приказ на конец, - сказала она. Не вопрос. Проговорила вслух, чтобы сложить на нужную полку.
- Да.
Наконечник повернулся в её руках. Смотрела на него.
- И бэкдор через Пустошь он тоже написал.
- Другой. v0id_arch. Зерно нашёл его сам.
- Понятно.
Чего-то ждал. Потрясения, вопросов. Нира добавила новые факты к тому, что уже знала, и продолжила работу.
Металлический шорох.
- Глубокая Пустошь. - Она не смотрела на меня. - Та, откуда не выходят.
- Да.
Нира опустила наконечник на колено. Руки неподвижны. Смотрела в пол, в щель между половицами, и в наклоне шеи было что-то похожее на усилие.
Нетрудно было догадаться. Рассказывала один раз, коротко, без интонации. Отряд, Серое урочище, дозор. Она стояла в стороне, а двое вошли в миражное пятно и не вернулись.
Нира подняла наконечник и снова повела по камню.
- Мой отряд вошёл туда шесть дней назад. - Голос ровный. - Я пыталась следом. Дважды. Каждый раз выталкивало.
- Знаю.
Лезвие прошло по камню. Пауза.
- Может, там и узнаю.
Благодарить было нечем. Объяснять незачем. Просто сидел рядом, пока она точила.
Потом убрала точильный камень в мешок. Первый раз за весь разговор посмотрела прямо на меня.
- Глазастый. Ты в настоящей Пустоши был?
- Нет.
- Тогда слушаешь меня. Молча. Выходим на рассвете.
Встала, убрала нож в ножны, ушла. Под шагами скрипнула доска. Дверь закрылась тихо.
Остался у перегородки. Ночной Перекрёсток скрипел вокруг: половицы, ставни, шаги на улице внизу. Аккорд из таверны, всё тот же.
За окном на горизонте рыжело. Огненный квартал. Отсвет лежал на облаках, оранжевый, тёплый, живой. Смотрел на него дольше, чем нужно. Просто цвет. Цвет, который не имел к нему отношения и не требовал ничего взамен.
Поднялся. Прошёл в каморку, лёг на подстилку. Стул стоял там, где оставил, свечной огарок давно погас.
Поднял руку над грудью и открыл консоль. Интерфейс выплыл в темноте, голубоватый, ровный. Столбцы данных, мини-карта, значки навыков по краю. Ничего не набирал. Смотрел на свет просто так, как смотрят на огонь, потому что завтра идти в темноту.
В угол зрения скользнуло обновление.
Статус системы: Целостность ядра - 11%. Прогресс отключения - 89%.
Вчера было одиннадцать четыре. Закрыл консоль. За окном Перекрёсток продолжал скрипеть, и аккорд ударил снова, точный и пустой.
Глава 12. Void
Рассвет был правильным.
Перекрёсток провожал нас звуками, которых я не ценил ещё час назад: гомон рыночных рядов за спиной, неровный перебор чьей-то лютни из таверны, скрип колёс по брусчатке. Воздух пах землёй после ночного дождя и далёким дымом, и земля под сапогами отдавала мягко, по-живому. Запоминал всё это с таким усердием, что не заметил, как Нира ушла на три корпуса вперёд.
Она не оглянулась.
Шла своим ходом, экономным, ровным, как будто покрытие впереди могло оказаться чем угодно. Перед каждым движением носок ноги сначала пробовал поверхность, и только потом она переносила вес. Привычка, выработанная у границ, где почва перестаёт быть почвой. Со стороны выглядело будто она чуть прихрамывает, если не знаешь, зачем это.
Зерно плёлся между нами.
Бормотал. Ровный счёт за невнятными звуками, что-то ритмичное вместо слов. Раз, два, раз, два. Или что-то своё, тысячелетнее. Ноги переставлял механически, лицо обращено вперёд, взгляд где-то за горизонтом. Когда он был вот так, я научился его не трогать. В Перекрёстке он говорил, что привязка к точке не любит дальних переходов. Не проверял. Пошёл всё равно.
> WARNING: Покрытие системы 40%
> Подсистема [Погода] - отключена
Первое предупреждение пришло часа через три, когда Перекрёсток давно скрылся за горизонтом. Звуки рынка пропали раньше, чем я ожидал, как радиостанция в мёртвой зоне приёма: кто-то убавил ручку до нуля, без предупреждения. Птицы ещё были. Трава вдоль дороги ещё была живой, зелёной, с каплями на листьях. Но цвет уже звучал иначе, будто разом выцвел.
Иконки подсистем в углу дебаг-оверлея мигнули и начали тускнеть. Погода, освещение.
Нира остановилась у камня на обочине. Пока я подходил, она опустилась на корточки и поскребла каблуком по дороге, послушала, что вернулось. Встала, огляделась, нашла меня взглядом, кивнула.
Обогнул камень, посмотрел.
Дорога раньше была дорогой. Колеи, пыль, неровный гравий. Здесь она превращалась в полосу. Бесцветную, гладкую, без трещин, без пыли, без ям. Как бетон, но без температуры. Сапог коснулся покрытия, и подошва не почувствовала ничего: ни шершавости, ни холода, ни тепла. Просто твердь.
Вытянул руку с чуть согнутыми пальцами.
/inspect
> Object: NULL. Type: NULL. Status: N̷̡U̶̧L̵̢L̸̨
Буквы в последнем слове поползли. Разъехались, вернулись не туда. Дёрнулись. Дебаг-оверлей мигнул, строки расплылись на мгновение и собрались обратно.
Камень смотрел на меня и не знал, что он такое.
Запомнить. Сохранить. Начал откладывать в заметки каждый объект, каждую аномалию. Отметки подсистем, показания на границах деградации. Делал это с ощущением человека, который фотографирует каждый угол квартиры перед переездом. Вдруг пригодится.
Небо потеряло цвет.
Постепенно. Сначала голубизна побледнела до белёсого, потом белёсое растянулось в неопределённое, потом граница между небом и землёй перестала быть границей. Пепельное в пепельное. Горизонт просто исчез.
Трава по сторонам обесцветилась следом. Цвет ушёл, форма осталась. Стебли жёсткие, как проволока, и ветер не шелестел в них. Ветер вообще не шелестел больше нигде.
Походка изменилась.
Моя. Раньше был хруст под подошвой, почва отзывалась. Теперь только сухой плоский звук. Ладонь о стол, ничего больше. Звук происходил и гас, не расходясь. Ни эха, ни объёма.
Бормотание за спиной оборвалось на полутакте.
- Левее.
Чётко. Без бормотания. Голос, который не бормочет, всегда заставал врасплох.
Нира без вопроса взяла левее. Потянулся следом и заметил, что там, где мы шли, грунт чуть просел. Провал в форме геометрически правильного прямоугольника, глубиной неопределимой.
- Там провал в геометрии.
Произнёс как человек, читающий с чертежа. Может, потому что чертёж когда-то был его. Потом счёт вернулся с середины, будто и не прерывался. Раз, два, раз, два.
Геометрические координаты вшиты в точку привязки. Он говорил об этом в Перекрёстке, когда объяснял, как нашёл бэкдор.
Ноздри втянули пустоту. Ни единой молекулы информации. На предплечье покалывало. Статическое электричество. Маленькие волоски встали, и это было похоже на предупреждение, только непонятно о чём. Потом покалывание ушло. Сначала думал, что исчезло. Потом понял. Кожа просто перестала получать сведения. Термальная пустота вместо температуры, и ничто здесь с кожей не разговаривало.
Деревья остались позади. Точнее, сначала они были деревьями, потом стали мёртвыми столбами без коры, без листвы, без ветвей, и наконец пропали вовсе. По сторонам от дороги осталось только выцветшее покрытие, уже не похожее ни на почву, ни на что узнаваемое.
Нира шла впереди. Носок, проверка, вес.
Смотрел на её спину. Привыкла. Ей не нужно думать, где земля.
Тишина нарастала. Звуки были: шаги, бормотание Зерна, моё дыхание. Но между ними не тишина, а что-то плотное. Пустота на месте, где должно быть. Как когда затыкаешь уши, и вместо тишины слышишь собственный пульс, только здесь пульса тоже нет.
Из бормотания выплыло слово:
- Левее. Левее, левее.
Почти в такт шагам. Уже не команда.
Нира уже шла левее.
Дебаг-оверлей мигнул. Рябь прошла по строкам, на секунду всё сдвинулось, потом вернулось на место. В углу зрения иконок подсистем почти не осталось.
Запоминай цвета, пока они есть.
Пыльный отлив у горизонта, где небо встречает что-то, что не небо. Тёмный прямоугольник котлована в геометрии мира. Силуэт Ниры, тёмный, чёткий, единственный объект с правильными краями на всё это расстояние. Зерно за мной, сгорбленный, ритмичный, отдельный.
Мысль пришла без приглашения. Больничный коридор, перед тем как расширили зрачки для очередного обследования. Запоминай. Линолеум коричневый, окно в конце этажа квадратное, стены цвета казённого бежевого, который не бывает нигде, кроме больниц.
Холодильник в квартире гудел на ноте «ля». Не помнил, откуда знал.
> WARNING: Покрытие системы 10%
> Подсистема [Физика] - деградация
> Подсистема [Звук] - деградация
> Подсистема [Рендеринг] - критическое
Оверлей мигнул ещё раз, сильнее. Строки поплыли, разъехались. Подождал. Вернулись. Но в следующий раз могли не вернуться.
Кулаки сжались. Плечи свело, потом отпустило.
Выдохнул через нос.
Злился на Зерно, на ритмичное бормотание, на то, что знает дорогу только в ясности, а ясность наступает когда хочет. Непредсказуемый проводник хуже карты с ошибкой. Ошибку в карте хотя бы найдёшь, а тут только ждать следующей ясности.
Тонкий запах ударил в ноздри, острый, электрический, как перед грозой. Озон. Едва уловимый, на мгновение. Потом и он пропал, растворился в пустоте, которая больше ничем не пахла.
Нира остановилась.
Обернулась. Сначала Зерно, потом я. На мне задержалась дольше. Не спросила ничего, не изменила выражения лица. Просто смотрела секунду, пока не нашла то, что искала, или решила, что не найдёт. Кивнула.
Шагнула.
Носок. Проверка. Вес.
Оверлей мигал всё чаще. Тишина вокруг давила так, что казалось, ещё немного, и она станет видимой.
Шёл следом.
* * *
Щелчок пришёл не снаружи.
Изнутри. Как будто что-то выдернули прямо из-за глаз, без предупреждения, без замедления. Оверлей моргнул последний раз, строки пошли рябью. Темнота там, где был экран. Не постепенное гашение, не отключение подсистем по одной. Просто раньше был. И вот нет.
Дебаг-оверлей исчез.
Принюхался. Ничего.
Тонкий звон, который всегда жил на периферии слуха, пропал тоже, и только тогда понял, что слышал его всё это время. Одиннадцать дней. Каждую секунду, пока шёл, ел, спал, читал форум в подвале таверны. Не замечаешь, пока не выключат. И вот его нет. Тишина вокруг стала другой. Мёртвой с другой стороны.
Остановился.
Пальцы двинулись сами, привычным жестом, тем, которым открывал консоль тысячу раз за эти дни. Сосредоточился на запястье, на пустом воздухе перед ладонью, на ощущении, которое должно было прийти. Лёгкая прохлада на кончиках пальцев, голубоватое мерцание.
Ничего.
Ещё раз. Концентрация. Жест.
Ничего.
Мир передо мной был тем же самым и одновременно другим. Бесцветные формы, мёртвая плоскость под ногами, ничто над головой. Но до этого каждый объект был опознан, читаем, понятен. Провал в геометрии был провалом с глубиной и красной рамкой. Камень был камнем. Object: Stone. Status: OK. Теперь бесцветное перед глазами смотрело обратно пустым взглядом, и я не мог сказать, что из него камень, что провал, что мираж. Всё одинаково непрозрачно, всё одинаково немо.
Носок потянулся вперёд, и нога не нашла ожидаемого. Почва под правой стопой чуть просела, нормально, просто мягкий грунт, но тело не знало «скорее всего». Тело знало только, что прежде дебаг-оверлей сказал бы: Terrain: Stable или WARNING: Нестабильное покрытие. Теперь дебаг-оверлей не говорил ничего.
Споткнулся.
Не упал. Успел выровняться, пару коротких шагов в сторону, руки дёрнулись. Но именно споткнулся, первый раз за всё путешествие от Перекрёстка, и это было унизительно по-особенному.
- Глазастый?
Нира оглянулась. Голос её в мёртвой тишине прозвучал слишком громко, единственный живой звук на всё расстояние. Рука её лежала на рукояти, пальцы расслаблены, привычно.
Горло перехватило, и слова вышли не те, что планировал.
- Не вижу.
Нира смотрела. Пауза была дольше, чем нужна для простого ответа.
- Ты смотришь прямо на меня.
- Не так не вижу.
Кулаки сжались сами. Пауза, пока слова находили форму.
- Система. Она выключилась.
Нира не переспросила. Не кивнула. Стояла с тем же лицом и медленно переместила взгляд с меня на землю у моих ног, потом обратно. Две секунды, не больше.
Руки тряслись.
Заметил это с некоторым опозданием, как замечаешь, что промок, только когда уже стоишь под крышей. Мелкая дрожь, от кончиков до запястий, непроизвольная. Попробовал сжать кулаки. Дрожь никуда не ушла, просто сжатые кулаки начали дрожать тоже. Дыхание стало слышным, рваным, с коротким перебоем на выдохе.
Всё это время я ходил с тростью. Просто трость выглядела как консоль.
Зерно прошёл мимо, шаркая, не глядя. Бормотание вернулось после молчания, тихое, ритмичное. Остановился в паре шагов впереди. Поднял голову, посмотрел туда, где небо встречало не-небо. Долго стоял так, чуть раскачиваясь, пока счёт за губами не замер на полутакте. Потом повернулся с видом человека, которого тысячу лет ничто не удивляло, и который всё равно смотрит.
- Добро пожаловать в мой мир.
Голос был ровным, почти нежным, и в нём не было ни торжества, ни жалости.
- Здесь все слепые.
Слова упали в пустоту и не вернулись обратно. Без эха, без объёма, как всё остальное в этом месте. Зерно снова раскачивался, губы тронул счёт, раз, два, и он отвернулся, как будто сказанного было достаточно и больше говорить не о чем.
Нира стояла справа, и на фоне мёртвого она была единственным силуэтом с правильными краями. Единственным, за что цепляется взгляд, когда больше нечем зацепиться. Шрам через левую бровь. Куртка с расстёгнутым воротом. Живая.
Ни подписи, ни статуса, ни одного системного сообщения.
Нира перевела взгляд с Зерна на меня. Что-то в моём лице, видимо, сказало ей то, чего я не произносил вслух, и она опустила глаза к земле под моими ногами, потом снова на меня.
- Ноги. Смотри под ноги. Туда, куда ступишь. Не вверх.
Это был весь инструктаж. Она уже отвернулась, пока я ещё переваривал.
Опустил взгляд. Мёртвая земля под сапогами, ровная, без подсказок, без предупреждений. Просто земля. Люди ходят по такой земле всю жизнь.
Сделал ход. Медленный, с проверкой, так, как она делала всё это время, пока смотрел поверх интерфейса. Почва приняла ногу без провала. Второй. Третий.
Дрожь в пальцах никуда не ушла, но дыхание выровнялось немного, на одну треть выдоха.
Зерно уже шёл вперёд, бормоча, не оглядываясь. Нира двинулась следом, и в этот раз не проверяла, иду ли я. Просто шла.
* * *
Нира взяла меня за запястье без предупреждения. Просто обернулась, нашла руку и сжала. Крепко, деловито, как берут инструмент перед работой.
Рука у неё была горячая и жёсткая, с мозолями на подушечках пальцев. В термальной пустоте, где не было ни тепла, ни холода, только безжизненная температура ничего, её рука ощущалась как ожог. Хороший ожог. Тот, что говорит: ты ещё жив.
Принюхался к её коже. Искал хоть что-нибудь. Ничего.
- Шаг. Стоп. Шаг. Вправо.
Голос ровный. Я слушался.
Пустошь была пепельной без оттенков. Без тени и без светлого пятна. Без горизонта. Формы были, но геометрия их не работала: стена уходила вправо и появлялась слева, коридор разворачивался петлёй. Понял это на третьей минуте и перестал смотреть. Здесь искать логику означало искать то, чего нет.
Нира вела. Я шёл.
По привычке потянулся к интерфейсу. Рука согнулась сама, привычным жестом.
Ничего.
Тишина там, где всегда был тонкий фоновый звон. Несколько секунд держал жест в воздухе, потому что голова не верила. Потом опустил руку.
Вот чего я не понимал про слепоту. Не темноту. Не боль. Отсутствие инструмента, который считал частью себя.
Детский смех возник откуда-то сбоку, звонкий, настоящий, счастливый, и оборвался на середине ноты, и начался заново с той же точки. Не с начала. С той же середины. Дёрнул головой.
- Не смотри.
Нира потянула руку, не резко, точно, и я шагнул. Она даже не оглянулась, чтобы проверить, послушался ли.
Зерно шёл впереди нас на расстоянии трёх метров. Слышно было, как он бормочет. «Маму пинганул. Не дошло. Пинганул. Не дошло. Налево. Нет. Прямо. Маму пинганул.» Шёл не останавливаясь, слегка покачиваясь, как метроном с поломанным ритмом.
Звон мечей появился глубже. Глухой, далёкий, как из-под воды. Бой, которого не было. Потом голос, женский: «Добро пожаловать в лавку! Добро пожа- Добро- Добро-»
Желудок перевернулся. Голос не останавливался. Продолжал и продолжал, одинаковый, ровный, в петле без конца. Тысячу лет в этой геометрии без людей, без ответа. Горло сжалось. Хотелось, чтобы он замолчал, и знал уже, что не замолчит.
- Порог.
Нира остановила меня за секунду до того, как пол под ногами превратился в стену. Почувствовал это телом раньше, чем понял: гравитация сместилась, желудок ухнул вниз, и то, что было вертикальной поверхностью слева, стало горизонтальной поверхностью под ногами. Мы шли по потолку.
Тело кричало. Инстинкт орал про падение. Ноги стояли. Рука Ниры держала. Дышал через рот и смотрел вниз, то есть теперь вперёд, и там было то же мёртвое ничто, только ориентированное иначе.
Трещина в полу тянулась наискось. Похожа на семёрку.
- Бывает.
Она не объясняла. Просто констатировала, уже разворачиваясь, уже выбирая следующую точку опоры.
Шаги рядом. Не мои, не Нирины. Чёткие, ритмичные, в полутора метрах.
Пальцы Ниры на моём запястье чуть сжались. Потом отпустили, ровно до прежнего хвата, ни сильнее, ни слабее. Она не замедлилась. Я не поворачивался.
Последний раз меня вели за руку в клинике, после капель, которые расширяли зрачки до предела. Коридор плыл, медсестра держала за локоть, говорила «осторожно, ступенька». Тот же слепой стыд. Та же зависимость от чужой уверенности в пространстве, которое ты не можешь читать.
Привык быть тем, кто видит раньше других. Здесь единственной точкой опоры была крепость руки Ниры.
Зерно вдруг остановился.
Не забормотал активнее. Не заметался. Остановился и повернулся, и посмотрел на нас. Взгляд у него был ясный, без петли, без тумана.
- Через двести метров мираж. Красивый. Не входите.
Голос точный, профессиональный, как у человека, читающего схему, которую сам составил.
Потом он снова повернулся и пошёл, и снова: «Маму пинганул. Не ответила. Пинганул. Не ответила.»
Нира ничего не сказала. Просто чуть изменила захват. Теперь держала двумя пальцами снаружи и большим изнутри, как будто готовилась к рывку.
Много времени спустя на горизонте появился свет.
Сначала решил, что ошибаюсь. Потом понял, что нет. Там был город. Настоящий, яркий, с красными черепичными крышами, с зелёными деревьями, которые шевелил ненастоящий ветер, с синим небом и флагами на башнях. После часа в пепельной геометрии без горизонта город был оглушительно, жестоко красивым.
Ноги двинулись сами. Не полный ход. Движение, намерение шага.
Рука Ниры перехватила жёстко. Рывок назад, разворот, её ладонь легла на затылок, пригнула, заставила смотреть в пепельную поверхность под ногами. Не резко, но без предложений.
Смотрел в пол. Там были цвета, форма, жизнь, там было всё, чего в этом месте быть не должно, и тело тянулось к нему. Именно тело, ноги, грудная клетка, что-то в диафрагме, что хочет вперёд. Понимал очень конкретно, на уровне ног, почему отряд Ниры вошёл.
Рука двинулась сама. Пустой жест. Пустошь не реагировала.
Нира перехватила плечо и рывком развернула меня к себе. Ноги переставились сами, ступни нашли опору, встали. Она не отпускала, пока не отвернулся.
- Хорошо.
Не похвала. Просто фиксация факта: ещё иду, ещё здесь, ещё её.
- Шаг.
Нира повела меня дальше, и в тот момент, пока смотрел на её затылок и переставлял ноги, понял кое-что, что не стал произносить вслух. Она не оглядывалась, чтобы проверить меня. Знала, что иду, по натяжению руки, по весу, по ритму. Этого ей хватало.
Детский смех возник снова, с той же точки в той же ноте. Чужая поступь рядом, никуда не торопясь.
Я не дёрнул головой. Просто шёл.
Зерно бормотал про маму.
* * *
Нира сказала «спим» без объяснений, пнула ногой пятачок бесцветной поверхности, послушала отдачу. Ничего, значит твёрдо. Опустилась на корточки, потом села. Нож положила на колено. Просто лёг. Под лопатками ровно, жёстко, как столешница. Температура никакая.
Зерно уснул раньше, чем умолк. Ещё бормотал «маму, пинганул, не ответила» и уже спал, скрученный в клубок. Тысячи лет тренировки выключаться где попало. Во сне он стал тише.
Нира достала что-то из мешка, бросила мне. Поймал. Пожевал медленно, без интереса. Что это было, хлеб или мясо, понять не вышло. Вкус был как картон, как жевать ничто.
Лежал на спине и смотрел вверх.
Мёртвый свет. Без источника, без теней, без разницы между там и здесь. В Пустоши нет «ночи», Нира говорила это ещё до Перекрёстка. Есть только условный отсчёт, четыре часа, потом идём. Тело не знало, как спать без темноты. Голова не хотела.
Закрыл глаза.
Строки кода появились сами. Не те, которые думал увидеть. Просто строки, горизонтальные линии на внутренней поверхности век, синеватые, привычные. Мозг дорисовывал. Долго, почти год, он дорисовывал текст на расплывшемся экране, буквы к буквам, из обрывков, и теперь делал то же самое здесь, с консолью, которой не было. Открыл глаза. Пепельная пустота. Закрыл. Строки снова.
Белый шум занял место тишины. Монотонный, еле слышный. Занял и остался. Фон, от которого не устаёшь и не можешь отдохнуть. Этот был пустым.
Попробовал думать о задаче. Сердце Сервера. Зерно с биометрией. Ядро на одиннадцать процентов. Всё это было реальным, важным, требовало плана, требовало действия.
Действовать было нечем.
Без консоли думать о задаче значило думать о задаче словами, без данных. Как писать код в уме без возможности проверить, работает ли. Мысль приходила, делала круг и возвращалась обратно. Круг был одинаковым. После третьего круга думать о задаче стало хуже, чем не думать вовсе, и мысли поползли туда, куда обычно не пускал.
Квартира. Кухня под вечер. Чашку с чаем ставил на одно и то же место на столе, чтобы находить на ощупь. Маршрут от дивана до ванной без включения света, потому что зачем свет, если всё равно не видишь. Больше ничего не вспомнил. Как пахнет чай не помнил.
Убежал от этого. Или думал, что убежал.
- Не спишь.
Нира, не оборачиваясь.
- Нет.
Поднялся на локтях. Она сидела так же, спиной ко мне, нож на колене, голова слегка повёрнута. Не смотрела на меня. Смотрела туда, где в Пустоши должна быть периферия, как смотрит тот, кто привык.
- Ты тоже.
- Я дежурю.
- Знаю.
Помолчали. Бормотание Зерна катилось где-то на дне слышимости, колыбельное, монотонное.
Рука машинально сжалась, прощупала воздух, привычный жест без адресата. Разжал.
- Пять минут без неё, и я споткнулся.
Нира не обернулась. Нож чуть передвинулся на колене, потом лёг обратно. Подождала секунды три.
- Я не знаю, как ходить по лесу в одиночку. Пять лет в отряде. Разучилась ходить одна.
Помолчал. Поднял руки над лицом, посмотрел на них. Просто руки. Пальцы, кожа, вены. Тёмные на фоне мёртвого света сверху.
- Думал, убежал от слепоты.
Нира молчала. Нож лежал неподвижно.
- Там зрение ничего не давало. Всё равно ничего не видел. А здесь думал. Хотя бы это.
- И?
- Здесь тоже. Оказывается.
- Как?
- Через стекло. Всегда был слой. Думал, это зрение. А это. - Пауза. Горло сжалось, и мысль рассыпалась на полпути. - Смотрел сквозь него. Не через него.
Замолчал. Не потому что закончил. Слова кончились раньше мысли.
Нира повернула голову ровно настолько, чтобы смотреть вперёд под другим углом.
- Я смотрю через лес. Ты через своё.
Четыре часа. Значит, ещё три. Или два. Или сколько осталось.
* * *
Зерно встал первым.
Встал одним движением. Бормотание оборвалось, в тишине что-то изменилось, и когда поднял голову, он уже стоял, смотрел вперёд, и спина была другой. Прямой. Собранной.
Повернул голову в сторону гула. Медленно, до упора.
- Близко. Чувствую.
Нира отреагировала раньше меня. Убрала нож, поднялась, и в этом не было обсуждения. Встал следом, подобрал дорожный мешок, тело помнило порядок сборов лучше головы.
Зерно уже шёл.
Движение стало другим. Тот же шарк, только с вектором. Раньше шёл как метроном, равномерно, без разницы куда. Теперь куда-то. Нира двинулась за ним, не спрашивая, я следом, без её руки на запястье, первый раз самостоятельно, смотрел под ноги так, как она научила. Носок, проверка, вес.
Пустошь изменилась.
Пепел никуда не делся, пепел был везде, но в нём появилось что-то под поверхностью. Там, где раньше пол был просто полом, теперь в нём угадывалась глубина: голубоватые линии просвечивали снизу, как провода под прозрачным покрытием. Тонкие, мерцающие, разветвляющиеся. Первый цвет за двое суток.
Глаза заболели от него.
Остановился на секунду, просто чтобы смотреть. Голубой. Холодный, электрический, живой голубой, из которого складывалась сетка без начала и конца, уходящая под пепельную поверхность в обе стороны. Нервная система мира, которую обычно не видно.
Нира оглянулась.
- Идёшь?
Пошёл.
Гул появился постепенно. Сначала подумал, что ослышался. Потом понял, что нет. Низкий, ритмичный, на нижней границе слышимости, и в нём был пульс. Замедленный. Сбивчивый. Линии в полу пульсировали в том же ритме. Тускнели и вспыхивали.
Потрескивало что-то. Статическое, электрическое, запах озона ударил в ноздри без предупреждения, и я остановился посреди шага.
Запах.
После двух суток пустоты, после двух суток воздуха без информации, это был запах. Острый, жёсткий, как после грозы. Ноздри обожгло. Втянул воздух, ещё раз, глубже, и под озоном было ещё что-то, нагретый пластик, металл, горелая электроника. Серверная комната. Узнал раньше, чем понял.
Зерно ускорился.
Нира почти касалась его плеча, тот темп, который держала, чтобы не потерять. Я держал её темп. Линии в полу становились ярче, гул нарастал, и давление на барабанные перепонки появилось постепенно, нарастающее, как на глубине. Сглотнул. Не помогло.
Потом Зерно остановился.
Перед ним не было ничего видимого. Ровная бесцветная поверхность без перехода. Но воздух здесь был другим. Плотным, как перед грозой, с натяжением на коже. Сделал движение вперёд, туда, где стоял Зерно, и давление усилилось, нажало на грудную клетку, на уши, заставило сделать медленный выдох. Кожа на предплечьях отреагировала мурашками, первыми за двое суток.
Стена. Невидимая, но настоящая.
Зерно поднял руку.
Посмотрел на неё. Руки не дрожали. Впервые за всё время, что знал его. Рука была ровной. Сосредоточенной.
Он приложил ладонь к воздуху.
- v0id_arch был параноиком.
Голос чёткий, рабочий, без бормотания, без петли. Такой голос, каким произносят вещи, которые нужно произнести правильно.
- Пароль не текст. Пароль это я. Биометрия создателя. Привязана к телу, не к правам.
Рябь расходилась от ладони, медленная, воздух вокруг чуть светлел. Линии в полу под ногами вспыхнули ярче. Гул, нараставший с каждым метром, изменился. Другая природа, другая частота, как будто что-то переключили глубоко внутри.
Потом стена открылась.
Ткань Пустоши разошлась от точки касания в стороны, медленно, с тихим звуком, похожим на выдох. Давление упало мгновенно, воздух хлынул, и в лицо ударило одновременно всем: цветом, светом, звуком, жаром нагретого железа, запахом горелой пыли.
За разрывом был свет.
Насыщенный, живой, пульсировал голубым во всю высоту, с красным и жёлтым в строках, с глубиной, которой не было в Пустоши ни секунды. Стоял и смотрел. Глаза не справлялись, слезились или нет, просто после двух суток выцветшего ничто они не знали, что делать с таким количеством сразу.
И тогда консоль включилась.
Лавиной. Покалывание на кончиках пальцев, знакомая прохлада, дебаг-оверлей вспыхнул поверх зрения, и сразу, без паузы, без предупреждения:
> СОЕДИНЕНИЕ ВОССТАНОВЛЕНО
> Синхронизация - 847 ожидающих уведомлений
> Целостность ядра: 10%
> Прогресс завершения: 91%
> ПРЕДУПРЕЖДЕНИЕ: точка невозврата на 95%
Зерно стоял у разрыва с опущенной рукой, спиной к нам. Нира встала рядом. Молчала.
Горло сжалось.
Строки летели и летели. Красные, жёлтые, белые, сотни уведомлений за двое суток тишины, каждое с меткой времени, каждое накопившееся, пока шёл через мёртвую геометрию и переставлял ноги. Взгляд сам нашёл одну цифру среди потока.
Целостность ядра: 10%
Было одиннадцать. Когда уходили из Перекрёстка, было одиннадцать.
Стало десять.
За двое суток перехода, пока шли и ночевали и Нира вела меня за руку и Зерно бормотал про маму, ядро потеряло ещё один процент. Медленно, неотвратимо, не зная и не спрашивая, успеют ли.
Точка невозврата на девяносто пяти.
Сейчас девяносто один.
Уведомления осели. Красные строки побледнели, поток замер. Нира стояла рядом, молча. Зерно у разрыва с опущенной рукой, спиной к нам. Ни один из них не спросил, что там в строках.
Консоль вернулась. Облегчение длилось секунды три, пока не сообразил, что чувствую не свободу, а знакомый вес.
Врал себе. Трость никуда не делась.
Глава 13. Сердце Сервера
Первым пришёл запах.
Озон, тот же, что бил в ноздри у границы Пустоши, что мерещился в фантомном воздухе без температуры. Только теперь его стало так много, что он уже не казался запахом. Скорее погода. Атмосфера. Плотный, резкий, как после грозы, только без земли и без влаги. Этот запах я знал по ночным дежурствам. Ступал в него, как в воду.
Под озоном лежало что-то ещё. Горячий металл. Именно перегретый, когда радиаторы уже не успевают и железо начинает пахнуть само собой. Запах серверного зала за минуту до аварийного отключения.
Потом пришёл звук.
Гул шёл снизу, из пола, из стен, из воздуха сразу. Не слышишь, а ощущаешь. Вибрация от подошв поднималась по ногам, через таз, через грудную клетку, до зубов. Ритмичная. Замедленная. Раз. Пауза. Раз. Пауза. Как сердцебиение, только с перебоями, с лишней долей тишины между ударами, которой там не должно быть. Если прислушаться к этому гулу по-настоящему, в нём начинали различаться обрывки: числа, команды, чьи-то голоса. Миллионы голосов, которые мир прогонял через себя каждое мгновение, просачивались вовне, как шёпот за тонкой стеной.
Я остановился в трёх шагах от входа.
Нира прошла мимо, не замедляясь. Зерно тоже. Он давно уже двигался, не обращая внимания ни на что вокруг, только на сферу впереди. Я знал, что нужно идти. Ноги держались на месте сами.
Потолок уходил в чёрное и растворялся там, как колонны растворялись в нём же выше двадцати метров. Колонн было много. Стояли правильными рядами, толщиной с взрослое дерево, светящиеся изнутри голубым и зелёным. В тёмных промежутках между ними жил свет, живой и нервный, мерцал строками по поверхности стен. Стены были полупрозрачными, и за ними были видны контуры чего-то большего: пульсирующие узлы, разветвляющиеся нити связей, кластеры, которые гасли по одному.
Некоторые колонны не светились.
Серые. Мёртвые. Стояли среди живых, как гнилые зубы в ряду здоровых. Высокие, тёмные, холодные. Раньше тоже светились. Раньше тоже несли что-то.
Пол под ногами был полупрозрачным, и первый шаг вперёд дался с усилием, потому что под ногами были слои. Слои просвечивали снизу, многоэтажные, уходящие вглубь. Свежие наверху яркие, бегущие. Глубже тусклее. У самого дна чёрный монолит. Просто чёрный. Ступить на это было как перешагнуть через открытый люк.
Ступил.
Пол держал. Твёрдый, гладкий, чуть тёплый. Покалывание в подошвах. Статика. Волоски на руках встали дыбом и больше не успокоились.
Консоль переключилась без предупреждения.
> Местоположение: ЗАЛ ЯДРА
> Уровень доступа: РАСШИРЕННЫЙ [бонус близости]
> Доступные команды: расширенный список (+47 новых разблокировано)
Сорок семь новых. Мгновение смотрел в эти цифры, потом побежал глазами по новому списку и остановился. Почти всё было серым. [ТРЕБУЕТСЯ: CREATOR_AUTH]. [ТРЕБУЕТСЯ: CREATOR_AUTH]. Ещё раз, ещё. Из сорока семи новых тридцать девять были закрыты серой рамкой. Восемь рабочих из сорока семи. К двенадцати, что были до зала. Как двери с замками, ключ от которых лежит у кого-то другого.
В центре зала была сфера.
Метров пяти в диаметре, висела в воздухе, не касаясь ни пола, ни потолка. Поверхность переливалась, перламутровая, как мыльный пузырь на свету, с радужными разводами. Красивая. Только вместе с красивым там были чёрные пятна, и пятна не стояли на месте. Медленно расползались. Медленно, уверенно, как плесень по хлебу, который давно пора было выбросить, но никто не выбросил.
Тени от сферы расходились длинными лучами по полу при каждой пульсации. Медленными. Раз. Пауза. Раз.
Дебаг-оверлей захлебнулся.
Раньше он показывал контуры объектов, статусы, теги. Сейчас всё сразу. Деревня Порог светилась точкой где-то в левой части поля зрения. Перекрёсток. Узел, ярче, с ветвями связей. Стабы. Маленькие острова. Пустоши лежали чёрными провалами без тегов, без статуса, без размерности. Слои данных под ногами. Живые, движущиеся, тысячи процессов одновременно. Голова не справлялась. Глаза не знали, куда идти, и метались по всему этому, не находили точки опоры.
Зажмурился. Открыл. Смотрел.
> Целостность ядра: 10%
> Активных процессов: 2 847 103
> Плановое завершение: В ПРОЦЕССЕ
Два миллиона восемьсот сорок семь тысяч сто три. Стоял и смотрел в эту цифру. Потом смотрел на сферу. Потом снова на цифру. Два миллиона восемьсот сорок семь тысяч сто три процесса: разговоры, торговля, сны, привычки, чьи-то утра и чьи-то вечера. Пёкарь в Перекрёстке, который каждый день замешивает тесто в одно и то же время. Ребёнок в деревне Порог, который боится идти мимо коровника после темноты. Старик, который помнит имя своей жены. Каждый из них был строкой под чёрным пятном, которое расползается.
Одиннадцать тысяч лет без единого вмешательства. Любой, кто работал с системами, понял бы, что это значит. Засмеялся бы нервно, потому что другого ответа здесь нет.
Засмеялся. Не вышло. Выдохнул в пустоту, потёр кулаком подбородок и посмотрел в сторону.
Нира стояла у колонны и смотрела вверх. Смотрела так, как не смотрит человек, которому нужно идентифицировать угрозу, просто смотрела, и лицо у неё было то, которое бывает раз в жизни. Что-то до страха и восхищения сразу. Шрам через бровь, жёсткая линия плеч, рука всё равно лежала на рукояти. Просто привычка.
- Большое.
Глаз от потолка не отрывала.
Рука соскользнула с рукояти, сжалась в кулак у бедра и разжалась.
- Очень.
Она наконец опустила голову. Посмотрела на колонны. Живые, мёртвые, живые. Пересчитала что-то глазами, как считают потери после боя, когда ещё не хочется знать итог.
- Сколько из них уже не работает?
- Не знаю. Мой оверлей сейчас как экран в час пик, всё мигает, ничего не разобрать. Но мёртвых много.
Пауза. Палец прошёлся по гарде, привычным маршрутом, как успокоительное.
- Мы успеем?
Повернулся к ней. Она смотрела мне в глаза, не на сферу.
- Зависит от Зерна.
Оба посмотрели туда. Старик уже шёл к сфере.
Неторопливо. Медленно. Шаркающая походка, которая у него не менялась. Но спина была прямой сейчас, и в этом была разница. Он знал, куда идёт.
Гул ударил резче. Потом замер на несколько долгих секунд. Пространство реагировало. Вибрация прошла через пол в ноги и дальше, и на мгновение понял, что это не метафора. Это пульс. Он замедляется.
По затылку прошло что-то холодное, кожу между лопатками стянуло.
Нира не смотрела на меня, смотрела на него.
- Он не говорил тебе, что будет делать?
- Говорил. Несвязно. Помолчал. Что-то про бэкдор. Про координаты в точке респауна. Про то, что сам писал этот код.
- И ты ему доверяешь.
Констатация, проверяемая на прочность.
Пол под ногами толкнул снизу, лёгкий, как выдох. Данные под стеклом двинулись быстрее, потом замедлились, потом опять. Сфера мигнула. Чёрное пятно сдвинулось на сантиметр.
- У меня нет доступа к тридцати девяти командам из новых сорока семи. Восемь открыты.
- У него, похоже, есть.
Нира наконец повернулась ко мне. Посмотрела. Долго.
- Это не ответ на вопрос.
- Я знаю.
Старик остановился перед сферой. Рука медленно поднялась, ладонью вперёд. Между кожей и поверхностью оставался сантиметр. И там трещало, там разряды, там свет тянулся к руке нитями.
Замер. Долго стоял. Маленький человек перед пятиметровым шаром, тень от него длинная, лучами по полу. Потом рука опустилась.
Он обернулся. Нашёл меня глазами, не Ниру. Большой палец пробежался по среднему. Один раз, вниз, как будто проверял, двигаются ли суставы.
- Сначала смотри. Потом всё остальное.
Голос прозвучал здесь неожиданно обычно, просто голос пожилого человека в большом пустом зале.
Потом повернулся обратно к сфере.
Стоял так несколько секунд, неподвижно, как будто взвешивал. Потом рука снова пошла вверх. Медленнее, чем в первый раз. Ладонь повернулась и легла на поверхность сферы.
Разряд. Я увидел его даже отсюда, синие нити по пальцам, по тыльной стороне ладони, вверх по запястью. Свет потёк по руке, как что-то живое, и сфера ответила: там, где касались пальцы, чёрное пятно отступило на ширину ладони. Не исчезло. Просто отодвинулось. Руку он не убирал.
> Creator detected. Welcome back, seed_main.
Одиннадцать тысяч лет. Значит, дождался.
* * *
Зерно убрал руку.
Запах ударил сразу, как будто ждал, пока это случится: озон, резкий, как после разряда в нескольких сантиметрах от лица. Воздух в горле стал металлическим, будто жевал фольгу. Всё это висело ещё несколько секунд, потом стало чуть тише, но не ушло.
Сфера мигнула один раз, привычно, с долгой паузой, и снова вернулась в свой ритм. Гул выровнялся. Как будто ничего не было.
> Creator handshake established.
> Полный доступ доступен через seed_main.
Синтетический, ровный, без интонации. «Creator detected. Welcome back, seed_main». Голос ещё звучал в голове, жуткий своей безэмоциональностью.
Зерно стоял спиной к нам, смотрел на сферу. В позе была тяжесть, та, которая не уходит.
- Лог.
Тихо. Просто слово, в пространство. Я понял до того, как успел переспросить: в консоли уже открылась новая вкладка, чужая, не та, которую сам запрашивал. Моноширинный текст, зелёный на чёрном, строки пошли сверху.
> ЛОГ ЗАВЕРШЕНИЯ - полная запись
> Доступ: CREATOR_AUTH [seed_main] → передан текущей сессии
> Начало записи: T+0
Задержал строки глазами. Потом отпустил.
Зерно повернулся к сфере боком и смотрел на лог у меня так, как смотрят на собственную рукопись, когда она уже написана и ничего не исправить. Не торопил. Стоял рядом и ждал.
> [T+0] shutdown инициирован: seed_main
> [T+0] условие: если player_login = 0 за 100 000 000 сек → выполнить cleanup
> [T+0] причина: проект считается недействующим. Ресурсы подлежат освобождению.
Сто миллионов секунд. Посчитал машинально. Такие цифры сами раскладываются. Три года и три месяца с хвостиком. Чуть меньше тысячи двухсот дней.
Строки бежали. Поймал взглядом следующую важную метку.
> [T+100 000 247] условие выполнено. Логинов: 0. Начало cleanup.
> [T+100 000 247] cleanup 0,0001% завершено.
Горло чуть сжалось. Поправил дыхание и вёл глаза дальше, мимо сотен пустых записей прогресса, до текущего момента.
> [T+СЕЙЧАС] cleanup 91% завершено.
> [T+СЕЙЧАС] ожидаемое время завершения: 4 291 час.
Четыре тысячи двести девяносто один час. Полгода. Мурашки прошли от плеч по рукам до запястий, кожа стянулась, волоски встали, и я не стал делать вид, что это нормальная реакция. Просто стоял и ждал, пока пройдёт.
- Три года.
Старик произнёс это без предупреждения, негромко, с той ровностью, которая бывает только в окна ясности. Голос профессиональный, собранный, без единого провала в туман.
Смотрел на строки лога.
- Если за три года ни один игрок не зашёл - игра мертва. Ресурсы освобождают. Я так работал.
Ударение на «работал». На прошедшем времени.
Тишина растянулась. Руки потянулись к несуществующей клавиатуре.
- Игра была мертва.
Большой палец прошёлся по среднему, один раз, медленно вниз. Старик смотрел в строки как в собственный приговор.
- Мир нет.
Ничего больше. Стоял в нескольких шагах в стороне, пока он не отошёл от сферы и не встал рядом со мной. Видел его сбоку, в профиль. Сосредоточенный. Спокойный. С тяжестью в уголках глаз, которая не уходит, сколько ни ждёшь. Та поза, тот взгляд, то чуть опущенное плечо. Знал это по работе, по коллегам, которые возвращались к своему старому коду и долго молчали перед экраном, прежде чем начать объяснять.
- Могу активировать полный доступ.
Глаз от строк он не отрывал. Просто произнёс, как факт, который давно решил и теперь предъявляет.
Взгляд задержался на строке с CREATOR_AUTH дольше обычного. Потом поднялся на Зерно.
- Не сейчас.
Нира у колонны повернула голову. Смотрела на него, потом на меня.
- Почему.
- Вектор мониторит ядро.
Зерно сложил руки, глаза остались на строках.
- У него стоят триггеры на creator_auth. Увидит раньше, чем я завершу рукопожатие.
Нира молча повернула голову к дальним колоннам, живым и мёртвым, и на лице у неё было то профессиональное выражение, с которым считают расстояние до позиции врага.
Девять процентов cleanup осталось, и где-то в них стояла точка, после которой откатить не выйдет. Спросить не успел.
Консоль мигнула.
> ВНИМАНИЕ: Обнаружен внешний доступ. Пользователь: VECTOR [GM]. Статус: ПРИБЛИЖАЕТСЯ.
Красный. Пульсирующий.
Старик уже был у сферы, почувствовал раньше, чем я успел поднять глаза. Вектор уже видел оповещение о creator_auth: знал, что контакт состоялся. Скрывать было нечего. Ладонь легла на поверхность. Резкий запах ударил в ноздри: озон, плотный, как после молнии в двух шагах, и привкус на языке, будто жевал алюминиевую фольгу. Синие нити по пальцам, по запястью. Сфера вспыхнула ярче.
- Слушайте.
Голос стал другим. Короче. Без зазоров.
- Выбирать будете вы. Не я. Когда придёт время, вспомните это.
Где-то в груди сжалось и не отпустило.
Нира уже смотрела на дальний конец зала, туда, где в стене данных был разрыв, вход, или то, что им служило. Там пока ничего не было. Только мерцающие строки по краям проёма и темнота за ними.
Пока.
* * *
Зерно заговорил без предупреждения. Именно так, как начинают люди, которые не знают, сколько у них есть времени, и поэтому не тратят его на предисловия.
- Три протокола. Каждый требует моего рукопожатия с ядром. Ни один нельзя отменить после запуска.
Голос держался на той же интонации, что раньше. Короткий. Без зазоров. Я слушал и смотрел, как он стоит боком к сфере, руки опущены, большой палец покоится вдоль ладони. Больше не ходит взад-вперёд по суставу. Окно ясности, и он тратил каждое мгновение строго.
В консоли появились три блока текста.
> Protocol ALPHA: Отмена shutdown + назначение администратора [ПОСТОЯННАЯ ПРИВЯЗКА]
> Protocol BETA: Передача управления одному пользователю [GOD MODE]
> Protocol GAMMA: Миграция в самоподдерживающийся экземпляр [ТРЕБУЕТСЯ МАССОВОЕ ПОДТВЕРЖДЕНИЕ]
Все три помечены [CREATOR_AUTH]. Замки, серые рамки. Ждут руки Зерна.
Он указал на верхнюю строку, не касаясь экрана, просто в воздухе.
- Первый. Shutdown отменяется. Сервер стабилизируется. Назначается новый администратор с полными правами.
Большой палец наконец прошёлся по суставу, вниз, один раз.
- Администратор привязывается к ядру. Навсегда. Физически, технически, навсегда. Выхода нет. Пока сервер работает, администратор существует вместе с ним.
Уставился в строку: [ПОСТОЯННАЯ ПРИВЯЗКА].
Два слова. Горло не сжалось. Просто куда-то делся воздух, на секунду, потом вернулся. Без слепоты, без тихого угасания на Земле. Без того, чтобы снова смотреть в экран через лупу и слышать, как скринридер бубнит текст, который ты перестаёшь различать.
Секунду хотел этого.
Навсегда.
Отвёл глаза от консоли. Посмотрел на сферу, на чёрные пятна, которые расползлись на сантиметр за то время, пока мы здесь стояли.
- Второй.
Старик не посмотрел на меня, смотрел на строку BETA, и взгляд у него был ровный, без интонации, такой бывает у людей, которые уже давно решили, как относятся к тому, о чём говорят.
- Полная передача управления одному пользователю. Бог-режим. Мир выживает. Всё управление, все права, все команды в руках одного человека. Вектор пришёл за вторым протоколом.
Нира у колонны не пошевелилась, но шрам у брови стал резче. Мышца под ним напряглась.
Вектор говорил спокойно, аргументами, с весом ста пятидесяти лет за каждым словом. Логика не ломалась. Система управления, которую он построил, работала. Орден работал. Стабы работали. «Баги - это эволюция», и в этом было зерно правды, которое я не мог до конца опровергнуть.
Жар поднялся по шее к лицу. Быстро, без предупреждения. Смотрел на строку BETA и видел в ней Вектора, его спину, его людей, его полтора века порядка.
Один человек. Бесконечные полномочия. Мир выживает.
Гул ядра пропустил удар.
Просто пропустил один удар. Пропущенный удар в ритме. Мгновение тишины там, где её не должно было быть. Потом ритм вернулся, ровный, с долгой паузой после каждого раза. Вибрация поднялась по ногам и успокоилась.
Озон потерял остроту. Просто висел теперь, без укуса.
Зерно чуть повернулся. Глаза ушли в ту сторону, где в глубине полупрозрачных стен тускнели нити данных.
- Третий. Миграция. Мир пересобирается заново. Новая оболочка, самоподдерживающаяся, без таймера завершения. Потери данных неизбежны. Часть процессов не пройдёт через перенос. Кто-то должен решить, что переносить, а что нет.
Большой палец остановился у сустава. Коснулся и замер.
- Я написал протокол так, что это решение принимают жители.
Тишина.
Нира наконец повернулась. Рука, которая лежала на рукояти, убралась медленно, почти нехотя, и опустилась вдоль бока. Потом она посмотрела вниз, на тусклые пласты данных под полом, уходящие в глубину, и отвела глаза.
- Жители.
- Массовое подтверждение.
Зерно смотрел на строку GAMMA.
- Интерфейс игрока открывается для всех. NPC видят Систему, голосуют. Большинство определяет условия миграции.
Нира несколько секунд смотрела на него. Потом посмотрела на меня, коротко, одним взглядом.
В третьем не видел ничего, кроме темноты, в которую нужно шагнуть и надеяться, что там есть пол.
Пальцы замерли над воздухом, не дотянувшись до консоли. Команды не было.
- Они проголосуют за то, что понимают.
Голос вышел тише, чем собирался, и пришлось повторить нормально.
- А что они вообще знают о Системе?
Зерно смотрел на сферу. Одна из светящихся нитей по её поверхности мигнула, потускнела, погасла.
- Никто. Сначала никто.
Пауза.
- Нужно объяснить. Нужно время, чтобы поняли. Нужно, чтобы кто-то объяснил.
Нира у колонны переступила с ноги на ногу. Один раз, почти незаметно.
- Вектор не даст времени.
Старик не повернулся.
- Нет.
Долгая пауза, в которую вмещался гул ядра, его замедляющийся ритм, треск статики по колоннам. Нира снова положила руку на рукоять. Привычка, как дыхание.
- Ещё один вопрос.
Зерно повернул голову. Ждал.
- Если они проголосуют за миграцию, а потом выяснится, что мигрировало не то - кто отвечает?
Он помолчал. Потом, ровно, без обертонов:
- Никто.
Глаза вернулись к сфере.
- Это будет их мир. Со своими ошибками.
Кожа натянулась на скулах. Открыл рот. В этот момент консоль вспыхнула.
> ВНИМАНИЕ: VECTOR ПРИБЛИЖАЕТСЯ. Расстояние: критическое. Ожидаемое время: 2 мин.
Красный. Пульсирующий. Нира уже смотрела на разрыв в стене данных, где темнота за мерцающими строками стала на оттенок гуще.
* * *
Звук пришёл раньше людей.
Разрыв в стене данных разошёлся с треском, как рвут плотную ткань, только с хрустом и запахом озона, который ударил дополнительной волной поверх того, что и так висел в воздухе. Края проёма вспыхнули белым, рассыпали дуги, успокоились. В зал полился свет из коридора и вместе с ним запах.
Кожа, металл, пот. Машинное масло, которым смазывают оружие, и ещё что-то неопределимое, живое, тёплое, человеческое. После Пустоши, где у воздуха не было информации, где каждый вдох был чистым до неправильности, это ударило в ноздри резко, почти грубо. Голова мгновенно обозначила: люди. Много. Вооружённые.
Они вошли без спешки.
Семеро, может восемь, сразу рассредоточились, и колонны скрыли часть. Дисциплина читалась в позах: широко, с контролем пространства, оружие наготове, но без агрессии. Экипировка мерцала, мелкие знаки бежали по доспехам, тихий системный свет. Высокоуровневые. Видно было без консоли.
Нира стояла у колонны, и рука была на рукояти, не на лезвии. Просто там. Как якорь.
Вектор вошёл последним.
От него не пахло ничем. После кожи и металла Ордена это ощущалось как стерильный кабинет. Чистота без источника, без истории, без использования. Не запах человека. Запах контроля.
Шёл через зал так, как ходят люди, которые бывали в большем. Не смотрел по сторонам. Пространство уже было отмечено, учтено, снято с вопроса. Взгляд шёл прямо и перебирал точки: Нира, я, сфера, Зерно.
На Зерне остановился.
Полсекунды, меньше. Грудная клетка едва качнулась при вдохе. Мышца под скулой дрогнула. Глаза расширились ровно настолько, насколько лицо позволяет себе удивиться, пока всё ещё пытается держать форму. Что-то перестроилось в выражении, и сразу перестроилось обратно.
Маска вернулась. Без щели.
Но я видел.
Старик стоял у сферы, спиной к Вектору. Рука висела в сантиметре от поверхности. Там потрескивало, тонкие разряды тянулись к коже, синие нити, едва заметные. Между ладонью и светящимся перламутром шёл разговор, которого я не слышал.
Консоль выдала два блока рядом, как будто сравнение было целью:
> Пользователь: VECTOR [GM]. Уровень: 85. Доступ: РАСШИРЕННЫЙ. Команд: 127 разблокировано.
> Уровень: 14. Команд: 20 разблокировано.
Первый блок был плотным прямоугольником. Мой: три строчки. Держал эту разницу в поле зрения ровно столько, сколько нужно, и отвёл глаза.
Вектор прошёл мимо своих людей и встал напротив, ровно, без лишних движений, как человек, которому незачем торопиться. Взгляд прошёл по моему лицу и задержался на сфере, несколько секунд изучал пятна, их размещение, темп расползания. Потом перевёл на меня.
- Я знал, что ты найдёшь бэкдор.
Спокойно. Без театра. Просто факт, который давно перешёл в разряд рабочих переменных.
- Проще было дождаться, чем искать вход самому.
Глаза скользнули по мне, по Нире мельком, профессионально, как отмечают препятствия, которые не являются приоритетом.
- Вы сделали большую часть работы. Спасибо.
Что-то под рёбрами стало плотнее, жёстче, и осталось таким. Мы шли через Пустошь двое суток, а он просто шёл следом или вокруг, спокойный, с восемью людьми за спиной. Сто пятьдесят лет практики.
Хотел что-нибудь сказать. Промолчал.
Вектор повернулся к Зерну. Шаг вперёд, осторожный, как делают к чему-то, что давно искали. Остановился в метре. Наклонил голову к руке старика, туда, где разряды тянулись между кожей и перламутром, синие, тихие. Долгая секунда.
- Зерно.
Тихо. Потом пауза, и с другим весом, как второй замок в замочной скважине:
- seed_main.
Слова упали в пространство и остались там. Три секунды он стоял неподвижно. Полтора века перестраивались. Потом выражение вернулось к привычному. Ровному. Взрослому.
Развернулся ко мне.
- Вот что я предлагаю.
Не повысил голос. Зал повысил за него. Отозвался, умножил.
- Ты не хочешь быть богом. Я вижу это. Протокол первый ты уже просчитал - привязка, навсегда, без возврата. Не твоё.
Один короткий шаг в сторону, будто переставил опорную ногу перед следующей мыслью.
- Уходи. Забери девчонку, забери старика. Я возьму протокол второй. Мир выживет. Я управлял им сто пятьдесят лет - он работает. Орден работает. Стабы работают. Ты здесь неделю.
У колонны Нира не шелохнулась. Только глаза переместились с Вектора на меня, быстро, один раз, и снова обратно. Пальцы на рукояти ни разу не дёрнулись. Она считала. Восемь против трёх, один из которых старик. Это не битва, это математика.
Стоял напротив.
На восьмерых за его спиной: дисциплинированных, терпеливых, высокоуровневых.
Сто двадцать семь команд против двадцати моих.
На Ниру, неподвижную, с тем выражением, с которым люди уже всё посчитали и ждут сигнала. На Зерна, чья ладонь держалась в сантиметре от сферы, и тонкие разряды между кожей и поверхностью не гасли. Он не повернулся к Вектору. Рука чуть сдвинулась вперёд, ладонь на миллиметр ближе к поверхности. Разряды вспыхнули ярче и тут же успокоились. Большой палец медленно прошёлся по суставу среднего, один раз вниз.
Разумное предложение. Именно это и было опасно. Сто пятьдесят лет опыта против одной недели, и пропасть между этими числами была больше, чем пропасть между нашими уровнями. Аргумент держался.
Другая мысль, сразу. Все три протокола помечены [CREATOR_AUTH]. Без рук Зерна ни один не запустить.
Блеф.
На Земле я умел отступать перед человеком, который знает лучше. Взрослое решение: не цепляться за проект, который не твой.
Рука замерла у бедра, искала привычное движение и не находила. Взгляд прошёлся по строкам: четыре тысячи двести девяносто один час, девять процентов осталось, два миллиона восемьсот с лишним тысяч процессов. Потом поднялся на Вектора.
- Сколько у меня времени?
Глаза Вектора скользнули к ядру. На чёрные пятна, которые за время разговора сдвинулись ещё на ширину пальца. Потом на меня, ровно.
- Ядро на десяти процентах. Торопиться незачем.
Взвешенно. Без нажима. Как человек, которому действительно некуда спешить. Только ядро на десяти процентах умирало конкретнее, чем полгода назад, а точку невозврата я так и не нашёл в логе. Где-то в оставшихся девяти процентах она стояла.
В его ста двадцати семи командах были те, которые выдают точку невозврата точнее любого поиска.
Он знал, где она стоит.
И не сказал.
Глава 14. Миграция
Предложение висело в воздухе, и я его рассматривал. Сто пятьдесят лет против недели, сто двадцать семь команд против двадцати, работающая инфраструктура против моих догадок. Вектор стоял спокойно и ждал, и само ожидание было частью аргумента.
Озон висел в воздухе, кислый, металлический. Ладони были мокрые, и я вытер их о штаны машинально, как делал на Земле перед деплоем, когда уже всё проверено, а руки всё равно мокрые.
Смотрел не на Вектора. На сферу. На чёрные пятна, которые ползли по перламутровой поверхности, на тускнеющий свет между ними. Ядро умирало, и ему было всё равно, кто тут о чём спорит.
А если Вектор прав, и они проголосуют за привычное, и мир умрёт? На Земле я три раза за пять лет уходил из проектов, не хотел решать за пользователей, которых не знал, существовавших как строки в чужом реестре. Здесь у одного из этих пользователей шрам через бровь и нож на поясе.
Слова Вектора из Перекрёстка, из того разговора, который я прокручивал столько раз, что стёр интонацию, но не смысл. «Кто ты такой, чтобы решать?»
Горло было сухим. Я открыл рот.
- Протокол три.
Голос вышел тихим, и стены не подхватили, не умножили. Просто слова, упавшие в гул ядра.
- Миграция. Решение за жителями.
Вектор не шелохнулся. Секунду, две. Мышца у челюсти дёрнулась, и это было единственное, что двигалось. Потом пауза сбилась, и следующую фразу он начал не с того места, где собирался.
- Ты хочешь отдать им выбор. Людям, которые не знают, что такое Система. Которые думают, что уровни падают с неба. Они проголосуют за то, чтобы оставить всё как есть, и мир умрёт.
- Может быть. Их право.
Вектор смотрел на меня.
- Это не демократия. Это самоубийство по голосованию.
- Ты управлял ими сто пятьдесят лет. Спросил хоть раз?
Взгляд ушёл к ядру.
- Я их защищал.
- Знаю.
Он строил, защищал, держал порядок. Просто порядок, в котором никто, кроме него, не владел ключами.
На секунду, короткую, горячую, я хотел другого. Протокол первый, привязка навсегда, вечное зрение, вечный контроль. Знакомая работа. Я знал её изнутри. Ночная смена, один, только гул машин и светлеющее за окном небо, которое некому показать. Только вместо стола весь мир, и вместо усталости бессмертие. Осталось только послевкусие, кислое, как страх.
Консоль мигнула.
> Протокол GAMMA выбран. Ожидание CREATOR_AUTH
Зелёный текст, пульсирующий, терпеливый. Два других протокола погасли. Курсор мерцал на пустой строке, ждал ввода, которого у меня не было. Нужны были руки Зерна.
Вектор перевёл взгляд на сообщение, прочитал, и что-то в его лице закрылось. Он просчитал этот вариант, но не верил, что я его выберу.
- Ты понимаешь, что делаешь.
Не вопрос.
- Нет.
- Кто ты такой, чтобы решать.
- Никто. Поэтому и не решаю.
Выдох вышел сам.
Нира стояла у колонны, и я видел краем глаза, как её рука сдвинулась. Не к ножу. От ножа. Пальцы разжались, кожаная рукоять тихо скрипнула, отпущенная. Плечи опустились на сантиметр, может два. Она не повернулась. Смотрела на сферу.
Вектор смотрел на меня, и тишина между нами была длинной, три пульса ядра, четыре. Гул заполнял паузу, ровный, замедленный, с теми же перебоями. Пот на висках остывал.
Зерно стоял у сферы, чуть наклонившись вперёд, плечи сведены, взгляд прикован к зелёному тексту, как будто читал его снова и снова. Его рука висела в сантиметре от поверхности, разряды потрескивали между кожей и перламутром, синие нити, знакомые, терпеливые. Он ждал.
* * *
Зерно выпрямился.
Движение было медленным, позвонок за позвонком, от поясницы к затылку, и когда он распрямил плечи, стал выше на полголовы. Я видел его всё это время сгорбленным, сложенным вокруг собственного бреда, как вокруг больного места. Теперь перед ядром стоял другой человек, с прямой спиной, руками вдоль тела, со свободными пальцами, которые не дрожали.
Он повернулся к сфере лицом, и свет лёг ему на скулы ровно, без тех теней, которые рисует тревога. Глаза были ясными, спокойно-ясными, без той лихорадочной торопливости прежних окон, когда он спешил выговорить всё, пока туман не вернулся. Так смотрел человек, который знает, что делает, и давно с этим примирился.
Три шага к сфере. Каждый прозвучал отдельно, медленно и ровно, и зал отвечал каждому своим эхом. Он развёл руки в стороны, будто проверяя размах, и шагнул вплотную. Подошвы на прозрачном полу, под которым текли данные, и в этих данных были два миллиона восемьсот тысяч жизней, которые ничего пока не знали.
Зерно поднял обе руки и положил ладони на поверхность.
Низкий тон прошёл через зал, через пол, через кости. Свет под руками вспыхнул, потёк по коже до локтей, и по предплечьям побежали строки, мелкие, плотные, тысячи строк кода. Его код. Написанный на Земле, в офисе, которого давно нет, руками, которые тогда не дрожали тоже.
Он говорил тихо, глядя в сферу, лицом к свету.
- Я создал этот мир как продукт.
Золотые нити шли по предплечьям вверх. Зерно не торопился. Не оглядывался.
- Он стал домом. Не мне решать, как выглядит чужой дом.
Слова упали в гул ядра без украшений. Больше ничего не было нужно.
Тишина после них стала другой. Плотной.
Свечение между пальцами изменилось, стало ярче и острее. Сфера загудела на полтона выше, разряды перестали потрескивать и потянулись вверх сплошными нитями, золотыми, плотными. Зерно закрыл глаза. Лицо не изменилось.
Консоль вспыхнула.
> Авторизация создателя: подтверждена.
> Протокол GAMMA: ЗАПУЩЕН.
> Распределение интерфейса: [В ПРОЦЕССЕ]
Краем глаза я увидел, как Вектор дёрнулся. Пальцы метнулись к консоли, быстро, отработанным движением.
> /override protocol_gamma
> ОТКАЗАНО. Авторизация создателя активна. Переопределение заблокировано.
Вектор опустил руку. Мышца на челюсти вздрогнула, замерла. Он смотрел на красный текст так, как смотрят на дверь, которая только что закрылась на последний замок.
Вспышка. Глаза обожгло, под веками поплыли белые пятна. Ударная волна прошла сквозь тело, звон в ушах. Стены храма загорелись, данные внутри них ускорились, замерцали, вспыхнули белым. Воздух сгустился озоном до рези, и на языке остался привкус алюминия, знакомый, острый.
От ядра пошла первая волна. Аккорд пришёл первым, сложный, многослойный, и пол под ногами отозвался ему низким ответом. Стены долго ещё держали эхо после того, как сам звук уже стих. В воздухе после него осталось что-то чистое. Слабый запах, незнакомый. Потом кольцо сияния расширилось, как круг на воде от брошенного камня, и проскользнуло сквозь стену, сквозь храм, дальше, наружу, в мир.
Секунда тишины. Ни гула, ни разрядов, только пульс в висках и дыхание, которое я не успел задержать.
За ней вторая волна. Третья. Каждое кольцо несло в себе тысячи пакетов, тысячи интерфейсов, и я видел это в потоке данных на экране, строки бежали быстрее, чем получалось читать. За полупрозрачными стенами вспыхнула точка. Ещё одна. Перекрёсток загорелся, и следом, мельче, тише, деревня Порог. Дальше, за горизонтом данных, точки зажигались одна за другой.
> Сущностей, получающих интерфейс: 2 847 103
Два миллиона восемьсот сорок семь тысяч сто три.
Цифра не помещалась целиком. Глаза прочитали её по частям, два, потом миллиона, потом остальное, и только после этого в голове собралось. Воздух вышел из груди коротким толчком, и вдохнуть обратно получилось только со второй попытки, неглубоко, через узкую щель где-то выше ключиц. Колени закостенели. Я переставил ноги, проверил, держат ли они. Держали. Руки оказались сжатыми перед грудью, костяшки белые, я даже не заметил, когда их туда поднял. Разжал. Хрустнуло. На зрение наплыла мелкая рябь, я моргнул несколько раз, пока она не ушла.
Нира отшатнулась от колонны, её локоть ударил меня в плечо, и она схватилась за голову обеими руками, пальцы вцепились в волосы. Глаза широко открыты, рот тоже, взгляд метнулся вверх и вправо, туда, где для меня давно висели привычные окна интерфейса.
- Что это?
Голос сорвался на полуслове. Она не спрашивала меня, спрашивала воздух.
Пальцы разжались и потянулись к чему-то перед лицом, нашарили невидимое и замерли. Рука подрагивала. Вторая крепко держала ножны, побелевшие костяшки, хотя нож тут был ни при чём.
- Что я вижу?
Я смотрел на неё и не торопился отвечать. Там висело окно, полоска HP, статус, уведомления. Всё то, что я видел с первой минуты здесь и давно перестал замечать. За стенами храма два миллиона видели то же самое прямо сейчас, каждый по-своему, каждый с той же рукой, тянущейся к воздуху.
Подошёл ближе, чуть медленнее обычного.
- Систему. Ту, в которой ты живёшь.
Нира перевела взгляд. Я не отвёл.
- Теперь ты её видишь тоже.
Она смотрела на меня несколько секунд, и что-то в её лице менялось слоями, слишком быстро, чтобы читать по одному. Рот приоткрылся, потом закрылся. Я видел, как она не говорит вопрос, который поднимается, видел, как она решает его придержать. Нира опустила взгляд на свои ладони, потом снова на меня.
- Ты это видел всегда.
Не вопрос.
- С первой минуты.
Она помолчала. Костяшки чуть отпустили рукоять.
- И молчал.
- Я не знал, что объяснять. Ты бы решила, что я сумасшедший.
- Я и сейчас так решаю.
Голос её был ровным, твёрдым, только самый низ, где интонация заземляется, слегка дрожал.
Она подняла руку снова, медленно, и провела кистью перед глазами сверху вниз. По движению было видно, что листает что-то. Потом остановилась. Прочитала. Опустила руку.
- Там написано «следопыт». Уровень двадцать девять.
- Да.
- Я всегда была двадцать девятого уровня?
- Вероятно.
Она обдумала это. Смотрела куда-то мимо меня, и по тому, как двигались её глаза, было ясно, что читает дальше. Потом остановилась, указательный палец завис перед лицом, замер на полсекунды и опустился. Она молчала.
За стенами храма мир гудел. Глухо, далеко, как стадион сквозь бетон. Два миллиона людей впервые увидели Систему, и звук этого потрясения дошёл сюда, до ядра, тяжёлым басом, в котором не было слов, только объём.
> Голосование по миграции: ОЖИДАНИЕ. Кворум: 50%+1.
Смотрел на Зерна. Руки по-прежнему лежали на сфере, и свет тёк по предплечьям, но лицо расслабилось, челюсть чуть опустилась, и выражение стало таким, какое бывает у людей, когда они наконец поставили тяжёлое на землю.
Нира выпрямилась, убрала руки от лица. Пальцы подрагивали, она это видела и не прятала. Провела пальцами перед глазами ещё раз, закрыла что-то, что было открыто.
- Это теперь у всех так?
- У всех.
Она посмотрела на Зерна. Потом на меня. Потом в ту сторону, где должна была быть деревня Порог, хотя за стенами ничего не было видно, только свет ядра.
- Там сейчас паника.
- Скорее всего.
- Надо идти.
Это прозвучало как само собой разумеющееся, как «надо проверить дозор» или «надо поставить ловушки».
Я кивнул. Воздух стал легче.
Нира стояла в трёх шагах от меня и видела ровно то, что видел я. Моё преимущество, мой единственный козырь в мире, где я был четырнадцатого уровня против восемьдесят пятого, растворился в волнах света. Я стоял и смотрел, как он растворяется, и не хотел его обратно.
* * *
Я ещё смотрел на Ниру, на то, как она проводит ладонью по воздуху перед лицом и листает что-то невидимое для всех, кроме неё, когда Вектор нашёл второй путь.
Не через протокол. Мимо него.
Красная строка прочертила поле зрения. [ВЕКТОР] /block distribution_channel_47. Понял с запозданием, которого быть не должно. Каналы распределения. Протокол он не тронет, но интерфейс шёл к жителям по каналам, а каналы защищены куда хуже.
Руки нашли консоль раньше слов. Подмена идентификатора, как в Мёртвом болоте, седьмая глава. Канал переписан на системный процесс ядра.
Выдохнул.
Поверхность консоли под ладонями была горячей, покалывание поднималось от запястий до локтей. Воздух в зале стал гуще с каждой командой.
Вектор не тратил времени. Экран у него мигнул красным, идентификатор найден, канал заблокирован, и всё это за минуту, методично, как плановую задачу, а не как парируют лучший ход противника.
Единственное, что знал, закрыто.
Следующего не было.
Другие каналы шли дальше, channel_47 был одним из многих. Этот обмен уже проигран.
Пол задрожал под ногами, частая мелкая дрожь, ядро реагировало на каждый удар. За спиной прозвучало что-то короткое и металлическое, узнаваемое. Нира. Шестеро из Ордена шли к Зерну, к рукам, лежащим на сфере, к единственному, что держало протокол живым.
Она встала первой. Нож короткий, против длинных клинков невыгодно, это понятно с первого взгляда. Она тоже понимала и всё равно встала.
Нира шагнула вперёд, левое плечо развернулось чуть раньше правого, взгляд в лицо переднему из Ордена, ровный, без торопливости.
- Держи позицию.
Уже двигалась, пока слова висели в воздухе. Шестеро замедлились, перестраиваясь. Передний скосил взгляд влево, голос короткий, без интонации.
- Обход слева.
Клинки разошлись в стороны. Нира не отступила, она сжалась ниже, быстрее, дала им думать, что открылась, и ударила первой, в сгиб локтя, не в корпус. Лязг пошёл короткими вспышками, хаотичный, без ритма. Она уклонялась больше, чем атаковала, использовала чужой вес и чужой замах, не свою силу. Орден перегруппировался. Двое потянулись к Зерну, и тот, что оставался напротив неё, коротко вскинул кулак в сторону сферы.
- Второй, на старика.
Нира скользнула наперерез, поймала удар предплечьем, шипя сквозь зубы, оттолкнулась и снова встала между ними и сферой.
Я отвернулся к терминалу. Больше не смотрел.
Следующую команду Вектора не успел прочитать до конца. Поле зрения рвануло оранжевым, принудительная блокировка, и кисти замерли на полусловах. Не я остановил их, просто экран перестал отвечать. В голове что-то начало выключаться, не боль, хуже, тупое скользкое молчание там, где только что были мысли.
Один ход. На форуме шло с предупреждением, не применять на живых сущностях. Флаг self ограничивает откат телом пользователя, состояния мира не затрагивает. Это годится. Набрал /rollback self -3s.
Хлопок изнутри, как удар ладонями по ушам с обеих сторон одновременно. Мир моргнул, пустота там, где только что было «сейчас», и куда оно ушло. Потом всё вернулось рывком, зал, ядро, лязг, свет, и уже гаснущий, прозрачный контур себя три секунды назад, с застывшими руками над оранжевым полем.
Голова раскалывалась от затылка до надбровных дуг. Зал двоился, два ядра, два потока команд, наложенных друг на друга. Тошнота поднялась медленно, как подъём воды в закрытом трюме. Ладони нашли консоль на ощупь, глаза больше не договаривались с тем, что внутри черепа.
Где-то в этих трёх секундах была мысль, которую уже не вспомнить. Просто пустое место на месте формулировки.
Вектор оторвал взгляд от своей консоли. Руки остались на месте, пальцы перестали двигаться. Смотрел на то, как я держусь за ребро терминала, как голова не слушается. Что-то прошло по мышцам у его рта, короткое, и ушло обратно за маску.
- Ты откатил себя.
Пауза. Он держал её дольше обычного.
- Знаешь, что это делает с памятью.
Уже знал.
Двоение оседало медленно. За спиной лязг, глухой, реже. Нира держала.
Смотрел на Вектора. Сто двадцать семь. Двадцать. Пять дней. Дальше не шло.
Его кисти поднялись к консоли медленно, без спешки. Так кладут последнюю карту.
> [ВЕКТОР] /admin_override --force --no-confirm
Давление в зале изменилось в ту же секунду. Вибрация пола перешла в другую частоту, ниже, тяжелее. Вокруг ядра начала проступать красная сфера, сначала почти прозрачная, потом наливалась гуще, поглощала золотое с краёв.
Экран ответил красным. GM-переопределение выполняется... 40%...
Смотрел. Не двигался. Арсенал кончился. Голова горела, руки на консоли жгло. За спиной короткий скрип подошвы по камню, Нира, и сразу лязг, тяжёлый, придавленный, двое Ордена давили с флангов.
Зерно стоял у сферы. Руки в перламутре. Лицо спокойное. Спина прямая.
> [СИСТЕМА] GM-переопределение выполняется... 80%...
Восемьдесят. Красное поглотило три четверти ядра. Каждый вдох давался чуть труднее предыдущего.
Ладони жгло на консоли, жгло везде, от запястий до локтей. Пол дрожал под ногами мелко и часто, не как при землетрясении, иначе, изнутри. Запах горелого проник в зал, озон и что-то резкое, как горелый металл. Воздух входил в лёгкие тяжело, как будто его стало меньше. Восемьдесят три процента, ещё немного, и будет поздно.
* * *
Свет в сфере изменился.
Снаружи красное по-прежнему ползло к вершине, восемьдесят два процента. Внутри, между руками Зерна и перламутром, поток развернулся. Раньше данные текли к нему. Теперь они текли из него, светящимися нитями из рук, из груди, из каждого места, где тело ещё хранило что-то своё.
Консоль мигнула.
> Пользователь seed_main: respawn_cycle ПРЕРВАН [ручная терминация]
> Энергия перенаправлена: подавление переопределения
Строки появились беззвучно. Без звона уведомлений, без системной рамки. Просто текст на чёрном.
Прочитал дважды.
Красная сфера замерла на восьмидесяти трёх процентах.
Тишина обрушилась вся сразу, мгновенная, как будто кто-то дёрнул рубильник и отключил звук в мире. Красные осколки вокруг ядра затрещали, пошли трещинами, начали осыпаться.
Override остановился.
Вектор закричал.
За всё время, что я его знал, за все разговоры в Перекрёстке, за все команды и контркоманды он ни разу не повысил голос. Сейчас крик вырвался из него как из человека, который увидел, как кто-то шагает с крыши, и понимает, что не успеет. Голос сломался на второй ноте, и эхо подхватило обломки, размножило по залу, исказило.
- Ты идиот! Ты мог жить вечно!
Глаза у него блестели. На долю секунды - влажно, по-человечески - прежде чем лицо снова стало ровным.
Зерно повернул голову.
- Я жил вечно.
Фраза упала рядом и никуда не улетела.
- Не рекомендую.
Орден за спиной Вектора отступил. Тихо, без команды, просто ноги понесли назад. Их лидер кричал, ядро мерцало незнакомым светом, старик у сферы умирал, и вместе с ним рушилось что-то. Оружие опустилось. Лица стали растерянными, пустыми, как у людей, которые пришли на работу и обнаружили, что здания больше нет.
Нира стояла с ножом в опущенной руке и не двигалась. Кровь на предплечье, её или чужая, подсыхала тёмной полосой. Глаза были открыты широко, и ничего в них не двигалось.
Зерно повернулся ко мне. Нити уже добрались до лица, тонкие, по скулам, по лбу, и уходили в сферу одна за другой. Он нашёл мои глаза и не отпустил.
- Доведи миграцию. Не торопи их с голосованием. Люди медленно думают, это не баг.
Пальцы у него на перламутре сжались чуть крепче. Данные под ладонями пошли медленнее.
- Если когда-нибудь вернёшься на Землю. Удали мой аккаунт из корпоративного слака. Меня зовут Андрей. Андрей Семёнов. Пароль - день рождения мамы.
В горле встало что-то твёрдое. Тысячи лет - seed_main. А его звали Андрей.
Он улыбнулся. Первый раз за всё время, что я его знал. Улыбка была спокойной, облегчённой.
- Наконец-то logout.
Глаза закрылись. Тело качнулось и упало. Волна прошла по полу - тёплая, мягкая, как кто-то выдохнул в пространство. Запах озона ударил резче, воздух горел.
Нога затекла, я этого почти не заметил. Переступил с пятки на пятку. Пыль осела на полупрозрачный пол тонкой плёнкой, поверх текущих под ним данных, и одна её крупинка медленно оседала в свете, медленнее, чем положено. Смотрел на крупинку. Надо было найти другой способ. Сразу же следом - нет. Он знал. Всё просчитал раньше меня.
Она ещё висела, когда консоль обновилась.
> Пользователь seed_main: СТАТУС - МЁРТВ [НАВСЕГДА]
> Точка респауна: ДЕАКТИВИРОВАНА
> Права создателя: ПЕРЕДАНЫ ПРОТОКОЛУ GAMMA
> Прогресс миграции: распределение интерфейса... 67%
> GM-переопределение: ЗАБЛОКИРОВАНО [постоянная блокировка]
Строка МЁРТВ [НАВСЕГДА] была белой на чёрном. Без мерцания, без анимации. Стояла неподвижно, как надпись, которую высекли в камне и оставили.
Под ней, внизу, мелким серым шрифтом, почти незаметная:
Спасибо, seed_main.
Смотрел на неё, и слёзы текли по лицу, и я их не вытирал больше.
* * *
Вектор стоял у своей консоли и смотрел на строку, которая появилась на его экране. GM-доступ: ОГРАНИЧЕН. Блокировка уровня создателя активна. Лицо оставалось маской, сто пятьдесят лет практики, но что-то сдвинулось в мышцах вокруг рта, едва заметно, на долю секунды, прежде чем он снова стал ровным.
Гул ядра шёл сквозь пол ровнее, чем минуту назад. Та же вибрация, но без срывов, без дрожи на высоких частотах. Ядро дышало ровнее. Я сидел на полупрозрачном полу, чувствуя спиной стену, и смотрел на Вектора.
Он стоял у своей консоли, и на нём было видно, что GM-права ушли. Руны на оплечье, которые раньше переливались серебром, потухли до оловянного. Плащ, который всегда слегка светился по кромке, теперь был просто тканью. Уровень 85, навыки, снаряжение, всё осталось. Ушла подсветка власти. Сисадмин без рута.
Орден стоял позади него, и я впервые увидел их как отдельных людей, а не как фигуру-монолит. Молодая женщина с копьём перекатывала древко в ладонях, не зная, куда смотреть. Старший, тот, что первым вошёл в зал, держал меч опущенным, острием в пол. Кто-то в капюшоне просто сел на корточки у колонны. Они ждали приказа, и приказа не было.
На моей консоли числа бежали рекой.
> Голосование по миграции: В ПРОЦЕССЕ
> Голосов подано: 1 204 887 / 2 847 103
> Текущий итог: МИГРИРОВАТЬ [73%] / ОТКЛОНИТЬ [12%] / ВОЗДЕРЖАТЬСЯ [15%]
> Распределение интерфейса: 94%
Два миллиона человек, которые вчера не знали, что у них есть право голоса, сегодня нажимали невидимые кнопки в воздухе. Кто-то в Перекрёстке, кто-то в Пороге, кто-то в деревне, названия которой я никогда не узнаю. Семьдесят три процента за миграцию. Я попытался представить лица этих людей и не смог, и почему-то от этого стало легче. Они решали не для меня.
Тело Зерна лежало в двух шагах, и я чувствовал это через отсутствие. Когда он был живым, от него шло тихое тепло респаун-цикла, пока не уйдёт. Теперь рядом со мной был холод на месте, где ещё час назад был человек. Пот на спине остыл, рубашка прилипла, и этот озноб смешивался с тем, другим холодом.
Вектор поднял голову и посмотрел на меня. Долго. Мышцы у него на скулах напряглись и отпустили. Лицо становилось ровным медленно, как поверхность воды после удара.
- Ты знаешь, что они проголосуют.
Пауза наконец сломалась. Голос был тот же, ровный, менторский, но из него вынули что-то несущее.
Я посмотрел на тело. Горло сжалось, и секунда ушла на то, чтобы просто сглотнуть.
- Знаю.
Он смотрел на меня секунду, потом его взгляд сместился на экран, на бегущие числа. Когда вернул взгляд, что-то в нём изменилось, едва заметно, как изменяется лицо у того, кто задаёт вопрос, уже зная ответ, и всё равно спрашивает.
- Они оставят баги. Пустоши оставят. И огненный квартал, если захотят. Проголосуют за привычное.
Я не перебивал. Взгляд сам уходил на тело, на то, как оно лежало чуть неправильно, как лежат только те, кто уже не поправит позу. Слова Вектора звучали как отрепетированное, что-то он уже говорил раньше, не мне.
- И ты с этим сможешь.
Он не отвёл взгляд.
- Почему?
Пауза после вопроса была короткой, но он её держал. Не торопил. Ждал.
Во рту было сухо, как будто я весь день говорил, хотя говорил мало.
Слово нашлось не сразу.
- Твоё слово. «Исправить». Не моё. И не их.
Вектор посмотрел мимо меня, туда, где лежало тело. На несколько секунд лицо у него стало другим, что-то двигалось под маской, недолго, потом улеглось. Он вернул взгляд на меня.
- Ты здесь пять дней.
Не упрёк. Констатация.
- Я знаю.
- И думаешь, что понял их лучше меня.
- Нет.
Сглотнул.
- Я не понял. Поэтому и отдаю им.
Он долго молчал после этого. Пальцы у консоли, которая больше не отвечала на его команды, лежали неподвижно. Он, наверное, чувствовал это особенно здесь, в зале ядра, где сто пятьдесят лет каждая команда исполнялась. Сейчас просто лежали руки рядом с консолью.
Взгляд его соскользнул на тело. Секунда. Потом он отвернулся.
Просто пошёл к выходу из зала. Шаг ровный, прямой, как у того, кто не хочет, чтобы спина сказала больше, чем лицо. Орден потянулся за ним, не сразу, по одному. Женщина с копьём последней. Она оглянулась, но не на меня, на ядро. Потом ушла тоже.
Я сидел и смотрел. Они исчезли за поворотом коридора.
Спиной давило в стену, и я оперся сильнее, будто проверяя, держит ли. Держала. Сломлен он или освобождён, я не понял. Может, он сам ещё не понял. Сто пятьдесят лет быть богом, а потом выйти из храма обычным игроком уровня восемьдесят пять. Я не знал, как это выглядит изнутри. Хуже ли, чем быть полуслепым бэкендером в однушке у кольцевой. Может, хуже.
Нира опустилась рядом со мной, прислонилась спиной к той же стене. Нож убрала. Рукав закатан, на предплечье засохшая полоса, тёмная. Она не смотрела на неё.
Молчали. Числа на экране щёлкнули. 1 205 902. Ещё тысяча человек. Решали без меня, без него, без Зерна.
Нира не отрывала взгляда от ядра.
- Он мог остаться.
- Мог.
Она подтянула колено к груди, обхватила его руками. На запястьях у неё были ссадины, свежие, мелкие, которых не заметишь, пока не остановишься.
- Почему не остался.
Это тоже был не вопрос. Она уже знала ответ, или часть его.
- Устал.
Нира кивнула. Один раз, медленно.
Тысячи лет это долго.
- Страшно.
Она обхватила колено чуть крепче.
- Им сейчас страшно.
- Да.
- Нам тоже надо идти. Там паника.
Сказала это так, как говорят «надо проверить дозор».
Нира провела рукой по воздуху перед глазами, листнула что-то в интерфейсе. Потом опустила.
- Я всё ещё двадцать девятого уровня.
- Да.
- Надо будет разобраться, что это значит.
- Надо.
Я посмотрел на тело Зерна. Встал. Ноги были тяжелее, чем должны. Воздух стал легче.
Нира поднялась рядом, молча, не подавая руки. Мы двинулись к выходу. Числа на экране продолжали щёлкать за спиной, и каждый щелчок был ещё одним человеком, который только что решил что-то впервые.
* * *
Мы дошли до арки выхода, когда экран мигнул. Коридор за нами был пуст.
Нира была впереди на шаг, я за ней. Тяжёлые ноги несли тело по инерции, без участия головы. Она остановилась первой, дёрнулась - видимо, пришло уведомление - и, кажется, всё ещё не привыкла. Я остановился следом, положил ладонь на холодный камень арки, чтобы не качнуло.
> Кворум достигнут. Миграция: ОДОБРЕНА [71%].
> Последовательность выключения: ОТМЕНЕНА.
> Целостность ядра: стабилизируется... 10%... 11%... 12%...
Семьдесят один процент. Поздние голосовали осторожнее. Двадцать девять процентов были против, или не поняли кнопки, или просто сидели на кухне и доели суп, пока другие решали.
Повернулся обратно к залу. Нира развернулась со мной, молча.
Сфера изменилась. Чёрные пятна стягивались обратно, медленно, далеко не полностью. Там, где минуту назад был провал, перламутр возвращался тонкой плёнкой, заполнял трещины. Числа в окне ползли вверх. Одиннадцать, двенадцать. Впервые за всё время, что я их читал, они не уменьшались.
Пульс ядра стал ровнее. Тот же бас, но в нём прорезался верхний слой, живой, шевелящийся.
Подумал про Андрея. Имя теперь было, конкретное, с фамилией. Если вернусь когда-нибудь на Землю, найду его аккаунт и удалю. Закрою последний тикет.
Нира опустила руку.
- Это всё видели игроки.
- Да.
- И ты видел это всю жизнь.
- Не всю. С того момента, как попал.
Она снова провела рукой перед лицом и задержала её там.
- Чудовищно.
Опустила руку.
- И прекрасно.
Лицо стянуло солью от высохших слёз. В груди стояла усталость без торжества, такая бывает после ночного деплоя, когда всё прошло и алерты молчат.
Глава 15. Patch notes
Перекрёсток на четвёртое утро пах свежестью, чем-то промежуточным, будто кто-то прошёлся тряпкой по всем поверхностям сразу. Озон первого дня выветрился, жареное мясо тоже. Я сидел на низком парапете у западного входа, грелся тощим солнцем и смотрел, как двое мужиков спорят с овощной торговкой. Один, с седой щетиной, тыкал пальцем в воздух над прилавком.
- У тебя написано «свежесть средняя».
Он чуть привстал, будто это добавляло весу.
- Я теперь читать умею, понимаешь? Читаю и понимаю. Сбрось цену.
Торговка смотрела на него так, как смотрят на ребёнка, который принёс в дом змею и гордится. Ничего не отвечала, просто медленно заворачивала ему редьку в газету, и было ясно, что редьку он получит, но разговор к ней не прилипнет.
Четвёртый день такого. Каждая площадь Перекрёстка превратилась в маленький митинг, и митинги шли по всем темам сразу: цены, классы, уровни, души. Особенно души. В таверне у северных ворот вчера чуть не подрались из-за того, считается ли человек человеком, если в окошке над ним написано «крестьянин, 7». Один кричал, что раз написано, значит так и есть, Ушедшие не врут. Второй отвечал, что Ушедшие сказали не нам и нечего их слушать. Третий просто пил.
Я пил тоже. Не ради забвения, ради повода посидеть и посмотреть.
Где-то за спиной, в глубине таверны, где тысячу лет заедало один и тот же аккорд музыкального автомата, было тихо. Вчера аккорд наконец замолчал. Не мелодией другой, а просто тишиной. Посетители в тот момент замерли, обернулись на стенку, ждали продолжения, и продолжения не было. Тишина держалась минуту, может две. Потом хозяин прокашлялся, сказал: «Ну и ладно». Все вернулись к кружкам. Только я сидел ещё долго и слушал, как не звучит нота, которую я ненавидел с первого дня. Странно, сколько места она, оказывается, занимала.
На краю поля зрения висело моё окно. Я на него старался не смотреть, но оно всё равно проступало, как солнечное пятно, которое ты закрыл шторой, а оно всё равно там.
> /inspect - команда устарела в новой архитектуре
> /rollback - команда удалена. Причина: несовместимость с распределённым управлением
> Категория «Игрок»: ВЫВОДИТСЯ. Переход к: «Житель»
Строки висели белые, спокойные, без красного. Система меня не наказывала, Система меня увольняла по-доброму. Как отдел кадров, который выписал хорошие рекомендации и предложил чай.
По привычке я развернул пальцы, набрал в воздухе /inspect на торговку. Несколько секунд ничего. Потом, с опозданием, будто сигнал шёл через старый модем, над прилавком прорисовалось облачко. Имя. Уровень. Класс. И всё. Ни ID, ни HP, ни флагов, ни истории сессий. Раньше тут было полотно данных в три экрана. Сейчас - визитка. Причём и та подрагивала по краям, будто Система уже не уверена, что обязана мне её показывать.
Убрал руку. Не больно. Просто пусто, как когда перестаёшь носить часы и запястье ещё несколько дней само проверяет, сколько времени.
Нира подошла сзади, я услышал её шаги раньше, чем увидел. Шаги у неё за эти дни стали другие, внимательнее. Будто пол под ней тоже обновился и она проверяет каждое место, на которое наступает.
Она встала рядом, не садясь, оперлась о парапет локтями и смотрела на площадь.
- На третьем квартале голосуют.
Нира оглядела площадь, не оборачиваясь.
- Я тебя тоже туда записала.
- Без спроса.
- Ага.
Нира перекатила что-то во рту, как будто пробовала слово на вкус.
- Там по колодцам. Какой починить, какой засыпать, какой оставить. Думала, тебе интересно. Раньше ты за каждым колодцем бежал.
Раньше. Я поднял кружку, отхлебнул остывший отвар. Вкус у него был ни о чём, но ещё одна причина не отвечать сразу.
- Пусть сами разберутся.
Нира повернулась ко мне и смотрела секунды три. Для неё это долго.
- Ты это уже третий день говоришь.
- Потому что третий день правда.
Она не ответила. Отвернулась обратно к площади и стала смотреть, как торговка наконец выдаёт мужику его редьку. Мужик держал её торжественно, как будто выиграл. Торговка не изменилась в лице.
Я помолчал. Нира меня записала и пришла, а я взял и срезал.
- Слушай.
Опустил кружку на парапет, смотрел на площадь.
- Я не ухожу от этого. Просто пока не знаю как.
- Я знаю.
Нира отвернулась к площади.
- Сиди.
За эти дни Нира освоила свой интерфейс быстрее, чем я освоил её молчания. Она его открывала и закрывала десятки раз в день, листала, тыкала, хмурилась, запоминала. У неё появилась привычка держать ладонь чуть на отлёте, как у человека, который носит в руке фонарь и не хочет светить в глаза собеседнику. Вежливость, которой ещё вчера не существовало.
Я смотрел на площадь. Стена кузницы напротив за эти дни отрастила обратно кусок штукатурки в том месте, где она всегда отсутствовала. Не было дыры. Теперь есть стена. Не идеально: штукатурка лежала неровно, будто её нанёс кто-то, кому показали картинку и попросили повторить по памяти. Трещины остались. Мох кое-где тоже, его не убирали, мох проголосовал против.
За крышами, вдалеке, на горизонте, проступала тёмная полоса Пустоши. Тоньше, чем ещё три дня назад. Я старался не мерить её взглядом каждое утро. Мерил. Она отступала. Не красиво, не ровно, местами клочками. За ней была свежая земля, что-то вроде молодой шкуры: трава, низкие кусты, тонкие деревца, несерьёзные. Но живые.
На консоли дёрнулось ещё одно сообщение, вошло тихо, без звона.
> Канал: игрок_помощь. Статус: закрыт. Обращайтесь в общий форум.
Форум был везде. Форум был у всех. Я посмотрел на своё окно, где когда-то висели приоритетные очереди, и где осталось три пункта: имя, уровень, одно непрочитанное уведомление. Цифра «1» тихо светилась. Висела с той ночи, я её не открывал.
- Он уменьшается.
Нира кивнула на мой интерфейс, убрала взгляд.
- Вижу, когда смотришь. Лицо другое.
Раньше я бы уточнил, какое именно лицо. Сейчас не стал.
- Ага. Уменьшается.
- И что?
Хороший вопрос. Я помолчал, обхватил руками кружку, в которой остывал несладкий отвар.
- Нормально. Наверное, так и должно быть.
Нира покатала это в голове секунду-другую. Потом, не поворачиваясь, без особого выражения:
- Глазастый, а ты теперь кто.
Ответа у меня не было. Я смотрел, как на площади торговка уже разворачивала прилавок на следующего покупателя.
* * *
Нира не стала ждать ответа. Встала, кивнула на восток и пошла, и я пошёл следом. Так у нас работает ещё с Пустоши.
Жар начался раньше, чем мы обогнули угол. Сначала просто тепло, приятное после утренней прохлады, я расстегнул куртку. Потом сильнее. На перекрёстке двух переулков, откуда уже открывалась площадь, воздух стоял горячий, тяжёлый, с запахом угля и чего-то металлического, тягучего, который я не чувствовал несколько месяцев. Куртку я снял совсем, перекинул через руку.
Площадь была полная. Человек двести, может больше, плотно, плечом к плечу, лицами к центру. В Огненном квартале жили отдельно от остального Перекрёстка, своей жаркой деревней, и я отвык, что тут вообще бывает столько народу. Над головами висели интерфейсы, светлые прямоугольники, непривычно много разом, руки тыкали в воздух.
Мы встали у края. Нира чуть позади, я впереди. По привычке поднял руку и развернул своё окно.
> Сектор: Огненный_Квартал
> Предложение: Восстановление циклического огня [контролируемые параметры]
> Статус: голосование активно
> Ваш голос: НЕДОСТУПЕН. Причина: не является жителем сектора.
Я опустил руку.
В центре площади стоял широкий седой мужчина с такими предплечьями, как будто их лепили отдельно. Больше ничего при себе не было: ни молота, ни инструментов. Просто стоял и ждал, пока толпа сама успокоится. Говорил, когда успокоилась.
- Я ковал в пламени сорок лет.
Голос у него был не злой и не обиженный, просто низкий, уверенный, на всю площадь.
- Потом пришёл глазастый и погасил. Теперь я могу зажечь обратно?
Несколько голов повернулось в мою сторону. Я стоял. Куртка через руку.
Кузнец не ждал ответа. Уже знал его.
- Зажгите.
Площадь зашумела разом, как разговор, который ждал разрешения: голоса накладывались, перебивали, кто-то смеялся, кто-то возражал. Интерфейсы над головами засветились ярче, руки двигались быстро.
Потом что-то началось в центре.
Сначала точка у старого горна, который не работал с той самой ночи. Точка была розоватой, я решил, тепловое марево. Потом нет, не марево. Оранжевая, потом красная, и языки пламени проступали медленно, не вспышкой, а как будто огонь вспоминал дорогу и шёл, никуда не торопясь.
> Результат: 83% «ЗА» / 11% «ПРОТИВ» / 6% «ВОЗДЕРЖАЛИСЬ»
> Статус: ОДОБРЕНО. ВОССТАНОВЛЕНИЕ
Огонь пошёл от горна к краям. Жар накрыл площадь по-настоящему, лицо начало гореть. Люди не отступали. Стояли и смотрели, как возвращается что-то, что было забрано.
Кузнец подошёл к горну, подхватил молот. Не делал ничего конкретного, просто взял в руки. Пламя плескало у него под носом, красное, живое, и лицо у него было такое, что я отвёл взгляд.
- Больно?
Нира стояла вполоборота к площади, смотрела на огонь. Голос тихий, без подъёма.
Горло сжалось. Не от дыма.
- Нет. Правильно.
Она не повернулась. Смотрела на огонь ещё секунду, как будто это был ответ и огню тоже.
- Можно и то, и другое.
Я смотрел на огонь. Жар давил на лицо, на ладони.
- Можно.
Баг стал фичей. Буквально.
Смешно. Не смеялось.
Кузнец поднёс молот к наковальне. Первый удар вышел вхолостую, проверяя. Звук разошёлся по площади чисто, ровно. Второй уже по делу. Ритм пошёл.
Нира стояла рядом. Плечо в полуметре от моего, взгляд на огонь, не на меня.
Площадь жила. Голоса, жар, дым, стук молота. Я тут ни при чём.
* * *
Мы вышли из квартала, когда стало совсем горячо. Жар шёл волной, спиной его чувствовал ещё полквартала. Куртка через руку, дым в волосах, запах раскалённого металла впитался в рубашку, привычный для квартала, мне непривычный.
Переулок вывел на широкую улицу. Тень, прохладный камень, далёкий шум рынка с северной стороны. Нира шла чуть впереди, не оглядываясь. По привычке я поднял руку.
Направил /inspect на прохожего у дальней стены. Просто посмотреть.
Ничего.
Не задержка. Не ошибка с кодом. Рука прошла сквозь воздух, как через место, где ничего нет и не было никогда. Пальцы раскрыты, запрос послан, и тишина.
В поле зрения появилось сообщение. Белое, без звона.
> Категория [Игрок] удалена из архитектуры системы.
> Пользователь переклассифицирован: Житель.
> Благодарим за службу.
> Доступ к консоли: ОТОЗВАН.
Строки шли сверху вниз и гасли одна за другой. Кроме третьей. «Благодарим за службу» висела, секунды три, может четыре, я не считал специально и всё равно считал. Шрифт тот же. Строка та же, что и у остальных. Просто дольше.
Погасла.
Нира остановилась, повернулась.
- Что.
Рука опустилась сама, медленно, как будто забыла, что поднималась.
- Всё. Консоль.
Она посмотрела на мою руку, потом на лицо. Кивнула и пошла дальше.
Стандартный интерфейс открылся сам. Три строки, минимум. HP. Характеристики. Инвентарь. Тот же, что у всех. Блокнот вместо IDE.
Пальцы в воздухе набрали /rollback. Команды нет, имени нет, адреса нет. Рука вернулась в карман.
Двор выходил на небольшую площадку с колодцем. Над ним висела самодельная табличка: «Актуальный. Проверен.» Под этим чьей-то другой рукой: «Кем проверен?» Оба вопроса никуда не делись.
На Земле терял зрение постепенно. Сначала фонари расплывались в пятна по краям, лица пропадали в серое, экран перестал читаться без скринридера. Каждый день можно было измерить. Вот что ушло, вот что уйдёт к пятнице.
Здесь зрение осталось. Оба глаза, все цвета. Табличка над колодцем, кривые буквы, выцветшие по краям, буква «м» перекошена влево. Трещина в стене идёт наискось, в ней сухой мох. Всё видно.
Просто без параметров. Колодец - колодец. Не нужно уточнять.
Ладонь легла на край колодца. Шершавый камень, тёплый от утреннего солнца. Нира отошла к дальней стене, разглядывала что-то на штукатурке.
Внутри стало тихо. Иначе, чем когда консоль зависала. Как снять наушники, в которых так долго играло что-то, что перестал замечать. Первые секунды мозг ждёт, куда смотреть. Потом перестаёт ждать.
Пальцы снова развернулись в воздухе. Поймали воздух. Вернулись в карман. Третий раз за четверть часа.
Нира подошла, встала рядом, не касаясь. Запах дыма от квартала всё ещё при ней.
- Пошли. Голодная.
Я убрал руку от камня.
Мир вокруг не изменился: те же переулки, тот же шум рынка вдалеке, тот же запах дыма и нагретого камня. Солнце лежало на стенах желтовато, без оттенков, просто свет. Табличка над колодцем качнулась на ветру - «Кем проверен?». Замерла. Буква «м» всё так же перекошена влево.
* * *
К закату мы выбрались на холм за восточными воротами. Нира нашла тропу, я шёл следом. Шли молча, я нёс куртку через плечо, она жевала стебель какой-то травинки и сплёвывала, когда горчило. За спиной оставался Перекрёсток, впереди поднимался пологий склон, трава на нём высокая, до бедра, жёлто-зелёная, выгоревшая сверху и ещё живая у корней.
Наверху оказался плоский пятачок, примятый кем-то до нас. Мы сели.
Солнце стояло низко, прямо напротив, в лицо. Снизу, из переулков, так не увидишь. Пришлось щуриться, по-старому, из Земли. Диск в центре ещё золотой, к краям оранжевый, чем ниже, тем гуще, к горизонту уже красное, плотное, как варенье на последних минутах варки. Небо над ним расходилось полосами: у горизонта жёлтое, выше персиковое, розовое, сиреневое, а над головой уже темнело в синий, где скоро будут звёзды. Облака висели длинными полосками, подсвеченные снизу так, что верхние края оставались серыми, а нижние светились. Я сидел и смотрел, пока в глазах не начало плавать.
Раньше над этим закатом висела бы строчка. Окружение, освещение, время суток, идентификатор пресета. Привык читать такие подписи краем зрения, как читаешь копирайт внизу картинки. Сейчас строчки не было. Был свет, который ложился на траву косыми тёплыми полосами и удлинял тени до смешного. Мою тень я видел метрах в десяти ниже по склону, длинную, тощую.
Нира сидела слева, подтянув колени к груди, обхватив их руками. Потом разомкнула руки, провела ладонью перед лицом и развернула своё окно. Лицо у неё снизу осветилось голубоватым, два света сразу, закат и интерфейс, и оба настоящие. Она листала. Палец вверх, палец вниз, пауза. Закрыла. Открыла снова. Просто осваивалась.
Ветер прошёл по траве волной, сначала у дальнего края холма, потом у нас. Запах тёплый, земляной, нагретая за день трава отдавала его медленно. Дым из Перекрёстка, печной, домашний. За крышами тёмная полоска Пустоши на горизонте, тоньше чем утром. Или мне казалось, я уже не проверял.
Далеко справа, у Огненного квартала, стояло зарево. Оттуда же доносился стук. Редкий, ровный. Кузнец работал.
- Смотри, - сказала Нира.
Я посмотрел туда, куда она кивнула. На горизонте, левее Пустоши, встал столб света. Ровный луч снизу вверх, держался несколько секунд, потом опал. Ещё один сектор мира включился. Ещё сколько-то человек сейчас сидят на крыльце и пытаются понять, что за окошки висят перед глазами.
- Миграция идёт, - сказал я.
- Долго ещё.
Пауза. Мы оба смотрели на горизонт.
- Долго.
Нира кивнула, не поворачиваясь.
Я поднял руку, развернул пальцы. Своё окно открылось, маленькое, четыре строки.
> Житель: Кирилл
> Уровень: 14
> Состояние: здоров
> Уведомлений: 1 (непрочитано)
Единица у нижнего края мерцала мягко, без настойчивости. Висела с той ночи, я так и не открыл.
Пальцы зависли. Потом я закрыл окно и опустил руку обратно в траву. Ладонь легла, трава пошла между пальцами щекотно. Тёплая сверху, прохладная у корней, без серых пятен и текстурных швов. Живая трава, выгорающая к августу.
Подумал про Андрея. Где-то на Земле у него аккаунт в корпоративном слаке, непрочитанные сообщения, календарь встреч, которые уже давно проходят без него. Начальник закрыл должность, коллеги поговорили пару месяцев и забыли. А здесь человек построил мир, сломал его, спас его. Один.
Попрошу Ниру передать. Потом как-нибудь. Вслух не шло.
- Глазастый.
Нира смотрела мимо меня, на Перекрёсток внизу, где окна зажигались по одному.
- Ты теперь житель.
- Житель.
Она повернулась, посмотрела на меня чуть дольше, чем нужно было для простого наблюдения.
- И что будешь делать.
Раньше ответ был готов: найди, где оседает, подпери плечом. Сейчас мир оседал медленно и на голосовании, и плечо не просили.
- Не знаю.
Пауза.
- Программировать умею. Может, научу кого-нибудь. Раз код теперь у всех.
Нира хмыкнула. Смотрела на закат.
- Научи меня.
- Сейчас?
- Потом.
- Хорошо.
Солнце коснулось горизонта нижним краем. Свет стал гуще, красный налился почти в бордо. Тени на холме удлинились ещё на метр-два, моя съехала до кустов внизу. В Перекрёстке зажглись окна. Не все сразу. По одному, по два. Жёлтые, тёплые, неровные пятна на сером.
Завтра будет следующий.
Нира положила подбородок на колени.
- Тосковать будешь.
Утверждение, не вопрос.
- Тихо, - сказал я.
Она ничего не ответила. Просто приняла.
Тень от холма вытянулась по полю внизу. Ветер прошёлся по склону ещё раз, медленно, трава легла и выпрямилась.
Нира сидела рядом, не касаясь.
Солнце наполовину скрылось. Свет пополз по траве вверх, от подножия к гребню. На Земле я смотрел на экран через лупу и знал: скоро и этого не будет. Каждый вечер что-то уходило. Буквы. Лица. Цвет фонарей. Здесь я сидел на холме и смотрел на закат обычными глазами, и закат не уходил, он просто догорал, как положено закату.
Достаточно.
Тишина держалась. Тепло от её плеча я всё равно чувствовал, или мне казалось.
В углу зрения мерцала единица.
* * *
Я ещё посидел. Минуту, может две, не замерял. Ветер прошёл по траве последний раз и стих, Нира рядом не двигалась, единица в углу никуда не уходила. Потом поднял руку и тронул её пальцем.
Окно развернулось. Без оформления, обычный текст, как стандартный ответ саппорта в любой системе.
> Тикет #4 891 227
> Тема: Запланированное завершение работы. Активное сознательное население под угрозой
> Приоритет: КРИТИЧЕСКИЙ
> Статус: РЕШЕНО
> Решение: Устранено действиями сообщества.
Прочитал. Отвёл глаза в траву и в гаснущий свет на горизонте, потом обратно к окну. Номер был мой, я его помнил. Сам отправлял ночью у форумного терминала, в пустоту. Перечитал. Те же строки, ни буквой.
Тикет закрыт. Один из почти пяти миллионов в очереди.
Отпустило в челюсти. Потом в плечах. Потом в том месте между лопатками, где обычно не знаешь, что что-то есть, пока не отпустит. Руки лежали на коленях спокойно.
Нира коротко скосила взгляд на меня и обратно на огни. Спрашивать не стала.
Палец прошёл по краю окна. Закрылось.
На горизонте слева поднялся ещё один столб света, подержался несколько секунд, опал. Где-то ещё одна деревня впервые увидела свои окошки.
Я сидел рядом с Нирой, смотрел на гаснущий свет. Трава под ладонью тёплая сверху, прохладная у корней.
> Тикет #4 891 227 закрыт. Спасибо за ожидание.
Спасибо за чтение
Вернуться к книге
