Читать онлайн Сергей Патрушев - Виртуальный мир



Глава 1. Билет в один конец

Пиксели на мониторе слились в одну сплошную серую полосу. Алексей оторвал взгляд от экрана, помассировал переносицу и посмотрел на часы в углу операционной системы. Двадцать три сорок семь. Еще тринадцать минут до конца смены, но его рабочий день закончился примерно полтора часа назад, сразу после того как Тимлид утвердил последний коммит.

С тех пор он просто сидел. Смотрел в код чужого модуля, который ему предстояло рефакторить завтра утром. Код был написан так, словно автор пытался намеренно запутать будущих читателей, используя самые изощренные паттерны проектирования там, где хватило бы простого цикла. Алексей знал этот язык — корпоративный диалект отчаяния. Когда разработчик понимает, что проект безнадежен, но боится признаться менеджеру, он начинает писать «умный» код. Это создает иллюзию сложности, за которой удобно прятать архитектурные провалы.

За панорамным окном офиса Москва-Сити жила своей ночной жизнью. Далеко внизу ползли светящиеся гусеницы автомобильных фар по Третьему транспортному кольцу. Ветер гнал по эстакаде мелкую снежную крупу, подсвеченную ядовито-оранжевыми фонарями. Там было холодно, ветрено и грязно. Здесь, в стеклянном аквариуме двадцать второго этажа, работал идеальный климат-контроль, поддерживая температуру ровно в двадцать два градуса. Идеальная температура для медленного угасания нервных клеток.

Алексей потянулся, хрустнув суставами. Спина отозвалась глухой болью — восемь часов в одном положении не проходят даром даже для тридцатидвухлетнего организма. Он открыл мессенджер. Девять пропущенных сообщений от матери («Ты ел?», «Почему не отвечаешь?», «Отец волнуется»), одно предложение выпить пива от коллеги (отклонено без раздумий) и системное уведомление от почтового сервера.

Тема письма была пустой. Отправитель — no-reply@void.system.

Спам-фильтр почему-то пропустил его во входящие, хотя обычно отправлял подобные пустышки прямиком в корзину. Алексей навел курсор на кнопку удаления, но палец замер. Что-то в этой абсолютной пустоте темы письма цепляло сильнее, чем кричащие заголовки про скидки на курсы личностного роста. Он кликнул.

Внутри оказалось всего две строки текста, набранные моноширинным шрифтом:

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

Ниже действительно шел блок кода — длинная строка символов, похожая на хэш-сумму или ключ доступа к защищенному серверу. Текст отдавал дешевым киберпанком из девяностых. «Отказ невозможен». Алексей усмехнулся уголком рта. Очередная вирусная рассылка для уставших айтишников. Или социальный эксперимент отдела HR, решившего проверить лояльность сотрудников нестандартными методами.

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

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

Инстинкт заставил Алексея зажмуриться и вскинуть руки к лицу. Он ожидал жара, боли, запаха паленой плоти и пластика. Но вместо этого почувствовал падение. Не физическое падение тела с кресла — само кресло под ним растворилось. Гравитация просто перестала существовать. Его засосало в воронку визуального шума, закрутило, лишив точек опоры, а затем с размаху швырнуло спиной о твердую, влажную землю.

Удар выбил воздух из легких.

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

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

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

Алексей рискнул открыть глаза.

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

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

— Баг, — вслух сказал Алексей. Голос прозвучал глухо и неуверенно. — Графический баг окружения. Загрузка ассетов пошла по неверному пути. Я сейчас сниму шлем…

Шлема на голове не было. Как не было и самого игрового кресла, гарнитуры, проводов тактильной обратной связи. На нем были его домашние треники с растянутыми коленками, потертая футболка с логотипом какого-то древнего дистрибутива Linux и шерстяные носки, которые он носил, потому что из окна всегда дуло. Никакого нейроинтерфейса. Никаких перчаток. Только его собственное тело, которое вполне отчетливо ощущало прохладу вечернего воздуха и легкий зуд от укусов комаров на шее.

Он поднял руку и ущипнул себя за предплечье. Боль была острой, настоящей. Настоящей настолько, что выступили слезы.

Алексей медленно поднялся на ноги. Земля едва заметно шла ходуном — остаточный эффект пространственного перехода, решил его мозг, лихорадочно пытаясь найти рациональное объяснение. Он стоял на склоне холма, густо заросшего смешанным лесом. Внизу, в долине, куда спускалась извилистая тропинка из плоских речных камней, виднелись крыши домов. Деревянные, с загнутыми вверх краями карнизов, крытые темной черепицей. За крышами поднимались легкие струйки дыма, пахнущего жженым углем и готовящимся рисом.

— Япония, — констатировал Алексей, глядя на идеально сформированную крону дерева. — Хаконе? Киото? Нет, слишком первозданно для туристических мест. Локация-заглушка?

Его аналитический ум отказывался принимать реальность происходящего и немедленно включил единственную доступную защиту — профессиональную деформацию. Если это не сон, не кома и не смерть, значит, это программная среда. Закрытый бета-тест. Тот самый «Виртуальный мир» из письма.

«Отказ невозможен». Кажется, они не шутили.

Он достал из кармана смартфон. Пять процентов заряда. Индикатор сети показывал перечеркнутый кружок. Wi-Fi мертвый. GPS тоже. Смартфон превратился в дорогую камеру и калькулятор. Алексей сделал несколько фотографий пейзажа — нужно будет потом покадрово разобрать рендер травы и шейдеры освещения воды, если он выберется отсюда. Фотографии получились идеальными. Ни единого цифрового шума, ни одной ошибки сжатия. Травинки выглядели пугающе настоящими.

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

Тропинка из речного камня вела вниз. Алексей пошел по ней, стараясь ступать аккуратно. Каждый шаг отзывался непривычным эхом. В офисе его шаги поглощал ковролин, здесь же подошвы шерстяных носков тихо шаркали по камню, и этот звук казался оглушительно громким в симфонии цикад.

Чем ниже он спускался, тем теплее становился воздух. Запахи сгущались. К запаху леса добавился аромат жареного угря и цветущей сакуры. Хотя стояла ранняя весна — Алексей понял это по тому, как легко он дышит, несмотря на физическую нагрузку. В Москве в это время года снег только начинал чернеть и вонять реагентами. Здесь же природа находилась в той самой точке абсолютного пика цветения, которую японцы называют ханами.

Из-за поворота показался первый дом. Традиционный минка, построенный, судя по цвету древесины, лет сто назад. Стены из темного бруса, бумажные стены-сёдзи (некоторые раздвинуты, открывая вид на внутренний двор), соломенная крыша. Дом утопал в саду. И какой это был сад.

Алексей остановился, забыв, как дышать.

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

На веранде дома, подстелив колени пледом, сидела седая женщина в темно-синем кимоно. Она неторопливо помешивала длинной ложкой что-то в чугунном котелке, стоящем на маленькой переносной печке. Рядом с ней на деревянном столике остывала чашка с бледно-зеленым напитком. Женщина напевала себе под нос простую мелодию, совершенно не попадая в ноты, но делая это с таким спокойствием, что Алексею стало стыдно за свое присутствие.

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

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

Мир Алексея треснул по швам второй раз за последние пятнадцать минут. Программная среда дала критический сбой логики. NPC не могут говорить на родном языке игрока, если игра позиционируется как глобальная MMORPG. Тем более такие NPC не должны сидеть у прудов с агати в древней Японии.

— Вы… говорите по-русски? — выдавил он. — Говорю, — кивнула женщина. — Садись, горе луковое. Ноги промочил совсем, весь дрожишь. У меня суп почти готов, мисо с грибами мацутакэ. Укрепляет дух лучше всякого кофе.

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

— Меня зовут тетушка Каэдэ, — представилась женщина, половником разливая густой, пряно пахнущий суп по керамическим пиалам. — А ты ведь не из местных будешь. Лицо у тебя беспокойное. Городское. Токийский клерк? — Программист, — машинально ответил Алексей, принимая горячую пиалу двумя руками. — Из Москвы. — Далеконько занесло, — усмехнулась Каэдэ, протягивая ему деревянные палочки. — Хотя какая разница. Сюда многие попадают издалека. Место такое. Точка сборки.