02:47 ночи. Офис пустой. Кофе — третья кружка, холодная. На экране — восемьсот строк чужого кода, и где-то в этих восьмистах строках прячется то, из-за чего игра вылетала каждый раз на одной и той же сцене.
Я люблю такие моменты. Тихо. Никто не стоит над душой. Только я и баг.
— Ну, — сказала я монитору, — где ты?
Монитор, как обычно, молчал. Зато код — отвечал. Надо только уметь читать.
Майя Соколова, двадцать два года, бета-тестер. Официально — младший специалист по контролю качества в студии «Сакура Дигитал». Неофициально — человек, которого зовут только тогда, когда что-то сломалось настолько, что остальные сдались. Я не обижаюсь. Мне нравится сломанное.
Игра называлась «Ёмигаэри» — японское фэнтези про мир духов, самураев и бесконечно падающие лепестки сакуры. Красиво по скриншотам, нестабильно по факту. Моя задача: найти все нестабильности до релиза через три дня.
Я нашла двадцать семь. Двадцать восьмой нашёл меня сам.
Он появился в строке 441 — кусок кода, которого там не должно было быть. Не просто незнакомый синтаксис. Незнакомый алфавит. Символы, которые не существовали ни в одной кодировке, которую я знала, — а я знала много. Они складывались в петлю, уходящую сами в себя, бесконечно и как будто живую.
Я потёрла глаза. Посмотрела снова. Петля никуда не делась.
— Это либо гениально, либо кто-то в команде нуждается в отпуске, — пробормотала я и начала печатать команду на удаление.
Нажала Enter.
Экран вспыхнул белым — таким ярким, что я зажмурилась. Почувствовала, как кресло уходит из-под меня. Не метафорически — буквально. Гравитация просто решила взять выходной.
Падение было коротким и совершенно беззвучным.
Потом — удар о что-то мягкое. Трава? Нет, трава не бывает такой холодной. Земля. Я лежала на земле, и надо мной было небо — ночное, тёмно-лиловое, без единого облака, усыпанное звёздами так густо, как будто кто-то просыпал соль.
Я открыла глаза полностью.
Берег реки. Тёмная вода, почти чёрная, течёт медленно и беззвучно. Деревья по берегам — сакура, и она цветёт, хотя за окном офиса был октябрь. Лепестки светятся — не отражают свет, а именно светятся, тихим розовато-белым. Пахнет чем-то сладким и немного холодным.
*Красиво*, отметила одна часть моего мозга.
*Это явно не офис*, отметила другая, более практичная.
Я медленно поднялась. Проверила себя по стандартному протоколу: руки — целые, ноги — целые, телефон в кармане — есть, разряжен в ноль, бесполезен, но тактильно успокаивает. Ноутбука не было. Кофе тоже.
— Отлично, — сказала я вслух. — Задокументировать не получится.
За спиной раздался тихий, чёткий звук — металл о металл. Звук, который я знала по игровым файлам: обнажаемый меч.
— Ты нарушила Грань.
Голос был низким. Не угрожающим намеренно — просто привыкшим к тому, что его слов достаточно. Холодным, как вода в этой реке.
— Это карается смертью.
Я медленно обернулась.
Мужчина стоял в трёх шагах. Высокий, тёмное кимоно с серебряным орнаментом — вьющийся дым или ветер, не разобрать. Чёрные волосы, часть забрана назад, часть падает на лицо. Глаза — очень светлые на контрасте, почти серебряные. Красивый. Невозможно красивый — той точной, острой красотой, которая не располагает к себе, а предупреждает.
В правой руке — меч. Не поднятый, но и не убранный.
Я посмотрела на него. На меч. Снова на него.
— Подождите, — сказала я.
Он ждал. Видимо, «подождите» здесь тоже работало.
Я достала телефон. Нажала кнопку питания — ноль реакции, как и ожидалось. Убрала обратно. Привычка искать интерфейс в любой непонятной ситуации — профессиональная деформация.
— Прежде чем карать, — произнесла я как можно спокойнее, — объясните механику. Что такое Грань? Какие конкретно правила я нарушила? И есть ли апелляционный процесс?
Пауза.
Длинная пауза.
Мужчина с мечом смотрел на меня так, как смотрят на говорящий предмет мебели — с тем специфическим выражением, когда мозг отказывается сортировать происходящее по известным категориям.
— Ты не боишься, — произнёс он наконец. Не вопрос — констатация.
— Боюсь, — честно ответила я. — Но это не отменяет вопросов. Лучше понять, что происходит, чем паниковать вслепую.
Ещё одна пауза. Меч медленно опустился. Не убран, но опущен — это я решила считать прогрессом.
— Ты живая, — сказал он, будто проверяя.
— Крайне.
— Из другого мира.
— По всей видимости.
— Это невозможно.
— И всё же, — я развела руками, — вот я.
Он убрал меч. Медленно, без лишних движений — человек, у которого каждое движение отработано до автоматизма. Повернулся к реке. Постоял немного.
— Меня зовут Рэн Куросава, — произнёс он наконец. — Хранитель Грани. Страж границы между миром живых и Ёмигаэри — миром духов.
— Майя Соколова. Бета-тестер. Я... кажется, нашла у вас баг.
Он обернулся. В его взгляде было что-то похожее на то, что бывает у людей, когда они встречают нечто настолько неожиданное, что злиться не получается — только смотреть.
— Ты назвала нарушение Грани багом.
— Технически, это неконтролируемый переход между состояниями системы, вызванный неожиданным пользовательским вводом. Да, баг.
— Ёмигаэри — не система.
— Любой мир — система. Просто некоторые лучше задокументированы.
Рэн смотрел на меня долгую секунду. Потом отвернулся снова и сказал в сторону реки:
— Убить тебя нельзя. Ты живая, а я Хранитель — убийство живого нарушит баланс. — Голос был ровным, как будто он зачитывал внутренний регламент. — Отправить тебя назад немедленно тоже нельзя. Прореха, через которую ты прошла, закрылась.
— Как долго она будет закрыта?
— Неизвестно.
— То есть я застряла.
— Ты застряла.
Я кивнула. Обработала информацию. Посмотрела на светящиеся лепестки над рекой.
— Хорошо, — сказала я. — Тогда нам нужен план.
— Нам? — В его голосе было что-то острое.
— Вам нужно от меня избавиться. Мне нужно вернуться домой. Цели совпадают. Это называется временный союз.
— Это называется моя проблема, которую я решу сам.
— Вы не знаете, откуда я пришла. Я знаю. Это делает меня полезной.
Он повернулся. Посмотрел на меня внимательно — первый раз по-настоящему внимательно, не как на угрозу и не как на досадное недоразумение, а как на задачу.
— Ты будешь делать, что я скажу, — произнёс он медленно.
— В разумных пределах и при наличии объяснений.
— Это не переговоры.
— Всё на свете — переговоры.
Ночь была тихой. Лепестки падали в воду беззвучно. Где-то далеко что-то мигнуло — тихий синий огонёк, пропавший раньше, чем я успела на него сфокусироваться.
Рэн что-то почувствовал — я видела, как изменилась линия его плеч.
— Не двигайся, — сказал он тихо.
Я не двигалась.
Из темноты вышел дух. Я знала, что это дух — не потому что он был полупрозрачным или страшным. Просто он был не совсем здесь, как изображение с чуть сбитой резкостью. Молодой мужчина в старинном кимоно, растерянный, как человек, проснувшийся не там, где заснул.
Он посмотрел на меня. Лицо его изменилось — изумление, почти радость.
— Ты слышишь, — произнёс он. Не спросил — сказал, как что-то давно известное.
Я открыла рот. Закрыла. Посмотрела на Рэна.
Рэн смотрел на духа. Потом на меня. В его взгляде было выражение человека, которому только что сообщили, что к существующим проблемам добавилась ещё одна — неожиданная и, по всей видимости, надолго.