Читать книгу Бот - Максим Кидрук - Страница 10
Вызов
VIII
ОглавлениеПоднимаясь по ступенькам со второго этажа на третий, где располагались кабинеты аналитиков и дирекция, Тимур продолжал размышлять, что же могло стать причиной утреннего вызова.
«Time-To-Play Technologies» сделала себе имя на том, что называется «gaming environment» – игровое окружение. Специалисты «TTP» годами разрабатывали математические модели ветра, травы, кустов, деревьев, даже отдельных листочков, камней на дороге, пыли, а также алгоритмы их взаимодействия. Упорная совместная работа математиков, физиков, 3D-моделлеров и программистов компании позволила создать максимально приближенный к реальному виртуальный мир. И дело было не только во внешнем сходстве. В играх, которые выпустила «Time-To-Play Technologies», шли «настоящие» дожди, непрерывно дули ветра, солнце пряталось за тучи и снова выходило из-за них, причем все это не было заранее запрограммировано на конкретное время и место, а происходило по «естественным» причинам, так же, как и в природе.
Тимур специализировался на ботах. Его основная задача состояла в том, чтобы «житель» такого совершенного виртуального мира вел себя реалистично. Однако из-за большого количества различных процессов, которые одновременно моделирует программа (они называются потоками), очень непросто научить бота правильно выбирать дорогу, обходя заболоченные или заросшие кустами места, прятаться с учетом текущей видимости, безошибочно определять «живые» объекты (других ботов или игрока) в среде, где движется практически все, и при этом не забывать о своей главной задаче: атаковать или защищать игрока – единственное по-настоящему мыслящее существо игрового мира. Никогда не знаешь, в каком месте и в какое время потоки пересекутся друг с другом. После того как была разработана базовая концепция «игрового интеллекта» и создано программное ядро, возникли проблемы. Оказалось, что встроить ботов в игру – еще полдела. Намного сложнее отучить их от неадекватных действий в такой сложной реальности, а именно: от расстреливания кучек опавшей листвы, взвеянной налетевшим ветром, петляния между лужами, когда до противника остаются считанные шаги, и тому подобной деятельности.
Тимуру пришлось создавать ботов, которые не просто носятся по сцене, стреляют или уворачиваются от пуль, а еще и взаимодействуют с окружающей средой. Анализируют виртуальный мир. Но благодаря этому каждая игра и получается уникальной. Сколько бы раз игрок не проходил один и тот же уровень, игра никогда полностью не повторится.
Выход в свет первой части FPS[16] «Stalker» не на шутку встряхнул всю мировую индустрию компьютерных игр. В одних только Штатах продали более двух миллионов дисков с игрой, а чистая прибыль компании достигла 14 миллионов долларов. Причиной такого успеха стала не только старательно прорисованная непрерывная игровая среда. Фанатов компьютерных стрелялок покорило поведение ботов, которые разительно отличались от своих прямолинейных собратьев из «DOOM 3», «Half-Life 2» и даже «Unreal ІІ: Awakening». Боты были настолько реалистичны, что иногда казались… живыми. За два года никому не известная украинская компания закрепилась на рынке, получила кучу заказов и даже начала формировать тренды в игровой индустрии. И все это в значительной мере благодаря Тимуру.
Шагая по коридору, Тимур размышлял над тем, что же могло вызвать гнев начальства. Четвертый add-on[17] к «Сталкеру» был выпущен на рынок полгода назад. Баги[18] там, конечно, были, но это все касалось сюжета и текстур на отдельных 3D-моделях. К его ботам претензий не было. Новое поколение бойцов, над которым он сейчас трудился, было на стадии эскизного проектирования. Дай Бог, чтобы через два года их направили на тестирование.
«Значит, если влетит, то за старое», – заключил парень, остановившись у кабинета директора по СРР. Он прислушался, на миг задержавшись. Из-за дверей приглушенно доносились голоса. Пузатый был не один и разговаривал с кем-то по-английски.
Тимур глубоко вздохнул и постучал.
– Входите, – донеслось из-за двери.
Тимур изобразил беззаботность и вошел в кабинет.
– А, Тимур! Здоро́во! Заходи, садись, – директор показал на одно из кресел.
Пузатый был крупным мужчиной, совсем лысым, с соответствующим фамилии круглым брюхом. Лицо его украшала задиристая мясистая челюсть. Повернувшись к гостю, загорелому иностранцу в пижонском деловом костюме, свободно расположившемуся на кожаном диване по другую от Тимура сторону стола для переговоров, директор произнес по-английски с ужасным акцентом:
– Here is that guy![19] – и недвусмысленно кивнул на Тимура. Тот вежливо поздоровался и уселся в кресло, догадываясь, что переговоры между этими двумя велись о нем.
– O’kеy… I see… – вальяжно ответил незнакомец. – He’s so young[20].
– Only twenty seven[21].
– That’s strange[22].
Мужчина сидел, положив ногу на ногу, и небрежно разглядывал Тимура. Из его темных глаз веяло холодом и какой-то обреченностью. Тимур вдруг понял, что тумаки отменяются. Но легче ему от этого не стало.
– Оскар Штаерман, – представил незнакомца директор. Штаерман был чилийцем с еврейскими корнями.
– Тимур Коршак, – Тимур сдержанно кивнул.
– Nice to meet you, Tymur,[23] – Штаерман говорил с едва уловимым испанским акцентом. И ни одной нотки уважения в голосе.
– Помнишь заказ трехлетней давности от «General Genetics»? – Пузатый крутнулся на кресле в сторону Тимура и заговорил по-украински. – Ну, те чудилы, что заказали только код.
Тимуру не пришлось насиловать память, чтобы вспомнить этот странноватый проект. Самое необычное и в то же время, пожалуй, самое легкое задание за всю его работу в «TTP Technologies». «General Genetics», будто бы разрабатывавшая компьютерную игру в стиле «экшн», заказала ботов, обученных действовать в команде, одним большим роем, но (!) при этом не предоставила практически никаких исходных данных и не представила среду, в которой будет происходить действие игры. Заказчику были нужны только голые операционные коды.
– Шеф, поймите, – наклонившись к Пузатому, зашептал Тимур, – я не компилировал тот код. Это было просто немыслимо! Я же не могу взять и скомпилировать отдельную процедуру или вырванный из контекста класс. У нас не было никакой возможности протестировать в реальной игре наши разработки. Поэтому если у них…
– Успокойся, – прервал его босс, – я хорошо помню эту странную заявку. К тебе нет никаких претензий. В этой ситуации я полностью на твоей стороне.
– А в чем проблема? И почему они спохватились только сейчас? Целых три года прошло!
Пузатый пожал плечами:
– Поговори с этим пижоном. Мне он ничего не стал объяснять. Хочет, мол, разговаривать только с разработчиком, то есть с тобой.
– О чем?
– О том, что его волнует. И не кипешуй. – Глаза Пузатого хитро блеснули. – Надеюсь, мы вытрясем из него немного денежек.
Тимур вытянулся в кресле и попробовал улыбнуться.
– Хай, Оскар! – еще раз поздоровался Тимур и деловито заговорил по-английски: – Это я писал коды по вашей заявке три года назад.
– Я уже это понял.
– И что у вас не в порядке?
– У меня все прекрасно, – когда Штаерман говорил, он почти не менялся в лице, словно вместо кожи у него была резиновая маска, – но вот ваши боты… С ними начались проблемы.
– Не сочтите за обычную отговорку, но здесь нет моей вины. – Надменность напомаженного гостя слегка раздражала Тимура. – Вспомните ваше техническое задание. Собственно, можно сказать, что его не было. Я находился в положении плотника, который делает рамы, не зная размеров окон.
– Так было нужно, – парировал Оскар.
– Воля ваша! Но что делать мне? За три года вы даже не сообщили, устроила ли вас наша работа. Для моих ботов нужно специфическое игровое пространство. Вполне вероятно, они оказались слишком сложными для вашего математического ядра.
– Сложными? – переспросил гость и как-то странно улыбнулся. – Нет-нет, они были прекрасными. Идеальными! Они анализировали все, что происходило вокруг, принимали решения, сотрудничали друг с другом, действуя как настоящий отряд. Для нас именно это было главным.
Тимур был несколько удивлен тем, что Штаерман говорил о виртуальных солдатах в прошедшем времени, словно речь шла о живых людях. И это изрядно резало слух.
– И что же произошло? Кто-то напортачил, оптимизируя код?
Оскар стиснул зубы так, что на щеках проступили желваки, и отвернулся к окну. Когда он снова повернул голову к Тимуру, в глазах его опять промелькнуло что-то фатальное и еще что-то такое, чего ну уж никак нельзя было ожидать от надутого заморского пижона. Неконтролируемый страх?.. Паника?.. Через мгновение Штаерман взял себя в руки, но на заданный вопрос так и не ответил.
– Позвольте мне сказать пару слов, – вмешался директор. – Мы сейчас меняем концепцию построения мира, – разумеется, он говорил о виртуальном игровом пространстве, трехмерной сцене, но все равно слова прозвучали коряво и пафосно. Он выглядел как Зевс на Олимпе. В самом худшем, если можно так выразиться, смысле. – Вместо описания поведения отдельных объектов – деревьев, облаков, ручьев или озер – мы переходим к агентно-ориентированному подходу. Если раньше облачко представляло собой 3D-модель, которая могла менять свою форму, размер, цвет и прозрачность в зависимости от концентрации влаги, двигалась в определенном направлении, изредка объединяясь с другими моделями такого же типа, то теперь это – огромное скопление, некая сеть или рой крошечных агентов, несущих в себе набор функций для взаимодействия со смежными агентами. Такая капля-агент сможет испаряться, конденсироваться, переходить в кристаллическую форму в зависимости от внешних условий, а также от состояния соседних агентов. – Несмотря на ужасный характер, директор по разработкам был прекрасным специалистом. Он продолжал: – Представьте – теплое облако-рой попадает в зону холодного воздуха. Пограничные или поверхностные агенты быстро охладятся и превратятся в жидкость – в игровом мире пойдет дождь. При конденсации из агента-капли выделяется энергия в виде тепла. Если воздух быстро нагревается, дождь прекращается, а облако, потерявшее часть агентов, плывет себе дальше. Если же будет прибывать холодный воздух, то внутренние агенты также сконденсируются и дождь будет идти, пока облако не иссякнет. На земле агенты соберутся в лужи, ручьи или озера, пока не испарятся снова. Вот такой непрерывный круговорот!
Директор испытующе взглянул на гостя. Оскар Штаерман сохранял невозмутимость. Его спокойствие граничило с безразличием. Дмитрий Пузатый продолжал:
– Конечно, на начальном этапе написание и настройка агентов занимает массу времени, но потом это окупится сторицей. Агентно-ориентированный подход снимает немало ограничений с виртуального мира. Теперь достаточно создать рельеф местности, загнать на сцену агентов, соответствующих воде, воздуху и органической материи, задать начальные условия – температуру, давление – и запустить солнце. В результате каждый раз у нас будет не просто игровая сцена, а уникальный и неповторимый виртуальный мир! – Чтобы усилить эффект от своих слов, босс взмахнул руками в воздухе. – Кстати, Тимур сейчас работает над тем, чтобы боты комфортно себя чувствовали в этом новом мире. Прежнее поколение тут не годится – они теряются, торопеют… в общем, никуда не годятся.
Тимур, подтверждая сказанное, сдержанно кивнул.
– Поэтому, может, вместо переделки старых проблемных кодов мы попробуем решить вашу задачу с помощью нового…
– Нет, – оборвал директора чилиец. – Не нужно никаких новых подходов. Мы хотим, чтобы тот, кто создал три года назад исходные коды для ботов, разобрался в проблемах. Я понятно выражаюсь? Для ботов. Точка.
Ни Тимур, ни Пузатый, конечно, не догадывались, что их гость (не будучи профессиональным программером) знает об агентном подходе не меньше и сам мог бы многое рассказать. Особенно о внешнем проявлении и о том, к каким результатам он может привести. Хотя тогда это уже не имело значения.
Слова чилийца задели Пузатого. Директор засопел и нахмурился.
– А какие именно проблемы? – фыркнул он.
– Я не специалист, поэтому, к сожалению, не могу вам подробно все описать, – уклонился от ответа Оскар. – Просто ваши боты ведут себя не так, как нам бы хотелось.
– Что это значит?! – вспыхнул Пузатый, забыв о выдержке и терпении, которые необходимо соблюдать при общении с клиентами. – Они голые бегают по сцене и швыряют друг в друга собственными экскрементами вместо того, чтобы атаковать игрока?
Тимур прикусил нижнюю губу. Не потому, что ему не понравилась метафора шефа. Просто так не разговаривают с клиентом.
Штаерман проигнорировал плоскую шутку. В кабинете повисло неловкое молчание.
– Может, у вас есть видео с прохождением какой-нибудь миссии, где использован мой код? – спросил Тимур. (Поиск багов начинается с изучения видеозаписи игры с экрана монитора.) – Это бы очень помогло. Его все больше и больше удивляла эта ситуация – зачем было переться черт знает куда, если все наверняка можно решить по электронной почте или по скайпу?
Впервые с начала разговора иностранец заколебался:
– Вы не понимаете. – Косматые брови взлетели вверх, Оскар подался вперед. – Чтобы разобраться, надо оказаться на месте. Собственно, для этого я и прилетел сюда. Мне нужен ты, Тимур.
Тимур и его босс переглянулись.
– Я вас правильно понял? Вы хотите, чтобы Тимур съездил к вам?
– Да. Мы хотим взять в аренду вашего специалиста. Иначе толку не будет.
Такого поворота ни Тимур, ни босс не ждали. Еще никто и никогда не просил одолжить на время сотрудника «TTP Technologies». Это смахивало на какое-то средневековье – прислать гонца, чтобы забрать мастера к себе для работы. Чушь! И опять же – зачем посылать кого бы то ни было за тридевять земель, если обо всем можно договориться по электронке?
Директор озадаченно притих. Задумался.
– Мы щедро заплатим, – добавил чилиец.
– Мы – это кто? – вставил Тимур. Три года назад, когда ему поручили проект, который в «TTP Technologies» считали несерьезным, заказчиком выступала «General Genetics», однако договор был подписан с физическим лицом, то есть де-юре «General Genetics» не имела к нему отношения. За работу исправно платили, всегда авансом, причем деньги переводили не из США, а из какой-то латиноамериканской страны (Тимур уже не мог вспомнить, из какой именно).
– Экспериментальный центр «NGF Lab», – последовал ответ. – Научная организация, которая проводит исследования по заказу различных независимых фондов и частных лиц. Инвестиции, в основном, американские и японские.
– «NGF Lab»? – переспросил Пузатый.
– Да.
Пузатый скосил глаза на лежавшую на его столе визитку Штаермана. На ней стоял логотип другой организации – «General Genetics».
– И куда надо лететь? – поинтересовался Тимур.
Лицо Оскара не дрогнуло. Только глаза напряглись, поменяли цвет: из карих стали совсем черными. Словно вода в глубоком мрачном колодце. Не мигая, чилиец ответил:
– Лаборатория находится в пустыне Атакама. Это север Чили.
– Где?! – босс раскрыл рот.
– Чили, Южная Америка.
Тут директор вспомнил, что три года назад деньги приходили именно из чилийского банка, «ABN AMOR Bank Chili». Но чтобы экспериментальный центр находился в пустыне?! И именно в этот момент он окончательно понял, что «General Genetics», или «NGF Lab», или как там она называется, производит что угодно, но только не компьютерные стрелялки. Босс посмотрел на Тимура. «Fuck it!»[24] – одними губами выговорил парень.
– Какая, к черту, пустыня, амиго? – Пузатый отбросил формальности прочь.
– Это долго объяснять.
– Любезный, может, хватить играть в жмурки? Вы же не игры разрабатываете!
– Нет, не игры, – без колебаний, выгрызая глазами зрачки собеседника, ответил чилиец. – И нам позарез нужен человек, который три года назад сгенерировал код.
Пузатый попытался сообразить, в каких областях человеческой деятельности можно было бы использовать алгоритмы «gaming AI». Системы искусственного интеллекта? Чушь! Уподоблять синтетический игровой интеллект искусственному разуму в широком смысле – это все равно что ставить на одну ступень технологической сложности электрочайник и баллистическую ракету. Несмотря на более чем двадцатилетний стаж работы с программным обеспечением, Дмитрий Витальевич был не в состоянии догадаться, где еще, кроме компьютерных игр, может пригодиться программа управления ботами.
– Господин Штаерман, – теребя галстук, Пузатый перешел на бесцветный официальный тон, – в вашем контракте не была предусмотрена отладка. Вы не заказывали готовый продукт, а только отдельные классы и процедуры, поэтому мы не…
– Пятнадцать тысяч за неделю работы, Тимур. – Штаерман уже не смотрел в сторону директора. – Плюс двадцать тысяч премиальных, если ты решишь проблему, – отчеканил чилиец, а после добавил: – Я имею в виду долларов.
Лысый босс закашлялся. Чуть язык не проглотил. Тимур тоже был ошарашен. Столько платили топ-менеджерам в «Microsoft» или «Google».
– И на какой срок командировка? – завороженно спросил парень.
– Восемь недель. Может быть, десять. – Оскар положил на стол контракт. – Тут все расписано. Виза ждет тебя. Нужен только твой паспорт.
Тимур больше не сомневался:
– К сожалению, вынужден вам отказать… У меня в сентябре свадьба, – он повернул голову к начальнику. – Я как раз хотел просить у вас отпуск.
Пузатый с облегчением выдохнул. Едва ли не впервые он радовался, когда его подчиненный открещивался от работы.
– Считай, что ты его получил.
Углы рта у Оскара приподнялись вверх, что, вероятно, означало улыбку. Он отчеканил:
– Двадцать тысяч в неделю. Пятьдесят тысяч – премиальные. Кроме того, «NGF Lab» выплатит «TTP Technologies» любую компенсацию за отсутствие сотрудника.
Директор по стратегическому развитию и разработкам чуть не упал со стула.
«Не меньше ста шестидесяти кусков, – быстро сосчитал Тимур, – это же неплохая квартира в Киеве! И за каких-то два месяца». До головокружения лакомый кусок.
– Я… э-э-э… я должен обсудить это с невестой, – после долгих раздумий все еще сконфуженно пробурчал Тимур.
– Ответ мне нужен не позднее завтрашнего утра. Не позднее.
– Так быстро…
– У меня нет выбора.
– О’кей. Но даже если я соглашусь, – взвешивая каждое слово, произнес Тимур, – вы должны понимать, что отладить код будет непросто.
– Почему? – спросил Штаерман, и Тимур подумал, что тот ничего не понимает в программировании.
– Вы говорите, что наши боты ведут себя не так, как вам хочется?
– Да.
– Для того чтобы это понять, вы должны были скомпилировать мой код и запустить его на выполнение.
Оскар кивнул.
– Вы не могли скомпилировать код, не вставив его в тело основной программы, – развивал мысль Тимур. – Я писал только разрозненные куски, причем не DLL-библиотеки[25], а отдельные классы и процедуры. Коды нужно было дорабатывать, подгонять под основной игровой модуль.
– Конечно. С эти справились наши программисты. И что?
– Мне придется ковыряться в вашем коде, чтобы понять, как он соотносится с моим. Дело в том, что ваша проблема может не решаться в принципе.
Лицо чилийца и дальше оставалось спокойным, однако пальцы его правой руки нервно теребили запонку на левом манжете.
– Решение должно быть, – ответил Штаерман. – В этом у меня нет никаких сомнений. Ведь поначалу все работало очень хорошо.
– А потом стало работать плохо? – Тимур саркастически хмыкнул. – Код программы – это не металлическая деталь, которая может стереться или сработаться. Он либо работает, либо нет.
– Я не сказал «плохо». Я сказал «не так, как нужно».
Последняя фраза должна была бы насторожить программиста. Но цифра в 160 000 USD просто снесла ему крышу. Выдержав паузу, он сказал:
– Хорошо. Я подумаю, – в голове гудело, словно по ней врезали сковородкой.
– Ответ нужен к завтрашнему утру, – еще раз подтвердил ультиматум Оскар.
«У них таки горит», – отметил про себя Тимур.
– Вечером я позвоню Дмитрию Витальевичу и сообщу свое решение.
– Прекрасно. Я буду ждать, – холодно процедил чилиец.
Тимур поднялся.
– Ты уверен, что хочешь этого? – Пузатый перешел на украинский. – Готов отменить свадьбу? На месте невесты я бы тебе яйца оторвал.
– Не знаю, – пожал плечами программист. Тимур был ошеломлен. В голове бурлило, как в котле. – Такая сумма… Надо все обдумать.
Выходя из кабинета, Тимур еще раз взглянул на директора. Пузатый понял все без слов и утвердительно кивнул.
– Не переживай, – четко произнес он, – я немедленно отдам контракт девочкам в юридический отдел. И если там есть хотя бы один пункт, по которому они могут тебя кинуть, мы пошлем этого хмыря в задницу.
– Спасибо.
– А теперь вали отсюда. И думай. А лучше не думай, а поговори с будущей женой. Понял, салага?
– Да, шеф.
И Тимур закрыл за собой дверь.