
Полная версия
Мир без ошибок
— Серьёзно? — Я провела пальцами по влажной траве и стряхнула росу.
Третья попытка.
Access denied. — система отказала в доступе к закрытому разделу или данным.
В груди поднялась злость — быстрая, горячая, почти детская.
— То есть камни я могу растягивать в пять раз, воду могу остановить в воздухе, а собственное имя посмотреть нельзя? — Я коснулась кончиками пальцев собственной щеки, возвращая себя в тело.
Красная строка мигнула и исчезла.
Я ударила ладонью по панели.
— Кто это придумал?! — Я провела ладонью по рукаву, будто проверяя, что тело всё ещё здесь.
Никакого ответа.
Я стояла, тяжело дыша, и смотрела на послушный мир.
Потом медленно вернулась к AirFlow.
Пояснение: AirFlow — раздел управления потоками воздуха и ветром.
TemperatureGradient. — градиент температуры: правило, задающее, как температура меняется от одной точки пространства к другой.
Turbulence. — турбулентность: степень хаотичности и вихревого характера движения воздуха.
HumidityNoise. — случайные небольшие колебания влажности, делающие среду менее идеально равномерной.
RandomSeed. — начальное число для генератора псевдослучайности; другое значение создаёт другой рисунок случайных изменений.
Последний параметр заставил меня задержать палец.
RandomSeed. — начальное число для генератора псевдослучайности; другое значение создаёт другой рисунок случайных изменений.
Случайность.
Я увеличила значение.
И сразу убрала руку от панели, будто после настройки нужно было дать миру пространство сделать что-то самому. Я даже сделала несколько шагов назад и отвела руки за спину, чтобы не вмешиваться слишком быстро.
Ветер изменился.
Он больше не шёл ровным потоком. Один порыв ударил в плечо, другой сорвал с травы росу, третий закрутил вокруг ног сухие стебли. Воздух стал неровным, капризным, живым.
Я улыбнулась.
И тут же уменьшила параметр на несколько пунктов.
Слишком сильная турбулентность показалась опасной.
Улыбка исчезла.
Я смотрела на ползунок.
— Я просто не хочу всё сломать, — сказала я, хотя оправдываться было не перед кем.
Мир молчал.
Я оставила значение умеренным.
В тот момент мне казалось, что это разумность.
Позже я пойму: я уже начинала строить здесь не мир.
Я строила защиту от неожиданностей.
Глава 3
BiotaInitialization встретила меня мягким зелёным свечением.
Пояснение: BiotaInitialization — модуль запуска и создания живых организмов.
Я долго не нажимала.
Я прошлась по полю, вернулась, снова остановилась перед зелёной вкладкой. Несколько раз открывала соседние разделы без всякой цели и тут же закрывала их. Пальцы искали занятие, лишь бы не касаться этой кнопки.
Наконец я присела, сорвала травинку и покрутила её между пальцами. Она легко ломалась, пахла сырой зеленью и не задавала вопросов о том, почему появилась. Я бросила её и поднялась.
Почему-то создание живого — даже самого простого — ощущалось иначе, чем создание воды или камня. Возможно, потому что камень не мог убежать. Вода не могла испугаться. Воздух не мог предпочесть направление, которое мне не нравилось.
— Начнём с тех, кто не предъявляет претензий, — сказала я.
Insecta. — раздел или шаблон для создания и настройки насекомых.
Передо мной развернулась трёхмерная координатная сетка. Я собрала между ладонями сгусток светящейся материи и начала вытягивать форму.
Сгусток тянулся за пальцами вязкими нитями света. Я сводила ладони — будущая грудь становилась короче, разводила — вытягивалось брюшко. Приходилось поворачивать конструкцию в воздухе, наклоняться к ней почти носом и увеличивать отдельные участки до нелепых размеров.
Когда первая пара ног наконец встала на место, я невольно улыбнулась. На третьей паре улыбка исчезла: один сустав смотрел не туда, и при тестовом движении конечность прошла сквозь тело.
Муравей оказался сложнее, чем выглядел.
— Шесть ног. Не восемь. Соберись. — Я стиснула зубы, а потом намеренно разжала челюсть.
Я поправила геометрию, добавила суставы, сгладила хитиновый панцирь.
Я запустила короткую симуляцию ходьбы. Муравей сделал два виртуальных шага и завалился набок. Я раздражённо цокнула языком, повернула один сустав на несколько градусов и повторила. Теперь он прошёл ровно, но слишком синхронно — словно заводная игрушка.
Пришлось добавить микроскопический разброс движений. На третьем прогоне походка стала почти незаметно неровной, и только тогда я позволила себе перейти к поведению.
CollectiveIntelligence. — модель коллективного поведения, позволяющая группе существ действовать согласованно.
Pathfinding. — алгоритм поиска пути: выбор маршрута от текущей точки к цели с обходом препятствий.
ForagingBehavior. — модель поведения, отвечающая за поиск и добывание пищи.
ThreatResponse. — модель реакции на угрозу: распознавание опасности и выбор защитного поведения.
На последнем параметре я задержалась.
Страх.
Даже муравью нужен страх, чтобы выжить.
Мой палец замер.
Я посмотрела сквозь сетку на настоящую траву. Где-то там уже двигались созданные мной потоки воздуха, текла вода, падали капли. Теперь я собиралась добавить существу способность от всего этого убегать.
На секунду мне захотелось поставить ThreatResponse в ноль — просто чтобы первое живое создание в этом мире никогда не испытывало страха. Но картинка муравья, спокойно ползущего прямо под чужую ногу, быстро разрушила красивую идею.
Пояснение: ThreatResponse — модель реакции существа на угрозу.
— Ничего личного. — Я расправила пальцы и посмотрела, перестали ли они дрожать.
Я активировала систему.
С тихим «дзинь» муравей ожил, дёрнул усиками, спрыгнул с сетки и исчез в траве.
Я опустилась на корточки и несколько секунд пыталась его найти.
— Эй, я тебя сделала вообще-то. — Я коснулась кончиками пальцев собственной щеки, возвращая себя в тело.
Муравей не вернулся.
Я ещё немного пошарила пальцами между стеблями, потом обнаружила, что улыбаюсь сама себе, и выпрямилась. Колени успели намокнуть от росы. На одном осталась тёмная полоска земли.
Первое живое существо, которое я сделала, предпочло немедленно заняться своими делами. В этом было что-то одновременно обидное и правильное.
Это почему-то рассмешило меня.
Бабочка получилась красивее.
Для неё я уже не торопилась. Отошла к месту, где свет падал ровнее, подняла сетку на уровень глаз и долго меняла форму крыла по одному контрольному узлу. Слишком острый край делал её похожей на осколок стекла. Слишком округлый — на детский рисунок.
Я несколько раз закрывала параметры и просто смотрела на силуэт целиком. Потом снова приближала крыло, исправляла едва заметную асимметрию и отходила на шаг, как художник от холста.
Я вытягивала крылья до полупрозрачности, рисовала узоры прямо по мешу, меняла коэффициент преломления света, пока поверхность не стала переливаться холодными оттенками. Когда она впервые взмахнула крыльями, я отпустила её.
Пояснение: меш — трёхмерная сетка из вершин и полигонов, задающая форму поверхности 3D-модели.
Бабочка села мне на палец.
Я замерла.
— Ну вот. Хоть кто-то оценил. — Я отступила на полшага и снова всмотрелась вперёд.
Она тут же улетела.
Я проводила её взглядом. Бабочка поднялась выше моей головы, попала в порыв ветра и на мгновение сбилась с курса. Я уже подняла руку к AirFlow — почти автоматически, — но остановилась. Она сама выровнялась и скрылась над травой.
Пояснение: AirFlow — раздел управления потоками воздуха и ветром.
Рука медленно опустилась. Это маленькое исправление, которого я не сделала, почему-то принесло больше удовлетворения, чем идеальные крылья.
— Предательница. — Я подняла ладонь и тут же передумала делать следующий жест.
Заяц, куры, мелкие птицы, потом лисица.
С зайцем я провозилась из-за задних лап: первый прыжок получился настолько высоким, что он исчез из поля зрения и мягко опустился метрах в двадцати. Я рассмеялась, поймала его через интерфейс и уменьшила силу толчка.
Куры оказались шумнее, чем я ожидала. Одна после запуска сразу принялась клевать светящийся маркер координат, пока я не убрала интерфейс выше. Птицам я меняла радиус полёта несколько раз — слишком маленький превращал небо в клетку, слишком большой уводил их за горизонт.
К моменту, когда очередь дошла до лисицы, вокруг меня уже постоянно что-то двигалось. Приходилось смотреть под ноги, отмахиваться от любопытной птицы и ждать, пока очередная курица уйдёт с места, где я собиралась развернуть сетку.
С каждым существом мир становился громче. Трава шуршала уже не только от ветра. Где-то хлопали крылья. Вдалеке курица возмущённо кудахтала на пустое место. Заяц выскочил у меня из-под ног так неожиданно, что я вскрикнула и едва не упала.
— Ты с ума сошёл?! — Я провела носком по земле, оставляя короткую борозду.
Заяц, не испытывая раскаяния, исчез в траве.
Я рассмеялась.
Вот оно.
Непредсказуемость.
Я почти почувствовала удовлетворение — пока не заметила, что именно заставило зайца выскочить.
ThreatResponse: stochastic deviation 7%. — реакция на угрозу получает 7% случайного отклонения, поэтому поведение не всегда повторяется абсолютно одинаково.
Случайность была прописана мной.
Даже неожиданность случалась по разрешению.
Лисицу я создавала дольше остальных.
Я выбрала свободный участок чуть в стороне от остальных животных и села прямо на землю, устроив интерфейс перед собой. Несколько раз меняла длину лап, проверяла, как тело переносит вес на повороте, заставляла модель пройти по воображаемому склону. Один раз она слишком резко развернула голову, и от неестественного движения у меня по спине прошёл холодок.
Я исправила ограничение сустава, потёрла шею собственной ладонью и только потом вернулась к поведенческим блокам. Чем сложнее становилось животное, тем меньше мне хотелось видеть в нём механизм.
Мне хотелось, чтобы она не просто охотилась. Я добавила Curiosity, ExplorationDrive, SocialDistance. Последний параметр поставила высоким — не хотела, чтобы животное постоянно лезло ко мне.
Пояснение: Curiosity — уровень любопытства. ExplorationDrive — стремление исследовать новое и незнакомое. SocialDistance — предпочитаемая дистанция от других существ.
Ползунки стояли рядом, и я несколько раз переводила взгляд с одного на другой. Curiosity подняла, отступила, посмотрела на значение. ExplorationDrive оставила чуть ниже. SocialDistance потянула вверх одним резким движением, а потом задержала пальцы на шкале, словно оправдываясь перед ещё не существующим животным.
Пояснение: Curiosity — уровень любопытства. ExplorationDrive — стремление исследовать новое и незнакомое. SocialDistance — предпочитаемая дистанция от других существ.
Для проверки я запустила прогноз поведения. Полупрозрачная лиса прошла мимо моей проекции, остановилась на расстоянии нескольких метров и свернула в сторону. Именно этого я хотела. Почему-то результат всё равно оставил неприятный осадок.
«Удобно», — мелькнула мысль.
Я нахмурилась.
— Что удобного? Это безопасность. — Я задержала руку в воздухе, прежде чем снова опустить.
Когда лиса ожила, она сделала два шага, остановилась и посмотрела прямо на меня.
Не на интерфейс. Не на движущуюся траву.
На меня.
Её нос дрогнул.
Я не шевелилась.
— Привет. — Я прижала губы друг к другу и выдохнула через нос.
Лисица приблизилась.
— Я не опасная. — Я выдохнула через нос и заставила плечи расслабиться.
Она наклонила голову.
— В основном. — Я задержала руку в воздухе, прежде чем снова опустить.
Ещё шаг.
Я протянула руку.
Ладонь я держала низко, пальцы слегка согнула, чтобы не нависать над ней. Внезапно стало важно сделать всё «правильно», хотя никакого правила для знакомства со своей собственной лисой у меня не было.
Я старалась смотреть не прямо в глаза, а чуть в сторону. Даже дыхание замедлила, как будто зверь мог счесть мою тревогу угрозой.
Лиса понюхала пальцы — и вдруг отступила.
— Что? — Я потёрла ладони друг о друга, занимая дрожащие пальцы.
Она ещё секунду смотрела на меня, затем развернулась и ушла.
Я осталась с протянутой ладонью.
На панели мелькнула строка:
AI_Detector: CreatorEntity recognized. — система распознавания определила Аки как сущность-создателя.
Response: uncertainty. — текущая реакция существа классифицирована системой как неуверенность.
— Не понравилась, значит. — Я потерла шею ладонью, пытаясь сбросить напряжение.
Я усмехнулась, но внутри неприятно сжалось.
Это было глупо. Реакция алгоритма. Параметр. Набор вероятностей.
И всё же я поймала себя на желании открыть её код и увеличить Trust.
Пояснение: Trust — параметр доверия к другому существу.
Пальцы уже поднялись к панели.
Я остановилась.
— Нет. — Я пригладила складку на одежде, лишь бы занять руки.
Рука опустилась.
— Если ты не хочешь подходить — не подходи. — Я подняла глаза к небу и сразу вернула их к тому, что было передо мной.
Лисица давно скрылась.
Я сидела в траве и смотрела в ту сторону, куда она ушла.
Минуту спустя я поднялась и всё-таки пошла следом, но только до первых деревьев. Между стволами уже никого не было. Я коснулась коры ближайшего дерева, посмотрела на следы в мягкой земле и заставила себя не открывать поиск сущностей.
Если я найду её одной командой, подумала я, это будет не встреча. Это будет вызов функции.
Пояснение: вызов функции — запуск заранее определённой команды или процедуры с нужным действием.
Почему-то это маленькое «нет», которое мне даже никто сознательно не сказал, оказалось важнее сотни послушных команд.
Я создала ещё несколько видов. Расширила поле. Добавила неровности рельефа, небольшую рощу, ручей. Сделала облака и запретила себе вручную задавать каждому форму. Пусть генератор решает сам.
Расширение мира заняло куда больше времени, чем эти слова. Я ходила по пустым участкам и на месте решала, где земля должна подняться, а где провалиться. Один склон получился слишком ровным — я разбила его мелкими уступами. В другом месте вручную убрала три одинаковых бугра, потому что генератор подозрительно любил повторяться.
Ручей я сначала провела прямой линией и почти сразу возненавидела результат. Пришлось идти вдоль берега, точка за точкой смещая русло, пока вода не начала огибать камни и исчезать за поворотом. На одном изгибе поток стал слишком быстрым, и я босиком — кеды пришлось снять и поставить на траву — зашла по щиколотку в холодную воду, чтобы проверить течение телом, а не цифрами.
Облака дались труднее всего именно потому, что я решила не трогать форму. Первые два выглядели нелепо. Третье расползлось тонкой серой полосой. Я несколько раз поднимала руку, чтобы исправить, и каждый раз опускала. К вечеру над полем наконец плыли вещи, которые я не рисовала сама.
С каждым часом мир всё меньше напоминал пустой уровень.
Он начинал жить.
Я прошла через рощу, где уже шуршали листья, спугнула птицу с низкой ветки и остановилась у ручья. На воде плавал сорванный лист. Он зацепился за маленький камень, повернулся, несколько секунд дрожал в струе, а затем его унесло дальше.
Я ничего не сделала. Просто смотрела ему вслед, пока он не исчез за изгибом.
И всё равно я чувствовала одиночество.
Животные реагировали. Прятались. Искали пищу. Спаривались. Конфликтовали. Отдыхали.
Но никто не мог спросить меня:
«Почему?»
Никто не мог сказать:
«Ты ошиблась».
Никто не мог посмотреть на фиолетовое небо и решить, что оно уродливое.
Я поймала себя на этой мысли и рассмеялась.
— Вот этого тебе не хватает? Критика? — Я оглянулась через плечо, хотя за спиной была та же пустота.
Ветер прошёл по траве.
— Прекрасно. Человек без имени, без прошлого и, возможно, без права на существование хочет создать себе собеседника, чтобы тот с ней спорил. — Я провела ладонью по волосам, убирая их с лица.
Я легла на спину и закрыла глаза.
Несколько секунд было спокойно.
Потом в голове возник другой вопрос.
«А если он уйдёт?»
Я открыла глаза.
Небо оставалось безупречным.
Вопрос был нелепым. Я ещё никого не создала.
И всё же от самой возможности, что кто-то появится, увидит меня — и выберет не меня, в груди появилась тупая боль.
Я села слишком резко.
— Значит, надо сделать так, чтобы у него был выбор. — Я провела ладонью по рукаву, будто проверяя, что тело всё ещё здесь.
Сказала уверенно.
Почти честно.
Глава 4
Вкладка SentientEntityCreation оставалась открытой долго.
Пояснение: SentientEntityCreation — раздел создания разумной, осознающей себя сущности.
Я могла бы сказать — несколько минут. Или час. Или сутки. В этом мире время пока не имело нормального смысла. Я настроила смену освещения, но не была уверена, что это действительно день и ночь, а не просто удобная анимация.
Шаблон будущего сознания висел передо мной пустым каркасом.
Я ходила вокруг него кругами.
Трава уже примялась под моими шагами в узкое кольцо. Я то приближалась к светящемуся каркасу, то отходила к ручью, будто расстояние могло сделать решение легче. Несколько раз протягивала руку к панели и вместо этого поправляла волосы или тёрла ладонью локоть.
Каркас медленно вращался в пустоте. В нём ещё не было ни лица, ни голоса, ни желания — только место для всего этого. Именно поэтому на него было так легко проецировать будущие вопросы.
— Камень проще, — сказала я.
Каркас не спорил.
— Камень не спрашивает, зачем его сделали. — Я расправила пальцы и посмотрела, перестали ли они дрожать.
Тишина.
— Лиса тоже не спрашивает. Хотя иногда смотрит так, будто собирается. — Я расправила плечи и заставила себя не отступать.
Я остановилась перед шаблоном.
— А ты спросишь. — Я провела ладонью по затылку, собираясь с мыслями.
От этой мысли ладони вспотели.
Создать разум означало сделать то, что невозможно свести к техническому эксперименту. Если я создам сознание и потом удалю его — это будет откат версии или убийство? Если я изменю характер после запуска — исправление бага или насилие? Если сделаю его счастливым по умолчанию — будет ли это счастье чем-то значить?
Пояснение: откат версии — возврат системы к более раннему сохранённому состоянию. баг — ошибка в программе или логике системы.
Я закрыла интерфейс.
Панель сложилась, и вместе с ней исчез холодный свет на моих руках. Я пошла куда глаза глядят. Под ногами менялась трава, где-то в стороне зашуршало животное, над рощей медленно ползло облако — одно из тех, которым я запретила быть красивыми по моему приказу.
У ручья я остановилась и умыла лицо. Вода была холодной. Капли стекали с подбородка на одежду. Это простое действие занимало руки и хотя бы на минуту возвращало меня из философии в тело.
Поле стало шире.
Точнее, мне так показалось.
Шумели деревья. В ручье плескалась вода. Вдалеке мелькнул заяц. Мир был наполнен звуками, и всё же одиночество стало почти физическим — как тяжесть на груди.
Я опустилась в траву.
— Я ведь не ради науки это делаю, да? — Я расправила пальцы и посмотрела, перестали ли они дрожать.
Вопрос прозвучал тихо.
Ответ пришёл сразу.
Нет.
Не ради эксперимента.
Не ради проверки возможностей системы.
Не ради любопытства.
Мне просто было страшно оставаться единственным существом, которое знает, что оно существует.
Я обхватила колени.
Я подтянула их ближе и положила подбородок на рукав. Передо мной по травинке полз муравей — возможно, тот самый, хотя проверить это можно было за секунду. Я не стала. Он добрался до края листа, долго ощупывал пространство усиками и выбрал направление без моего участия.
Я следила за ним, пока глаза не начали уставать от мелкой точки. Странно: создать человека хотелось именно в момент, когда я училась не вмешиваться в жизнь муравья.
— Какая прекрасная причина создать человека, — усмехнулась я. — «Мне было одиноко».
Слова прозвучали жестоко.
И правильно.
Я представила, как будущая девушка — почему-то я уже думала о ней как о девушке — однажды спросит:
«Зачем я появилась?»
Что я отвечу?
«Потому что мне было страшно?»
«Потому что я хотела, чтобы кто-то смотрел на меня?»
«Потому что лиса ушла?»
Я закрыла лицо ладонями.
В голове всплыл странный образ: ребёнок собирает игрушечного друга из деталей, а потом обижается, когда тот хочет играть не по правилам.
— Нет, — сказала я. — Если я это сделаю, ты не будешь моей игрушкой.
Я поднялась и снова открыла интерфейс.
Ноги затекли. Я несколько раз переступила с пятки на носок, разминая их, и только потом вернула перед собой пустой каркас. Он вспыхнул там же, где я его оставила, без упрёка и без спешки.
Я провела ладонью сквозь его грудь. Свет расступился вокруг пальцев. Будущего сердца там ещё не было.
— Слышишь? Я даже заранее с тобой договариваюсь. — Я провела большим пальцем по костяшкам другой руки.
Каркас молчал.
— У тебя будет право не любить меня. — Я прикусила внутреннюю сторону щеки, удерживая следующую реплику.
От этой фразы внутри всё сжалось.
Я посмотрела на кнопку Initialize.
Пояснение: Initialize — команда запуска или активации созданной системы/сущности.
— Возможно. — Я повела плечом, сбрасывая неприятное напряжение.
И вот здесь я впервые поймала себя на лжи.
Не большой. Не осознанной.
Просто слово «возможно» выскользнуло раньше, чем я успела его остановить.
Я хотела создать свободное существо.
Но одновременно хотела быть для него необходимой.
И обе эти потребности казались мне одинаково добрыми.
Глава 5
Humanoid_Base_Templates оказались отвратительно удобными.
Пояснение: Humanoid_Base_Templates — библиотека базовых шаблонов человекоподобных тел.
Десятки готовых вариантов: пропорции, лица, возрастные параметры, двигательные схемы.
Я листала их и чувствовала раздражение.
Лица сменяли друг друга в полупрозрачных окнах. Я задерживала каждое на несколько секунд, поворачивала профиль, заставляла моргнуть, улыбнуться, нахмуриться. Именно движения выдавали шаблон сильнее всего: улыбки начинались в одинаковый момент, глаза блестели одинаково, голова наклонялась на один и тот же безупречный угол.
После десятого варианта я уже ходила перед интерфейсом туда-сюда. На пятнадцатом перестала даже открывать полные параметры — одного взгляда хватало, чтобы почувствовать чужую готовую задумку.
— Нет. — Я расправила плечи и заставила себя не отступать.
Следующий.
— Слишком гладко. — Я провела ладонью по бедру и заставила руку остаться там.
Следующий.
— Ты похожа на рекламу зубной пасты. — Я вытерла ладонь о брюки, хотя она была чистой.
Следующий.
— Господи, кто проектировал эти улыбки? — Я провела ладонью по бедру и заставила руку остаться там.
Я закрыла библиотеку.
— Я не хочу копию. — Я чуть повернула кисть, проверяя, не откроется ли интерфейс без команды.
Пустота вокруг интерфейса чуть мерцала.
— И не хочу идеальную куклу. — Я подняла подбородок, будто это могло сделать голос увереннее.
Через секунду я добавила:
— То есть… хочу, чтобы она была хорошей. Но не идеальной. — Я выдохнула через нос и заставила плечи расслабиться.
Я уже слышала противоречие и всё равно продолжила.
Каркас я строила сама.
Я очистила пространство перед собой и развернула пустую модель в полный рост. Сначала обозначила ось позвоночника, затем плечевой пояс, таз, длину конечностей. Светящиеся линии висели в воздухе, и я буквально ходила вокруг будущего тела, проверяя пропорции с разных сторон.
Иногда приходилось приседать, чтобы посмотреть на положение коленей, или вставать почти вплотную к кисти, увеличенной до размера моей головы. Я сгибала собственные пальцы и тут же повторяла движение на модели, сравнивая, где натягивается кожа, как меняется положение суставов.
Вместо стандартного RigidBody — NeuroMuscular_Sync. Не просто движение по команде, а отклик тела на мысль. Я формировала плечи, руки, пальцы, настраивала мелкую моторику, микрозадержки реакции, естественную асимметрию походки.
Пояснение: RigidBody — стандартный физический компонент, который заставляет объект подчиняться массе, силам, столкновениям и гравитации. NeuroMuscular_Sync — вымышленная система синхронизации мысли, нервной системы и мышечного движения.

