Инженер Против III Стальной Рубеж — страница 14 из 42

Он снова изучает своё тело, индикаторы на конечностях моргнули, сообщив об успешном подключении. Мои пальцы скользят по клавиатуре, отмечая строки, где код сольется с физикой в монолит и я плавно перехожу к системе приводов.

Экран затягивает бездной символов. Курсор мигает, как мушка прицела, а я вгрызаюсь в логику движений. Каждая функция — это сустав, каждый цикл — сухожилие, которое должно сокращаться без задержек. Я пишу не программу, я проектирую рефлексы. Здесь, в строке 47, зашифрован поворот бедра, там, в подпрограмме delta_theta, — баланс между силой и грацией. Сталь экзоскелета на верстаке еще бездвижна, но код уже заставляет ее дрожать в ожидании жизни.

Искры ошибок выстреливают в консоль, осыпая экран багровыми предупреждениями. Компилятор хрипит, как перегруженный мотор, отказываясь проглотить мой алгоритм обратной связи. «Ошибка сегментации», словно шипит он, и я чувствую, как по спине стекает капля пота. Это не просто сбой — это предательство. Сейчас, когда костюм уже должен понять как ходить, а часы бьют полночь, я не могу позволить себе слабину. Я вцепляюсь в код, как в глотку невидимого врага, переписываю переменные, меняю указатели. Память — это болото, где тонут надежды, если не проложить мосты из строгих типов данных.

Сквозняк из открытой двери мастерской швыряет в меня лист бумаги с чертежами кинематики, это Николь бесшумной тенью скользнула внутрь, не смея меня отвлекать. Я ловлю его на лету, не отрываясь от экрана. Здесь, в углу схемы, кроется ответ: угол сгиба колена не совпадает с траекторией, заданной в коде. Цифры врут.

— Нет, — тихо шепчу я, осознав, что это именно Я солгал им неверной цифрой, зажав погрешность в три десятичных знака, будто машина не заметит подвоха. Заметила…

Я стираю старые расчеты, вбиваю новые формулы, где каждое число — это молитва точности. Симулятор на будущем мониторе шлема оживает яркой вспышкой. На нем мелькают сумбурные мысли костюма, в которых лишь едва прослеживается логика расчетов. Нога экзоскелета подрагивает на верстаке, сервоприводы поют тонким воем — они готовы к прыжку.

Но этого мало. Программа должна не просто двигать металлом — она должна «чувствовать». Датчики давления на стопе, ЭМГ-сенсоры на бедрах, гироскопы вдоль позвоночника… Каждый сенсор — это нерв, который я вшиваю в код. Я создаю карту тела, где электрические импульсы человека переводятся в цифровые команды. Здесь, в функции neural_map(), я заставляю экзоскелет дрожать при мысли пользователя о шаге. Тут, в блоке torque_control, балансирую мощь гидравлики с хрупкостью человеческой кожи, чтобы сталь не раздробила мои кости в неловком движении против моей человеческой анатомии.

Мои пальцы выстукивают ритм, который не услышит никто, кроме машины. Enter. Компиляция. Ожидание. Зеленое «успешно» вспыхивает на экране, и я впервые за несколько часов позволяю себе выдохнуть. Но это лишь начало. Я подключаю программатор к порту экзоскелета, наблюдая, как светодиоды вдоль его позвоночника загораются волной — будто кровь побежала по венам. Он пробуждается от сна пустоты.

Устало положив ноутбук на колени, я дотрагиваюсь до ободов кресла и ощущаю, как ладони, вспотевшие от волнения, проскальзывают. Подкатываюсь к верстаку, решаю сделать первый тест.

Я надеваю перчатку с сенсорами, чувствуя, как ее провода, которые не успел толком прикрепить, цепляются за мою кожу, как паразиты, жаждущие данных. Сгибаю мизинец — экзоскелет на верстаке повторяет движение с микросекундной задержкой. Недостаточно. В коде, где фильтруются шумы, второй рукой уменьшаю порог чувствительности, заставляя алгоритм ловить даже дрожь мышц. Теперь он сгибается синхронно, как тень.

Тест второй: предплечье. Я поднимаю руку, и экзоскелет вздымает свою стальную лапу с мягким шипением пневматики, предохраняющей от зажимов между будущих пластин брони. Но при резком движении сустав дергается — в коде вспыхивает предупреждение о перегрузке. Я вручную вбиваю поправки в PID-регулятор, уменьшаю коэффициент усиления, пока движение не станет плавным, почти человеческим.

— Нет, должно быть лучше человеческого — без дрожи усталости, без страха надрыва! — говорю я синей бездне монитора, что глуха к людской речи.

Покончив с этим, я решаюсь на третий, решительный, тест. Заехав за спину костюма я нажимаю на кнопку на своем наруче и костюм с металлическим скрипом раскрывает спину, чтобы я взобрался внутрь.

Я влезаю, царапаюсь о необработанный край, затем опускаю ноги, пристегиваюсь к лямкам экзоскелета, что будет способен отделяться от костюма, когда я закончу с броней. Его вес впервые давит на бедро, но через секунду сервоприводы включаются, принимая нагрузку на себя.

Дрожа от волнения, делаю шаг — и металл следует за мной, как вторая кожа. Но на втором шаге алгоритм теряет баланс. Гироскопы захлебываются данными, экзоскелет дергается в сторону, и я едва удерживаюсь, хватаясь за стол. В консоли полыхает красное: «FALL DETECTED».

С матами, я выбираюсь обратно, снова, падаю в ненавистное кресло, что не хочет меня отпускать. Глаза слипаются от усталости, но закрыть их — значит позволить ошибке укорениться. Перечитываю код системы балансировки. Там, где должна быть рекурсивная коррекция, я вижу линейную функцию — глупую, прямолинейную, как школьная задача. Я усмехаюсь сквозь усталость: как мог пропустить это? Переписываю, вводя обратную связь от акселерометров в реальном времени. Загружаю патч. Не сдаюсь как скалолаз зависший над пропастью!

Экзоскелет снова на мне. Первый шаг — плавный. Второй — уверенный. Третий… Я иду по мастерской, и стальные суставы поют в унисон моим мышцам. Нет больше разрыва между желанием и движением, между мыслью и действием. Только я поднимаю руку и слегка сжимаю ладонь, как экзоскелет повторяет жест, поднимая старый, побитый врагами, фанерный щит. Нет напряжения — только чистая сила, перетекающая из моего мозга в гидравлику.

Но внезапно — сбой. Датчик на колене гаснет, экзоскелет замирает, и я с грохотом падаю вперед, сильно ударяясь ладонью о бетонный пол. Боль пронзает запястье. Понимаю, что не смогу выбраться из такого положения. Пытаюсь ползти к креслу, но костюм намертво сдавил своим весом.

Ко мне подбегает Николь, девушка что-то кричит, но я практически не слышу её из-за звона в ушах. Вытянутой рукой показываю ей на ноутбук, она кивает. Когда она подносит его, я замечаю, что разбил ладонь о пол и теперь мажу кровью по клавиатуре. Лог показывает обрыв связи — похоже банальный плохой контакт. Я судорожно прописываю аварийную команду.

Костюм изгибается, с шумом открывает спину и я наконец могу выбраться из него. Девушка передо мной хлопает глазами, пытается помочь выбраться, я жестами объясняю ей, что мне ничего не требуется. Я не хочу говорить, сейчас слова излишни. Снимаю с себя потную футболку и быстро перематываю ей разбитую руку.

Начинаю проверять неисправность. Всё как я и подумал. Плохой контакт. Чищу разъем, перепрошиваю драйвер, стираю капли крови с экзоскелета. Никакой мистики — только железо и код. Только я и бесконечный танец между совершенством и хаосом. Гляжу на руку, затем на костюм.

Всё же нарушаю негласный обет молчания и прошу Нику принести мне бинты, а затем прошу её надеть наушники, так как в мастерской будет ещё много шума и крови…


К утру экзоскелет уже танцует. Я оставил его в центре мастерской, голосовой командой запустив демонстрационный режим. Он выполняет КАТА, заложенную мной в его память через последовательность цепей алгоритмов: удары, прыжки, балансировка на одной ноге. Металл скрипит, пневматика шипит, а гидравлика стойко выдерживает давление, но это уже не просто машина — это тело.

«Моё» тело, рожденное из тысячи строк кода, из бессонных ночей, из ожогов паяльником и мигающих курсоров, из знаний и навыков, впитанных кровью и потом. Тело, которое я создал сам за все эти годы, когда принял решение побороть собственную слабость, пройдя без ног путём науки и механики.

На столе валяется распечатка первых черновиков — они испещрены пометками: «Слишком медленно!», «Переписать!», «Ошибка!». Рядом лежит окровавленная перчатка с оторванным сенсором, как напоминание о десятках неудач за прошедшую ночь. Но теперь экзоскелет спокойно стоит без лебёдок верстака, сверкая стальным каркасом.

Я прикасаюсь к его «плечу», чувствуя легкую вибрацию работающих кулеров и компрессора климат-контроля. Я с нетерпением жду, когда снова взберусь в него, чтобы ощутить мощь и неуязвимость подконтрольной стали.

Я — инженер, что хотел создать для людей, потерявших возможность ходить, идеальный протез, посчитал ироничным тот факт, что моё творение сохранило свою изначальную задачу — помогать людям. Но словно ошибка в изначальном коде, он продолжил выполнять свою задачу, и он будет помогать людям, только убивая тех, кто болен неизвестной заразой.

— Витязь, заметки! — произнёс я, заметив как временно примотанная синей изолентой камера включилась. — Запись первая. Закон стального рубежа: если дорога из благих намерений привела тебя в ад, то пусть она содрогнется под твоей поступью! Конец записи! — камера погасла

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

Мастерская наполняется симуляцией рассвета. Подсветка тускло загорается, имитируя восход солнца. Отражение светодиодных полос скользит по экзоскелету, и я вижу в нем отражение — свое лицо, искаженное в блеске металле. Мы похожи — оба кривые версии друг друга.

Я сохраняю проект, архивирую код. Экзоскелет уходит в режим ожидания, тусклый индикатор гаснет. Но я знаю — он уже не мертв. Он спит, и в его сне мелькают алгоритмы, готовые проснуться по первому моему жесту, по первому слову