Назар Корчинский – Цикл 61 (страница 1)
Цикл 61
0
Гуанг Гуанг проектировал карты для Super Rivals. Те самые, на которых Мистер Эластик превращался в форму, похожую на знак бесконечности: петля, из которой нет выхода, только следующий виток. Гуанг Гуанг не был старшим дизайнером уровней, потому что уровней в мультиплеерной арене нет — есть карты, есть режимы, есть лабиринты коридоров, в которых заблудится любой, кто попытается искать логику там, где её не предусмотрено.
Он курил в офисе. Нельзя. Плевать. Офис NetDream был устроен так, что некурящих в нём либо сразу увольняли, либо они сами уходили через месяц, не выдержав дыма. Дым висел под потолком серыми слоями, как геологические эпохи. Самый старый слой помнил ещё билд 1.0. Самый свежий только что поднялся от сигареты Гуанг Гуанга и поплыл к вентиляции, которой не существовало.
Серверные стойки вдоль стен дышали: вдох — выдох. Где-то в этом ритмичном шуме прятался ещё один звук — тонкий, монотонный, почти неуловимый. Писк. Он был похож на кардиомонитор, но Гуанг Гуанг давно перестал его замечать. Этот звук был здесь всегда — как фон, как часть архитектуры. Всё в этом здании было подключено к чему-то живому.
На мониторе висел билд 61.0.0.1 — тестовый, внутренний, тот, который никогда не должен был попасть на продакшн-сервер. Но попал, потому что ночная смена в NetDream — это особая форма бытия, где чудеса происходят не по воле богов, а по недосыпу дежурного программиста. Программистку звали Ли. Она работала третью ночь подряд и уже не отличала код от галлюцинаций. Когда она заливала билд на сервер, ей казалось, что она кормит рыбок. Рыбки были воображаемые, а билд — настоящий. На её рабочем столе стоял пустой аквариум. Так 61.0.0.1 оказался в продакшене.
Гуанг Гуанг видел это по логам. Мог остановить — не остановился. Не потому что ждал бага. Потому что Ли напоминала ему его самого десять лет назад: молодого, голодного, готового работать сутками ради игры, которая никогда не станет идеальной.
Он помнил, как сам залил не тот билд в четыре утра — билд 17.0.0.3, который должен был поправить хитбоксы, а вместо этого создал NPC-торговца, говорящего о городе, которого в принципе не существовало. Не в игре. Не в лоре. Не в реальности. Нигде.
— Сургут, — говорил тот торговец равнодушным, записанным голосом. — Сегодня минус двадцать, ветер северный.
Гуанг Гуанг тогда проверил все базы данных. Никакого «Сургута» не было в коде. Никакой отсылки. Никакого скрытого пасхала. Торговец произнёс это слово сам — из пустоты, из ошибки в компиляции, из трещины между билдами.
Он закрыл тикет с пометкой «баг не подтверждён».
Теперь, глядя на логи билда 61.0.0.1, Гуанг Гуанг вспомнил того торговца.
Он откинулся в кресле и затянулся. Дым осел на экране, и на секунду ему показалось, что цифры в логах перестроились в слово. «Кваско». Или «Kvasco». Он отогнал дым рукой, и логи снова стали обычными. Он вбил ник в поиск — и канал высветился первым же результатом.
Гуанг Гуанг перешёл по ссылке на Twitch-канал Kvasco. Стрим шёл. Трансляция показывала пустую комнату — стол, бутылку, сгорбленную тень на стуле. Гуанг Гуанг вгляделся в изображение. На столе, рядом с клавиатурой, лежал ключ. Ржавый, с семью зубцами — один лишний, торчащий вбок, как сломанный палец. Гуанг Гуанг отмотал запись на три часа назад — ключа не было. Ещё час назад — не было. Он появился в кадре ровно в тот момент, когда билд 61.0.0.1 ушёл на продакшн. Не раньше, не позже. Как по расписанию.
Он перевёл взгляд на счётчик зрителей. Шестьдесят один. Ровно. Он обновил страницу. Шестьдесят один. Ещё раз. Шестьдесят один. Живые цифры так себя не ведут. Живые цифры дышат — то вверх, то вниз. А эти — не дышат. Их кто-то заморозил.
Или что-то, — подумал Гуанг Гуанг.
Он проверил логи сервера. Частота модуля нейроинтерфейса — 61 Гц. Число 61 было вшито в архитектуру билда на всех уровнях. Ли, сама того не зная, оставила водяной знак — и теперь этот знак проступал повсюду, куда дотягивался билд. Как подпись. Как клеймо. Как код замка, к которому ещё не нашли ключ.
Он открыл список частот и подержал палец на строке 61 Гц — иконка модуля моргнула, словно приподняла бровь. «Понял», — мысленно сказал ей Гуанг Гуанг и открыл тикет-систему.
Он сделал пометку в тикет-системе: «Баг подтверждён. Реальность субъекта активна. Патч не требуется. Количество зрителей зафиксировать на 61.»
Он перешёл в логи чата. На глубине, которую он не смог бы измерить, висело сообщение:
Kvasco: Гуанг Гуанг, твоё пиво выдохлось ещё в позапрошлом патче. Долей.
Гуанг Гуанг замер. Kvasco не мог этого написать. Но сообщение висело в чате. Может, оно появилось само. Может, это система говорила с ним. А может, баг в билде 61.0.0.1 был глубже, чем он думал, и теперь реальность и игра переплетались, как провода в старой серверной стойке.
Он поднёс руку к лицу и посмотрел на пальцы. Они дрожали — не от страха, не от усталости, а от азарта, которого он не чувствовал с тех пор, как закрыл тикет по билду 17. Система не генерировала этот ключ. Система не генерировала это сообщение. Они появились сами. Как торговец, знавший о Сургуте. Как многие другие баги, которые он «закрывал», но которые продолжали жить где-то на периферии кода.
Живые баги, — подумал он. — Эмбрионы.
Затем Гуанг Гуанг напечатал ещё одну пометку: «Субъект готов. Начинаем.»
Он не знал, что начинает. Его пальцы двигались сами — не по его воле, а потому что в билде 61.0.0.1 причина и следствие иногда менялись местами. Слово, которое он напечатал, не существовало в документации, но уже существовало где-то — в черновиках, которые ещё не были написаны, но которые система считала завершёнными.
Пиши.
Гуанг Гуанг затушил сигарету. Достал новую. Закурил. Поднёс к губам пустоту, имеющую форму стакана, — привычка, которую он так и не смог объяснить. Где-то в тёмной комнате за тысячи километров от офиса NetDream человек по имени Александр Кваско спал, и ему снился женский голос. Где-то в Сургуте он открыл глаза и потянулся к бутылке. Гуанг Гуанг сделал глоток из пустоты — и Кваско, сам не зная почему, сделал глоток из своей.
На экране высветилось:
Субъект Kvasco. Статус: активен. Контрольные точки пройдены. Фаза 1 активирована.
Гуанг Гуанг улыбнулся. Это была не добрая улыбка. Это была улыбка человека, который только что понял: ошибка, которую он не исправил, может оказаться единственным, что он сделал правильно за всю свою карьеру.
1
Будильник должен был прозвенеть в 17:00.
Он не прозвенел.
Точнее, он прозвенел где-то в параллельной версии реальности — в той, где Александр Кваско был ответственным человеком, вставал вовремя, завтракал, чистил зубы до скрипа и успевал на служебный автобус в 17:48. В той версии он жил с родителями, не пил по будням и, возможно, даже был счастлив — или хотя бы не был собой. Но в этой ветке будильник просто лежал на полу, экраном вниз, и молчал, как молчат все предметы, которые разочаровались в своём владельце.
Кваско открыл глаза в 20:17.
Первое, что он почувствовал — запах. Кислый, тёплый, родной. Смесь вчерашнего пота, позавчерашнего пива и сигаретного дыма, который въелся в шторы так глубоко, что стал частью ткани. Этот запах был настолько постоянным, что Кваско уже не замечал его — как не замечают цвет стен или гул холодильника. Но иногда, в моменты похмельного просветления, он вдыхал его как что-то чужое. Словно в комнате жил кто-то другой, а он просто зашёл проведать.
Второе — свет. Экран монитора горел красной точкой. Программа для стримов была включена. Трансляция шла. Кваско не помнил, как включил стрим. Может, и не включал. Шестьдесят один зритель.
— Блядь, — сказал Кваско. Или подумал. Или подумал, а чат прочитал. В чате было пусто, но тишина в чате — это тоже сообщение. Отсутствие сообщений — тоже сообщение. Всё было сообщением, если смотреть достаточно пристально.
Телефон показал три пропущенных звонка от руководителя склада. Первый — в 20:08. Второй — в 20:12. Третий — в 20:15. Интервал говорил сам за себя: сначала лёгкое раздражение, потом недоумение, потом короткое «ну всё, пиздец». Кваско смотрел на номера пропущенных и чувствовал странное облегчение. Пропустить звонок — это маленькая победа. Каждый пропущенный звонок — это гвоздь в крышку гроба его карьеры грузчика. И он забивал эти гвозди с удовольствием.
Кваско не стал перезванивать. Вместо этого он взял бутылку с тумбочки, сделал глоток и набрал номер сам. Голос руководителя — ровный, не злой, не раздражённый — ответил после второго гудка. «Где ты?» — «Болею». — «Серьёзно?» — «Голова, температура, всё, что полагается». — «Ладно, — сказал руководитель, — поправляйся. Завтра чтобы был». Кваско повесил трубку и уставился в стену. Голос был слишком спокойным. Будто его ждали. Будто его отсутствие на смене — не сбой, а часть какого-то графика, в который Кваско пока не был посвящён.
Смена начиналась в 20:00. Но склад находился за городом, и служебный автобус отходил от его остановки в 17:48. Час с лишним в пути — через пробки, через промзону, через серые сургутские окраины. Автобус прибывал к проходной около 19:00, и именно отсюда бралось негласное правило: приходить за полчаса-час до официального старта. Корпоративная культура висела в воздухе, как запах картона, — её никто не произносил вслух, но все ей подчинялись: «Если ты не пришёл раньше — ты уже опоздал. Если ты опоздал — ты уже не работник. Ты просто тело, которое ещё не вынесли».