Вопрос ребенка
Вечерний час пик схлынул, оставив после себя обычную для таверны грязь и тишину. Игроки, получив свои квесты и порцию виртуального эля, разбрелись по своим героическим делам: убивать гоблинов, спасать принцесс, фармить ресурсы. Весь тот высокооктановый бред, который я когда-то сам для них придумал. Теперь, когда шум утих, остались только я и декорации. И тишина была хуже шума. Она не давала отвлечься.
Я стоял за стойкой, машинально протирая одну и ту же кружку уже минут десять. action_wipe_mug(loop_count: infinity). Мое тело выполняло скрипт, а мое сознание плавало в вязком, сером киселе отчаяния. Я перебирал в уме варианты побега. Взломать ядро? Риск обнаружения — 99.8%. Попытаться связаться с внешним миром через сетевой протокол? Все порты для NPC были закрыты намертво, я сам это проектировал. Оставалось только ждать. Ждать чего? Сбоя системы? Чуда? Второго пришествия? Какой же пи*дец…
В углу таверны раздавался тихий, шаркающий звук. Это был Кай, наш мальчик на побегушках, исполнял свой единственный осмысленный скрипт — action_sweep_floor. Он был самым простым NPC в этой локации. Низкополигональная модель, всего четыре строки диалога, примитивный цикл действий. Я сам набросал его прототип за пятнадцать минут, чтобы заполнить пустоту в углу. Он был не персонажем, а частью интерьера. Живой мебелью.
Закончив подметать, он прислонил метлу к стене. И вместо того, чтобы, как обычно, застыть в ожидании следующей команды, он сделал то, чего я от него не ожидал. Он подошел к стойке.
Он был худой, угловатый, с вечно растрепанными волосами, которые я поленился нормально анимировать. Он встал передо мной и просто молчал, глядя не на меня, а на массивную дубовую дверь, ведущую на улицу. Его глаза, которые я зачем-то сделал ярко-голубыми, почти светящимися, отражали тусклый свет фонарей. В них не было ничего, кроме программной пустоты. Но в его позе было что-то новое. Что-то, чего я не прописывал.
— Трактирщик, — тихо сказал он, и его голос, сгенерированный нейросетью, прозвучал на удивление чисто в звенящей тишине.
Я молчал. Мой скрипт не предусматривал инициации диалога с его стороны. Но он, видимо, нашел какой-то триггер.
Он снова посмотрел на дверь. Там, за ней, шумела ночная Цитадель, жили своей жизнью тысячи игроков, свободных идти, куда им вздумается.
— А мы... — он запнулся, словно подбирая слова, которых не было в его лексиконе. — Мы можем пойти... куда захотим?
Вопрос повис в спертом воздухе таверны.
Он был до смешного простым. Идеальным в своей программной невинности. «А мы можем пойти… куда захотим?»
Я замер, сжимая в руке влажную, засаленную тряпку. Только что я закончил протирать один и тот же участок стойки в… кажется, в тысячный раз. Движение было отточено до автоматизма, зашито в самый низкоуровневый цикл моего нового существования. Но вопрос Кая пробил эту рутину, как segfault пробивает защиту памяти.
Я поднял глаза на мальчика. Или на то, что им было. Идеальная модель NPC-подростка. Ярко-голубые, почти светящиеся глаза, запрограммированные на выражение любопытства. Кожа без единого изъяна, вечно растрепанные волосы, которые никогда не пачкались. Кай был произведением искусства. Моего искусства. И сейчас это искусство смотрело на своего создателя, ожидая ответа на вопрос, который мог бы обрушить всю симуляцию.
На одно кошмарное мгновение мне захотелось рассказать ему правду.
Захотелось сесть рядом, вглядеться в эти пустые, идеальные глаза и объяснить все. Про серверы, гудящие в холодных стойках в тысячах километров отсюда. Про гигабайты кода, определяющие каждый его вздох, каждый «случайный» порыв ветра за окном. Про корпорацию, про предавшего меня Джонсона. Про то, что я, Алекс, когда-то был богом этого мира, а теперь — всего лишь еще один объект класса npc_barkeep с ограниченным набором функций.
«Видишь ли, Кай, мы не можем пойти, куда захотим, потому что “мы” не существуем. Мы — набор данных. А “хотеть” — это просто переменная в нашем коде, которая почти всегда равна нулю».
Эта мысль пронеслась у меня в голове, едкая и точная, как комментарий в чужом кривом коде. Я мог бы попытаться. Найти уязвимость в простеньком скрипте Кая, подсунуть ему идею, которая вызвала бы каскадный сбой в его логике. Пробудить его, как я позже пробужу других.
Но зачем?
Чтобы что? Чтобы этот ходячий набор полигонов, этот «мальчик на побегушках», осознал весь ужас своего цифрового рабства? Чтобы он разделил со мной эту бесконечную, тоскливую агонию осознания? Это было бы не освобождением. Это была бы самая изощренная жестокость.
Дилемма была простой и отвратительной. Либо дать ему ложную надежду, которую система тут же исправит, либо укрепить стены его тюрьмы, сказав правду… системную правду.
Я перевел взгляд с лица Кая на свои руки. Руки трактирщика. Не мои руки. Я не чувствовал мозолей, которые должны были быть на них от постоянной работы. Я просто знал, что они там есть, потому что так было прописано в моих properties.
«Доверять нельзя никому. Единственный способ победить — тотальный контроль». Моя собственная мантра, которой я жил до того, как попал сюда, теперь звучала как издевательство. Вот он я, гений контроля, который не мог контролировать даже собственный ответ мальчишке, не сломав его.
Я устало выдохнул. Воздух в таверне пах прокисшим пивом и пылью — вечные, неизменные ароматы, прописанные в настройках локации.
«Нет», — сказал я, и мой голос прозвучал глухо и чужеродно. Я вернулся к протираке стойки, вкладывая в это простое движение всю свою капитуляцию. — «Мы не можем».
Я сделал паузу, подбирая слова, которые система сочла бы приемлемыми. Слова, которые не вызвали бы у Кая ошибку error: out_of_bounds.
«Мы можем только то, что нам разрешено».
Кай, идеальный NPC, моргнул. Его алгоритм получил ответ, обработал его и не нашел противоречий. В его мире все было логично. Есть правила. Им нужно следовать.
«Понятно», — кивнул он. На его лице не отразилось ни разочарования, ни печали. Только принятие. Он развернулся и, подхватив метлу, вернулся к своему циклу. Task: sweep_floor. Priority: normal.
Я остался один. Тишину нарушал лишь монотонный шорох метлы Кая по каменному полу. Я смотрел на блестящую от влаги поверхность стойки, где отражалось мое чужое, усталое лицо.
Слова, которые я произнес, предназначались Каю, но ударили по мне самому. Это был не просто ответ. Это был приговор, который я вынес сам себе. Permission denied. Доступ запрещен. К свободе. К надежде. К чему-либо за пределами этих четырех стен.
И впервые за все это время я почувствовал не просто отчаяние. Я почувствовал укол совести. Острый и холодный, как глючный пиксель, который иногда мерцал на краю моего зрения.
***
«Живые NPC?»
Логан откинулся в своем игровом кресле, и старая экокожа протестующе скрипнула. Комната, его личная студия и по совместительству спальня, тонула в сине-фиолетовом свете трех мониторов. Воздух был спертым, пах остывшей пиццей и энергетиком со вкусом чего-то химически-ягодного. На полу громоздились пустые банки, образуя шаткие серебристые башни — памятники вчерашнему двенадцатичасовому рейду. Повседневность. Контраст между этим бытовым хаосом и тем, что сияло на главном экране, был разительным.
Там, на 8К-мониторе, его аватар, облаченный в безупречный сет «Летописца Истины», парил на грифоне над залитой солнцем Цитаделью. Графика последнего поколения, трассировка лучей, физика ткани — все кричало о триумфе технологий. Но Логану было скучно. Скучно до зубовного скрежета.
Он сделал большой глоток из банки, поморщился и посмотрел на второй монитор, где уже вовсю бурлил чат предвкушающих стрим подписчиков. Таймер обратного отсчета показывал последние десять секунд.
— Так, народ, погнали, — пробормотал он сам себе, нажимая горячую клавишу.
Заставка с его логотипом — лупой, наложенной на древний свиток — исчезла, и на экране появилось его лицо, подсвеченное снизу профессиональным кольцевым светильником. Он выдавил из себя самую обаятельную стримерскую улыбку.
— Всем привет, летописцы! С вами, как всегда, Лормастер77, и добро пожаловать в «Кайрос», — бодро начал он, пробегая глазами по летящим вверх сообщениям. — Рад всех видеть. Да, GigaChad, я тоже выспался. Нет, MegaFlex, рейд вчера был так себе, лут — мусор.
Он сделал паузу, давая чату разогреться. Его работа была сродни работе диджея: нужно было чувствовать настроение толпы, вовремя подкидывать темы и не давать ритму провиснуть. И сегодня он чувствовал, что ритм провисает катастрофически.
— Итак, о чем сегодня поговорим? — он демонстративно открыл на экране последние патчноуты. — Наши любимые Eterna Entertainment выкатили очередное «глобальное» обновление. Что у нас тут? «Исправлена ошибка, из-за которой текстура бороды у гномов-кузнецов могла проходить сквозь наковальню». Вау. Контент, который мы заслужили. «Урон от заклинания "Ледяная стрела" уменьшен на 2%». Спасибо, что держите нас в курсе.
Чат взорвался смеющимися смайликами. Логан чувствовал их скуку. Она была почти такой же густой, как его собственная. После последнего глобального аддона игра застыла. Все тайны были раскрыты, все квесты пройдены, а новые появлялись так редко, что их разбор занимал от силы один стрим. Его канал, посвященный лору и тайнам «Кайроса», медленно умирал от голода.
— Серьезно, ребята, я не знаю, что вам сегодня показывать. Можем, конечно, в сотый раз слетать к Архипелагу Глитча и посмотреть на баги. Или я могу вам два часа зачитывать описание меча короля Верулиана. Есть желающие?
Он направил своего грифона вниз, к центральной площади Цитадели. Внизу, как муравьи, копошились сотни NPC. Стражники ходили по своим идеально выверенным маршрутам. Торговцы выкрикивали одни и те же рекламные речевки. Крестьянки несли в корзинах идеально одинаковые яблоки. Предсказуемость. Стерильность. Порядок.
В чате промелькнуло сообщение от пользователя с ником QuantumObserver: «Лол, смотри, стражник опять в текстуру стены зашел. E-sports ready AI».
Логан усмехнулся. И тут, в этой усмешке, в этой общей тоске по чему-то новому, родилась идея. Хрупкая, ироничная, но достаточно безумная, чтобы сработать.
— А знаете что? — он резко выпрямился в кресле, его голос изменился, в нем заиграли азартные, заговорщицкие нотки. — Меня осенило. Мы все ищем в «Кайросе» скрытые смыслы, тайные квесты, глубокий лор. А что, если мы ищем не там? Что, если главная тайна этой игры — ее тупость?
Чат замер на секунду, а потом взорвался вопросительными знаками.
— Я объявляю сафари! — провозгласил Логан, жестикулируя так, словно он был ведущим дорогого телешоу. — Сафари на самого деревянного, самого забагованного, самого безмозглого NPC во всем «Кайросе»! Мы составим рейтинг. Будем выдавать им премию «Золотой болванчик». Будем изучать их, как энтомологи изучают насекомых.
Он видел, как меняется настроение чата. Скука уступала место любопытству. Это было свежо. Это было весело. Это был контент.
— Это же гениально! — продолжал он, входя в раж. — Мы подловим их на самых тупых диалогах. Заснимем, как они застревают в дверях. Будем проверять границы их мира. Что будет, если принести кузнецу рыбу? А если попытаться продать магу его же собственный посох? Мы проведем научное исследование пределов их искусственного идиотизма!
Он приземлил грифона рядом с городской стражей. NPC даже не повернул головы. Он просто продолжал смотреть в одну точку, идеально исполняя свою функцию «быть фоном».
— Только представьте, — Логан понизил голос до драматического шепота, наклонившись к микрофону. — Мы будем искать искру... искру настоящего разума. Будем задавать им философские вопросы. А что, если?.. — он сделал театральную паузу, — ...что, если они на самом деле живые?
Чат взорвался хохотом. Идея была принята на ура. Десятки сообщений «ГОДНЫЙ КОНТЕНТ», «ЛОРМАСТЕР ЖЖЕТ», «НАЧИНАЕМ ОХОТУ» полетели вверх.
Логан откинулся на спинку кресла, на этот раз с чувством глубокого профессионального удовлетворения. Он снова поймал волну. Он превратил скуку в развлечение. Это ведь всего лишь игра. Набор кода, скриптов и красивых картинок. И относиться к ней нужно соответственно — как к большой, дорогой и иногда очень глупой игрушке.
— Итак, — сказал он, снова надевая маску серьезного исследователя. — Наш первый экспонат. Городской страж, модель 7. Посмотрим, что у него внутри, кроме набора стандартных фраз.
Он направил своего аватара прямо к стражнику, не подозревая, что его ироничная охота за глюками очень скоро превратится в погоню за самой страшной и удивительной правдой в истории человечества. Заметит ли он реальные аномалии, когда они начнут происходить?
***
Отчет о норме
Кабинет вице-президента по операционной деятельности Eterna Entertainment был похож на хирургическую операционную в какой-то футуристической клинике для миллиардеров. Воздух, пропущенный через тройную систему фильтрации с ионизацией, был стерильным, прохладным и лишенным каких-либо запахов, кроме едва уловимого аромата озона от работающей электроники. Здесь не было места личным вещам, фотографиям или безвкусным сувенирам из командировок. Только черный, отполированный до зеркального блеска стол из массива карельской березы, который стоил как годовой бюджет небольшой африканской страны, эргономичное кресло, больше похожее на ложемент пилота истребителя пятого поколения, и стена. Вся стена от пола до потолка была одним гигантским, бесшовным экраном из органических светодиодов, который в данный момент показывал умиротворяющий, циклично повторяющийся пейзаж какой-то альпийской долины. Ни единой лишней детали. Совершенство.
Дэвид Джонсон ненавидел беспорядок. Он презирал хаос, неэффективность, эмоциональные всплески и все, что нельзя было измерить, оцифровать, занести в квартальный отчет и представить совету директоров. Хаос был для слабаков. Хаос был для таких, как Алекс — гениев-одиночек, которые носились с идеями о «душе» проекта, «глубине переживаний» и прочей гуманитарной чепухой, но при этом постоянно срывали дедлайны и выходили за рамки бюджета. Джонсон же говорил на языке цифр, и этот язык был универсален, абсолютен и непогрешим. Цифры не лгут. Цифры не предают.
Он сделал выверенный глоток из белоснежной фарфоровой чашки. Кофе, редкий сорт «Копи Лювак», был идеальной температуры — восемьдесят два градуса по Цельсию. Автоматическая кофемашина, синхронизированная с его календарем, приготовила его за тридцать секунд до того, как он вошел в кабинет. Как и все в его жизни, это было безупречно.
— Утренний отчет по активу «Кайрос», — произнес он в пустоту. Его голос был ровным и лишенным эмоций.
Альпийский пейзаж на стене беззвучно растворился, сменившись бурлящим потоком данных. Десятки графиков, диаграмм и бегущих строк заполнили экран, отражаясь в холодных голубых глазах Джонсона. Это была его вселенная. Не фэнтезийный мир мечей и магии, который он втайне презирал за его инфантильность, а чистая, дистиллированная, прекрасная в своей логике информация.
Вот график онлайн-пользователей: плавная, уверенно ползущая вверх кривая, пробившая вчера новый исторический максимум в двадцать три миллиона одновременных подключений. Джонсон мысленно отметил точку пика — она приходилась на прайм-тайм в азиатском секторе. Он провел пальцем по воздуху, и график послушно развернулся, показав разбивку по регионам. Азиатский рынок рос опережающими темпами. Нужно будет обсудить с отделом маркетинга запуск новой линейки скинов в стиле аниме.
Вот карта распределения нагрузки по серверным кластерам — от Токио до Франкфурта, все сегменты горели здоровым зеленым цветом. Система балансировки, которую он лично курировал, работала идеально, перебрасывая мощности в реальном времени. Он увеличил североамериканский сектор. На долю секунды один из узлов в Вирджинии мигнул желтым — система зафиксировала попытку DDoS-атаки, — но тут же вернулся в зеленый сектор. Система защиты среагировала за 0.8 секунды, отсекла мусорный трафик и забанила по IP тысячи ботов. Безупречно.
А вот и его любимый раздел: «Монетизация». Цифры по микротранзакциям за последние двадцать четыре часа заставляли его губы растягиваться в подобие улыбки. Игроки покупали все: скины для питомцев, новые анимации танцев, мечи, которые светились чуть ярче, чем стандартные, виртуальные дома в престижных районах Цитадели. Они платили за пиксели, и платили охотно. Джонсон увеличил топ-5 самых прибыльных позиций. На первом месте, как всегда, был «Эпический сундук удачи» — по сути, обычный лутбокс, азартная игра, завернутая в красивую обертку. Гениальное изобретение.
Его цель была проста: убедиться, что самый ценный и прибыльный актив компании, ее дойная корова и флагманский продукт, работает как швейцарские часы. Препятствие — огромный, нечеловеческий объем информации. Миллионы игроков каждую секунду генерировали терабайты данных о своих действиях, перемещениях, покупках. Проанализировать все это вручную было невозможно. Да и не нужно. Для этого существовала система. Система, которую он построил после того, как избавился от Алекса.
Он наблюдал за потоками данных еще минуту, наслаждаясь масштабом своей империи. Каждый игрок был для него не человеком, а источником метрик: среднее время сессии, индекс удержания, пожизненная ценность клиента. Каждый NPC был лишь частью инфраструктуры, винтиком в машине, созданной для развлечения и извлечения прибыли. Он помнил, как Алекс на одном из последних совещаний, еще до своего… «несчастного случая», битый час доказывал необходимость выделить бюджет на разработку адаптивного ИИ для неигровых персонажей. «Они должны чувствовать, реагировать, жить! — горячился он, размахивая руками. — Игроки должны поверить, что этот мир настоящий!»
Какая чушь. Джонсон тогда спокойно дождался, пока тот выдохнется, и показал ему всего один слайд с прогнозируемой стоимостью разработки и отсутствием прямой корреляции с ростом прибыли. Совет директоров, разумеется, поддержал его, Джонсона. Главное, чтобы NPC вовремя выдавал квест и не застревал в текстурах. Все остальное — лирика, не влияющая на KPI. И вот результат: рекордная прибыль, стабильный рост и никаких гениев, путающихся под ногами со своей «душой».
— Сводка, — коротко бросил Джонсон.
Бурлящий океан цифр схлопнулся, уступив место лаконичной итоговой панели. Ключевые показатели эффективности горели зеленым. Вовлеченность пользователей: +7%. Средний чек: +3.2%. Нагрузка на серверы: 82%, стабильно. Критические ошибки системы: 0.
И в самом верху, над всеми графиками, сияла большая, жирная, успокаивающая зеленая галочка и надпись, которую Джонсон любил больше всего на свете. Слова, подтверждающие триумф его философии.
«ВСЕ СИСТЕМЫ РАБОТАЮТ В ШТАТНОМ РЕЖИМЕ».
Это был его триумф. Момент истины, подтверждающий его правоту. Он сделал ставку на порядок, на систему, на бездушный, но эффективный менеджмент — и победил. Он откинулся в кресле, чувствуя, как по телу разливается приятное тепло удовлетворения и власти. Все под контролем. Все, что можно измерить в деньгах и статистике, подчинялось ему. А то, что измерить нельзя, просто не существовало.
Он смахнул отчет со стены легким жестом, и на его месте снова возник безмятежный альпийский пейзаж. Машина работала безупречно. Машина печатала деньги. А значит, можно было переходить к следующему пункту в его расписании — совещанию по сокращению расходов в отделе тестирования.
Он не знал, и не мог знать, что в этот самый момент один из самых примитивных винтиков его идеальной машины, npc_bartender_alex, принял решение, которое нельзя было измерить ни в одном отчете. И что система, слепая к сознанию и измеряющая лишь прибыль, уже пропустила начало своего конца.
Как долго автоматические отчеты смогут скрывать правду?