VI
Фрэнк Ди’Анно, который рассчитывал провести на севере Чили максимум пять дней, задержался там на долгих три недели. Ему пришлось сменить комфортабельный гостиничный номер в Каламе на мрачный следственный изолятор в Сантьяго.
Но ни частые изнурительные допросы Ди’Анно и Рейеса, ни тщательная проверка томографа не дали следствию никаких зацепок. Томограф оказался исправен и работал как швейцарские часы. Независимый эксперт подтвердил, что подобный инцидент мог произойти, только если череп несчастного мальчика был выложен изнутри металлическими пластинами, которые под действием магнитного поля могли разворотить ему голову. Однако никаких металлических пластин не было, и ничего не дали и новые исследования трупа. В крови мальчика был обнаружен целый букет гормональных стероидов, в частности альдостерон, и это было странно, но никак не объясняло, с чего это вдруг его голова лопнула, как упавший с дерева переспевший абрикос. Во всем остальном это был совершенно обыкновенный двенадцатилетний мальчик.
Еще более странно сложилась ситуация с идентификацией пустынного найденыша. Его никто не искал. Ни до, ни после инцидента никто не обратился в полицию с заявлением об исчезновении белокурого мальчика, ни одна из отдыхавших в Чили семей детей не теряла, в МИД не поступило ни одного запроса от зарубежных посольств. Скрупулезный поиск в базе данных таможенной службы среди иностранцев, въезжавших в страну в последние полгода, тоже ничем не помог. Формально пацана просто не существовало.
Следствие зашло в тупик.
В общем, продолжение дела сулило проблемы, которых никто не хотел. Поэтому спустя некоторое время тело мальчика отвезли обратно в Атакаму и там закопали. Папку с делом сожгли. Фрэнку приказали уносить подальше ноги (для верности влепив в паспорт ярко-красный штамп "ДЕПОРТИРОВАН"). Что он с радостью и сделал.
Никто не подозревал, что странный инцидент - это лишь начало настоящих проблем.
Вызов
VII
Четверг, 13 августа, 10:05 (UTC +2)
Отдел "Gaming AI"компании "Time-To-Play Technologies"
Киев, Украина
Тимур Коршак просматривал почту, когда на столе зазвонил телефон.
- Я слушаю, - парень поднял трубку.
- Тимур, - прозвучал там сухой голос босса, заставивший парня непроизвольно напрячься, - ты не занят?
- Нет… Пока нет… - Тимур нахмурился. Утренние звонки начальства, как правило, ничего хорошего не предвещали.
Шеф выдержал длинную непонятную паузу, а потом бесцветным тоном произнес:
- Тогда отрывай задницу от стула и шагай ко мне в кабинет. Есть разговор.
Тимур поморщился. Если директор по разработкам с самого утра приглашает к себе в кабинет, жди неприятностей. Это означает одно из двух: либо сверхсрочное задание из серии "умри-но-сделай", когда нужно выдать десять тысяч строк программного кода за день, либо внеплановую раздачу тумаков (как правило, из-за того, что какой-нибудь мегапродвинутый долбоюзер замордовал вчера до потери пульса всю службу поддержки). А скорее всего и то, и другое одновременно.
- Уже иду, - ответил Тимур и повесил трубку, думая, как на удивление быстро может испортиться так хорошо начавшийся день.
Пока он в задумчивости ворошил руками взлохмаченные непослушные волосы, над перегородкой, отделявшей друг от друга рабочие места, вынырнула увесистая голова Ярика.
- На ковер к Пузатому? - спросила голова, дожевывая утренний пончик. Фамилия директора по стратегическим разработкам и развитию (сокращенно - директор по СРР) - Пузатый - позволяла подчиненным обходиться без дополнительных прозвищ, хотя характер начальника, сварливый, как у разбуженного раньше срока медведя, и подталкивал к словотворчеству.
Тимур хмуро кивнул.
- Бить будет? - с нескрываемой надеждой и сарказмом поинтересовался Ярик.
- Не знаю.
- Есть за что? - не унимался Ярик.
Тимур задумался. В последнее время вроде особо не портачили.
- Не знаю, чувак…
- Значит, за старое, - авторитетно заключил коллега.
Получать тумаки "за старое" было особенно неприятно. После этого, как правило, приходилось ковыряться в древних программных кодах, которые неизвестно кто после тебя латал и перекраивал, заново вникать в концепцию модуля, а то и всей программы, выискивать кучу дополнительных файлов с функциями и классами, которыми, скорее всего, уже давным-давно никто не пользовался.
- Не дай Бог, - буркнул Тимур. - Ну, пойду, пока он не начал вонять.
- Удачи, - ехидно подмигнула голова и снова нырнула за перегородку.
Тимур перевел рабочую станцию в спящий режим. В черном дисплее отразилось его лицо: правильный овал, слегка нарушенный торчащими ушами, спокойно поблескивающие светло-серые глаза. Высокий широкогрудый Тимур не был похож на заядлого программиста с постоянной недельной щетиной, сгорбленной спиной и спасательным кругом из жира на поясе.
Оттолкнувшись вместе с креслом от стола, Тимур быстро поднялся на ноги и двинулся по направлению к начальству.
VIII
Поднимаясь по ступенькам со второго этажа на третий, где располагались кабинеты аналитиков и дирекция, Тимур продолжал размышлять, что же могло стать причиной утреннего вызова.
"Time-To-Play Technologies" сделала себе имя на том, что называется "gaming environment" - игровое окружение. Специалисты "TTP" годами разрабатывали математические модели ветра, травы, кустов, деревьев, даже отдельных листочков, камней на дороге, пыли, а также алгоритмы их взаимодействия. Упорная совместная работа математиков, физиков, 3D-моделлеров и программистов компании позволила создать максимально приближенный к реальному виртуальный мир. И дело было не только во внешнем сходстве. В играх, которые выпустила "Time-To-Play Technologies", шли "настоящие" дожди, непрерывно дули ветра, солнце пряталось за тучи и снова выходило из-за них, причем все это не было заранее запрограммировано на конкретное время и место, а происходило по "естественным" причинам, так же, как и в природе.
Тимур специализировался на ботах. Его основная задача состояла в том, чтобы "житель" такого совершенного виртуального мира вел себя реалистично. Однако из-за большого количества различных процессов, которые одновременно моделирует программа (они называются потоками), очень непросто научить бота правильно выбирать дорогу, обходя заболоченные или заросшие кустами места, прятаться с учетом текущей видимости, безошибочно определять "живые" объекты (других ботов или игрока) в среде, где движется практически все, и при этом не забывать о своей главной задаче: атаковать или защищать игрока - единственное по-настоящему мыслящее существо игрового мира. Никогда не знаешь, в каком месте и в какое время потоки пересекутся друг с другом. После того как была разработана базовая концепция "игрового интеллекта" и создано программное ядро, возникли проблемы. Оказалось, что встроить ботов в игру - еще полдела. Намного сложнее отучить их от неадекватных действий в такой сложной реальности, а именно: от расстреливания кучек опавшей листвы, взвеянной налетевшим ветром, петляния между лужами, когда до противника остаются считанные шаги, и тому подобной деятельности.
Тимуру пришлось создавать ботов, которые не просто носятся по сцене, стреляют или уворачиваются от пуль, а еще и взаимодействуют с окружающей средой. Анализируют виртуальный мир. Но благодаря этому каждая игра и получается уникальной. Сколько бы раз игрок не проходил один и тот же уровень, игра никогда полностью не повторится.
Выход в свет первой части FPS "Stalker" не на шутку встряхнул всю мировую индустрию компьютерных игр. В одних только Штатах продали более двух миллионов дисков с игрой, а чистая прибыль компании достигла 14 миллионов долларов. Причиной такого успеха стала не только старательно прорисованная непрерывная игровая среда. Фанатов компьютерных стрелялок покорило поведение ботов, которые разительно отличались от своих прямолинейных собратьев из "DOOM 3", "Half-Life 2" и даже "Unreal ІІ: Awakening". Боты были настолько реалистичны, что иногда казались… живыми. За два года никому не известная украинская компания закрепилась на рынке, получила кучу заказов и даже начала формировать тренды в игровой индустрии. И все это в значительной мере благодаря Тимуру.
Шагая по коридору, Тимур размышлял над тем, что же могло вызвать гнев начальства. Четвертый add-on к "Сталкеру" был выпущен на рынок полгода назад. Баги там, конечно, были, но это все касалось сюжета и текстур на отдельных 3D-моделях. К его ботам претензий не было. Новое поколение бойцов, над которым он сейчас трудился, было на стадии эскизного проектирования. Дай Бог, чтобы через два года их направили на тестирование.
"Значит, если влетит, то за старое", - заключил парень, остановившись у кабинета директора по СРР. Он прислушался, на миг задержавшись. Из-за дверей приглушенно доносились голоса. Пузатый был не один и разговаривал с кем-то по-английски.
Тимур глубоко вздохнул и постучал.
- Входите, - донеслось из-за двери.
Тимур изобразил беззаботность и вошел в кабинет.
- А, Тимур! Здоро́во! Заходи, садись, - директор показал на одно из кресел.
Пузатый был крупным мужчиной, совсем лысым, с соответствующим фамилии круглым брюхом. Лицо его украшала задиристая мясистая челюсть. Повернувшись к гостю, загорелому иностранцу в пижонском деловом костюме, свободно расположившемуся на кожаном диване по другую от Тимура сторону стола для переговоров, директор произнес по-английски с ужасным акцентом:
- Here is that guy! - и недвусмысленно кивнул на Тимура. Тот вежливо поздоровался и уселся в кресло, догадываясь, что переговоры между этими двумя велись о нем.
- O’kеy… I see… - вальяжно ответил незнакомец. - He’s so young.
- Only twenty seven.
- That’s strange.
Мужчина сидел, положив ногу на ногу, и небрежно разглядывал Тимура. Из его темных глаз веяло холодом и какой-то обреченностью. Тимур вдруг понял, что тумаки отменяются. Но легче ему от этого не стало.
- Оскар Штаерман, - представил незнакомца директор. Штаерман был чилийцем с еврейскими корнями.
- Тимур Коршак, - Тимур сдержанно кивнул.
- Nice to meet you, Tymur, - Штаерман говорил с едва уловимым испанским акцентом. И ни одной нотки уважения в голосе.
- Помнишь заказ трехлетней давности от "General Genetics"? - Пузатый крутнулся на кресле в сторону Тимура и заговорил по-украински. - Ну, те чудилы, что заказали только код.
Тимуру не пришлось насиловать память, чтобы вспомнить этот странноватый проект. Самое необычное и в то же время, пожалуй, самое легкое задание за всю его работу в "TTP Technologies". "General Genetics", будто бы разрабатывавшая компьютерную игру в стиле "экшн", заказала ботов, обученных действовать в команде, одним большим роем, но (!) при этом не предоставила практически никаких исходных данных и не представила среду, в которой будет происходить действие игры. Заказчику были нужны только голые операционные коды.
- Шеф, поймите, - наклонившись к Пузатому, зашептал Тимур, - я не компилировал тот код. Это было просто немыслимо! Я же не могу взять и скомпилировать отдельную процедуру или вырванный из контекста класс. У нас не было никакой возможности протестировать в реальной игре наши разработки. Поэтому если у них…
- Успокойся, - прервал его босс, - я хорошо помню эту странную заявку. К тебе нет никаких претензий. В этой ситуации я полностью на твоей стороне.
- А в чем проблема? И почему они спохватились только сейчас? Целых три года прошло!
Пузатый пожал плечами:
- Поговори с этим пижоном. Мне он ничего не стал объяснять. Хочет, мол, разговаривать только с разработчиком, то есть с тобой.
- О чем?
- О том, что его волнует. И не кипешуй. - Глаза Пузатого хитро блеснули. - Надеюсь, мы вытрясем из него немного денежек.
Тимур вытянулся в кресле и попробовал улыбнуться.
- Хай, Оскар! - еще раз поздоровался Тимур и деловито заговорил по-английски: - Это я писал коды по вашей заявке три года назад.
- Я уже это понял.
- И что у вас не в порядке?
- У меня все прекрасно, - когда Штаерман говорил, он почти не менялся в лице, словно вместо кожи у него была резиновая маска, - но вот ваши боты… С ними начались проблемы.
- Не сочтите за обычную отговорку, но здесь нет моей вины. - Надменность напомаженного гостя слегка раздражала Тимура. - Вспомните ваше техническое задание. Собственно, можно сказать, что его не было. Я находился в положении плотника, который делает рамы, не зная размеров окон.
- Так было нужно, - парировал Оскар.
- Воля ваша! Но что делать мне? За три года вы даже не сообщили, устроила ли вас наша работа. Для моих ботов нужно специфическое игровое пространство. Вполне вероятно, они оказались слишком сложными для вашего математического ядра.
- Сложными? - переспросил гость и как-то странно улыбнулся. - Нет-нет, они были прекрасными. Идеальными! Они анализировали все, что происходило вокруг, принимали решения, сотрудничали друг с другом, действуя как настоящий отряд. Для нас именно это было главным.
Тимур был несколько удивлен тем, что Штаерман говорил о виртуальных солдатах в прошедшем времени, словно речь шла о живых людях. И это изрядно резало слух.
- И что же произошло? Кто-то напортачил, оптимизируя код?
Оскар стиснул зубы так, что на щеках проступили желваки, и отвернулся к окну. Когда он снова повернул голову к Тимуру, в глазах его опять промелькнуло что-то фатальное и еще что-то такое, чего ну уж никак нельзя было ожидать от надутого заморского пижона. Неконтролируемый страх?.. Паника?.. Через мгновение Штаерман взял себя в руки, но на заданный вопрос так и не ответил.
- Позвольте мне сказать пару слов, - вмешался директор. - Мы сейчас меняем концепцию построения мира, - разумеется, он говорил о виртуальном игровом пространстве, трехмерной сцене, но все равно слова прозвучали коряво и пафосно. Он выглядел как Зевс на Олимпе. В самом худшем, если можно так выразиться, смысле. - Вместо описания поведения отдельных объектов - деревьев, облаков, ручьев или озер - мы переходим к агентно-ориентированному подходу. Если раньше облачко представляло собой 3D-модель, которая могла менять свою форму, размер, цвет и прозрачность в зависимости от концентрации влаги, двигалась в определенном направлении, изредка объединяясь с другими моделями такого же типа, то теперь это - огромное скопление, некая сеть или рой крошечных агентов, несущих в себе набор функций для взаимодействия со смежными агентами. Такая капля-агент сможет испаряться, конденсироваться, переходить в кристаллическую форму в зависимости от внешних условий, а также от состояния соседних агентов. - Несмотря на ужасный характер, директор по разработкам был прекрасным специалистом. Он продолжал: - Представьте - теплое облако-рой попадает в зону холодного воздуха. Пограничные или поверхностные агенты быстро охладятся и превратятся в жидкость - в игровом мире пойдет дождь. При конденсации из агента-капли выделяется энергия в виде тепла. Если воздух быстро нагревается, дождь прекращается, а облако, потерявшее часть агентов, плывет себе дальше. Если же будет прибывать холодный воздух, то внутренние агенты также сконденсируются и дождь будет идти, пока облако не иссякнет. На земле агенты соберутся в лужи, ручьи или озера, пока не испарятся снова. Вот такой непрерывный круговорот!
Директор испытующе взглянул на гостя. Оскар Штаерман сохранял невозмутимость. Его спокойствие граничило с безразличием. Дмитрий Пузатый продолжал:
- Конечно, на начальном этапе написание и настройка агентов занимает массу времени, но потом это окупится сторицей. Агентно-ориентированный подход снимает немало ограничений с виртуального мира. Теперь достаточно создать рельеф местности, загнать на сцену агентов, соответствующих воде, воздуху и органической материи, задать начальные условия - температуру, давление - и запустить солнце. В результате каждый раз у нас будет не просто игровая сцена, а уникальный и неповторимый виртуальный мир! - Чтобы усилить эффект от своих слов, босс взмахнул руками в воздухе. - Кстати, Тимур сейчас работает над тем, чтобы боты комфортно себя чувствовали в этом новом мире. Прежнее поколение тут не годится - они теряются, торопеют… в общем, никуда не годятся.
Тимур, подтверждая сказанное, сдержанно кивнул.
- Поэтому, может, вместо переделки старых проблемных кодов мы попробуем решить вашу задачу с помощью нового…
- Нет, - оборвал директора чилиец. - Не нужно никаких новых подходов. Мы хотим, чтобы тот, кто создал три года назад исходные коды для ботов, разобрался в проблемах. Я понятно выражаюсь? Для ботов. Точка.
Ни Тимур, ни Пузатый, конечно, не догадывались, что их гость (не будучи профессиональным программером) знает об агентном подходе не меньше и сам мог бы многое рассказать. Особенно о внешнем проявлении и о том, к каким результатам он может привести. Хотя тогда это уже не имело значения.
Слова чилийца задели Пузатого. Директор засопел и нахмурился.
- А какие именно проблемы? - фыркнул он.