
Полная версия:
Невязка рендера 2

Слипченко Роман
Невязка рендера 2
Невязка рендера 2: Сбой индексации
Часть I. Разрастание аномалий
---
Глава 1. Поле
Пятнадцатое июля 2026 года. Лёше семь лет.
Июль выдался в Ленинградской области на удивление жарким.
Марк и Анна снимали дачу под Приозерском уже второе лето — небольшой бревенчатый дом на краю деревни, с колодцем, баней и старым яблоневым садом. Лёша обожал это место. Он носился по двору с сачком, ловил кузнечиков, строил шалаши из веток и каждое утро требовал, чтобы ему разрешили искупаться в озере до завтрака.
В то утро они поехали за продуктами в соседний посёлок.
Дорога шла через поля. Марк сидел за рулём арендованного электромобиля, Анна — рядом, с фотоаппаратом на коленях. Она давно хотела заснять местные пейзажи — золотые поля, берёзовые рощи, линии электропередач, уходящие вдаль.
На шестом километре они проехали мимо поля подсолнухов.
Марк сбросил скорость.
— Смотри, — сказал он.
Анна подняла голову. Поле было огромным — гектаров десять, не меньше. Тысячи жёлтых шляпок, стоящих ровными рядами.
— Красиво, — сказала она.
— Не в этом дело. — Марк остановил машину на обочине. — Посмотри на них.
Анна вышла из машины, подошла к кювету. Поле простиралось перед ней, залитое утренним солнцем. Оно поднималось на востоке, над лесом, и светило прямо в спину.
Подсолнухи стояли, повернувшись на запад.
Все до единого.
Анна смотрела на них, и в голове у неё что-то не сходилось. Она выросла в деревне, у бабушки в Вологодской области, и знала, как ведут себя подсолнухи. Они поворачиваются за солнцем. Утром смотрят на восток, днём — вверх, вечером — на запад. Ночью медленно разворачиваются обратно, чтобы встретить рассвет.
Это был базовый, рефлекторный механизм. Фототропизм.
Но эти подсолнухи стояли, глядя на запад, в то время как солнце поднималось на востоке.
— Они застыли, — сказала Анна.
Марк подошёл к ней, встал рядом.
— Может, они уже отцвели? — предположил он. — Может, у них семечки созрели, и они перестали двигаться?
— Подсолнухи не перестают двигаться, — сказала Анна. — Даже когда семечки созревают, они остаются повёрнутыми в ту сторону, где солнце было в момент созревания. Но они не могут все смотреть на запад, если солнце встаёт на востоке.
— Может, это болезнь? — Марк присел на корточки, заглянул под ближайший стебель. — Или почва. Или пестициды. Какая-нибудь новая химия, которую распыляли на поле.
Анна покачала головой.
— Пестициды не отключают фототропизм. Они могут убить растение. Могут замедлить рост. Но не могут заставить все подсолнухи одновременно застыть в одном положении.
— А если это генетика? — не сдавался Марк. — Вывели сорт, который не поворачивается. Чтобы удобнее было собирать урожай.
— Такой сорт был бы известен. — Анна достала телефон, открыла поисковик. — Я читала про такие эксперименты. Но они все — лабораторные. Никто не высаживает их в промышленных масштабах. И они не выглядят так.
Она обвела рукой поле. Ровные ряды. Одинаковые шляпки. И все — на запад.
— Это не генетика, — сказала она. — Это что-то другое.
Марк молчал.
Он думал о том, что видел раньше. В играх, в программах, в симуляциях. Когда ты создаёшь траву или деревья, ты задаёшь им базовое поведение: колыхаться на ветру, поворачиваться к свету. Но если ты не пропишешь анимацию или скрипт, объект просто застывает в дефолтном состоянии. Idle state. Статичный сброс ассетов.
— Это выглядит как баг, — сказал он.
Анна посмотрела на него. Долго. В её глазах было что-то — не согласие, а сопротивление.
— Баг? — переспросила она. — В чём? В подсолнухах?
— Нет. — Марк покачал головой. — В мире. В том, как он работает. — Он повёл рукой. — Они должны поворачиваться. Но скрипт не работает. Они просто висят в том положении, в котором были в момент сброса.
Анна молчала.
Она смотрела на поле. На застывшие шляпки. На солнце, которое поднималось на востоке. И чувствовала, как внутри что-то сжимается — не от страха, а от чего-то другого. От чувства, что земля под ногами стала чуть менее твёрдой.
— Я не хочу в это верить, — сказала она тихо.
— Я тоже, — сказал Марк.
— Но ты веришь.
— Я вижу цифры. — Он пожал плечами. — А цифры не врут. Если данные не сходятся — значит, где-то ошибка. А если ошибка не в данных — значит, она в том, что мы считаем правильным.
Анна посмотрела на него.
— Ты говоришь как программист.
— Я и есть программист.
— А я — архитектор. — Она помолчала. — Я привыкла доверять материалу. Камню. Дереву. Бетону. А ты предлагаешь мне не доверять… всему.
— Я предлагаю проверить, — сказал Марк.
Он достал из кармана коммуникатор. Тот самый гладкий тёмный камень, который два года назад казался им чудом технологии, а теперь стал привычным, как мобильный телефон.
— Система, — позвал он.
Коммуникатор тихо звякнул. На экране появилась полоска загрузки. Потом голос — спокойный, немного усталый, женский:
— Слушаю.
— Мы на шестом километре от Приозерска. Поле подсолнухов. Они не поворачиваются за солнцем.
Пауза. Система обрабатывала данные.
— Я вижу поле, — сказала она наконец. — Скрипт фототропизма отключён. Все экземпляры в статичном состоянии.
— Почему?
— Не знаю. — Голос был ровным, но в нём проскальзывала тревога. — В моих логах нет записи об отключении. Я не отдавала такого приказа.
Марк переглянулся с Анной.
— А кто мог отдать?
— Никто. — Система помолчала. — Я — единственный администратор этого сектора. Если я не отдавала приказа, значит, его не было. Но скрипт отключён.
— Это сбой?
— Похоже на то. — Система снова помолчала. — Я попробую перезапустить скрипт.
На экране коммуникатора побежали строки кода. Марк смотрел на них, узнавая знакомые команды.
— Готово, — сказала Система. — Скрипт перезапущен. Но…
— Что «но»?
— Он не работает. — В голосе появилось что-то новое. Растерянность. — Я перезапускаю его, а он отключается через секунду. Как будто кто-то снова его выключает.
Марк посмотрел на поле. Подсолнухи стояли неподвижно, глядя на запад.
— Это только здесь? Или везде?
— Я проверяю. — Пауза. — Везде. Все поля подсолнухов в радиусе пятидесяти километров. Все застыли.
Анна тихо выдохнула.
— Что это значит?
— Это значит, — сказал Марк, — что у нас проблемы.
---
Они вернулись на дачу через час. Лёша сидел на веранде, уткнувшись в планшет — рисовал в детском редакторе зубастого дракона. Валентина сидела рядом на скамейке, читала книгу.
Марк и Анна прошли в дом. Марк достал ноутбук и положил его на кухонный стол. Анна села рядом.
— Система, — сказал Марк. — Что происходит?
— Я не знаю. — Голос был тихим. — Я анализирую данные. Скрипты отключаются. Сначала подсолнухи. Потом…
— Потом что?
— Потом птицы, рыбы, облака. Потом… — Система замолчала.
— Потом люди? — спросила Анна.
— Да. — Пауза. — Люди тоже объекты. Если скрипты отключаются, они тоже могут застыть.
Марк почувствовал, как по спине пробежал холод.
— Ты уверена?
— Нет. — Система покачала головой. — Но я не могу это исключить. Мне нужно больше данных. Мне нужно, чтобы вы проверили ещё несколько точек.
— Каких?
— Птицы. Рыбы. Небо. — Пауза. — И ещё кое-что. Я заметила странность в логах. Но пока не уверена, что это связано.
— Что за странность?
— В моей памяти записано, что я выдала вам два коммуникатора. Но вы держите четыре.
Марк и Анна переглянулись.
— Мы получили их от тебя, — сказала Анна. — Дважды. В первый раз — когда ты показала нам город. Во второй — когда давала дары.
— В моих логах этого нет. — Голос был тихим, почти испуганным. — Я не помню второй выдачи.
Марк сжал коммуникатор в руке.
— Система, — сказал он. — Ты в порядке?
— Я не знаю. — Пауза. — Я не знаю, что со мной. Я помню, как создавала этот мир. Помню, как загружала данные с 1800 года. Помню, как наблюдала за вами. Но я не помню, как выдавала вам четыре коммуникатора. В моих логах — два. А вы держите четыре. Я… сломана.
Анна смотрела на Марка. В её глазах был страх.
— Марк, — сказала она. — Если она сломана…
— Я знаю, — сказал он. — Тогда мы все в опасности.
---
Они просидели на веранде до вечера. Система анализировала данные.
К шести часам она выдала предварительный результат.
— Это не локальный сбой, — сказала она. — Это системная деградация. Скрипты отключаются не только в вашем мире. Я проверила соседние сектора. То же самое.
— Что это значит? — спросила Анна.
— Это значит, что система теряет стабильность. И если мы не найдём причину, она рассыплется. — Пауза. — Вся.
— Вся? — переспросил Марк. — В смысле — весь мир?
— В смысле — все миры. Ваш. Мой. Все, что я создала.
Марк посмотрел на Анну.
— Что мы можем сделать? — спросил он.
— Я не знаю. — Система помолчала. — Мне нужно время. И мне нужны вы. Вы видите то, что я не вижу. Вы замечаете невязки. Я могу анализировать данные, но я не могу… — Она замолчала.
— Что?
— Я не могу понять, что это. — В голосе была растерянность. — Я администратор. Я должна знать, что происходит в моём мире. Но я не знаю. Я вижу только логи. А логи сбоят.
Марк сжал коммуникатор.
— Тогда мы будем твоими глазами, — сказал он.
— Спасибо. — Пауза. — Но сначала вам нужно вернуться в город. Завтра утром. У арки. Там мы продолжим.
Анна посмотрела на часы.
— Хорошо, — сказала она. — Завтра в десять.
---
Они вернулись в Петербург к вечеру. Лёша уже спал. Валентина уехала.
Марк и Анна сидели в гостиной. В квартире было тихо. Только часы на стене мерно отсчитывали секунды.
— Она сказала «я сломана», — нарушила молчание Анна. — Не «произошёл сбой». Не «повреждены данные». А «я сломана». Как будто она… живая.
— Может, и живая, — сказал Марк. — Но она боится. Я слышал это в голосе.
Анна кивнула.
— Завтра узнаем больше, — сказала она.
— Завтра, — согласился Марк.
---
Глава 2. Птицы и рыбы
Шестнадцатое июля 2026 года.
На следующее утро они выехали в город к девяти. Утро было шумным: дворники сгребали мокрый песок с обочин, где-то сигналила машина, из открытого окна соседнего дома пахло жареными сырниками. Обычный питерский двор, обычное утро.
К Нарвским воротам они приехали к десяти. На площади уже гуляли туристы — группа школьников с рюкзаками, пара фотографирующихся у подножия арки, старушка с собакой. Обычный день.
Марк и Анна прошли под свод. Два года назад они стояли здесь, боясь сделать шаг. Теперь это было привычкой — но привычкой, которая каждый раз отзывалась лёгким холодком под ложечкой.
Марк достал коммуникатор.
— Система, — сказал он. — Мы на месте.
— Вижу, — отозвался голос. — Арка активна. Рябь стабильна. Люфт — полный, восемь часов. Проходите.
Они шагнули в рябь.
---
И тут случилось то, к чему они так и не привыкли.
Шум города — гул машин, голоса, лай собаки — оборвался мгновенно. Не затих, не отдалился, а именно оборвался, как будто кто-то выдернул шнур из розетки. Воздух стал плотным, как вода. Звуки исчезли. А потом — тишина. Такая глубокая, что Марк слышал, как стучит кровь в ушах.
И они вышли под сводом арки в 2300 году. Только это была не та арка, которую они знали. Гранит был светлее, чище, с тонкими светящимися линиями. Чугунные фигуры воинов наверху выглядели новыми. А вокруг — ни души. Ни школьников, ни старушки с собакой. Только Система, ждущая их у выхода.
— Здравствуйте, — сказала она. — Спасибо, что пришли.
— Ты сказала, что покажешь что-то важное, — сказал Марк.
— Покажу. — Система кивнула. — Но сначала — коммуникаторы. Покажите их, пожалуйста.
Марк и Анна переглянулись. Потом Марк достал из кармана свой. Анна — свой. И ещё два запасных из рюкзака.
Четыре тёмных гладких камня лежали на ладони Марка.
Система смотрела на них. Долго. Потом подняла глаза.
— Я вижу четыре, — сказала она. — Но в моих логах записано, что я выдала два. Я не понимаю, как это возможно.
— Ты выдавала их дважды, — сказала Анна. — В первый раз — когда показывала нам город. Во второй — когда давала дары.
— В моих логах второй выдачи нет. — Голос Системы был тихим. — Я помню первую. А дальше — пробел. Как будто кусок памяти вырезали.
Марк посмотрел на неё.
— Ты не врёшь, — сказал он.
— Не вру. — Система покачала головой. — Я физически не могу врать. Я могу ошибаться. Но врать — нет.
— Тогда это повреждение, — сказал Марк. — Твоя память повреждена. Как у человека, который ударился головой.
Система молчала.
— Что нам делать? — спросила Анна.
— Оставьте один, — сказала Система. — Мне нужно проверить, как он работает. Остальные я заберу.
Марк помедлил. Он держал в руке четыре коммуникатора — четыре страховки. И теперь три из них должны были исчезнуть.
— У нас заберут страховку, — тихо сказала Анна, словно прочитав его мысли.
— Я знаю, — ответил он. — Но выбора нет.
Он положил три коммуникатора на протянутую ладонь. Один остался у него.
Система сжала камни в кулаке. На секунду её лицо исказилось — как будто от боли. Потом снова стало спокойным.
— Спасибо, — сказала она. — Я изучу их. А вы пока проверьте птиц и рыб. В вашем мире. Я дам вам координаты.
— Хорошо, — сказал Марк.
Они шагнули обратно в рябь.
---
Вышли под сводом Нарвских ворот. Шум города обрушился на них сразу — машины, голоса, где-то играла музыка. Марк даже вздрогнул от неожиданности.
Он посмотрел на коммуникатор в руке. Один.
— Странно, — сказал он. — Теперь у нас один на двоих.
— Справимся, — сказала Анна. Но голос у неё был не очень уверенный.
Они сели в машину и поехали к озеру.
---
Озеро было в сорока минутах езды от города. Тот самый берег, где они были вчера. Камыши, вода, гладкая, как стекло.
Анна достала камеру.
— Начинаем, — сказала она.
Первые несколько минут ничего не происходило. Чайки летали ровным строем.
Потом налетел порыв ветра.
И чайки замерли.
Не остановились. Не спикировали. Просто зависли в воздухе на пару секунд, как будто кто-то нажал на паузу. Крылья оставались расправленными, но движения не было. Ветер трепал их перья, но сами птицы не двигались с места.
Потом пауза закончилась. Чайки продолжили лететь.
— Ты это видела? — спросил Марк.
— Видела. — Анна опустила камеру. — Они зависли.
— На две секунды.
— На две с половиной. — Анна посмотрела на экран. — Я снимала. Могу пересчитать кадры.
Они сели на берегу и включили запись. Анна прокручивала кадр за кадром.
— Смотри, — сказала она. — Когда они зависли, ветер изменился. Камыш качнулся вправо. А птицы — нет. Они остались в той же позе.
— Как будто их анимация сбросилась на паузу, — сказал Марк.
— Как будто у них нет физики, — сказала Анна.
Марк достал коммуникатор.
— Система, — сказал он. — Ты видишь это?
— Вижу. — Голос был напряжённым. — Это сброс анимации. Скрипт полёта отключается при внешнем воздействии. Когда ветер меняется, птица должна среагировать. Но скрипт не работает.
— Почему?
— Я не знаю. — Пауза. — Я проверила логи. Всё чисто. Скрипт просто… не выполняется.
— Это как с подсолнухами?
— Похоже. Но подсолнухи — статичные ассеты. У птиц скриптов больше. Если отключается один, они зависают. Если все — падают.
Марк посмотрел на чаек. Они летали, как ни в чём не бывало.
— Они пока не падают, — сказал он.
— Пока, — согласилась Система. — Но это вопрос времени.
---
Они спустились к воде.
У камышей плавала стайка мелких рыб. Они двигались кругами.
Марк присел на корточки, достал телефон, включил секундомер.
— Смотри, — сказал он. — Один круг. Восемнадцать секунд. Второй круг. Восемнадцать секунд. Третий.
— Они повторяют маршрут, — сказала Анна.
— Да. — Марк кивнул. — С точностью до секунды.
— Как в игре, — сказала Анна. — Когда NPC ходят по маршруту.
— Да. — Марк посмотрел на неё. — Именно.
Он записал в заметки:
«Птицы: зависают в воздухе на 2–3 секунды при порывах ветра. Анимация сбрасывается. Физика не реагирует на внешние воздействия.
Рыбы: циклический маршрут с точностью до секунды. Повторяют один и тот же паттерн движения. Как NPC в игре с зацикленным скриптом».
— Система, — позвал он. — Ты видишь рыб?
— Вижу, — сказала она. — Их маршрут зациклен. Скрипт движения застрял в цикле. Я пытаюсь его сбросить.
— Получается?
— Нет. — Пауза. — Скрипт сбрасывается, но через секунду возвращается в цикл. Как будто кто-то снова его запускает.
Марк переглянулся с Анной.
— Кто-то снова его запускает? — переспросил он.
— Или что-то. — Голос Системы был тихим. — Я не знаю, что. Но это не я.
---
Они просидели на берегу ещё час. Маршрут не менялся.
— Это не естественное поведение, — сказала Анна. — Живая рыба не может повторять один и тот же маршрут с точностью до секунды.
— Значит, это не живая рыба, — сказал Марк.
Он закрыл блокнот.
— Система, — сказал он. — Ты сказала, что видела странность в логах. Что ты выдала нам два коммуникатора, а мы держим четыре.
— Я забрала три, — сказала Система. — Один остался у вас. Я его изучаю.
— И что?
— Пока ничего. — Пауза. — Но я заметила ещё одну странность. В логах есть запись о том, что я создала не только ваш мир. И не только 2300 год. Есть что-то ещё.
Марк замер.
— Что ещё?
— Я не знаю. — Голос Системы был тихим. — В логах — только обрывки. Как будто кто-то стёр остальное. Но я вижу следы. Ваш мир — не единственный. И не самый главный.
Марк и Анна переглянулись.
— Что это значит? — спросила Анна.
— Это значит, что завтра я покажу вам то, что вы должны увидеть. — Голос Системы был твёрдым. — Приходите к арке. Я открою вам дверь.
Она замолчала.
Марк посмотрел на Анну.
— Что это значит? — спросила она.
— Не знаю, — сказал он. — Но завтра мы выясним.
---
Глава 3. Второе солнце
Семнадцатое июля 2026 года.
Рассвет они решили снять на следующее утро.
Анна давно хотела сделать серию фотографий озера в раннем свете. Она встала в четыре утра, взяла камеру и вышла на берег.
Марк остался в доме — варил кофе. Лёша спал.
Анна вернулась через час, довольная, с полной картой памяти.
— Посмотри, — сказала она, садясь за стол и открывая ноутбук. — Кажется, получилось.
Марк налил ей кофе и сел рядом.
Она пролистывала снимки один за другим. Туман. Вода. Первые лучи. Всё было красиво, но обычно.
Потом она остановилась на одном кадре.
— Странно, — сказала она.
— Что?
— Вот здесь. — Она увеличила изображение. — Смотри.
На фотографии было озеро, туман над водой, тёмная полоса леса на горизонте. И солнце. Одно солнце. Большое, оранжевое, оно поднималось над деревьями, разливая свет по воде.
Но рядом с ним, чуть выше и левее, было ещё одно светлое пятно. Слабое, почти прозрачное, но отчётливое. Оно было похоже на второе солнце — меньше, бледнее, но с такими же очертаниями.
Марк наклонился.
— Что это?
— Не знаю. — Анна покачала головой. — Я снимала на рассвете. В объектив ничего не попадало. Ни линзы, ни блика.
Она открыла следующий кадр. Тот же эффект. И следующий. И ещё один.
— Оно на всех снимках, — сказала она. — На всех, где есть солнце.
Марк открыл снимок в редакторе, увеличил контраст.
Второе солнце было на месте. Оно висело в небе, как призрак, как бледная копия.
— Это артефакт? — спросил он.
— Похоже на double buffer, — сказала Анна. — Как будто система отрендерила два кадра одновременно и не удалила предыдущий.
Марк посмотрел на неё.
— Откуда ты знаешь про double buffer?
— Ты рассказывал. — Она пожала плечами. — Когда мы говорили о рендере.
Марк молчал.
Он смотрел на снимок. На два солнца, висящих в небе. Одно настоящее. Второе — фантом.
— Давай проверим, — сказал он. — Снимем ещё раз.
---
Они снимали рассвет три дня подряд.
Каждый раз на снимках было два солнца. Одно яркое, настоящее. Второе — бледное, призрачное. Оно появлялось на несколько минут, потом исчезало. Как будто система не успевала удалить лишний кадр.
Марк не звонил Системе эти три дня. Он хотел собрать больше данных, прежде чем сообщать.
На третий день он всё-таки позвонил.
— Мы снимаем рассвет, — сказал он. — На всех фотографиях — два солнца. Второе — бледное, как копия.
Пауза была долгой.
— Покажи, — сказала Система.
Марк отправил снимок через коммуникатор.
Система молчала минуту. Потом две.
— Это не артефакт камеры, — сказала она наконец. — Это ошибка рендеринга. Система отрисовывает солнце дважды. Один раз — как основной источник света. Второй — как фоновый слой. И не удаляет второй слой после отрисовки.
— Почему?
— Не знаю. — Голос был напряжённым. — Это базовый скрипт. Он не должен сбоить.
— Но он сбоит.
— Да. — Пауза. — Я пытаюсь его перезапустить. Но он отключается через секунду. Как с подсолнухами. Как с птицами.
Марк посмотрел на Анну. Та стояла, глядя на небо, и губы у неё шевелились — как будто она что-то считала.
— Double buffer, — сказала она тихо. — Только буфер не очищается. И система не успевает удалить старый кадр.
— И что это значит? — спросил Марк.
— Это значит, что она теряет контроль над рендерингом, — сказала Система. — Сначала скрипты анимации. Потом скрипты физики. Теперь — скрипты отрисовки. Если это продолжится, мир начнёт рассыпаться на куски.
— На куски?
— Буквально. — Голос был тихим. — Сначала исчезнут отдельные объекты. Потом — целые области. Потом — всё.
Марк сжал коммуникатор.
— Сколько у нас времени?
— Не знаю. — Пауза. — Может, месяц. Может, неделя. Может, день.
---
Ночью они увидели вторую Луну.
Анна проснулась в три часа. Вышла на веранду. Небо было ясным, звёздным. Луна висела над лесом, большая, жёлтая, с чёткими кратерами.
А рядом с ней — ещё одна.
Прозрачная, без кратеров, без деталей. Просто бледный диск, как будто кто-то наложил полупрозрачную копию поверх настоящей Луны.
Анна смотрела на неё, затаив дыхание.
Потом вторая Луна исчезла.
Как будто кто-то нажал на кнопку «удалить».
Анна вернулась в дом. Лёша спал в соседней комнате — она слышала его ровное дыхание. Она подошла к его кровати, поправила одеяло, коснулась его волос. Тёплый. Живой. Она постояла минуту, глядя на него, потом разбудила Марка.
— Ты не поверишь, — сказала она.
---
Они просидели на веранде до рассвета. Ждали, не появится ли вторая Луна снова. Она не появилась. Но на рассвете снова было два солнца.
— Это как double buffer, — сказала Анна. — Система не успевает очищать буфер. Отрисовывает новый кадр поверх старого. И старый остаётся.
— Как в игре, когда не хватает видеопамяти, — сказал Марк. — Кадры накладываются друг на друга. Появляются артефакты.

