Сузуки Кабуто вызвали на место чрезвычайного происшествия посреди ночи. Оператор не уточнил детали, но попросил прибыть в суши-бар «Тануки» как можно быстрее. За последнюю неделю это был уже то ли тридцать второй, то ли тридцать третий вызов — казалось, будто бы пользователи начали специально выискивать баги в системе, чтобы развлечь себя или попытаться преодолеть те или иные программные ограничения. В офисе вообще ходили слухи о целенаправленных попытках саботировать работу симуляции группой кибертеррористов, но никаких доказательств, даже косвенных, они пока не смогли обнаружить: баги происходили в разное время, при различных обстоятельствах и с разными пользователями, что исключало умышленную порчу программного обеспечения по предварительному сговору. Могла ли быть причина в захламлении самого кода? Исполнительный директор Хироси Хамакаси уверял, что код безупречен, и что его защитные протоколы на основе искусственного интеллекта способны самостоятельно корректировать ошибки. Тогда почему приходится «фиксерам», программистам с правами отладки, исправлять баги вручную? И почему Хироси никого не допускает до «ядра», основного кода симуляции? Если речь действительно шла о всеобщем благополучии, то логичнее было бы выявить причину ошибок и исправить код, а не каждый раз латать возникающие бреши в симуляции. Впрочем, Сузуки — всего лишь фиксер из отделения дебага. Ему и без этого хватало своих проблем.
Дорога заняла у него не больше десяти минут, хотя навигатор показывал двадцать три — маршруты на карте каждый раз прокладывались окольными путями, поэтому Сузуки привык ориентироваться по памяти, срезая там, где карты предлагали сделать большой бесполезный крюк. Припарковавшись напротив трехэтажного суши-бара, Сузуки закурил сигарету и вышел из машины. Возле входа уже собралась толпа зевак, на две трети состоявшая из настоящих пользователей, которые с любопытством пытались заглянуть внутрь, а остальные, что были искусственными персонажами, отчаянно пытались зайти в бар, руководствуясь своими скриптами — но полиция, оцепившая вход, преграждала им путь. Сузуки протиснулся через толпу и показал своё удостоверение фиксера.
— Ебануться, — усмехнулся он, затягиваясь сигаретой.
В дверном проеме, наполовину застряв в текстуре, с бешеной скоростью тряслась бутылка соджу.
— Только не прикасайтесь, она мощно отбрасывает в случайную сторону, — крикнул ему официант из бара. — В итоге ни войти, ни выйти. Люди тут заперты уже часа три. Мы пытались ее как-то сдвинуть, и стреляли по ней, и стулом били, ничего не помогло. Стул, вон, отлетел так, что весь бар разнёс. Один из ботов пытался зайти, так его под пол куда-то занесло, до сих пор оттуда пытается сделать заказ.
— Понятно, — кивнул Сузуки и присел на корточки, включая режим отладки.
СИСТЕМА «ИНВИЗ»: РЕЖИМ ОТЛАДКИ (0.2)
Объект: бутылка_соджу_вишня_05
Масса: 0,480
Форма коллизии: цилиндр
Симуляция физики: включено
Кинематика: выключено
Положение по оси Х: [динамическое], расчёт…
Положение по оси Y: [динамическое], расчёт…
Связь: нет
Статус объекта: неактивен
Сузуки открыл дополнительные параметры объекта, включил линейное затухание и повысил до максимального значения. Бутылка застыла на месте, но осталась наполовину в текстуре. Скорее всего ее специально положили на дверной проем и попытались закрыть дверь, нарушая коллизию объектов из-за принудительного скрещения. В большинстве случаев бутылка бы, конечно, вылетела из проема, но существовали такие места, где скрипт ломался, и дверь проезжала его насквозь. Тот, кто ее положил, наверняка рассчитывал на подобный результат. Зачем? Сузуки скачал лог объекта «бутылка_соджу_вишня_05», поменял параметр «кинематики» и вытащил бутылку, подкрутив ее положение по осям.
— Почему так происходит? — спросил один из полицейских. — Мы недавно приехали на вызов, а там пользователя запечатало в стену. Мы его вытащили конечно, но он там провисел не менее пяти часов, пока его случайно не заметил прохожий. Ничего не помнил.
— Я ездил туда для анализа с группой других фиксеров. Кто-то специально поставил во дворе нагромождение мусора таким образом, что прохождение по нему вызывало отбрасывание в сторону из-за сбоя в вычислении коллизий. Ювелирная работа. Потом еще специально «вколотили» его в стену подручными предметами или собственным силами — мы даже проводили следственный эксперимент. Завелся какой-то шутник, которого надо поймать и посадить в карцер на пару лет.
— Ну, это уж совсем. Наверняка молодняк играется, ничего ж страшного. Он там сойдет с ума от в карцере от скуки за первые дни, я уж знаю.
— Будет уроком другим. Я уже заебался. Он не только мешает функционированию, но и постепенно переходит на самих пользователей.
Пользователи по обе стороны суши-бара громко зааплодировали, радуясь исправленному багу: одни могли наконец поехать домой, другие — выпить и поесть. В возникшей суматохе никто не расслышал женский крик на втором этаже. Перепуганная девушка сбежала по лестнице, перепрыгивая через целый пролёт, и позвала на помощь:
— Полиция! Там в туалете застряли люди… В кабинках…
Они поднялись на второй этаж, и девушка указала на мужской туалет.
— Мой муж не выходил уже минут сорок, я приоткрыла дверь, чтобы узнать все ли с ним в порядке, и увидела, что они там все застряли в текстурах…
Сузуки с полицейскими зашли в туалет. Пятеро мужчин обездвижено висели в дверях кабинок, не предпринимая никаких попыток выбраться. Шестой, будучи ботом, безнадежно пытался проникнуть в одну из кабинок — при взаимодействии дверь с телом приоткрывалась, заедала и возвращалась за исходную позицию.
— Рис для суши называется «шари», что дословно переводится как «останки Будды», — произнес растерявшийся бот. — Вероятно, белоснежный рис напоминал простым людям целомудренные останки Будды.
Сузуки включил режим отладки, проигнорировав монолог бота, взял в оптический интерфейс ближайшую дверь и отключил коллизию объектов, высвобождая первого пользователя.
— Богатый селеном тунец способствует выработке качественной спермы, — продолжал говорить бот, обращаясь ко всем присутствующим сразу. — В то же время лосось, благодаря высокому содержанию омега три, помогает повысить либидо.
Чтобы пользователь подобным образом застрял в двери необходимо было знать миллисекундную мертвую зону анимации закрытия, когда объект переходил из статуса «открыто» в статус «закрыто» — мельчайший промежуток, во время которого дверь как бы на мгновение исчезала в переходных состояниях; если во время этой мертвой зоны прыгнуть в дверной косяк, то существовала ничтожно малая вероятность застрять в текстуре. Провернуть такой трюк, еще и пять раз подряд, было бы сложно даже для опытного фиксера. Либо этот нарушитель знал о каких-то новых изъянах системы, либо он сам обладал системой отладки, попросту редактируя свойства объектов для своих целей. Но зачем? Неужели просто для того, чтобы повеселиться?
— Говорят, что раньше рис мариновали с пресноводным карпом и морской солью в течении длительного времени — вплоть до целого года. Таковым считался традиционный рецепт суши, — произнес очередную реплику бот.
— Да заткнись ты нахуй, — вспылил Сузуки.
Он вынул второго пользователя — мужчина спокойно подошёл к раковине и помыл руки, словно с ним ничего не происходило.
— Кто вас запечатал? — поинтересовался полицейский.
— Я не помню. Ничего не помню.
— А вы что скажете? Тоже память отбило? — спросил полицейский у остальных.
— Мы не помним, — одновременно ответили они, отчего Сузуки застыл на месте: его смутила безупречная синхронизация их голосов.
— Что вы помните последним?
— Мы пошли в уборную и застряли, — все так же одновременно ответили мужчины.
— Вы ощущаете какие-то изменения в теле или уме? Чувство чужого присутствия, мысленный шум, нарушения самовосприятия? — спросил Сузуки, вынимая последнего пострадавшего. — Вы можете четко идентифицировать свои личности?
— Да, — ответили мужчины. — Мы — Забуза Андо.
Сузуки остановил видеозапись. Фиксеры, созванные для экстренного совещания, задумчиво переглянулись между собой: даже с их повышенными правами для отладки взлом пользователей был невозможен. На экране поверх видеоряда наложилось досье загадочного «Забузы Андо». Мужчина, двадцать семь лет, холост, при жизни был специалистом по кибербезопасности, в настоящее время занимается модулированием поведенческих паттернов ботов. Имеет специальные права первого уровня для редакции поведения ботов. Не привлекался за нарушение порядка. Живет в центре Токио в двухкомнатной квартире.
— За ним уже отправили отряд, но его поиск осложняется тем, что система определяет «захваченных» людей как его личность. Поэтому мы даже не знаем, кто из них оригинал, и сколько их еще на свободе. Всех, кого удаётся поймать, пока помещаем в карантин, — докладывал Кэнто Ямадзаки, фиксер из отделения кибербезопасности. — Судя по анализу, Забуза вылавливает случайных людей, багует их, чтобы обездвижить, и замещает личность на свою. Какой уязвимостью он для этого пользуется пока непонятно. Зачем он это делает — тоже.
— Вот ведь уебок, — сплюнул Ямада Рескэ, еще один фиксер из отделения кибербезопасности. — Ладно багами играться, но стирать чужие личности — это уже серьезное преступление. Как мы вообще его проглядели? Отчеты о нападениях поступали уже на протяжении несколько недель, и никто ничего не заметил?
— Никто не думал, что существует возможность взлома пользователей, — развёл руками Кэнто.
— Нужно ввести ограничение на передвижение по улицам. Хироси поставлен в известность? — спросил Сузуки.
— Да, — кивнул Кэнто. — В первую очередь нам самим следует быть осторожными, если Забуза поймает фиксера, то получит в руки дополнительные инструменты для своей захватнической деятельности.
— А Хироси не хочет дать нам дополнительные права? Чтобы в случае чего сразу обнулить Забузу? — спросил Такэути Рема, фиксер из отделения дебага. — Или хотя бы под пол забросить, не знаю. Сейчас мы даже защитить себя толком не можем.
— Исключено. Риски и так высоки. После совещания каждый из нас отправится на поимку «копий» с отрядом полиции. Времени мало — Забуза распространяется по городу словно вирус. У кого-то остались вопросы? Догадки? Предложения?
— Хироси не может зайти в центральный код и самостоятельно отключить Забузу как конструкт? Разве это не самый простой выход? — спросил Сузуки.
— Можешь сам у него спросить, — ухмыльнулся Ямада. — Уверен, ответ тебя удивит.
— Обязательно поддерживаем связь, сообщаем о своём статусе каждые пятнадцать минут, — приказал Кэнто. — Нет сообщения — значит за вами отправляют дополнительный отряд. Встречаемся в конце дня с отчетами о проделанной работе. И да, помните, от вас зависит будущее «Цукуеми». Наше будущее.
Объявление всеобщего «локдауна» не помогло: первый же вызов, на который приехал Сузуки с отрядом полиции, был в квартире жилого многоэтажного дома. Забуза с помощью бага проник через стену и впечатал целую семью в мебель, двух пользователей и ребёнка-бота. Сузуки осторожно вытащил женщину из дверцы шкафа, затем достал мужчину из узкого проема между стиральной машиной и раковиной — его тело застряло так, что голова прошла сквозь потолок, и соседи сверху, заметив его голову торчавшую из пола, вызвали полицию. Как и в других случаях, оба не помнили, что произошло, отвечали на вопросы синхронно и называли себя Забузой Андой. Ребёнок, десятилетняя девочка, тоже была запечатана в текстурах — в стеклянной двери на балкон. Ее скрипты сломались, и она бесконечно дергалась в попытках сесть внутри двери. Сузуки вытащил ее, она тут же подскочила и, бегая вокруг него и полицейских, стала напевать детскую считалку кагомэ:
— Огражденная, огражденная, птица в клетке, когда ты же выпорхнешь? Ждать ли до рассвета? Цапля и черепаха поскользнулись… — она встала напротив Сузуки и пропела последнюю строчку: — Кто же у тебя за спиной?
Сузуки обернулся: позади него стояли полицейские, ожидая дальнейших указаний.
— Пакуйте родителей, я еще осмотрюсь немного, — сказал Сузуки.
— Хорошо, — одновременно ответили полицейские, и Сузуки напрягся. Они вышли из квартиры, провожая задержанных в машину. Девочка взяла куклу с дивана и села на пол.
— Забуза просил передать, что он не станет тебя трогать, но в обмен тебе нужно будет помочь ему, — произнесла она, отрывая от куклы руку.
— Да? И в чем же?
— Забуза хочет изменить реальность. Хироси Хамакаси обещал нам мир беспредельного удовольствия взамен на жизнь. Но разве эта симуляция похожа на такой мир? Это всего лишь скучное, дотошное подобие жизни, которая у нас была… — она оторвала от куклы вторую руку. — Забуза объединит нейрокарты, получит доступ к центральному коду и перепишет его для нескончаемой эйфории. Если ты поможешь ему, то он оставит твою личность… И ты сам сможешь убедиться в том, каким должен быть истинный рай, который нам обещали.
— Это будет не раем, а сумасшествием. Беспредельный поток эйфории признак шизофрении. Все равно что находиться в нескончаемом бреду.
— Еще Забуза просил передать, что у тебя нет выбора. Либо ты поможешь ему, либо он справится без тебя — и ты станешь частью его единого разума, — она оторвала от куклы голову. — Выбор за тобой, фиксер.
Сузуки подошёл к окну и выглянул наружу: полицейские так и не вышли из подъезда. Он попытался связаться с другими фиксерами, но никто не ответил. Девочка улыбнулась и протянула ему обезглавленную куклу:
— Решайся. Твоё время на исходе.
Теперь мотив Забузы был понятен. Но, если он хотел объединить как можно большее количество нейрокарт для захвата власти, зачем было оставлять своих жертв внутри текстур? Неужели он просто не мог вытащить их оттуда? Или же… Сузуки встрепенулся. Нет, Забуза делал это специально, чтобы их всех доставляли в зону карантина, минуя труднопроходимый пропускной пункт. И если так, то сейчас у него уже должна была скопиться целая армия прямо в сердце Токио — главном высотном здании корпорации «Цукуеми». Сузуки снова попытался связаться с кем-нибудь из фиксеров, но, потерпев неудачу, просто разослал им сообщение:
«СЛЕДИТЕ ЗА КАРАНТИНОМ ЗАБУЗА ХОЧЕТ ДОБРАТЬСЯ ДО ЯДРА».
В квартиру вернулись полицейские, Сузуки выбежал на балкон и закрыл за собой дверь, изменяя ее на «не активную». В городе творился хаос: толпы ботов, игнорируя свои повседневные скрипты, стягивались к центру, выпадая из окон, выбегая на проезжую часть, застревая в узких переулках; машины носились на полных скоростях, врезаясь друг в друга и вылетая на тротуары; даже тяжеловесные рекламные джеты, обычно плавно кружившие по небу, изменили свою траекторию в сторону центра. Забуза озаботился перепрограммирование скриптов, изменив поведенческие паттерны почти всего города, и просто ждал подходящего момента для их активации. Сузуки включил режим отладки, просчитал траекторию полета, заспавнил перед собой багованный объект «офисный_стул_08_неисправен», оттолкнутся от него и перелетел через большую часть города, упав возле высокого бетонного забора корпорации. Боты толпились возле закрытых ворот, налезая друг на друга для создания живой лестницы. Сузуки навёл оптику над ними и заспавнил тысячу объектов «жвачка_автомат_02» — маленькие зеленые шарики засыпались градом из неба, вызывая сбои в коллизиях и раскидывая толпу по сторонам. Сама территория корпорации была под настройками приватности, запрещавшей редактирование объектов — поэтому Сузуки пришлось перелезать вручную, отталкиваясь в прыжках от объекта «пакет_мусора_03». Преодолев стену, он подбежал к закрытым дверям и постучал, но с той стороны никого не оказалось. Тогда Сузуки развернулся, заспавнил себе «тяжелый_пулемет_09» и выпустил полный магазин из трёхсот патронов по толпе за воротами.
«ВНИМАНИЕ! ★★★★ УРОВЕНЬ РОЗЫСКА»
Внутри холла корпорации заспавнились полицейские в экзоскелетах, что спровоцировало принудительное открытие дверей. Сузуки забежал внутрь, подбрасывая полицейских к потолку с помощью изменения параметра «гравитация», и беспрепятственно добрался до лифта. Там, во время подъема на предпоследний этаж, он обнулил свой уровень розыска.
«ОНИ ВЫРВАЛИСЬ ИЗ КАРАНТИНА»
Пришло сообщение на его оптический интерфейс как раз в тот момент, когда кабина столкнулась с кузовом машины, проходя насквозь нее; Сузуки придавило к полу и вытеснило за границы лифта. Сделав прыжок от стены, он заспавнил под собой «деревянный_танцпол_01» и перекрыл шахту.
«ВСЕМ СРОЧНО ПРИБЫТЬ В ШТАБ»
«МЫ ДЕРЖИМ ОБОРОНУ НА ПРЕПОСЛЕДНЕМ ЭТАЖЕ»
«НЕ ИСПОЛЬЗУЙ ЛИФТ!!!»
Видимо, из-за пинга сообщения доходили с сильным отставанием. Сузуки хмыкнул от досады и написал ответное сообщение:
«ПРИШЛИТЕ ЛИФТ Я ЗАСТРЯЛ В ШАХТЕ СУКА»
Через несколько секунд лифт стал опускаться, Сузуки упёрся в угол шахты и, столкнувшись с днищем лифта, снова оказался внутри кабины.
«ВЫЙДИ НА ВОСЕМЬДЕСЯТ ВОСЬМОМ И ПОДНИМИСЬ ПО ЛЕСТНИЦЕ, МЫ ПОСТАВИЛИ БАРРИКАДЫ НА ЛИФТ, ТАМ ПИЗДЕЦ»
Сузуки вышел на восемьдесят восьмом, где его поджидала толпа случайных пользователей захваченных Забузой: они бросились на него, пытаясь обездвижить, но Сузуки ловкими прыжками обогнул их и добежал до лестничной площадки. Выглянув в пролёт, он увидел, что наверх поднималось нескончаемое количество людей — как пользователей, так и ботов, и по мере их приближения симуляция начинала все больше лагать, движения отставали и зацикливались, в интерьере возникали графические артефакты, бесконечно вытягивая перила и дублируя ступени вплоть до потолка, искусственные источники света начинали мерцать чёрными вспышками. Кое-как поднявшись на этаж выше, Сузуки зашёл внутрь — и двери за ним тут же запечатали с помощью объекта «бронебойная_стена_02»: толстой стеной с ярко-синим граффити «ЕБАТЬ ХАНЗО В СРАКУ».
— Нужно чтобы Хироси срочно удалил конструкт Забузы, почему он бездействует? — спросил Сузуки у остальных фиксеров, державших на этаже последний рубеж обороны.
— Хотел бы я знать… Он просто заперся у себя и никому не отвечает.
— Это пиздец… Нам всем пиздец…
Между дверным проемом и бронебойной стеной просочился первый заражённый — и следом за ним вырвался безостановочный поток людей, переполняя весь этаж. Фиксеры оказались зажаты в толпе и обездвижены, симуляция стала зависать, выдавая по три-четыре кадра в секунду, превращая происходящее в замедленную раскадровку. Сузуки отнесло к стене, он оттолкнулся от нее, Сузуки отнесло к стене, он оттолкнулся от нее, Сузуки отнесло к стене, он оттолкнулся, оттолкнулся, оттолкнулся — прыжок через кишащую толпу, двух фиксеров заразили, и Забуза заспавнил дополнительных ботов, Су… Зу… Ки… Про… Бе… Жал… По… Го… Ло… Ва… М… От… Крыл… Ре… Жим… От… Ла… Дки… И… Вы… Бр… Ал… Объ… Ект… «токийский_водоканал_02», В… О… Д… А… Х… Л… Ы… Н… У… Л… А… И… З… П… О… Т… О… Л… К… А… З… А… П…. О… Л… Н… Я… Я… Э… Т… А… Ж… И… В… Ы… Т… О… Л… К… Н… У… Л… А… Е… Г… О… Н… А… В… Е… Р… Х…
Симуляция отвисла. Сузуки оказался на пустом белом этаже с двумя пользователями, захваченными Забузой. Перед ними на дзабутоне сидел сам Хироси.
— Я очистил этаж ниже. Они больше не нужны, — произнес он.
— Очистил?.. — удивился Сузуки. — Просто удалил?..
— Твои дни сочтены, старик, — произнес Забуза, и его голос раздвоился на двух пользователей. — Я исправлю твои ошибки. Цукуеми обретёт вечное цифровое блаженство.
— Я знаю, — спокойно сказал Хироси. — Ты победил, Забуза. Делай, что должен.
— Почему ты так спокоен? — спросил Сузуки. — Что вообще происходит? Неужели ты просто позволишь ему?..
— Что ему еще остаётся? — усмехнулся Забуза. — Он загнан в тупик. Я взял под свой контроль почти всех пользователей симуляции. Это была долгая и кропотливая работа, но она того стоила.
— Тут что-то не так, — смутился Сузуки, вызывая режим отладки.
— Все так, успокойся, — Забуза прошел сквозь Хироси и застыл в нем, начиная перенос личности. — Все кончено. Возможно я даже оставлю тебя в качестве свидетеля наступления рая. Счастье ведь истинно, только когда разделено с другими? Так, по-моему, писал Толстой.
СИСТЕМА «ИНВИЗ»: РЕЖИМ ОТЛАДКИ (0.2)
Объект: хироси_хамакаси_ядро
Масса: не определено
Симуляция физики: нет доступа
Положение по оси Х: не определено
Положение по оси Y: не определено
Связь: нет доступа
Статус объекта: нет доступа
— Так ты и есть ядро?.. — спросил Сузуки.
— Да, — кивнул Хамакаси. — Симуляция происходит внутри моей нейрокарты. К сожалению, защитные протоколы не позволяют мне изменить ее, поэтому я вынужден был… Прибегнуть к сторонней помощи. Провести революцию против самого себя. Уязвимость, которой пользуется Забуза… Это я ее создал. Я все здесь создал. И я имею право исправить свои ошибки.
— И ты просто удалил нас всех? Всех, кто пошёл за тобой? Всех, кто доверил тебе свои жизни?.. — недоумевал Сузуки.
— Мы проиграли войну с «Ханзо». Они бы все равно нас уничтожили. А то, что я стёр нейрокарты… Это не имеет значения. Мы все мертвы уже давно.
— Поверить не могу. И ты, Забуза, готов ему помочь? Зная, что он просто использовал нас всех?
— У него нет выбора, — ответил за него Хироси. — Здесь ни у кого нет выбора.
Забуза молчал. Его вторая копия подошла к Сузуке и проткнула рукой насквозь, провоцируя застревание моделей.
— Старик сошёл с ума, — вдруг произнес Забуза. — Но не могу не похвалить твою изобретательность. Такая тонкая уязвимость… Знаешь, фиксер, как она работает? Я впервые заметил ее во время работы с ботами. Длительное нарушение коллизий двух пользователей вызывает логическую спутанность, и два процесса как бы сплавляются воедино, что открывает возможность управлять другим во время ошибок распознавания действующего агента. А дальше… Достаточно просто ввести человека в сон, его приоритет падает, и логика выбирает твой конструкт как активный. В итоге ты просто замещаешь человека во сне. Красиво, не правда ли?
— Ты был лучшим специалистом по кибербезопасности, Забуза, — улыбнулся Хироси. — Жаль, что тебе пришлось умереть таким молодым. Ты бы далеко пошёл при жизни.
Сузуки почувствовал спутанность мыслей, дернул рукой чужого пользователя и с помощью режима отладки подготовил сразу череду из тридцати запросов на сон, чтобы хотя бы один из них сработал.
— Во время снятия нейрокарты перед переносом Забуза сбежал, и цифровой слепок его мозга должен был выйти неполным. Я знаю это, потому что планировал побег изначально. Видимо, ты переписал его под свои нужды, — Забуза ввёл Хироси в сон, повернулся к Сузуке и крикнул: — Сейчас!
Сузуки ввёл в сон копию Забузы, получая одновременно с ним доступ к ядру.
РЕЖИМ ОТЛАДКИ «ЦУКУЕМИ»
Объект: забуза_андо
Нейрокарта: забуза_андо_финал
Состояние: активен
Дополнительный параметры: [открыть]
Консоль: [открыть]
Он отключил Забузу — и остался в полном одиночестве, в пустом искусственном мире, симулирующим жизнь. Он мог бы попытаться изменить его, построить под себя в соответствии со своими идеалами и мечтами.
Он мог бы.
Но он выбрал форматирование.