Он почувствовал это до того, как заметил.
Не звук. Не движение. Скорее — пауза в воздухе. Как если бы кадр подвис между двумя тиками. Как если бы сам лес перестал считать время.
— Кажется, у нас гости, — пробормотал Макс, по привычке повернувшись к Кваку.
Но Квак молчал.
Стоял на месте, вытянув шею, и смотрел в никуда. Не мигал. Не шевелился. Только редкий синий пиксель моргал в уголке глаза, как ошибка синхронизации. Макс щелкнул пальцами перед его мордой — тишина.
— Серьезно? Ты завис? Сейчас?
Он подошел ближе, дотронулся до плеча — ну или что там было у лягушек на месте плеч. В ответ — короткий дерганый скрип, как будто проигрался обрезанный звук старта анимации. Но Квак не сдвинулся.
Макс развернулся обратно — и увидел это.
На другом конце поляны, там, где багнутые деревья распадались на геометрию, стояла фигура. Не человек, не зверь, не монстр. Просто форма. Абсолютная. Безошибочная. Ровная, как от векторной кисти. Серый силуэт, вытянутый вверх, почти не различимый на фоне моргающего леса. Ни лица. Ни одежды. Даже тени.
Она не шевелилась. Но Макс видел, как воздух вокруг нее дрожит. Нет, не воздух — код. Пиксели в радиусе пяти метров искривлялись, как будто что-то вшитое в ее присутствие выдавливало реальность наружу.
Макс замер.
— Что за… — начал он, но фраза осталась недосказанной.
Прямо перед глазами, словно в интерфейсную проекцию, вплыл системный лог. Без предупреждений. Без клика.
[Запрос очистки запущен]
[Пользователь::удалить_пользователя]
[Ответ::непрочитан_или_искажен]
— Вот дерьмо, — выдохнул Макс. — Системный аудит. Босс, которого я не выбирал.
Он сделал шаг назад. И еще один. Земля под ногами мягко провалилась на полпикселя — глюк геометрии, как будто мир тоже хотел отступить вместе с ним.
Фигура не двинулась. Но все вокруг нее словно забыло, как должно работать. Трава замерла, свет перестал мерцать. Даже багнутые деревья больше не искажались. Все перешло в режим ожидания. Заморозка сцены.
Макс сглотнул.
— Ну что ж. Давай поиграем в прятки.
Он резко шагнул в сторону, за ближайшую текстурную ель, которая наполовину просвечивала, а наполовину отражала небо из предыдущей локации. Ветка при движении издала короткий глюкнутый звук — скорее вибрацию, чем щелчок. Неестественный. Почти музыкальный.
Он затаился, выдохнул.
Никакой погони. Никакого движения. Только мерцание. Только системный жар, идущий от стоящей фигуры. Как будто она не имела цели двигаться. Она уже выполнила запрос. Теперь — ждала.
Макс посмотрел вверх — интерфейс снова ожил. Иконка соединения мигнула красным, а затем:
[Угроза обнаружена]
[Пользователь не аутентифицирован]
[Задание обновлено: «Ты должен исчезнуть»]
Он закрыл глаза. Глубоко вдохнул. Потом снова выглянул из-за дерева.
Фигура все еще там. Только теперь ее границы стали чуть размыты. Как будто она начала сливаться с пространством. Или наоборот — начала выгрызать его.
— Не враг, — пробормотал он. — Сценарная функция. Обрезает хвосты. Остатки. Как я.
И вдруг вспомнил: в эпизодах с багами, в ранних сценах — всегда были упоминания об автоматических чистильщиках. Невидимых. Немолчаливых. Фоновая служба. Не зло — просто уборка после сбоя.
А теперь — Макс был в списке на удаление.
Нужно было уходить. Срочно. Бежать.
Макс дернул Квака за лапу — ту самую, покрытую фрагментами наложенной текстуры, как будто наспех приклеенной из другой модели. Никакой реакции. Ни сканирования, ни логов. Питомец завис, вывалившись из алгоритма реальности, как фонарь без провода.
Но в ту же секунду — не в Кваке, в самом мире — что-то щелкнуло. Беззвучно, но ощутимо. Как будто дернулся один из уровней отрисовки. Лес качнулся. Полупрозрачные ветки моргнули, будто приняв решение. Трава на секунду побелела, и где-то в недрах движка простонал системный компрессор. Пространство дрогнуло. Глубинно. Не как при лаге — как при отмене команды. Само место, сама текстура, будто сказала: «нет, с этим объектом мы больше не работаем».
Из интерфейса вылетело уведомление — короткое, как вспышка. Он даже не успел прочитать его, как оно тут же свернулось в ноль, и на его месте осталась только пиктограмма, дернувшаяся, как будто удивилась собственному появлению:
[свойство активировано: сбойное уклонение]
Мир дрогнул. Не сотрясся — именно уклонился. Как будто текстуры вокруг него сказали: «Ой, извините», — и отодвинулись. Слои раступились, как шторы на багнутой сцене. Исправитель остался в одном фрейме — а Макс и Квак сдвинулись. Не телепортация. Не перемещение. А как будто они выпали из сцены, остались между кадрами.
Деревья расплылись. Поляна вытянулась, как глитч-эффект. Все края поплыли, и воздух на секунду зашипел, как старая видеокассета, когда проматываешь через лицо ведущего.
Он даже не охнул. Не успел.
И тут же — прямо поверх, без предупреждения, без анимации, без эффектов — просто бух, как наклейка:
[квест завершен: Отражение в баге]
Он застыл. Повернулся — все выглядело… чуть не так. Свет другой. Квак — ближе. Земля под ногами — не та же самая, но почти. Как будто мир его все же сохранил, но… в соседнем экземпляре.
— Что?.. — вскинул брови. — Какой квест? Какое, мать его, отражение? Я его даже не начинал!
Он огляделся. Где стоял Исправитель — теперь только медленно складывался глюкнутый пиксельный столб. Место… откатилось? Или просто забыло, что он здесь был.
Макс выдохнул. Осторожно.
И только потом заметил: интерфейс был слегка смещен. Как будто смотрел не на ту локацию. Как будто мир чуть-чуть промахнулся, сохранив его по ошибке в бета-версии текущей сцены.
Но он был жив. И это считалось.
Артефакт на шее заморгал. Внутри раздалось короткое шипение, как будто он пытался передать слишком большой пакет данных через сломанный модем.
Интерфейс мигнул. Открылся новый файл:
[наблюдение.лог#001]
— Ну-ка, — Макс ткнул на него.
Файл не содержал ни текста, ни аудио. Только фрагменты. Вырванные куски леса, искаженные перспективы, черновые слои. Четыре обрывка:
— глюкнутый фрагмент поляны,
— тень, двигающаяся без объекта,
— глубокая вмятина в земле, словно кто-то стоял там,
— и вспышка. Без цвета, без координат. Просто сигнал.
В самом конце — строка. Не всплывающее окно. Прямо в теле файла, будто надпись, сделанная карандашом на бумаге:
Обновление питомца: Квак — уровень 2 (⁇)
Макс::статус_изменен — [токен_устойчивости::выдан]
— Что? Токен? — Макс прищурился. — Это что, меня теперь можно оставить? Как сохраненного? Не перезапишут? Не сотрет?
И тут — как в старых играх — в правом верхнем углу мягко загорелось:
[новый квест: «Подпись в коде»]
И под ним — без скобок, без форматирования, просто строчка. Как будто не интерфейс, а кто-то лично оставил надпись, от руки:
«Чтобы остаться — нужно быть вписанным.»
Макс медленно поднял брови. Приоткрыл рот. Начал:
— Да еб…
Потом остановился.
И вдруг — улыбнулся.
— Ладно. Играем дальше.