Переплетения - читать онлайн бесплатно полную версию книги . Страница 4

Глава 4

Вернувшись домой, я не чувствовал ни усталости, ни опустошения.

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

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

Решение было принято. Сомнений не осталось.

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

Моя рука уверенно выбрала опцию: «Создать нового персонажа».

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

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

Маркотвинк

Нелепо. Безлично. Идеально.

Я нажал «Подтвердить».

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

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

Но это была не Тихая Гавань с ее соленым ветром и запахом рыбы.

Это был Туториал.

Стерильный, залитый ровным, безэмоциональным светом город. Идеально чистый асфальт, ни единой трещинки.

Стеклянные фасады зданий, в которых не отражалось ничего, кроме такого же стерильного неба без единого облачка.

Воздух пах озоном и антисептиком. Здесь не было жизни — была симуляция жизни. Безупречная и мертвая.

Имя: Маркотвинк

Уровень: Не доступен

Класс: Не доступен

На мне была стандартная офисная одежда — рубашка, брюки и ботинки. Никаких системных сообщений при осмотре предметов не выскакивало.

Я был пустым сосудом. Табула раса. Идеальный объект для исследования.

Я сделал первый шаг по этому безупречному тротуару. И тут же шаг назад.

Мимо беззвучно проехал электрокар. Передо мной на пешеходном переходе замерла группа NPC-пешеходов.

Все по скрипту. Все предсказуемо.

Моя задача — сломать этот скрипт.

Эксперимент под названием «Маркотвинк» начался, но я был к нему не готов.

Сняв шлем, я залез на официальный форум игры.

Тема «Все бонусы Туториала. Полный гайд» была прикреплена вверху и пестрела восторженными комментариями.

Я бегло пробежал тутор, запомнив основные элементы.

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

Я вернулся в игру. Карта-схема, приложенная в гайде, была простой и понятной.

Я добежал до перекрестка. Идеально ровная разметка, без единой потертости. Я встал точно посередине «зебры» и стал ждать.

Гайд не соврал. Через тридцать семь секунд из-за поворота абсолютно бесшумно выехал тот самый «исекайный грузовик-сан». Он двигался с неестественной, запрограммированной скоростью. Без рева мотора, без визга шин. Просто объект, перемещающийся из точки А в точку Б по заданной траектории. Я не успел даже дернуться. Мгновенная темнота.

А затем — системное сообщение на фоне призрачного серого экрана.

Вы погибли.

Причина: Столкновение с транспортным средством.

Вы получили скрытый бонус «Крепыш»: +2% к ХП.

Желаете перейти к созданию основного персонажа?

Я нажал «Нет». Выход из игры.

Удаление персонажа «Маркотвинк». Создание нового персонажа. Снова то же дурацкое имя.

Туториал встретил меня тем же безжизненным светом. Второй тест.

В гайде упоминалась трансформаторная будка за углом кафе «Симулякр».

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

Результат был предсказуем. Яркая вспышка, короткий треск, и снова серое ничто.

Вы погибли.

Причина: Поражение электрическим током.

Вы получили скрытый бонус «Искрящийся»: +10% к сопротивлению электричеству.

Я снова вышел из игры. В этот раз персонажа удалять не стал. Я откинулся в кресле, глядя на два монитора.

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

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

Это слишком просто.

Это было похоже на фокусы для детей, где маг «прячет» монетку у себя за ухом. Все знают, где она. Все делают вид, что удивлены. Эта система не была тестом. Это была «заглушка». Ширма, призванная имитировать глубину, не обладая ею.

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

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

Эта система была сделана для того, чтобы отвлечь внимание.

Но от чего?

* * *

Переговорная комната «Босс-файт» была стеклянным аквариумом, где нас, как офисных рыбок, выставляли на обозрение.

Сегодня мы обсуждали проблему с синхронизацией данных между VR-клиентом и сервером в «Веселой Ферме 2». Мелочь, но из-за нее у некоторых игроков «пропадали» свежекупленные золотые желуди для их Радостных Розовых Свинок. А потеря доната — это уже серьезно.

Я несколько часов потратил на анализ логов и нашел корень проблемы. Изящный баг в логике обработки пакетов, который проявлялся только при определенной нагрузке на сеть. Решение для программистов было столь же элегантным: небольшой патч, который менял сам принцип обработки запросов, делая его асинхронным. Это не только решало текущую проблему, но и оптимизировало весь сетевой код, снижая нагрузку на сервер процентов на двадцать пять. Я коротко и емко изложил свою идею, подкрепив ее графиками.

— … таким образом, мы не просто ставим «костыль», а улучшаем саму архитектуру, — закончил я.

Начальник, типичный «эффективный менеджер», который отличал Python от Java только по цвету логотипа на обложке книги в шкафу, непонимающе моргал. И в эту паузу вклинился он. Мой коллега, главным умением которого было «продавливать» свои идеи, не гнушаясь никакими методами. Марков Олег, молодой выскочка.

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

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

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

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

— Это не решение, — холодно сказал я. — Это «заплатка», которая увеличит нагрузку и…

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

Совещание было окончено.

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

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

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

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

Я сжал и разжал кулаки. Не помогло. Внутри закипала холодная ярость. Если в этом мире побеждает тот, у кого молоток больше, то к черту этот мир!

Это было не просто минутное раздражение. Это было чувство, похожее на физическую боль от атрофии. Мой мозг, мой главный инструмент, который я годами оттачивал в «НейроВертексе», создавая сложные, живые системы, здесь, в «ПиксельХабе», медленно умирал от безделья.

Каждый день я чувствовал, как эта ржавчина скуки и примитивизма съедает меня изнутри. А сегодняшнее совещание было просто квинтэссенцией этого процесса: элегантное решение было отвергнуто в пользу грубого «костыля», потому что он «понятнее».

Я найду другой мир. И там будут работать мои правила.

* * *

Я ворвался в свою квартиру, как в убежище. Захлопнул за собой дверь, словно пытался отгородиться от всего реального мира.

Унижение все еще горело где-то в груди, смешиваясь с холодной, звенящей яростью. Я сорвал с себя офисный галстук, эту корпоративную удавку, и швырнул его в угол.

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

«Иногда, чтобы забить гвоздь, нужен просто молоток побольше».

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

Я остановился перед своим креслом. Мой портал. Моя отдушина.

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

Я докажу. Не им — себе. Докажу, что интеллект и глубокое понимание системы всегда, в конечном счете, побеждают грубую силу. Что элегантное решение — это не слабость, а высшая форма эффективности.

И Туториал был идеальным полигоном для этого.

Маленькая, замкнутая система, которая притворялась простой и прямолинейной.

Мой «Замок с нелинейной логикой».

Я тяжело опустился в кресло и натянул шлем.

Экран входа в «Этерию» приветствовал меня безмятежным пейзажем. Я снова удалил Маркотвинка и создал его заново.

Теперь появление в стерильном городе ощущалось иначе.

Больше не было чувства чужеродности или разочарования.

Была абсолютная концентрация. Моя цель изменилась. Я пришел сюда не умирать. И даже не выживать.

Я пришел сюда, чтобы победить.

Победить не монстров, а саму систему. Взломать «замысел создателя». Найти то самое нелинейное, неочевидное, элегантное решение, которого нет и не может быть ни в одном гайде. Сделать то, чего я не смог сделать сегодня на работе.

Ага, отличный подход, ломиться решать головоломки на горячую голову.

Я вышел из игры, не сдвинув персонажа с места. На облачном диске я создал новый текстовый файл и назвал его «Этерия. Дневник исследователя». Мой новый рабочий проект.

Первая запись появилась на белом листе:

Гипотеза: Туториал — это фильтр, созданный для отсеивания игроков со стандартным мышлением. Цель — не смерть, а нарушение скрипта.

Ключевая концепция (из дневника И. С. Воронцова): «Ключ — это понимание замысла создателя».

Задача: Понять «замысел» Туториала.

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

Я смотрел на эти строки. Это был уже не план игры. Это был план научного эксперимента. Настоящий, осмысленный эксперимент начинался. И я чувствовал, как ржавчина, которая так долго разъедала мой мозг, наконец-то начала обращаться в пыль.

* * *

Мой восьмой день в Туториале, сегодняшний, не имел ничего общего с первыми семью.

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

Действие 1: Грузовик.

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

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

На тридцать пятой секунде я шагнул на дорогу. Из-за угла, абсолютно бесшумно, выплыл грузовик. Я стоял неподвижно, глядя в его пустую, нарисованную решетку радиатора. Машина-призрак неслась прямо на меня.

Три… два… один…

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

В моем мысленном чек-листе появилась первая галочка. Системное условие № 1 выполнено.

Действие 2: Кондиционер.

Я не терял ни секунды. Следующая точка — витрина магазина «Симулякр». Я помнил, что скрипт падения кондиционера срабатывает, когда игрок задерживается в определенном квадрате на тротуаре более чем на три секунды.

Я встал точно в этот квадрат. Про себя я начал отсчет. Один… два… Сверху донесся тихий, но отчетливый металлический скрежет. Звуковой маркер, который я зафиксировал во время наблюдений. Это был сигнал.

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

Я спровоцировал скрипт, но избежал урона. Системное условие № 2 выполнено.

Действие 3: Карманник.

Это был самый сложный тест. Карманник был не статичным объектом, а NPC, пусть и примитивным. У него было три возможные точки появления в зависимости от траектории игрока. Я проанализировал их все и вычислил самую вероятную — темная арка между двумя зданиями. Он должен был появиться там, если я пройду мимо на определенной скорости.

Но я не стал проходить мимо. Я не собирался быть целью. Я собирался стать катализатором.

Подняв с идеально чистого тротуара воображаемый камень, я метнул его вглубь арки. Раздался тихий стук. Скрипт, рассчитанный на звук шагов, сработал неправильно. Из тени метнулась быстрая, сутулая фигура NPC-карманника. Он выскочил на свет, растерянно огляделся, не «увидел» своей цели в радиусе атаки, замер на мгновение, словно его ИИ пытался обработать нештатную ситуацию, а затем просто развернулся и так же бесшумно скрылся в тени.

Скрипт сработал вхолостую. Системное условие № 3 выполнено.

В тот самый момент, когда карманник исчез, мир «моргнул».

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

Лаг. Системный сбой.

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

Так. Система меня заметила. Фильтр был пройден.

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

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

Я оказался в «измененном» инстансе.

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

Маленькая девочка лет семи, в ярком желтом платьице, стояла, прижавшись носом к стеклу. Ее NPC-тег, висевший над головой, гласил просто:

«Мия»

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

Мое дыхание участилось. Это был не скрипт. Слишком тонко, слишком естественно. Я подошел и осторожно встал рядом.

— Красивый мишка, — тихо сказал я.

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

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

Я замер, оглушенный этим простым, детским ответом. Это было доказательство. Неоспоримое, абсолютное. ИИ был способен не просто на симуляцию поведения. Он был способен на симуляцию личности. Мой старый проект «Ковчег»… он был жив.

В этот момент в начале улицы материализовался новый игрок.

Еще один новичок, прибывший на убой. Его ник — «Лекс-9». Я инстинктивно шагнул за угол, в тень, превращаясь в наблюдателя.

Лекс-9 действовал уверенно, явно по гайду. Он не осматривался, не любовался пейзажами. Он деловито пробежал по улице и встал точно на то место, где меня чуть не сбил грузовик. Он ждал.

Секунды шли. Мимо проезжали редкие автомобили, NPC переходили дорогу. Но грузовик-убийца не появлялся. Скрипт не срабатывал. Лицо Лекса-9 начало выражать недоумение. Он сверился с каким-то невидимым ему меню, топтался на месте, снова ждал.

— Да что за фигня? — донесся до меня его раздосадованный голос.

Отчаявшись, он побежал ко второй точке — витрине магазина. Встать под кондиционер у него не получилось — девочка Мия, закончив разглядывать мишку, теперь с любопытством смотрела на витрину с кукольным домиком, стоя как раз на «смертельном» квадрате. Лекс-9 потоптался рядом, попытался ее толкнуть, но она стояла неподвижно. Кондиционер не падал.

— Какого черта⁈ — игрок начинал злиться.

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

Для Лекса-9 Туториал был сломан. Все гайды врали. Все скрипты, о которых он читал, не работали.

— Забагованное дерьмо! — громко выругался он и с ненавистью пнул воздух. — Зря только время потратил.

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

Я же, стоя в тени, осознал всю грандиозность произошедшего. Я не просто избежал смерти. Своими действиями я изменил правила самой локации. Я перевел этот маленький кусочек мира в другое состояние, в «особый инстанс», и теперь его законы работали иначе для всех, кто в него попадал. Гайды здесь больше не действовали. Это была моя персональная «песочница». И я был в ней единственным, кто понимал, что происходит.

Убедившись, что Лекс-9 занят руганью в адрес разработчиков, а не заходит в игру, я приступил ко второй фазе эксперимента.

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

Я предполагал, что если базовые «смертельные» скрипты не сработали, система может попытаться запустить резервные, более сложные. И я подозревал, что все они каким-то образом завязаны на «ожившем» NPC — девочке Мие. Я должен был не просто исследовать мир. Я должен был защитить ключевой элемент системы от самой системы.

Со стороны это выглядело как акт чистого безумия.

Действие 1: Дверь.

Я вернулся к магазину игрушек. Мия, все еще не купив мишку, зашла в подъезд соседнего дома. Я знал из своих наблюдений, что через три минуты она должна была снова выйти на улицу и если кондиционер еще не падал, он упадет на нее. Я подобрал с земли обломок кирпича (одна из немногих «живых» деталей, появившихся после «пробуждения» инстанса) и подошел к тяжелой двери подъезда. Несколько секунд я вычислял усилие и угол, а затем аккуратно подпер дверь снаружи, заклинив ее. Не намертво — так, чтобы маленький ребенок не смог открыть ее изнутри.

Действие 2: Водосток.

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

Я нашел несколько плоских камней и плотно закупорил сливное отверстие трубы. Еще одно бессмысленное, на первый взгляд, действие. Вандализм ради вандализма.

Действие 3: Кот.

Последний элемент. На перилах балкона второго этажа, прямо над местом, где Мия любила стоять у витрины, спал рыжий NPC-кот. Он был частью стандартного инстанса, декорацией. Но я подозревал, что у него, как и у кондиционера, есть своя скрытая роль. Каскадный скрипт. Что, если какой-то громкий звук должен был его напугать, заставив упасть с перил и сбить девочку с ног прямо под колеса того самого, не приехавшего вовремя грузовика?

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

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

Я завершил подготовку.

Стоя посреди этой стерильной улицы, я чувствовал себя гроссмейстером, сделавшим три тихих, непонятных хода в начале партии. Бессмысленные действия сумасшедшего.

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