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

Так что, когда ему попалась новая VRMMORPG ChronoFall: Legacy, рекламируемая как «самый честный фэнтези-симулятор», он лишь усмехнулся.
— Честность? Ну-ну. Сейчас посмотрим, где тут враньё.

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

Гулкие колокола, переливы света, пафосная надпись:

Добро пожаловать в ChronoFall: Legacy!

— Хм. Красиво, конечно… но слишком гладко. А где шероховатости? — пробормотал Макс, крутя глазами.

Перед ним возникло меню выбора класса.
Иконки плавали в воздухе: «Воин», «Маг», «Лучник», «Паладин»… стандартный зоопарк.
Макс лениво провёл рукой мимо них, ожидая подвоха. И подвох не заставил себя ждать.

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

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

Курсор словно прилип к этому квадратику. Экран дёрнулся, и перед глазами всплыло системное сообщение:

Вы выбрали класс: [Инвентарщик].

Макс моргнул.
— Что за чушь?

Характеристики:

Класс: Инвентарщик (Ошибка 404)

Навык 1: ВытянутьПредмет()

Навык 2: СломатьИнтерфейс()

Пассивка: Бессмысленный(???)

Он вслух рассмеялся.
— Господи, да я официально баг.

Следующее окошко:

Внимание! Данный класс не должен существовать. Сообщите разработчикам.
[Игнорировать] [Принять]

— Ну конечно, — хмыкнул он и ткнул «Игнорировать». — Сообщу я им, как же.

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

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

Он вызвал инвентарь. Прозрачное окно с ячейками зависло перед глазами.
— Так, а что у нас тут? Палки, камни, стандартная стартовая ерунда…

Из любопытства он попробовал потянуть один из предметов рукой.
И… вытянул.

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

— Ха! — Макс сжал её пальцами. — Вот это номер.

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

На экране мигнуло уведомление:

Ошибка среды. Восстановление объекта через 15 секунд.

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

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

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

Он ткнул этим квадратом в землю.
И земля под ногами исчезла.

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

Загрузка зоны… Ошибка 503.

— Э-э-эй! Я только начал! — закричал он, но голос прозвучал гулко, как будто в огромном серверном зале.

Перед глазами мелькали строки:

[Внимание! Игрок вышел за пределы карты.]
[Запуск аварийной локации: Свалка Ошибок.]

Мир снова сложился, и Макс с грохотом рухнул в кучу… мусора. Но это был не мусор в привычном смысле. Вокруг валялись полуразрушенные модели: полуконя-полустены, оружие без текстур, головы NPC с зависшими улыбками.

— Мама дорогая… — прошептал он. — Вот это стартовая зона!

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

/Квест/Начало_игры(не найден)…

Макс уставился на него.
— Кажется, у меня теперь самый весёлый туториал в истории.

Макс оглянулся.
Всё вокруг напоминало кошмарный сон разработчика: искорёженные объекты, зависшие текстуры, части моделей, слипшиеся в уродливые конструкции.
Трава внезапно переходила в камень, камень в воду, вода в обрыв. В воздухе плавали обрывки надписей:
[НАЗВАНИЕ_ЛОКАЦИИ_ЗДЕСЬ]
[КвестовыйПредмет_001]
TODO: заменить на нормальный диалог

— О да, — протянул Макс. — Тут пахнет домом.

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

Макс машинально отошёл назад и тут заметил: у его персонажа нет интерфейса здоровья. Панель ХП просто отсутствовала. Вместо неё в углу мигало сообщение:

[Ошибка HUD. Попробуйте перезапустить клиента.]

— Отлично, — хмыкнул он. — Убить меня нельзя. Я бессмертен. Ну, наверное. Или умру так, что выкинет на рабочий стол.

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

Один выглядел как трёхногий волк, но его голова была повернута внутрь тела. Другой — человек, у которого вместо лица пустой белый квадрат с надписью [TEXTURE NOT FOUND]. Третий вообще полз на руках, хотя у него были ноги, просто приклеенные не туда.

— Прекрасно, — сказал Макс, пятясь назад. — Только этого и не хватало: привет из альфа-теста.

Волк-глитч заскулил и дёрнулся, а потом рванул вперёд.

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

Он вытащил в реальность надпись [Настройки графики].
И, не думая, швырнул её в монстра.

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

Макс ошарашенно рассмеялся:
— Да это ж читерство чистой воды!

Второй монстр — с квадратом вместо лица — завыл и бросился на него. Макс снова сунул руку в инвентарь и наугад дёрнул ещё одну иконку. На этот раз в ладони оказался [Сохранить и выйти].

— Ох… а если сработает, меня выкинет к чёрту. Ладно, проверим!

Он ткнул иконкой в чудовище.
Тот замер, будто его зафризили, и исчез, оставив после себя только текстовую надпись:
[Файл удалён].

— АХАХАХА! — Макс согнулся пополам. — Да я же ходячая бета-версия!

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

Макс нахмурился.
— Эй, вы что, реально понимаете, что происходит?

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

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

Он остался один среди хаоса Свалки Ошибок.

В голове зазвенел системный звон.
[Новый квест: ???]
Описание: вы не должны существовать. Но раз существуете — докажите, что этот мир обязан признать вас.
Награда: неизвестна.
Штраф: неизвестен.

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

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

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

Он вызвал инвентарь. Внутри было что-то новое:
— Хм? Это что ещё?

В ячейке мигала иконка [Фрагмент глитча].
Описание: «Память об удалённом объекте. Использовать нельзя».

— Ну конечно, — ухмыльнулся Макс. — Всё, что нельзя использовать, всегда самое полезное.

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

«— Опять кто-то провалился в Свалку?
— Невозможно, мы закрыли доступ.
— Тогда кто это?..»

Макс моргнул.
— Ого… то есть я не просто игрок. Я ещё и в чатик админов могу заглядывать?

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

С горизонта выползло нечто гигантское.
Огромный многогранник, составленный из кубов и треугольников, вращался, меняя форму. Каждый раз, когда он складывался, появлялись новые надписи:
[Фатальная ошибка системы]
[Нарушение целостности мира]

— Ой-ой, — Макс сделал шаг назад. — Кажется, за мной прислали мусорщика.

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

— Да вы шутите… у меня первый моб в игре — антивирус?!

Он дёрнул из инвентаря случайную иконку. На ладони оказался [Настройки управления]. Макс заорал и бросил прямо в луч.

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

В голове Макса загорелась надпись:
[Предмет применён некорректно. Объект сбойнул.]

— Ну, другого я и не ожидал, — выдохнул он.

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

Тишина снова вернулась. Только ветер шевелил обрывки мусора.

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

Он двинулся вперёд. И вскоре заметил свет.
Вдали, среди хаоса битых моделей, сияла арка из глюкавых полигонов. Над ней висела надпись:
[Выход: ???]

— Ну, выбора у меня немного, — сказал Макс и шагнул к ней.

Чем ближе он подходил, тем сильнее ощущал странное давление. Будто сама игра понимала, что он не должен существовать.
Перед самым порталом появилось сообщение:

[Вы пытаетесь покинуть Свалку Ошибок.
Подтвердите аномальный статус.]

[Принять] [Удалить]

Макс усмехнулся.
— Удалить меня? Ну уж нет.

Он ткнул «Принять».

Мир взорвался светом.

На секунду он оказался между строками кода. Огромные буквы, как руны, летели мимо него: «if», «else», «while». В этих символах было что-то древнее, как будто это не язык программистов, а заклинания богов.

И среди них — тени. Силуэты, похожие на людей, но искажённые, будто нарисованные на старом экране.
Они смотрели на него. И шептали:

— Ты… наш…
— Ошибка… или чудо?..
— Мы — баги, но мы — жизнь…

Макс едва успел выдохнуть:
— Да чтоб меня…

И провалился в новый мир.

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

И тут же появилось системное уведомление:

[Новая способность: «Сломать интерфейс» активна.]
[Пассивка обновлена: «Бессмысленный(???)» → «Бессмертный(?)»]
[Класс: Инвентарщик официально зарегистрирован.]

Макс уставился на окно.
— О… а вот теперь игра началась.

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

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

— Лес? — он приподнялся, глядя вокруг. — Я же выбирал старт в городе.

Система молчала. Экран интерфейса мигнул:

[Добро пожаловать в Этернетум!]
Класс: Инвентарщик
Уровень: 1
HP: 100/100
Стамина: 80/80

И всё. Ни квеста, ни приветственного НПС. Даже стандартного «Поговори с деревенским старостой».

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

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

[Ошибка: Неопознанный предмет]
Описание: ???
Вес: 0
Цена: —

— Так, так, так, — Макс прищурился. — Снова «подарочки» от багнутого билда?

Он попытался достать предмет. Мир дернулся, и у него в руках возник… полупрозрачный куб. Внутри куба плавали пиксельные обрывки кода, словно кто-то уронил в стеклянный аквариум куски интерфейса.

— Ха! — Макс рассмеялся. — Я теперь не игрок, я ходячий GitHub. Интересно, что будет, если этим кинуть?

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

[Вы использовали: Фрагмент Кода]
Эффект: Баг-мутация. Дерево стало Неправильным Деревом.]

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

— Опа… — Макс попятился. — Может, я всё-таки зря кинул.

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

— Либо это сюжет, либо меня сейчас съедят, — пробормотал он. — Но выбора-то всё равно нет.

Он шагнул вперёд.

Внутри оказался не костёр, а настоящая деревня. Низкие избы, дым из труб, огороды с багнутыми текстурами моркови (каждая вторая морковка была квадратной). И люди. Точнее, NPC.

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

Макс осторожно подошёл ближе.

— Эй! — крикнул он. — Кто тут главный?

Все NPC синхронно повернули головы. Их глаза были слишком живыми, как будто за ними кто-то наблюдал. Старик шагнул вперёд.

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

— Ого, сюжетка включилась, — пробормотал Макс. — А я думал, что буду тут как дурак бродить.

Старик кивнул и продолжил:

— Ты несёшь на себе метку багов. Мы чувствуем её. У тебя — ключ.

Макс напрягся.
— Какой ещё ключ? Я вообще-то просто игрок!

Экран интерфейса вспыхнул:

[Скрытая особенность класса "Инвентарщик" открыта!]
Навык: Хранение Багов
Вы можете собирать обрывки кода и использовать их как оружие или инструменты. Чем больше багов, тем сильнее ваша сила… и тем ближе хаос.

— Офигеть, — выдохнул Макс. — Я — багнутый покемон-тренер.

NPC-старик внимательно смотрел на него, словно слышал каждое слово.

— Осторожнее, чужак. Этот дар проклят. Хаос забирает тех, кто играет с кодом.

Макс усмехнулся.
— Ну, хаос, так хаос. Главное, чтоб с экспой не обманули.

Вдалеке загремел рог. NPC замерли.

— Орда идёт, — сказал старик. — Испытай свой дар. Или погибни с нами.

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

Интерфейс выдал:

[Квест: Первая оборона]
Цель: Защитите деревню от баг-волков.
Награда: +1 уровень.

Макс сжал в руках новый куб — фрагмент кода.

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

Макс сжал зубы. Волки вываливались из леса десятками. Не «правильные», а рваные, с обрывками кода вместо шерсти, с пустыми белыми глазами, мигающими, как лампы в подъезде.

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

Первый волк прыгнул. Макс вскинул руку — куб треснул в ладони и рассыпался в рой символов. Символы облепили зверя, и тот замер в воздухе, завис, словно кадр на паузе. Через секунду его тело распалось, как будто кто-то стёр модель в редакторе.

[Вы использовали баг-код: «Фриз-кадр»]
Эффект: Враг удалён.

Макс моргнул.
— Вот это я понимаю — мод на бессмертие.

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

— Так, так, так… если баги порождают баги, то мне придётся…

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

[Соединение предметов… Ошибка.]
Результат: Глючный нож.]

Оружие засияло красными пикселями, и Макс ударил ближайшего фантома. Фантом рассыпался, но на его месте возникло сообщение:

[Системное предупреждение: Нарушение баланса.]

— Нарушение баланса? — Макс усмехнулся. — Да вы только ради этого меня и наняли.

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

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

Макс подхватил ещё один куб. На этот раз он просто кинул его на землю. Куб развернулся в щит из букв и цифр. Волк ударился в него, застрял в ряде «ERROR», и разлетелся на части.

[Новый баг сохранён в Инвентарь!]
Навык: ERROR-щит]

— Отлично, — Макс усмехнулся. — Ещё немного, и я буду коллекционировать ошибки, как покемонов.

Он огляделся. Последний волк, самый крупный, стоял на опушке. Его тело искажалось, как поломанный GIF. В его пасти сверкало что-то, похожее на фрагмент портала.

Макс прищурился.
— А вот и босик.

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

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

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

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

[Квест завершён: Первая оборона]
Награда: +1 уровень
Получен предмет: Фрагмент Портала

Макс тяжело дышал. В руках у него мерцал осколок.

— Ну привет, сюжет, — сказал он.

NPC собрались вокруг. Старик кивнул.

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

Макс усмехнулся.
— Цена? Да я и так на распродаже живу.

Экран интерфейса мигнул:

[Уровень 2 достигнут.]
Доступно: новое умение «Слияние багов».]

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

И в этот момент он понял: его приключение только начинается.

Загрузка...