Read the book: «Баг в титрах»

Font::

Глава 1. Кликбейт ради бездны

— Опять халтура, — Глыба ткнул пальцем в монитор. — Гляньте на текстуры. Мыло. А анимация? НПС дёргается, будто ему в задницу код запихали.

Чат взорвался смайликами и требованием «го сносить ящики». ДД уже успела куда-то исчезнуть с экрана.

— Глыба, ты зануда, — раздался её голос из динамиков. — Тут ящики ломаются — вжух! И щепки летят! Физика!

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

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

— Слышь, Опор, — перебила его ДД. — У тебя там в таблице ячейка E14 мигает красным. Похоже на ошибку.

— Где?!

Звук падающего стула. Глыба хмыкнул.

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

— Скрыт, ты где?

— В пещере, — тихо ответила она.

— В какой пещере? Тут нет пещер.

— Есть.

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

— О, — сказал он в микрофон. — Кажется, нашли секретный контент. Ну-ка...

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

На алтаре лежал предмет.

Он светился. Не просто светился — переливался всеми цветами, которые не должны существовать в этой цветовой гамме. Название всплыло над ним оранжевым шрифтом: «Артефакт Тавтологий».

— Ребята, — Глыба приблизил орка. — Вы это видите?

— Уровень редкости? — тут же спросила Опора.

— Не отображается. Просто... висит в воздухе.

Чат взбесился. Счётчик зрителей пополз вверх. Глыба навёл курсор — описание артефакта всплыло кривым окном, перекрыв пол-экрана. Буквы плыли, складываясь в бессмыслицу: «Багу быть багом. Патч — это просто патч. Игрок есть игрок, когда он игрок».

— Это что за набор слов? — фыркнул он. — Какой-то прикол разрабов.

— Читай вслух! — заорала ДД. — Чат хочет!

— Да ладно, — он усмехнулся. — Хайпанём.

И прочитал.

Экран дёрнулся.

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

Чёрный экран.

Запах пыли ударил в нос — не тот, что от давно не мытого пола в квартире. Другой. Сухой и горячий. И чем-то воняет. Горелым?..

Что-то давило на грудь.

Глыба открыл глаза.

Над ним нависало бежевое небо с парой выцветших облаков. Что-то твёрдое упиралось в спину. Он повернул голову — камень. Здоровенный булыжник, присыпанный песком.

— Какого...

Он попытался подняться. Тело не слушалось. Слишком тяжёлое. Руки...

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

— Не ори, — сказал он себе. — Не ори.

Рядом заворочалось что-то в тёмном плаще.

— Скрыт?

— Да, — тихо. — Это... я.

— Ты видишь?..

— Угу.

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

Глыба сел. Броня лязгнула. Настоящая. Тяжёлая. Пахнет кожей и маслом. Он — орк. Здоровенный тупой орк в латах. А Скрыт — чёртова эльфийка-тень.

— ГДЕ Я?! — раздался вопль из-за камня.

ДД вылетела из-за валуна, размахивая короткими зелёными руками. Розовые патлы метались по лицу. Она уставилась на Глыбу, потом на свои руки, потом опять на Глыбу.

— Я гоблин! — в голосе смесь восторга и ужаса. — Я — гоблин! У меня уши! — она схватилась за голову. — УШИ! Длинные! И четыре пальца! Четыре!

— Ага, — сказал Глыба. — А у меня бицепс размером с твою голову. И я зелёный. Что за...

— Так, — раздался знакомый голос. — Всем спокойно.

Опора вышел из-за скалы — высокий, в мантии, с логарифмической линейкой за поясом. Выглядел он до отвращения спокойно, но линейка у него подрагивала.

— Это не наш мир, — сказал он. — Это...

— «Aethelred», — закончил Глыба. — Я в курсе.

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

— Выхода нет, — констатировал он.

— Вечный ран, — прошептала Скрыт.

— Что?

Она указала вверх. Перед всеми одновременно всплыло системное окно:

«Принять Вечный ран?»

И две кнопки.

Обе — «Да».

— Очень смешно, — Глыба нажал на одну, потом на другую. Результата — ноль.

Окно сменилось новым сообщением:

«Вы — избранные баги. Пока не пофиксите главный квест, будете висеть тут вечно. Приятной игры!»

— Приятной... — Глыба сжал кулаки. — Ах вы ж...

— Смотрите! — Опора тыкал линейкой в свои логи. — «Вечный ран — это не баг, а фича». Они это специально!

— Кто «они»? — спросила ДД. — Разрабы? Это какой-то ивент?

— Нет, — Скрыт обвела взглядом пустынный тракт. — Это не ивент.

Из-за камня высунулась голова. Седой старик с выпученными глазами. Над ним горел маркер квеста — восклицательный знак в жёлтом круге.

— Путники! — завопил он. — Спасите мою кошку! Она застряла на дереве!

ДД, не думая, рванула вперёд. Только её розовые патлы и видели.

— Стоять! — Глыба попытался схватить её за шкирку, но промахнулся.

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

— Иди сюда, кис-кис...

ДД схватила её.

Раздался громкий «БАХ!».

Фонтан пикселей. Ветка сломалась, кошка лопнула, как переполненный полигон, осыпав всех искрами. ДД шлёпнулась на песок.

Квест обновился.

«Спасите 2 кошек».

— Две, — сказала Скрыт.

— Я... я не... — ДД сидела на песке, сжимая в кулаке пустоту. — Это был баг!

— Это был баг, — согласился Опора. — Но логика...

— Какая, нахрен, логика?! — взорвался Глыба. — Мы в грёбаной игре, без кнопки выхода, с тавтологичным квестом, который умножает сам себя, и ты мне про логику?!

Он посмотрел на свои руки. Большие. Сильные. И в правой — скипетр. Тяжёлый, с навершием в виде черепа. Описание: «Скипетр Саркастического Исцеления. Лечит союзников вашим язвительным комментарием».

— Вы серьёзно? — он уставился на скипетр. — Вы дали танку хилку? Которая лечит сарказмом?!

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

«Артефакт Тавтологий — ключ к главному квесту. Артефакт Тавтологий — ключ... Артефакт... Тавто... логий...»

Текст задрожал.

И начал меняться.

— Он редактируется! — заорал Опора. — Прямо под моим курсором!

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

— Это... — она замолчала. — Это структура.

— Что?

— Смотрите.

Она развела руками край текстуры — как раздвигают штору. За ней был не серый «войд». Там мерцали теги. Полигоны. Строки скриптов на незнакомом языке, ползущие вверх, как титры.

— Это всё, — она обернулась. — Весь мир. Он состоит из этого.

Глыба уставился на строки кода. Потом на свой скипетр. Потом на уши ДД, которые нервно подрагивали.

— Так, — сказал он. — Значит, ключ к главному квесту — Артефакт Тавтологий. Который мы активировали.

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

— И выхода нет, — закончила Скрыт.

Интерфейс мигнул красным. Всплыло окно:

«Внимание! Обнаружен новый баг. Загрузка исправления...»

Мир дёрнулся. Небо на секунду стало текстовым редактором, земля — сеткой полигонов. И всё вернулось назад.

Но стражник за спиной Отшельника теперь ходил сквозь стену.

— Надо идти, — сказала Скрыт. — В город.

— Зачем?

— Чтобы понять, кто это сделал. И зачем.

Глыба сжал скипетр. Повертел в руках.

— Ладно, — буркнул он. — Но если там ещё одна кошка — я её сам взорву.

ДД хихикнула.

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

— Я запишу последовательность, — бормотал он. — Логи. Паттерны. Это не хаос. Это чей-то...

— Алгоритм, — закончила Скрыт.

И пошла вперёд.

Остальные двинулись за ней. Пустынный тракт уходил вдаль, к далёким пиксельным горам. Где-то там, за мерцающим маревом, лежал город. И ответы.

Или новые вопросы.

Глыба посмотрел на свою зелёную руку. На скипетр. На небо, которое только что было кодом.

— Ну и патч, — сказал он.

И зашагал дальше.

— Зачем в город?

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

— Ты видела эти строки кода? — Опора семенил рядом, его мантия шелестела, как испорченный PDF. — Там была архитектура! Наследие! Кто-то это написал. А значит, кто-то может это починить.

— Или добить, — буркнул Глыба.

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

— Тут текстуры недогружены! — крикнула она. — Идеально!

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

— Он изумрудный!

— Он багнутый.

— Одно другому не мешает!

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

Тракт петлял между холмами. На одном из них стояло дерево. Ветки росли вниз. Корни — вверх. Дерево было перевёрнуто.

— М-да, — сказал Глыба.

— Это же классика! — Опора аж подпрыгнул. — Баг отражения по оси Y. Я читал про такое на форумах по бета-версии. Разработчики обещали пофиксить в патче...

— В каком патче? — перебил Глыба. — В том, где нас заперли в Вечном ране?

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

— Ты прав, — сказал он тихо. — Нас заперли. Но это значит, что кто-то спроектировал ловушку. А у каждой ловушки есть проектировщик.

— И триггер, — добавила Скрыт из-за спины.

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

— Артефакт Тавтологий, — сказал он. — Мы его активировали на стриме. Кто-то подсунул. Кто-то написал этот дурацкий текст.

— «Багу быть багом», — процитировала ДД и хихикнула. — Ну кто вообще такое пишет?

— Маркетолог, — сказал Опора.

Все замолчали.

— Что?

— Маркетолог, — повторил Опора. — Это тавтология. Маркетинговая. «Кликбейт ради бездны». «Багу быть багом». Это слоган. Кто-то продавал нам игру.

Глыба остановился. Его зелёная рука сжалась в кулак.

— Продавал, — медленно произнёс он. — А мы купились.

Где-то вдалеке раздался взрыв.

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

— Это не мы, — сказала ДД.

— Пока, — уточнил Глыба.

И побежал.

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

Город показался из-за холма.

Точнее — половина города.

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

— Вау, — выдохнула ДД.

— Не «вау», а «катастрофа», — Опора уже выхватил линейку и что-то считал в воздухе. — Если гравитация в верхнем сегменте откажет, то вся эта конструкция рухнет прямо на...

— На нас, — закончил Глыба.

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

— Рассредоточились! — рявкнул Глыба.

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

Но не просто дыра.

В дыре был виден код.

— Оно... — начала Скрыт.

— Да, — сказал Глыба. — Вижу.

Он присел на корточки. Заглянул в пролом. Там, в глубине, шли строки. Не такие, как в разрыве текстуры — другие. Быстрее. Злее. Они пульсировали красным.

«if player.status == eternal_run: spawn_bug() quest.cats += 1 quest.difficulty = impossible»

— Это же... — Опора запнулся. — Это не баг-репорт. Это чей-то код.

— Наш код, — сказала Скрыт.

Глыба смотрел на строки. На «quest.cats += 1». На «difficulty = impossible».

— Значит, так, — сказал он. — Мы не просто баги. Мы — переменные.

Опора открыл рот. Закрыл. Снова открыл.

— Переменные в чужом коде, — продолжил Глыба. — Которые кто-то дёргает.

— Разработчик, — сказала Скрыт. — Тот, кто написал игру. Или тот, кто её сломал.

ДД схватилась за пояс с зельями.

— Тогда пошли искать этого разработчика!

— И что ты ему сделаешь? — Глыба поднялся. Колени хрустнули. — Взорвёшь кошку?

— Я ему самого его взорву!

— Он в коде, — напомнил Опора. — Возможно, он сам — часть кода.

Повисла пауза.

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

— Смотрите, — Скрыт указала пальцем. — Он... адаптируется.

«if player.status == eternal_run: spawn_bug() spawn_bug() quest.cats += 2 quest.difficulty = impossible patrol.spawn(npc_moderator)»

— Модераторы, — прочитал Опора. — Он вызывает модераторов.

— Потому что мы увидели код, — сказала Скрыт.

— Значит, — Глыба медленно выпрямился, — мы на верном пути.

Из-за холма донёсся звук. Тяжёлые шаги. Металлический лязг.

— Патруль, — сказала ДД.

— Бежим?

— Нет, — ответил Глыба. — Мы идём в город. Быстро.

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

«Добро пожаловать в ...»

Три точки в конце. Буквально — три пиксельные точки, которые мигали.

Глыба влетел в ворота первым. За ним — остальные.

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

— Добро пожаловать, — сказал он.

— Спасибо, — машинально ответил Опора.

Стражник повернулся. Его лицо было идеально ровным — ни глаз, ни рта. Просто текстура.

— Добро пожаловать, — повторил он.

— Он зациклен, — сказала Скрыт.

— Понял, — Глыба обошёл стражника. — Идём дальше.

Улица встречала их фонарями, которые горели вниз головой. Лавки с товарами левитировали. Кошка — живая! — сидела на перевёрнутом ящике и смотрела на них.

— Даже не думай, — сказал Глыба ДД.

— Я и не думаю! — возмутилась та. — Я просто смотрю!

— Ты смотрела на прошлую кошку.

— Та была багнутая!

— Эта тоже. Они все багнутые.

Кошка мяукнула. Изо рта у неё вылетели цифры.

— Видишь? — сказал Глыба.

— Но она же мяукнула!

— Цифрами.

— Может, это такой диалект?

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

Он отодвинул «?» и вошёл.

Внутри пахло старыми книгами и перегретым процессором. Полки уходили в бесконечность вверх — буквально, текстура не заканчивалась. За столом сидел НПС в мантии. На груди — бейджик: «Библиотекарь 3-го разряда».

— Мне нужна информация, — сказал Опора. — По Артефакту Тавтологий.

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

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

— Это не отсюда, — перебил Опора. — Это из «World of...»

— Патч 2.4.2, — продолжал библиотекарь. — Удалён класс «Плут». Причина: не вписывается в...

— Да он цитирует патчи другой игры! — Опора обернулся к команде. — Это вообще не его база данных!

— Значит, — Глыба скрестил руки на груди, — кто-то перепутал библиотеки.

— Или намеренно подменил, — добавила Скрыт.

Она подошла к одной из полок. Провела пальцем по корешку. Тот рассыпался на пиксели. Под ним — ещё один, с названием:

«Как я провёл этим летом. Сочинение. 9 „Б“ класс».

— Тут всё перемешано, — сказала она. — Это не библиотека. Это свалка файлов.

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

— О, халява! — ДД схватила с прилавка три пузырька.

Никто не отреагировал. Алхимик продолжал мешать воздух.

— Он афк, — констатировала ДД и сунула зелья в инвентарь.

С улицы донёсся лязг.

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

— Нас ищут, — сказал он.

— Надо уходить, — Опора метнулся к выходу.

— Стой, — Скрыт подняла руку. — Смотрите.

Она указала на стену в углу библиотеки. Та мерцала. Не как багнутая текстура — иначе. Ровно. Ритмично.

— Это проход.

— Куда?

— Внутрь игры.

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

— Там, — сказала она, — ответы.

Глыба посмотрел на дверь. На библиотекаря, который теперь цитировал патч мобильной фермы. На ДД, которая пыталась открыть четвёртый пузырёк зубами.

— Ладно, — сказал он. — Веди.

И они вошли в темноту.

Коридор оборвался в пустоту.

Глыба шагнул первым — и тут же пожалел. Под ногами хрустнуло. Не камень. Не кость. Что-то вроде битого стекла, только тёплое.

— Свет, — бросил он.

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

Это был не подвал. И не пещера.

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

— Там кто-то есть, — сказала Скрыт.

Все замерли. ДД выхватила зелье. Опора приготовил заклинание.

Из тумана вышел человек в сером костюме. Лицо — размытое, как текстура на минималках. Галстук идеально завязан. Ботинки начищены.

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

— Ты кто? — спросил Глыба.

— Я — Поверенный. Уполномочен Системой для проведения процедуры подтверждения.

— Какой процедуры?

— Вечный ран.

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

— Ознакомьтесь и подпишите, — сказал он. — Точнее, нажмите «Да». Кнопка одна.

ДД фыркнула.

— Ага, щас. Я такие контракты даже на сайте не читаю.

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

Опора прищурился. Подошёл ближе. Пробежал глазами по строкам.

— Пункт 14.2, — прочитал он вслух. — «В случае аннулирования статуса Вечного рана все накопленные логи удаляются без возможности восстановления». Что это значит?

— Это значит, — Глыба скрестил руки, — что нас не просто заперли. Нас стирают, если дёргаемся.

Скрыт обошла Поверенного по кругу. Тот не поворачивал головы — просто не было такой анимации.

— Он — скрипт, — сказала она. — Не видит, не слышит, реагирует только на ключевые слова.

— И что?

— И то, — она остановилась, — что я уже нашла выход.

Она указала вниз. Зеркальный пол под ногами Поверенного дал трещину. Маленькую. Почти незаметную.

— Это не текстура, — сказала Скрыт. — Это код. Я видела такое за стеной библиотеки.

— Можно сломать?

— Можно попробовать.

Поверенный дёрнулся. Впервые за весь разговор.

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

— Зафиксируй ещё вот это, — ДД швырнула зелье под ноги.

Бах. Зеркало пошло трещинами.

— Бегом!

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

— Это нарушает по меньшей мере четыре правила пользования!

— Пиши жалобу! — рявкнула ДД, утягивая его за шиворот.

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

А потом темнота.

И удар о землю.

Глыба поднялся первым. Отряхнулся. Вокруг — каменные стены. Факелы. Где-то капает вода. И тишина. Настоящая. Не как в игре — с фоновым шумом ветра и цокотом копыт. А мёртвая. Как в отключенном сервере.

— Народ, — позвал он.

— Тут.

— Тут.

— Здесь.

Все целы. Но в логах — красная строка.

«Внимание! Вы покинули допустимую зону. Загрузка исправления...»

И ниже:

«Ошибка. Исправление не загружено. Причина: файл не найден».

Глыба выдохнул.

— Значит, так, — сказал он. — Больше никаких квестов. Никаких кошек. Никаких библиотекарей. Ищем консоль.

— Консоль заблокирована, — напомнил Опора.

— Значит, ищем того, кто её заблокировал.

Скрыт молча указала вперёд. Там, в конце коридора, горела табличка:

«Серверная. Посторонним вход воспрещён».

А под ней — мелко, почти в шутку:

«Особенно посторонним с Вечным раном».

Глыба усмехнулся.

— Ну вот и свиделись.

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

Глава 2. Пользовательское соглашение с петлёй

Они выбрались из Серверной и вернулись к хижине Отшельника. Над его головой уже висел новый знак.

— Квест обновился.

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

— Да ладно вам! Одна взорвалась — подумаешь! Это же квест! Тут經驗а дают!

— Опыта, — поправил Опора. — В логах написано «опыта». Через «о».

— Да хоть через «ё»! Я хочу посмотреть, что будет, если спасти сразу двух!

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

«Текущий статус: Вечный ран. Попыток выхода: 0. Доступных попыток выхода: 0».

— Это значит, — сказала она, — что любой провал…

— …генерирует новый баг, — закончил Глыба. — Уже проходили.

Отшельник всё ещё стоял у своей покосившейся хижины. Моделька дёргалась — левая рука проваливалась в текстуру стены по локоть, правая нога ушла под землю по колено. Над головой висел восклицательный знак, и под ним — цифра «2».

— Две кошки, — сказал Отшельник. Голос звучал как запись на заезженной кассете. — Две мои кисоньки. В лесу. За холмом. Спасите.

— А в прошлый раз была одна, — заметил Опора.

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

Глыба посмотрел на скипетр в своей руке. Здоровенная дубина с сияющим набалдашником и гравировкой: «Лучшее лекарство — это смех». Ниже мелко: «Скипетр Исцеляющего Сарказма. +15 к регенерации от фейспалма».

— Ладно, — сказал он. — Идём спасать кошек. Но если хоть одна…

— Бах! — радостно выкрикнула ДД и рванула к холму.

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

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

— Кис-кис-кис! — ДД раздвигала кусты. — Отзовитесь, взрывоопасные!

— Ты их пугаешь, — сказал Опора. — Согласно бестиарию, местные кошки реагируют на спокойный голос.

— Согласно чему? Ты уже и бестиарий прочитал?

— Пока вы падали в зеркало, я листал инвентарь. У меня там книг на три слота.

Глыба обернулся:

— И много полезного?

— «Справочник грибника», «Этикет дворфов» и «Сто способов приготовить василиска». Пока нет.

Скрыт двигалась вдоль кромки леса. Плащ делал её почти невидимой среди фиолетовых стволов. Она остановилась и подняла руку.

— Там.

Все замерли.

На поляне сидела кошка. Обычная. Серая. С жёлтыми глазами. Над головой — маркер: «Кошка Отшельника. 1 из 2. Спасите».

— Одна есть, — выдохнула ДД. — Где вторая?

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

— Это баг? — спросил Глыба.

— Это анимация, — Опора уже открыл логи. — Смотри: «Object_Cat_02: состояние — левитация. Причина: не назначена гравитация».

— Кошка без гравитации, — медленно повторил Глыба. — Они даже кошку нормально не сделали.

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

— Кисонька, хорошая… Не взрывайся, ладно? Мы тебя спасём…

Кошка на земле моргнула. Кошка в воздухе сделала полный оборот.

— Я беру эту, — ДД кивнула на нормальную. — А ты, Скрыт, лови летучую.

Скрыт беззвучно отделилась от дерева и двинулась к парящей кошке. Плащ стелился по фиолетовой траве.

— На счёт три? — предложила ДД.

— Давай.

— Раз…

Глыба сжал скипетр. Опора открыл меню заклинаний. Там было пусто, если не считать одного: «Баррикада из Бюрократии. Эффект: замедляет противника на время чтения договора».

— Два…

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

— Тр…

Интерфейс мигнул красным. Над поляной развернулось системное сообщение:

«Внимание! Обнаружен новый баг. Загрузка исправления…»

— Стойте! — крикнул Опора. — Не трогайте!

Но ДД уже схватила кошку.

На секунду ничего не произошло. Кошка мявкнула. ДД расплылась в улыбке.

— Видите? Нормаль…

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

— Что?

А потом земля под ногами ушла вверх.

Нет, не земля. Они. Поляна накренилась. Деревья поехали вбок. Небо и трава поменялись местами. Глыба вцепился в ствол ближайшего фиолетового дуба и увидел, как Опора катится по склону, который секунду назад был ровным.

— Гравитация! — заорал Опора, пересчитывая рёбрами корни. — Она переключилась на всю локацию!

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

— Класс! — донеслось откуда-то сверху. — Как на американских горках!

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

Первая исчезла. Вторая сидела на недосягаемой поверхности. А мир продолжал вращаться.

— Она же сказала «не трогайте»! — прохрипел Глыба, пытаясь не разжать пальцы.

— Я не сказала! — крикнула Скрыт. — Я только рот открыла!

— Это система! — Опора наконец зацепился за пенёк и открыл интерфейс. — Смотрите! «Исправление загружено. Версия патча 0.0.0.1-альфа». Они поставили патч прямо во время нашего квеста!

— То есть кошка взорвалась бы в любом случае? — ДД пролетала мимо с выражением глубокого облегчения на лице. — Я не виновата!

— Виновата! — рявкнул Глыба. — Ты схватила её до загрузки патча! Теперь у нас минус одна спасённая кошка и плюс одна гравитационная аномалия!

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

«Спасите трёх кошек».

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

— Три кошки, — прочитал он. — Сначала одна. Потом две. Теперь три. Что дальше? Десять? Сто? Армия кошек, которую мы должны спасти, пока патчи ломают мир вокруг?

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

— Петля, — повторила Скрыт.

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

— Мы уже это проходили, — сказала она. — В Серверной. Табличка. «Посторонним вход воспрещён».

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

«Рендеринг не завершён. Пожалуйста, подождите».

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

— Значит, — Опора поднялся на ноги и отряхнул мантию, — консоль всё ещё…

— Заблокирована, — закончил Глыба. — Да. И тот, кто её заблокировал…

— …продолжает писать патчи, — тихо сказала Скрыт.

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

— Так, народ. Я всё поняла. Мы не можем спасти кошек. Мы не можем выполнить квест. Мы не можем выйти. Что мы можем?

Глыба посмотрел на скипетр.

— Мы можем перестать играть по их правилам.

— Это как?

Он развернулся к Отшельнику. Тот всё так же стоял у хижины — вверх ногами, с восклицательным знаком и цифрой «3».

— Эй! — крикнул Глыба. — Отшельник!

— Да? — отозвался тот. — Спасите моих кисонек.

— А если мы не будем их спасать?

Отшельник моргнул. Впервые за всё время его моделька перестала дёргаться.

— Что значит «не будете»?

— То и значит. Отказываемся от квеста.

— Нельзя, — сказал Отшельник. — Квест активен.

— А если мы просто уйдём?

— Куда?

Глыба не ответил. Он повернулся к команде.

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

— Логично, — кивнул Опора.

— Значит, мы не будем.

— А что будем?

Глыба указал скипетром туда, где над лесом висела половина города.

— Вернёмся. Найдём того, кто всё это затеял. И заставим его прочитать пользовательское соглашение. Вслух. От начала до конца.

Опора поморщился.

— Это жестоко.

— Я знаю.

Интерфейс мигнул. Строчка о патче сменилась новой:

«Внимание! Квест „Спасите кошек“ отменён. Причина: отказ исполнителей».

И следом:

«Инициирован новый квест: „Найти Администратора“. Сложность: максимальная».

ДД подпрыгнула.

— О! Теперь это интересно!

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

— Предполагаемое, — прочитал Опора. — То есть даже система не знает точно?

— Или не хочет знать, — сказала Скрыт.

Глыба посмотрел на скипетр. Тот всё ещё светился. Гравировка «Лучшее лекарство — это смех» перемигивалась, будто подмигивала ему.

— Ладно, — сказал он. — Идём искать Администратора. Но учтите: если он предложит спасти кошку…

— Я первая кину зелье, — пообещала ДД.

— Я составлю протокол о нарушении, — добавил Опора.

— А я, — сказала Скрыт, — найду в его коде дыру.

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

Интерфейс дёрнулся и выдал последнее сообщение:

«Пользовательское соглашение обновлено. Пункт 7.3: отказ от выполнения квеста влечёт загрузку альтернативного. Альтернативный квест не имеет гарантии завершения. Удачи».

— Удачи, — повторила ДД и хмыкнула. — Слышь, Глыба, а это угроза или они правда желают?

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

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

Или делал вид, что знал.

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

Где-то далеко, за лесом, мяукнула кошка.

Или три.

Квест не отслеживал.

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

— Серьёзно? — Глыба посмотрел вниз.

Булыжник мяукнул в ответ.

— Это баг, — сказал Опора. — Или фича. Но скорее баг.

— А по-моему, мило, — ДД наступила на следующий камень. Тот взвизгнул. — Ой. Извини.

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

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

— Слушайте, — ДД обернулась на ходу, — а мы вообще дышим? Ну, типа, по-настоящему?

Опора остановился. Приложил два пальца к запястью. Замер.

— Пульс есть. Дыхание есть. Но я не уверен, что это мои.

— В смысле — не твои?

— В смысле — они есть в интерфейсе. — Он ткнул пальцем в воздух, разворачивая полупрозрачное окно. — Вот. Показатель «Сытость», показатель «Усталость», показатель «Сарказм».

— У тебя есть показатель сарказма? — удивилась ДД.

— У Глыбы. Я смотрю его статы.

Глыба заглянул через плечо Опоры. Шкала «Сарказм» была заполнена на три четверти и пульсировала зелёным.

— И что это значит?

— Это значит, что ты здоров, — сказал Опора. — Или скоро будешь.

— Я не болен.

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

Глыба посмотрел на скипетр. Тот подмигивал.

— Прекрасно, — сказал он без выражения. — Просто прекрасно.

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

— Лаг, — констатировала Скрыт.

— Нет, — Опора уже открыл логи. — Это не лаг. Система пишет: «Коррекция маршрута в связи с обновлением квеста».

— Мы же отказались от кошек! — ДД всплеснула руками, и одно зелье на поясе опасно звякнуло. — Какой ещё квест?

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

Квест: «Найти Администратора». Статус: активен. Примечание: маршрут скорректирован. Примечание к примечанию: маршрут проложен через точки интереса. Примечание к примечанию к примечанию: интерес субъективен.

— Оно издевается, — сказал Глыба.

— Оно уточняет, — поправил Опора. — Это разные вещи.

— Нет. Оно издевается. Я за четыре года стримов научился отличать баг от троллинга. Это стопроцентный троллинг.

Скрыт подняла руку. Все замолчали.

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

— Нет, — сказал Глыба.

— Да! — заорала ДД и рванула с места.

— Стой! — заорал Опора. — Это может быть ловушкой!

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

Кошка сидела и смотрела. Восклицательный знак мигал жёлтым.

ДД протянула руки.

Кошка мяукнула.

И исчезла.

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

— Что?.. — ДД затормозила.

Интерфейс дёрнулся и выдал всем четверым:

Квест: «Спасите кошек». Статус: активен.

— Да вы издеваетесь! — Глыба сжал скипетр.

Прогресс: 0 из 2. Примечание: кошка №1 обнаружена. Кошка №1 деспавнена по причине: «ранний контакт». Рекомендация: не приближаться к объекту спасения до подтверждения его материальности.

— Подтверждения материальности, — повторил Опора. — То есть теперь мы должны не просто найти кошек, а сначала проверить, не глюк ли они.

— А как мы это проверим? — спросила ДД.

— Очевидно, — сказал Опора, — надо...

Он не договорил. Потому что из-за другого дерева — того, что висело — высунулась ещё одна кошачья морда. Тоже серая. Тоже с жёлтыми глазами. И тоже со знаком.

Только надпись над знаком была другая. Она гласила: «Кошка №2. Не материальна».

— Ну, — сказала Скрыт, — по крайней мере, честно.

— Это ловушка, — сказал Глыба. — Они хотят, чтобы мы потратили время.

— Или ресурсы, — добавил Опора. — Кошки могут требовать хила.

— Или просто взрываться, — добавила ДД. — Уже было.

Глыба повернулся к ней.

— Ты всё ещё хочешь спасать кошек?

— Нет. Теперь я хочу понять, почему они взрываются. Это разное.

— Это одно и то же, — сказал Глыба.

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

Опора хмыкнул.

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

— Или использовать, — добавила Скрыт.

Все посмотрели на неё.

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

— К Администратору, — закончил Глыба.

— Именно.

Интерфейс дёрнулся. Буквы снова сложились в сообщение:

Квест: «Спасите кошек». Статус: приостановлен. Причина: изменение стратегии пользователей. Рекомендация: продолжайте движение к точке интереса.

— Оно нас слышит, — сказала ДД.

— Оно нас читает, — поправил Опора. — Логи фиксируют каждое слово. Я проверял.

— То есть всё, что мы говорим...

— Да. Сохраняется. И, вероятно, влияет на генерацию контента.

Глыба медленно поднял скипетр, посмотрел прямо в интерфейс — туда, где мигала строка статуса, — и сказал:

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

Он не договорил. Интерфейс мигнул и выдал:

Принято к сведению. Количество активных кошек на маршруте: 3. Примечание: кошки могут не взрываться. Примечание к примечанию: но это не точно.

ДД засмеялась. Опора вздохнул. Скрыт едва заметно улыбнулась.

Глыба опустил скипетр.

— Пошли.

Они двинулись дальше. Город всё так же висел над лесом, и лестницы из кода перемигивались в закатном свете. Закат здесь был фиолетовым и шёл полосами, как на сломанном мониторе.

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

Три кошки где-то ждали.

И, кажется, не только они.

Дорога вывела их на пыльный перекрёсток.

Четыре указателя торчали из земли под углами, которых в нормальной геометрии не бывает. На одном значилось «Лес Вздохов», на втором — «Озеро Несохранённых Текстур», на третьем — «Городская Свалка (бета)». Четвёртый указатель просто мерцал красным, без надписи.

— Голосуем? — спросила ДД.

— За четвёртый, — сказала Скрыт.

— Почему?

— Потому что его нет на карте.

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

— Это даже не баг, — пробормотал он. — Это кто-то специально спрятал.

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

За поворотом открылась поляна.

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

— Путники, — произнёс он скрипуче, но без эмоции. — Помогите старому отшельнику. Кошка пропала. Спасите.

Интерфейс немедленно отозвался:

Новый квест: «Спасите кошку». Награда: 50 опыта, благословение Отшельника.

— Пятьдесят экспы? — фыркнула ДД. — Да я за один взрыв столько нафармить могу.

— Ты не поняла, — сказал Опора. — Здесь нет экспы. Это просто цифры.

— Тогда зачем?

Отшельник снова открыл рот, но вместо слов оттуда вырвался тот же скрип, наложенный сам на себя трижды. Глыба прищурился.

— У него звуковая дорожка заела.

— Или так задумано, — сказала Скрыт.

ДД уже обегала хижину в поисках кошки.

— Тут! — крикнула она. — Серая, с жёлтыми глазами! На крыше!

Кошка сидела на коньке крыши, обернув хвост вокруг лап. Смотрела на ДД без страха. Без интереса. Как на текстуру.

— Кис-кис.

Кошка не шевельнулась.

— Я её сниму, — сказала ДД и полезла на хижину.

— Стой, — начал Опора, но поздно.

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

Не убежала. Не спрыгнула. Исчезла. Только лёгкое облачко пикселей на том месте, где она сидела.

— Чего?

Интерфейс дёрнулся:

Статус квеста: провален. Причина: объект «Кошка» не прошёл коллизию с персонажем «ДД».

— Какая ещё коллизия? — возмутилась ДД. — Я до неё даже не дотронулась!

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

Внимание! Обнаружен новый баг. Загрузка исправления... Квест перегенерирован: «Спасите 2 кошек». Награда: 100 опыта.

— Что?!

Из хижины донёсся скрежет — тот самый, тройной.

— Отшельник, — сказала Скрыт. — Он теперь говорит.

— Что говорит?

Она прислушалась. Пауза. Потом тихо:

— «Спасите двух кошек».

Глыба выдохнул так, что интерфейс качнулся.

— Идиотский квест.

— Это не квест, — вдруг сказал Опора. Он стоял с открытым логом, и его пальцы быстро скроллили строки. — Это демонстрация механики. Система показывает нам, как работает «Вечный ран».

— Что ты увидел?

— Смотрите. Первый провал — кошка взорвалась. Второй — объект не выдержал коллизии. Оба раза квест перегенерировался. Удвоились требования. Удвоилась награда.

— И что?

— А то, что каждый наш провал что-то добавляет. Не просто новый баг — новый слой. Новую сложность. Мы не приближаемся к финалу. Мы удаляемся.

ДД спрыгнула с крыши.

— То есть чем больше мы стараемся — тем хуже?

— Именно.

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

— Тогда что делать? — спросила ДД.

Глыба поднял скипетр. Посмотрел на Отшельника. На интерфейс. На ребят.

— Идём.

— Куда?

— Искать Администратора. Того, кто пишет правила.

— А как же кошки? — спросила ДД почти с обидой.

— А кошки, — сказал Глыба, — пусть спасают сами себя.

Интерфейс мигнул красным.

И загрузил новый баг.

The free sample has ended.

Age restriction:
16+
Release date on Litres:
14 October 2026
Writing date:
2026
Volume:
130 p. 1 illustration
Copyright Holder::
Автор
Download format:

Similar books