Где-то между ферзем и форс-мажором была кнопка «удалить». Кто-то ее нажал.
Но, видимо, с ошибкой.
***
Макс открыл глаза не сразу.
Скорее — почувствовал, как открываются. Не сам — его. Так, будто команду отдали не мышцей, а скриптом. Как будто кто-то где-то дал сигнал: «А теперь — зрение». С задержкой. С дрожащим курсором. С тревожным ощущением, что эта анимация давно не поддерживается.
Свет был серым. Не пасмурным — текстурно серым. Как старая текстура неба, которую кто-то наложил по умолчанию, забыв покрасить. Прямоугольные облака. Отсутствие источника. Полутон, с которым даже погода казалась placeholder’ом.
Он моргнул — и понял, что моргание не обновляет картинку. Просто проигрывает ту же анимацию заново. Один и тот же свет, одна и та же тень.
Ветер налетел резко. Моментально. Слишком моментально.
— Ага, — пробормотал Макс, — зациклило.
Это был даже не ветер — эффект. Loop. Static pattern override. Кто-то забыл поставить рандом. Одни и те же листья подлетали, кружили по точке G(54;27), ударялись о забор и исчезали в левом нижнем углу экрана. Через секунду — снова.
Он попытался встать. Тело отозвалось, но странно. Нечеловечески. Без боли. Без тяжести. Просто — разрешение на движение. Он пошевелил рукой, будто проверяя модель. Все на месте. Пальцы. Суставы. Скин. Даже одежда — старая футболка с логотипом студии и джинсы с разорванным коленом.
Все как в последний день. В тот самый. Когда он...
Пик.
Голова дернулась сама. В воздухе — всплыла строка.
[Сессия восстановлена]
Пользователь: [DEL_USER_01]
Местоположение: /Assets/Trash_Builds/QuarantineZone_01
Класс: Не определен
Файл поврежден. Повторный запуск невозможен.
— Ну ты глянь, — хмыкнул он. — Даже в аду мне не дали нормальный билд.
Он огляделся. Место казалось… заготовкой. Как будто это должна была быть локация, но автор умер в процессе. Поля были, но без текстур. Дома — серые боксы. Надписи «TODO: REPLACE WITH MODEL» на стенах. Одинокое дерево — вечно застывшее в фазе «ветер_слабый».
Крысы в углу стояли в Т-позе. Он вздрогнул.
— Карантин, — пробормотал. — Это ведь…
Он вспомнил.
Проект. «Элизиум Онлайн». Его студия. Последний билд. Их уволили. Он нажрался. Влез в админку. Начал ковырять систему. Хотел создать персонажа, чтобы потом поиздеваться. Папка «Карантин». Экспериментальные классы. Забагованная зона, которую никто не активировал. Он вколотил туда билд, вписал свои параметры. Забыл выйти.
— Но я же… умер, — сказал он вслух.
Пауза.
— Я точно умер. Газ. Ванна. Новости.
Тело не дергалось. Оно слушало. Как будто не было необходимости в проверке.
— Это не реальность, — сказал он. — И не симуляция. Это… остаток.
Он поднялся.
Ноги приняли вес. Звук шагов был неправильный — не динамический. Один и тот же клецкающий шум, будто взятый из архива за 2012 год.
Он шел. Мимо сломанных объектов, фантомных квестов. Брошенных флагов триггеров. Плакат: «Добро пожаловать в...». Без названия. Курсор мерцал на пустом месте.
— Кто меня восстановил? — спросил он.
Ответа не было.
Но он чувствовал: кто-то пытался. Как если бы система не знала, куда его отправить — и просто открыла то, что осталось. Самую старую, самую сброшенную сборку. Не потому что «так надо», а потому что больше негде было разместить это.
Макса.
DEL_USER_01.
Он.
В теле персонажа. Без роли. Без класса. Без задачи.
Он коснулся груди. Ни интерфейса, ни статы. Только ощущение чего-то... искаженного. Как будто под кожей не органы, а блоки кода.
Он сел на обломок текстуры, похожий на лавочку.
— Вот теперь, — сказал он, — у нас действительно начинается тестирование.
Макс медленно выдохнул. Или ему показалось, что выдохнул.
В этом мире даже дыхание не было гарантией. Все тело отзывалось с легкой задержкой — будто каждое движение сперва проверялось антивирусом, фильтровалось сквозь сломанный фаервол, прогонялось через багнутые фильтры поведения. Он двигался как персонаж, у которого FPS скачет от двух до двадцати — с рывками, залипаниями, тонкой дрожью в пальцах, не потому что он нервничал, а потому что сама система не знала, как именно должен себя вести этот экземпляр.
Он поднялся. Медленно. Уверенно. Вернее, насколько может быть уверенным ферзь, оказавшийся на доске, которая треснула по диагонали. Он стоял ровно, но с ощущением, что каждая клетка под ногами может в любой момент перестать быть твоей. Или вообще — исчезнуть, провалившись в NULL.
— Это не лобби, — сказал он вслух. — Это карантин.
Макс шел осторожно, будто наступал не на землю, а на гифку, зацикленную текстуру пола.
Плоскость под ногами выглядела убедительно ровной только до момента шага. Стоило сдвинуться — и в месте контакта пробегал едва заметный мерцательный сбой. То ли переход между шейдерами, то ли невидимая заплатка, которую система пыталась натянуть на дыру.
Каждый шаг ощущался с микроскопической задержкой. Как будто между его телом и миром стоял посредник — багнутый фильтр, не до конца уверенный, как должны вести себя ноги.
Он наступал не в мир, а в представление о мире, собранное из старых билдаутов, устаревших скриптов и копипасты.
Где-то метрах в пяти впереди трава превращалась в камень. Не логично, не с границей — просто резко. Зеленый лоск сменялся серым, как ошибка заливки в Photoshop.
Потом — грязь.
Комковатая, блестящая, как масло, слипающееся в текстурный шум.
Дальше — дерево. Одинокое, застывшее. Без анимации ветвей. Тень — отсутствует.
И снова — пустота. Не туман, не дымка. Просто место, где ничего не нарисовали.
Макс чувствовал: это не мир. Это — отладочная сцена.
Место, где всерьез никто не должен был ходить.
Разве что тестировщик — на минуту, проверить, не развалился ли билд.
Он огляделся.
Горизонт колыхался, как строчка в старом телеэфире. Прогрузка шла лениво, будто мир сам сомневался, стоит ли себя показывать.
И тут он увидел вспышку.
Слева, чуть ниже уровня глаз — что-то мигало.
Маяк. Или, скорее, значок. Пиктограмма.
Синий восклицательный знак висел над объектом, словно вырванный из UI и приклеенный к реальности на соплях. Невысокий — скорее даже не маяк, а артефакт внимания. Он узнал его: туториал. Первый триггер. Построенный, чтобы сказать тебе: «Вот, герой, здесь начинается обучение».
Макс хмыкнул. Конечно. Почему бы не начать с простого. Только что-то подсказывало: простого больше не будет.
Он медленно спустился, обходя зоны с мигающими тенями. Знак мигал все реже — как будто чувствовал приближение чужого. И… исчез.
На его месте стоял NPC.
Сложно было сказать, кто это. Человек? Нет. Скорее, макет. Модель, скомпилированная кем-то, кто не умел рисовать лица.
Лицо было плоским. Не в смысле 2D — в смысле эмоционально мертвым. Глаза не смотрели. Они… работали. Буквально: крутилось что-то внутри, как линзы в оптическом сканере.
На фигуре висел длинный кожаный плащ. Плотный, тускло-блестящий. И совершенно неподвижный. Ветер, который здесь повторялся каждые восемь секунд, проходил сквозь него, не оказывая никакого влияния.
Физики — ноль.
Анимаций — ноль.
Присутствие — только визуальное.
Макс остановился. Выдохнул. Поднял руку и помахал — словно проверяя, сработает ли скрипт.
— Эй, — произнес он. Голос вышел хрипловатым, но ровным. — Туториал, да? Обучение хочу пройти. Научите меня… чему угодно. Например, не вылетать с ошибкой.
NPC не шелохнулся. Ноль реакции. Только глаза — как и в прошлый раз — вошли в цикл.
Скан.
Проверка.
Повтор.
Сброс.
Заново.
Макс фыркнул.
Голову сдавило, как от напряжения перед BSOD.
Что-то не сходилось.
Макс стоял напротив NPC, будто перед древним автоматом с газировкой, который внезапно заговорил голосом техподдержки. Мир вокруг казался чуть стабильнее, чем пару минут назад — по крайней мере, текстуры под ногами не перетекали в геометрию пятого уровня. Хотя бы пока.
И тут появилось оно — как вспышка лампы дневного света:
[Запуск обучения...]
[Ошибка: класс не определен]
[Ошибка: у объекта нет имени]
[Ошибка: не задано тело]
Макс моргнул.
— Приятно, блин, познакомиться, — пробормотал он. — Я — nobody. С приветом из /Trash.
В воздухе перед ним дернулся интерфейс — как рыбка в пакете: прозрачный, искаженный, с дрожащими пикселями. На миг выплыла панель, будто сам мир попытался вспомнить, как быть игрой.
Всплыла подсказка:
[Используйте "E", чтобы поговорить с Наставником.]
Макс хмыкнул:
— Уже лучше, — и ткнул пальцем в воздух.
NPC отозвался. Посмотрел прямо. В глаза. В первый раз. Без эмоций, без ожиданий. Как камера наблюдения.
— Здравствуйте, [NAME]. Я обучу вас азам управления в [GAMENAME].
Макс вздохнул и кивнул, будто это был кастинг, на который он все-таки пришел:
— Ну давай. Поехали.
NPC дрогнул.
— Для передвижения используйте клавиши — [ERR_MOVEMENT_KEYS_NOT_FOUND]...
— Ага, — поддержал Макс.
— Чтобы атаковать — [DATA MISSING].
— Супер.
— Выберите класс: [CLASS?]
Макс задумался на секунду.
— А можно… «тот, кто просто хотел выжить»?
Молчание.
— Обработка...
NPC замер. На лице появилась пауза — цифровая. Как будто замер он не от глубины вопроса, а от недостающей строчки кода. В уголке экрана на долю секунды мелькнул текст: Exception: UndefinedThoughtLine 0x13...
И потом — все.
Он просто исчез. Без анимации. Без перехода. Будто в редакторе нажали Delete.
Макс остался стоять один. Перед ним — пустота, где еще секунду назад стояла фигурка «Наставника». Воздух дрожал, но не от напряжения. От того, что кто-то не закончил рендер.
Он вдохнул — рефлекторно. Потому что именно так делают люди, которым только что сообщили, что даже обучение для них — недоступно.
— Ну, допустим, — проговорил он, — значит, будем учиться как в девяностых. Сами. Без гайдов.
Интерфейс больше не предлагал подсказок. Только пустое сообщение внизу экрана:
[Ошибка инициализации сценария. Код ответа: 418. Объект не является чашкой чая.]
Макс рассмеялся. И пошел дальше. Потому что — а что еще делать, когда ты nobody, и даже Наставник тебя дропнул?
Макс шел уже несколько минут — или часов, если верить ощущениям, а не интерфейсу. Время здесь то сжималось, то растягивалось. Как старая резинка, которую не выбросили только из упрямства.
Перед ним тянулась дорога — прямолинейная, слишком аккуратная, будто сгенерированная под линейку. Пустая, за исключением случайных объектов: камень без тени, куст, вросший в воздух, щебень, который завис на полметра от поверхности. Макс шел мимо этого, как мимо бесполезного мусора — не замечая, но и не игнорируя. Он уже знал: если объект не исчезает при взгляде — он важен. Или, как минимум, за ним что-то наблюдает.
Где-то впереди, на горизонте, маячил город. Сначала — просто абстрактная масса. Потом — контуры зданий, башни, то ли жилые, то ли охранные. И дым. Прямо по канону: темные столбы, поднимающиеся к тусклому небу. Атмосферный фильтр недогрузился, так что небо было серым, как недопропеченный металл.
Системного предупреждения не появилось. Ни таблички, ни блокировки зоны, ни стандартного диалога о "порогах уровня". Ничего. Чисто. Подозрительно чисто. Как будто никто не думал, что игрок сюда дойдет.
Макс ускорил шаг.
С приближением к городу началась деградация — не резкая, а ползучая, как гниль под обоями. Дорога сначала сместилась на пару пикселей вбок, потом внезапно стала асфальтом, потом снова гравием. Объекты дергались. Один дом на горизонте циклично пропадал и возвращался. А за ним — ничего. Черная пустота, даже не "небо", а неинициализированное пространство.
Здания в передней линии выглядели как будто намазанные. Контуры плыли, стены искрились глитчем. Некоторые двери не имели проема, другие — вели в небо. Никакой логики, только следы генератора уровней, сошедшего с ума. Над одним из фасадов висела реклама — “WELC_ME TO C_ITY_ LACK LA”. Шрифт — не тот. Цвета — перепутаны. Привет из тестового билда.
Вдоль дороги начали появляться фрагменты текстур — отдельные куски, как вырезанные из разных эпох. Один фонарь напоминал стимпанковский, другой — футуристическую панель. Все это склеилось в нечто, что можно было бы назвать "архитектурной шизофренией", если бы у Макса были силы шутить.
Он приблизился к воротам — медленно, будто подходил не к городу, а к фальшивке, слепленной из картонных декораций и багов. Табличка — старая, ржавая, как в заброшенной MMORPG пятнадцатилетней давности — висела криво, будто прибита не гвоздями, а ошибками рендеринга.
Черный Лаг, — гласил шрифт, который успевал моргнуть дважды, прежде чем застыть.
Макс шагнул вперед. Всего один шаг. И сразу же:
[НЕАВТОРИЗОВАННЫЙ ОБЪЕКТ ПЫТАЕТСЯ ПОЛУЧИТЬ ДОСТУП]
Воздух зазвенел. Не звуком — частотой. Как если бы весь мир вздрогнул от внутреннего конфликта.
Город перед ним — треснул. Не физически. Логически.
Здания дернулись, дернулись еще — и зависли. Фасады застыли в недорендеренном виде: куски карт, глюканувшие текстуры, огрызки недописанных теней.
NPC, стоявшие у ворот, замерли. Один — в позе приветствия. Второй — с приоткрытым ртом. Диалоговая строка так и не загрузилась.
Макс сделал второй шаг. И тогда…
Трещина прошла по небу. В буквальном смысле.
Небо не выдержало. Оно дрогнуло, отозвалось внутренним писком, как если бы его строили из стекла, и теперь оно трещало.
[СБОЙ СЦЕНАРИЯ]
[АКТИВАЦИЯ ПРОТОКОЛА: ЭВАКУАЦИЯ]
[ОБЪЕКТ: DEL_USER_01 — ТЕЛЕПОРТИРОВАН]
Он не почувствовал удара. Не было вспышки, не было телепорта как эффекта. Просто — реальность сменилась. Мгновенно. Как будто кто-то нажал Alt+Tab между мирами.
Приземление не было падением.
Это было… смещение. Как если бы его перенесли не в пространство, а в мысль, которую кто-то забыл додумать.
Пол — не земля. Скорее, сборная солянка из забытых текстур: зеленый квадрат травы соседствовал с кирпичом, кирпич — с глянцевым полом из какого-то офиса, а по краям торчали полигоны, которых не должно было быть. Место, где карта начиналась, но никогда не заканчивалась.
Макс встал. Пошатнулся. Воздух гудел — негромко, но на той частоте, от которой сводит челюсть.
Ошибка.
Она была повсюду.
Шум неба — это не ветер. Это цифровой треск. Как будто в облаках крутилась скомканная аудиозапись, бесконечно проигрывая начало сбоя. А вокруг — тишина. Даже тишина отрендерена была плохо. Без глубины. Без амбиента. Плоская. Как фон в студии, в которой забыли включить микрофоны.
Он оглянулся.
Сзади — ничего. Не в смысле пустоты, а в смысле… не прописано. Прозрачная граница рендеринга, за которой лежало ничто. Даже интерфейс, будто стесняясь, не показывал карту. Только одна строка, зависшая в углу, серым на черном:
[Свалка Миров / отстойник данных]
— Ну… добро пожаловать, — пробормотал Макс.
И сел. Потому что ничего другого мир пока не предлагал.
Макс поднялся, смахнул с плеча невидимую пыль — скорее по привычке, чем по необходимости — и пошел.
Мир не сопротивлялся. Но и не помогал.
Он не знал, что именно вызвало это — может быть, наклон головы. Может, жест руки. Или просто система решила, что пора.
Экран всплыл перед глазами без предупреждения — как будто кто-то легким щелчком включил прожектор в давно забытом подвале. Никаких визуальных эффектов, никаких звуков. Просто: теперь ты видишь.
Макс дернулся, инстинктивно пытаясь отступить — но, конечно, ничего не изменилось. Интерфейс висел перед ним, не моргая. Прозрачный прямоугольник, стилизованный под классическое меню игрока. Слишком классическое. Даже подозрительно.
— Вот только этого мне не хватало, — пробормотал он. — Меню смерти в мире, где я уже умер.
Панель медленно загорелась.
[СТАТУС ПОЛЬЗОВАТЕЛЯ]
Имя: [USER_01]
Уровень: —
Класс: [НЕВЕРИФИЦИРОВАННЫЙ]
— Ну хоть не "Мудак первого ранга", — кивнул он. — Уже спасибо, Система. Прогресс.
Он прокрутил интерфейс вниз. Страница со скиллами выглядела как свалка идей, выброшенных еще до альфа-теста.
Навыки:
— Удар_по_умолчанию() — недоступен
— Актив_инстинкта — требуется подтверждение
— Автооправдание — ошибка зависимости
— Спящий протокол — [АКТИВЕН]
Последний был единственным, кто светился. Тускло. Будто лампочка в далеком коридоре, на которой осталась ровно одна искра питания.
Спящий протокол
Описание: Слишком рано. Или слишком поздно.
Режим: не определен
— Это ты про меня, да? — спросил он, не ожидая ответа.
Пальцы коснулись надписи. Интерфейс дрогнул. Мелькнула строчка кода, словно система пыталась сформулировать реакцию — и не смогла. Потом все замерло. Как будто он нажал паузу на чем-то, что никогда не запускалось.
— Ну и ладно, — пожал он плечами. — Даже багу положен интерфейс. Пусть будет.
Он закрыл панель.
Пейзаж вокруг оставался прежним: бесформенные обломки, рваные куски ландшафтов, сломанные текстуры, висящие в воздухе, как призраки. В небе — шум, неясный и постоянный. На горизонте — движение, но не настоящее. Иллюзия.
***
Он сидел на куске обломанной арены, где мраморная текстура не совпадала с геометрией пола. Все вокруг напоминало декорации спектакля, в котором актеров забыли позвать, а Максу выдали сценарий на китайском — и то без диакритики.
Позади возвышалась трибуна, зависшая в воздухе. Нижняя половина ее отображалась нормально, но верхняя — дрожала, как голограмма с мертвым источником сигнала. На перилах — флаг с надписью [WIN_TOURNAMENT] мерцал, будто пытался вспомнить, какой турнир здесь проходил.
Впереди лежала полоса ландшафта, явно собранная из разных биомов: кусок пустыни с застывшим в воздухе песком, как в гифке, что не грузится до конца; квадрат болота, где воду заменял синий куб-заменитель с надписью "PLACE_WATER_HERE"; клочок осеннего леса, где листья сыпались без остановки, но никогда не покрывали землю — будто кто-то забыл включить физику.
Налево — тоннель, ведущий в никуда. Его имя в интерфейсе: [area_#3241c_fragment]. Он мерцал красным и каждые десять секунд исчезал с карты, чтобы снова появиться — чуть смещенным влево. Макс уже знал: если зайти в него не в тот момент — можно застрять навсегда. Или попасть в другую локацию. Или в меню.
Справа — замороженный бой. Два НПС, зависшие в прыжке: один с мечом, другой с топором. Над головами — пустые хп-бары. Один из них моргал. Второй — смотрел прямо на Макса. Всегда.
Сверху медленно летела надпись:
REPEAT_SEQUENCE_FALSE
Она двигалась по небу, как облако, но не исчезала. Только дрожала от ветра, которого не было.
Макс провел пальцем по интерфейсу. Ветка дерева навыков открылась с ошибкой. Но мир оставался на месте. Против своей логики. Против своих правил. Против всего, что когда-то называлось игрой.
Интерфейс мигал. Макс снова вызвал окно умений.
— Ну что, товарищи скиллы, есть добровольцы на участие в этом карнавале?
Он ткнул в первый доступный — Актив_инстинкта.
Ответ: Ошибка: невозможно подтвердить природу инстинкта.
— Ладно, справедливо. Я тоже не всегда уверен, что хочу на завтрак.
Следующий: Удар_по_умолчанию().
Функция не найдена. Уточните контекст.
— Мой контекст: я посреди цифровой свалки с дохлыми NPC и живым интерфейсом. Подходит?
Никакой реакции.
Третий: Автооправдание.
Ошибка зависимости: не обнаружено чувство вины.
Макс фыркнул.
— Вот уж где баг прямо в душу смотрит.
Он продолжал листать, пока не наткнулся на строку, которая выглядела неактивной, но… как будто живая.
[jumpOverride_03]
Без описания. Без иконки. Без разрешения.
Он нажал.
Макс долго еще стоял на месте, уставившись в ту точку, где секунду назад извивалась мерзкая склейка из костей и недоработанных текстур. В воздухе до сих пор висел тот самый запах — смесь пыли, жженой видеопамяти и чего-то, что напоминало пережаренный багрепорт.
Он выдохнул. Хотя дыхание ему, строго говоря, не требовалось. Но голова все еще была человеческой. А мозгу, похоже, нужно было объяснение: что происходит, что делать дальше, куда идти. Или хотя бы — зачем.
Он огляделся. Пусто. Свалка в этом месте выглядела особенно мертвой — ни багнутых моделей, ни шумов, ни летающих дверей. Только тени от ненастоящего солнца, которое, похоже, было просто частью неба. Сферой. Не светящей, а обозначающей «время суток: дневное».
Макс сел. Прямо на землю. Точнее — на поверхность, состоящую одновременно из куска плитки торгового центра, земли из лесного биома и какой-то блестящей плоскости, которая вела в никуда.
— Так. Жрать.
Он проговорил это вслух, просто чтобы услышать звук. Ничего не отозвалось.
Он открыл инвентарь. Там лежал один-единственный предмет — тот самый артефакт, по-прежнему неузнаваемый. И все. Ни еды, ни воды, ни даже интерфейса голода.
[Параметр "питание": отсутствует]
— Удобно, — пробормотал Макс. — Только тело все равно хочет. Хоть и не надо.
Желудок не урчал — но внутри что-то тянуло. Воспоминание, привычка, ложный импульс. Как фантомная боль после ампутации.
Он встал и пошел искать.
За следующий час - ну или то, что было по ощущениям как час — он пытался:
Разбить растущий из текстуры "куст". Бессмысленно — модель не кликабельна.
Подобрать что-то с земли — рука прошла сквозь.
Открыть "магазин" из интерфейса — ответ: "магазин отключен".
Он нашел корку хлеба. Или то, что казалось ею. Описание:
[Рендер_устарел][ID#legacy_food]
"Этот объект не имеет функции. Но пахнет, как еда."
Он съел ее. Чисто по-человечески.
И стало легче. Не физически — в голове.
Теперь нужно было поспать. Кому нужно? Фиг знает. Нужно и все.
Свалка не имела ночи. Она просто затемнялась, как будто у разработчиков закончились текстуры для времен суток. Макс выломал из земли кусок стены — тот, что не проваливался сквозь пол, — и сложил рядом второй. Получился угол. Почти дом.
Он лег, закрыв глаза вручную.
Никакой анимации сна.
Ни восстановления.
Просто — пауза.
И впервые за долгое время он почувствовал страх. Потому что не заснул. А просто... лежал. Сознание не отключалось.
Мозг не ушел. Он смотрел. Он ждал.
Он сидел, облокотившись на обломок ржавой балки, и молчал.
Мир не требовал слов. И не давал.
Система не выдавала квестов, цели, диалогов. Даже музыка — и та закончилась где-то в прошлом баге. Осталась только тишина. Не философская — пустая. Как глюк в головной прошивке.
Макс вздохнул, уставившись в рваную линию горизонта, где куски неба соединялись неправильно — будто кто-то забыл выставить угол обзора и промахнулся с центровкой текстур.
Он провел рукой по лицу. Просто чтобы ощутить прикосновение. Кожа была. Щетина — тоже.
— Черт… — хрипло выдохнул он. — Значит, не сплю.
Хотя внутри все надеялось, что это сон. Бессмысленный, затянувшийся, но — заканчивающийся.
Он выпрямился. И сказал себе, не громко, но внятно:
— Ну, вот ты и здесь. Мир, в котором ты не умираешь. Но и не живешь.
Он кивнул, как будто соглашаясь со странной логикой этого места.
— Поздравляю, Макс. Ты — игрок без правил. Только человеком быть сложнее, чем кажется, когда нет нужды.
Он поднялся. Сухой ветер тянул за собой клочья невнятных объектов — порой казалось, что это обрывки старых меню, заголовки или даже строки чьих-то удаленных мыслей.
Макс опустился на колено. Пальцем — прямо в пыль, грязь, битую графику — он нарисовал квадрат. Обычный. Маленький. Без симметрии.
Просто форма. Простое действие.
Потом медленно, стараясь не задумываться, написал внутри:
Д
О
М
Слово получилось кривое. Но настоящее.
Он сел внутрь, скрестив ноги. И просто посидел. Молча. Не двигаясь. Как будто ждал, что кто-то подойдет. Или что-нибудь случится. Но ничего не случилось. Только снаружи — что-то щелкнуло. Как всегда. Где-то далеко — дернулся скрипт.
Так он пережил еще один час. Не по правилам игры — по своим.
Проблема началась без причины.
Где-то в другом секторе Свалки — в таком, который Макс не помнил, чтобы посещал, — система попыталась повторить. Она взяла старые куски данных, обрезанные фрагменты сцен, метаданные с ошибками и запустила их заново. Как будто хотела сказать: вот, у нас тоже есть герой. Вот миф. Вот камень, вот Бард, вот театр.
На первый взгляд — все сходилось. Та же площадь. Те же декорации. Высокий силуэт в мантии, книга вместо головы, зеркальные лица на актерах массовки. Рыцарь с клинком из полигонного теста, готовый к заранее записанному дуэту.
Вот только его там не было. Ни Макса, ни артефакта, ни ошибки, из которой все началось. И именно поэтому все — пошло не так.
Он шел по мостовой, уже в другой зоне, без названия. Камни под ногами были как везде — чуть покоцанные, с налетом мха и тенью прежних игроков. И тут — мир дернулся. Не как от удара или глюка, а как будто кто-то ткнул в пленку реальности пальцем.
Изображение на долю секунды съехало вбок. Звук захлебнулся. Воздух стал плотным, как перед крашем сервера.
Макс моргнул.
Перед ним, за аркой, открывался сектор, которого не было на карте. Он не переходил сюда. Не шел. Не планировал. Но уже стоял посреди него.
🟠 [Лог начат / Объект зафиксирован: М_##]
Карман вспыхнул теплом — артефакт. Щелчок, словно тонкий металл коснулся воды. Мгновенный импульс — не больно, но точно.
И в этот момент мир поскользнулся. Незаметно, но необратимо.
Макс оступился — инерция поменялась. Под ногами было все то же, но что-то в его векторе больше не совпадало.
Перед ним раскинулся город. Почти тот же. Но не тот.
Группа НПС замерла в позах, выученных заранее. Бард с книгой на голове застрял в одном аккорде — лютня выдавала рваный отрывок уличного шума в бесконечном повторе. Глиняный Рыцарь застыл в фазе «взмах меча» — движения не было, но поза уже намекала на экшен.
А в самом углу — игрок. Живой, но будто списанный с Макса: рост, посадка плеч, даже старая куртка. Только лицо его стекало вверх — как если бы кто-то неправильно применил маску, и теперь эмоции срывались в пикселях, растекавшихся по воздуху.
Интерфейс мигнул:
🔻 [Сценарная петля обнаружена. Повтор невозможен.]
🔸 [Контрольные параметры отсутствуют.]
⚠ [Наблюдатель несовместим. Последовательность нарушена.]
Макс сделал шаг — и сразу понял: он не здесь. Не в том смысле, что не в этом месте, не в этом времени, а в том, что сама система не знала, куда его вписать. Она видела его, но не понимала, как интерпретировать. В какой ячейке хранить. С какого момента отсчета начинать лог. Что считать началом, а что багом. Он чувствовал это на физическом уровне — легкое расслоение воздуха, искажение в тенях, как если бы его присутствие было наложено поверх сцены, уже идущей своим чередом, но без главного участника. Только теперь, с его появлением, сцена начала рушиться.
Мир реагировал, но запаздывал. Он пытался считать данные, но они не совпадали. Инвентарь мигнул, и на мгновение экран интерфейса стал тусклым, как будто устал. А затем, едва заметным движением, вписал новый объект. Предмет, которого не должно было быть. В строке появилась надпись: фрагмент глиняного меча. Макс мгновенно узнал его — тот самый, с которым он столкнулся в предыдущей сцене. Только вот по всем правилам текущей симуляции он здесь боя не начинал. В этой локации он вообще не должен был появляться.
Надпись в HUD вспыхнула с желтым маркером:
🟡 [Ошибка маршрута. Файл: след. Контекст: нарушен]
🔸 [Запись невозможна.]
🔹 [Фиксация: частичная. Параметры утрачены.]
Макс замер, вглядываясь в сообщение, и вдруг ощутил, как где-то внутри, глубже инвентаря, глубже интерфейса — на уровне того, что нельзя кодировать — разгорается странное, хрупкое знание. Оно не имело слов, не требовало логики. Оно просто было. И он услышал его внутри себя так ясно, как будто кто-то сказал это за него:
Я не герой. Я — баг в истории о герое.
На фоне, в полутени, за спиной, в углу сцены — копия Барда, точная до интонации, но чужая. Она зациклилась на одной-единственной фразе:
— Он пришел! Он пришел! Он при… — и снова: — Он пришел! — Он пришел!
Каждый раз с новой интонацией, но тем же ритмом, как если бы проигрывался испорченный файл, залипший в одном и том же месте. НПС хлопал в ладоши, но звука не было — анимация шла, но аудиодорожка отсутствовала. Где-то рядом стоял второй игрок, или, возможно, еще одна тень. Его лицо словно пыталось подгрузиться, но пиксели сползали с глаз вверх, как капли, оторванные от гравитации. Он смотрел на Макса — и исчезал, медленно, без пафоса, как объект, который удалили, но забыли подчистить геометрию. Через мгновение от него осталась только размазанная текстура, а затем — ничего.
И в этот момент все сорвалось.
Внутри — не снаружи — что-то дернулось, сдвинулось, щелкнуло. Не мышца, не рефлекс. Сама логика. Как будто мир, пытаясь восстановить контроль, зацепился за алгоритм — и получил сбой.
Где-то в верхних уровнях — так высоко, что туда не добираются ни баги, ни модификаторы, ни даже наблюдение — обитала она: Система.
Не та, что рисует траву и считает урон.
И даже не та, что запускает квесты.
А та, что знает.
Куратор Свалки — одна из ее активных оболочек — существовал не в форме, не в голосе, а в реакции. Он не думал. Он сравнивал. И когда в одной из контрольных панелей вспыхнуло:
[ГЛИТЧ]
Он не вздрогнул. Потому что не умел. Он просто отметил. Затем зафиксировал рядом:
[СТАТУС: НЕВЕРИФИЦИРОВАННЫЙ]
И, как бы между прочим, заметил еще одну строчку лога, неровную, дрожащую, как будто написанную вручную:
[ПРЕЦЕДЕНТ: МИФ]
На долю секунды мир наверху остановился. Не визуально. Логически. Все скрипты замедлились, чтобы рассчитать вероятность. Все подпрограммы остановили дыхание, которого не имели.
Прецедент.
Миф.
Слова, которые не должны встречаться рядом. И уж точно не в логе.
Система начала последовательный сброс триггеров:
— Защитные протоколы.
— Контрольные маски.
— Инвентаризация последнего архива.
Ничего.
Файл, вызвавший сигнал, не существовал.
Объект, запустивший цепочку, не идентифицировался. Ни как баг. Ни как игрок. Ни как НПС. Даже как ошибка — нет.
Ошибку можно прочесть. Это — не читалось.
И тогда Куратор сделал то, чего не делал давно.
Он инициировал команду.
В зале управления — том самом, что существовал сразу на трех уровнях реальности и двух — вне ее, — активировалась древняя консоль.
Ее интерфейс был мертвым — потому что интерфейс был слабостью.
Здесь не было окон.
Не было кнопок.
Не было дизайна.
Только реакция.
И она последовала.
Один из древних скриптов, записанный вручную кем-то, кто уже забыт, но до сих пор помечен как «Создатель», ожил.
[ПРОТОКОЛ 9: ИСПРАВИТЕЛЬ]
ИНИЦИАТОР: КУРАТОР_004
ЦЕЛЬ: УСТРАНЕНИЕ НЕВЕРИФИЦИРОВАННОГО ОБЪЕКТА
ПАРАМЕТРЫ: АДАПТИВНЫЙ, БЕЗДИАЛОГОВЫЙ, ПОЛНЫЙ УДАЛЯЮЩИЙ ДОСТУП
Он не имел формы. Он не нуждался в ней. Он спускался — как холод, как сброс веса, как разрыв в последовательности.
Система очистила ему путь, даже не проверяя, кто может оказаться под его шагом.
Он был — необратим. Не код. Не персонаж. Исправитель.
И вот теперь он знал: объект где-то на нижнем уровне. Внизу. Среди руин. И у него — нет имени. Только ID:
[НЕВЕРИФИЦИРОВАННЫЙ / ПРЕЦЕДЕНТ: МИФ]
И это было достаточно, чтобы начать охоту.
***
Макс шел по Свалке. Он не спешил, но и не бродил. Просто шагал — в своем темпе, как будто этим темпом можно было договориться с миром, не попасть под сценарий и не наступить на чей-нибудь заскриптованный хвост.
Свалка вокруг пребывала в своей обычной полуразваленной славе: провалившийся пол текстур, фонари, висящие в воздухе без креплений, и вывеска «Пельменная ‘97», которая почему-то мерцала флагом Буркина-Фасо. Все как обычно.
Он свернул за угол багнутого киоска, откуда раньше торговали фальшивыми квестами, и вышел на площадку, где обычно копались охотники за артефактами. Сегодня там никого не было. Только ветер дул сквозь оставленные палатки, играя битыми текстурами, как гитарист на разбитой лютне.
Макс присел на край бетонного обломка и вытащил из инвентаря что-то, что могло сойти за ланч. Это было... неважно что. Местный формат еды давно сошел с ума: булочки могли быть из меди, а суп — из синтаксических конструкций. Он попытался откусить, но еда зависла, не пройдя проверку на коллизию. Пришлось просто закрыть интерфейс и притвориться, что поел.
— Ну и ладно, — сказал он вслух. — Худеем к нулевой отметке.
Макс строил себе базу. Не в смысле "опорного лагеря", не ради выживания и уж точно не для понтов перед другими игроками, которых здесь, по сути, и не осталось. Он строил... место. Просто точку, в которой можно было присесть, не проваливаясь сквозь текстуры, и вскипятить воду, не вызывая срабатывание античит-системы.
Началось все с того, что он нашел ящик. Даже не ящик — фрагмент ящика. Он торчал из глюкнутого дерева, как зубной имплант у старого NPC. Макс дернул его, и из текстур выпало сразу несколько вещей, явно не из одной эпохи: армейская палатка (с маркировкой на китайском и датой 1992), обрывок интерфейса «Фермы Радуги» и скриптовая кость, помеченная как object_bone_decoy_beta.
С этого и началось. Он расчистил кусок земли, где баги повторялись реже всего. Поставил флаг — не как символ, а как костыль для памяти: "Вот здесь". Потом нашел багнутую бетонную плиту, которая не падала под весом игрока. Это стало полом. Нашел несколько каркасов NPC-домов, у которых были только крыши — их повернул под углом, и получился странный тент, как будто дюна накрыла остатки деревни.
Макс не искал новых маршрутов.
Не ломал бункеры.
Не сражался с мобами.
Он просто жил.
Если это вообще можно было назвать жизнью — существование между событиями, между строками, между апдейтами. По сути — тишина. Не внутриигровая, не фоновая. А какая-то системная, плотная. Тишина, в которой даже лаги звучали как музыка.
Свалка будто забыла про него.
Она больше не пыталась его удалить. Но и не звала обратно. Не запускала ивенты, не активировала спаун-зоны, не подкидывала монстров для разминки.
Он ел, когда вспоминал, что голод — это параметр, не чувство. Спал — по остаточной логике. Двигался, потому что стоять было опаснее: местность под ним могла оказаться недозагруженной.
Он не выбирал маршрут. Он был маршрутом.
Иногда в его инвентаре появлялись фразы. Он не помнил, чтобы произносил их. Не писал. Не сохранял. Они просто… всплывали. Как автокэш в консоли администратора.
«Сегодня тишина была громче, чем лаг.»
«Карта не загружается — возможно, потому что я уже на краю.»
«Никто не приходит туда, где не начинается квест.»
И Квак. Конечно же, Квак.
Питомец вел себя иначе. Он больше не шарахался от графических артефактов, не пугался прыжков геометрии, не царапал землю при резкой смене освещения.
Теперь он предвидел баги.
Однажды Макс шел по известному участку — старый маршрут, проверенный, с метками. Квак вдруг дернулся, остановился, фыркнул и отступил. Через пару секунд из земли вылез дефрагментатор — с перевернутыми координатами и без ориентации по оси Z. Он закрутился, вспыхнул и самоуничтожился, даже не заметив Макса.
— Ты теперь кто у нас? — пробормотал тот. — Бродячий патч?
Квак не ответил. Он вообще стал молчалив. Только время от времени медленно поднимал голову, будто улавливал сигналы, которые человек не слышит.
Макс перестал считать дни.
Раньше он вырезал палочки на стене укрытия — той самой странной конструкции, которую нельзя было назвать ни домом, ни базой, ни убежищем. Он строил ее не из блоков, а из моментов, из тихих действий, из желания просто не провалиться сквозь мир.
Теперь палочки исчезали. То ли от влаги, то ли от изменений патча. А может, сам мир понемногу стирал все, что не обновляется.
Вместо дней Макс стал считать… тишину.
Он сидел у багового костра — не того, что дает плюс к восстановлению, а того, который вспыхивал только в случае логической ошибки взаимодействия частиц. Искры там были не настоящие, но грели. Или он себе это внушил.
Квак ловил эти искры лапой. А потом замер. Медленно обернулся. Уставился в темноту.
— Что там? — спросил Макс, но уже знал ответ.
В темноте было ничего. Именно это и пугало.
Он попытался вызвать лог. Не интерфейс, не команду — именно лог, тот самый, который вел артефакт. В старые дни, когда дни еще считались, он появлялся сразу: [log::новая запись] — с датой, координатами, иногда даже с иронией.
Сейчас — ничего.
Только три строчки, всплывшие тускло, как ошибки на забытой консоли:
[log::статус: неактивен]
[обновление: не запланировано]
[поток событий: отсутствует]
Макс застыл. Не как персонаж. Как мысль, не исполненная, не привязанная ни к одному вызову. Как баг, про который забыли и не удалили.
Он чувствовал течение времени — но в логах оно не отражалось.
Он видел, как Квак двигается рывками, будто кто-то забыл включить интерполяцию. Питомец вел себя все страннее — словно баги не приходили, а уже были здесь, просто замаскированы под будущее.
Макс наклонился ближе к баговому костру. И вдруг понял:
"Если лог молчит — значит, меня не пишут.
А если не пишут… значит, я не нужен?"
Он нащупал в кармане артефакт.
Тот самый — с фрагментом интерфейса, глючный якорь, некогда обнаруженный у северной триггерной зоны. В слотах он отображался как:
[item::ярлык_неизвестен]
[status::unsaved]
Он часто держал его в руках, но не понимал зачем. Как будто предмет ждал чего-то — команды, сигнала, может, признания. В последние дни артефакт начал обновляться сам.
Теперь там мигала строка:
[unsaved_entity]
[temp_file::retained]
— Я… временный файл? — выдохнул он.
Артефакт вспыхнул мягко. Без угрозы. Без запроса.
Как будто подтвердил.
Макс провел рядом рукой. Интерфейс дрогнул. Символы сдвинулись, и появились новые строчки: