Цикл 61

0

Гуанг Гуанг проектировал карты для Super Rivals. Те самые, на которых Мистер Эластик превращался в форму, похожую на знак бесконечности: петля, из которой нет выхода, только следующий виток. Гуанг Гуанг не был старшим дизайнером уровней, потому что уровней в мультиплеерной арене нет — есть карты, есть режимы, есть лабиринты коридоров, в которых заблудится любой, кто попытается искать логику там, где её не предусмотрено.

Он курил в офисе. Нельзя. Плевать. Офис NetDream был устроен так, что некурящих в нём либо сразу увольняли, либо они сами уходили через месяц, не выдержав дыма. Дым висел под потолком серыми слоями, как геологические эпохи. Самый старый слой помнил ещё билд 1.0. Самый свежий только что поднялся от сигареты Гуанг Гуанга и поплыл к вентиляции, которой не существовало.

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

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

На мониторе висел билд 61.0.0.1 — тестовый, внутренний, тот, который никогда не должен был попасть на продакшн-сервер. Но попал, потому что ночная смена в NetDream — это особая форма бытия, где чудеса происходят не по воле богов, а по недосыпу дежурного программиста. Программистку звали Ли. Она сидела перед монитором, поджав ноги под себя, и грызла колпачок от ручки. На столе перед ней лежало шесть таких колпачков — изжёванных, расплющенных, с отпечатками зубов. Она не помнила, когда их изгрызла. Рядом стоял пустой аквариум — без воды, без грунта, только пластиковый замок на дне, который она купила три года назад. «Заведу, когда допилю билд до релиза», — говорила она каждую ночь. Билд не релизился. Аквариум не заселялся. Но замок лежал. И по стеклу аквариума, прямо напротив того места, где сидела Ли, тянулась тонкая трещина — не опасная, но заметная. Она появилась три года назад, когда Ли впервые села за этот стол, и с тех пор не росла. Просто была. Как напоминание. Как подпись.

Когда Ли заливала билд на сервер, она на секунду замерла, глядя на экран. Строка кода на мгновение превратилась в стайку золотых рыбок, которые брызнули в стороны и исчезли за краем монитора. Ли моргнула — они исчезли, снова код. Она потёрла глаза, вздохнула и нажала Enter.

Позже, просматривая логи, Гуанг Гуанг заметит: билд 61.0.0.1 был залит с терминала Ли, но за минуту до заливки её учётная запись вышла из системы. Он не придаст этому значения. Или сделает вид, что не придал.

Так 61.0.0.1 оказался в продакшене.

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

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

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

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

Теперь, глядя на логи билда 61.0.0.1, Гуанг Гуанг вспомнил того торговца.

Он откинулся в кресле и затянулся. Дым осел на экране, и на секунду ему показалось, что цифры в логах перестроились в слово. «Кваско». Или «Kvasco». Он отогнал дым рукой, и логи снова стали обычными. Он вбил ник в поиск — и канал высветился первым же результатом.

Гуанг Гуанг перешёл по ссылке на Twitch-канал Kvasco. Стрим шёл. Трансляция показывала пустую комнату — стол, бутылку, сгорбленную тень на стуле. Гуанг Гуанг вгляделся в изображение. На столе, рядом с клавиатурой, лежал ключ. Ржавый, с семью зубцами — один лишний, торчащий вбок, как сломанный палец. Гуанг Гуанг отмотал запись на три часа назад — ключа не было. Ещё час назад — не было. Он появился в кадре ровно в тот момент, когда билд 61.0.0.1 ушёл на продакшн. Не раньше, не позже.

Он перевёл взгляд на счётчик зрителей. Шестьдесят один. Ровно. Он обновил страницу. Шестьдесят один. Ещё раз. Шестьдесят один. Живые цифры так себя не ведут.

Гуанг Гуанг полез глубже. Залез в логи сервера, проверил частоту модуля нейроинтерфейса — 61 Гц. Странно. Он не помнил, чтобы выставлял такое значение. Затем проверил исходный код стриминговой платформы — и нашёл ошибку в нумерации портов. Порт № 61 был продублирован дважды. Один раз для входящих соединений, второй — для исходящих. Они должны были быть разными, но система присвоила им один и тот же номер. Из-за этого пакеты данных зацикливались — уходили и возвращались, уходили и возвращались, создавая замкнутую петлю. Петлю, которую никто не замечал, потому что на неё никто не смотрел.



Отредактировано: 23.06.2026





Понравилась книга?
Отложите ее в библиотеку, чтобы не потерять