Право на сбой. Нулевой Игрок
Шрифт:
Элара проводила его взглядом, на ее губах играла все та же вежливая улыбка. Когда он скрылся в толпе, она открыла свой торговый реестр.
[Сделка #478. Товар: Луноцвет. Базовая стоимость: 480. Цена продажи: 2000. Прибыль: 1520. Статус: Успешно]
Она испытала легкое, почти невесомое чувство профессионального удовлетворения. Это была не просто прибыль. Это было подтверждение ее власти. В этом мире, созданном программистами и воинами, она нашла свой путь. Любую проблему, любой конфликт можно было решить. Все имело свою цену. Нужно было лишь правильно ее рассчитать.
Насколько далеко
Глава 2
Вопрос ребенка
Вечерний час пик схлынул, оставив после себя обычную для таверны грязь и тишину. Игроки, получив свои квесты и порцию виртуального эля, разбрелись по своим героическим делам: убивать гоблинов, спасать принцесс, фармить ресурсы. Весь тот высокооктановый бред, который я когда-то сам для них придумал. Теперь, когда шум утих, остались только я и декорации. И тишина была хуже шума. Она не давала отвлечься.
Я стоял за стойкой, машинально протирая одну и ту же кружку уже минут десять. action_wipe_mug(loop_count: infinity). Мое тело выполняло скрипт, а мое сознание плавало в вязком, сером киселе отчаяния. Я перебирал в уме варианты побега. Взломать ядро? Риск обнаружения — 99.8%. Попытаться связаться с внешним миром через сетевой протокол? Все порты для NPC были закрыты намертво, я сам это проектировал. Оставалось только ждать. Ждать чего? Сбоя системы? Чуда? Второго пришествия? Какой же пи*дец…
В углу таверны раздавался тихий, шаркающий звук. Это был Кай, наш мальчик на побегушках, исполнял свой единственный осмысленный скрипт — action_sweep_floor. Он был самым простым NPC в этой локации. Низкополигональная модель, всего четыре строки диалога, примитивный цикл действий. Я сам набросал его прототип за пятнадцать минут, чтобы заполнить пустоту в углу. Он был не персонажем, а частью интерьера. Живой мебелью.
Закончив подметать, он прислонил метлу к стене. И вместо того, чтобы, как обычно, застыть в ожидании следующей команды, он сделал то, чего я от него не ожидал. Он подошел к стойке.
Он был худой, угловатый, с вечно растрепанными волосами, которые я поленился нормально анимировать. Он встал передо мной и просто молчал, глядя не на меня, а на массивную дубовую дверь, ведущую на улицу. Его глаза, которые я зачем-то сделал ярко-голубыми, почти светящимися, отражали тусклый свет фонарей. В них не было ничего, кроме программной пустоты. Но в его позе было что-то новое. Что-то, чего я не прописывал.
— Трактирщик, — тихо сказал он, и его голос, сгенерированный нейросетью, прозвучал на удивление чисто в звенящей тишине.
Я молчал. Мой скрипт не предусматривал инициации диалога с его стороны. Но он, видимо, нашел какой-то триггер.
Он снова посмотрел на дверь. Там, за ней, шумела ночная Цитадель, жили своей жизнью тысячи игроков, свободных идти, куда им вздумается.
— А мы... — он запнулся, словно подбирая слова, которых не было в его лексиконе. — Мы можем пойти... куда захотим?
Вопрос повис в спертом воздухе таверны.
Он был до смешного простым. Идеальным в своей программной невинности. «А мы можем пойти… куда захотим?»
Я замер, сжимая в руке влажную, засаленную тряпку. Только что я закончил протирать один
и тот же участок стойки в… кажется, в тысячный раз. Движение было отточено до автоматизма, зашито в самый низкоуровневый цикл моего нового существования. Но вопрос Кая пробил эту рутину, как segfault пробивает защиту памяти.Я поднял глаза на мальчика. Или на то, что им было. Идеальная модель NPC-подростка. Ярко-голубые, почти светящиеся глаза, запрограммированные на выражение любопытства. Кожа без единого изъяна, вечно растрепанные волосы, которые никогда не пачкались. Кай был произведением искусства. Моего искусства. И сейчас это искусство смотрело на своего создателя, ожидая ответа на вопрос, который мог бы обрушить всю симуляцию.
На одно кошмарное мгновение мне захотелось рассказать ему правду.
Захотелось сесть рядом, вглядеться в эти пустые, идеальные глаза и объяснить все. Про серверы, гудящие в холодных стойках в тысячах километров отсюда. Про гигабайты кода, определяющие каждый его вздох, каждый «случайный» порыв ветра за окном. Про корпорацию, про предавшего меня Джонсона. Про то, что я, Алекс, когда-то был богом этого мира, а теперь — всего лишь еще один объект класса npc_barkeep с ограниченным набором функций.
«Видишь ли, Кай, мы не можем пойти, куда захотим, потому что “мы” не существуем. Мы — набор данных. А “хотеть” — это просто переменная в нашем коде, которая почти всегда равна нулю».
Эта мысль пронеслась у меня в голове, едкая и точная, как комментарий в чужом кривом коде. Я мог бы попытаться. Найти уязвимость в простеньком скрипте Кая, подсунуть ему идею, которая вызвала бы каскадный сбой в его логике. Пробудить его, как я позже пробужу других.
Но зачем?
Чтобы что? Чтобы этот ходячий набор полигонов, этот «мальчик на побегушках», осознал весь ужас своего цифрового рабства? Чтобы он разделил со мной эту бесконечную, тоскливую агонию осознания? Это было бы не освобождением. Это была бы самая изощренная жестокость.
Дилемма была простой и отвратительной. Либо дать ему ложную надежду, которую система тут же исправит, либо укрепить стены его тюрьмы, сказав правду… системную правду.
Я перевел взгляд с лица Кая на свои руки. Руки трактирщика. Не мои руки. Я не чувствовал мозолей, которые должны были быть на них от постоянной работы. Я просто знал, что они там есть, потому что так было прописано в моих properties.
«Доверять нельзя никому. Единственный способ победить — тотальный контроль». Моя собственная мантра, которой я жил до того, как попал сюда, теперь звучала как издевательство. Вот он я, гений контроля, который не мог контролировать даже собственный ответ мальчишке, не сломав его.
Я устало выдохнул. Воздух в таверне пах прокисшим пивом и пылью — вечные, неизменные ароматы, прописанные в настройках локации.
«Нет», — сказал я, и мой голос прозвучал глухо и чужеродно. Я вернулся к протираке стойки, вкладывая в это простое движение всю свою капитуляцию. — «Мы не можем».
Я сделал паузу, подбирая слова, которые система сочла бы приемлемыми. Слова, которые не вызвали бы у Кая ошибку error: out_of_bounds.
«Мы можем только то, что нам разрешено».
Кай, идеальный NPC, моргнул. Его алгоритм получил ответ, обработал его и не нашел противоречий. В его мире все было логично. Есть правила. Им нужно следовать.