VII
Четверг, 13 августа, 10:05 (UTC +2)
Отдел «Gaming AI»[15]компании «Time-To-Play Technologies»
Киев, Украина
Тимур Коршак просматривал почту, когда на столе зазвонил телефон.
— Я слушаю, — парень поднял трубку.
— Тимур, — прозвучал там сухой голос босса, заставивший парня непроизвольно напрячься, — ты не занят?
— Нет… Пока нет… — Тимур нахмурился. Утренние звонки начальства, как правило, ничего хорошего не предвещали.
Шеф выдержал длинную непонятную паузу, а потом бесцветным тоном произнес:
— Тогда отрывай задницу от стула и шагай ко мне в кабинет. Есть разговор.
Тимур поморщился. Если директор по разработкам с самого утра приглашает к себе в кабинет, жди неприятностей. Это означает одно из двух: либо сверхсрочное задание из серии «умри-но-сделай», когда нужно выдать десять тысяч строк программного кода за день, либо внеплановую раздачу тумаков (как правило, из-за того, что какой-нибудь мегапродвинутый долбоюзер замордовал вчера до потери пульса всю службу поддержки). А скорее всего и то, и другое одновременно.
— Уже иду, — ответил Тимур и повесил трубку, думая, как на удивление быстро может испортиться так хорошо начавшийся день.
Пока он в задумчивости ворошил руками взлохмаченные непослушные волосы, над перегородкой, отделявшей друг от друга рабочие места, вынырнула увесистая голова Ярика.
— На ковер к Пузатому? — спросила голова, дожевывая утренний пончик. Фамилия директора по стратегическим разработкам и развитию (сокращенно — директор по СРР) — Пузатый — позволяла подчиненным обходиться без дополнительных прозвищ, хотя характер начальника, сварливый, как у разбуженного раньше срока медведя, и подталкивал к словотворчеству.
Тимур хмуро кивнул.
— Бить будет? — с нескрываемой надеждой и сарказмом поинтересовался Ярик.
— Не знаю.
— Есть за что? — не унимался Ярик.
Тимур задумался. В последнее время вроде особо не портачили.
— Не знаю, чувак…
— Значит, за старое, — авторитетно заключил коллега.
Получать тумаки «за старое» было особенно неприятно. После этого, как правило, приходилось ковыряться в древних программных кодах, которые неизвестно кто после тебя латал и перекраивал, заново вникать в концепцию модуля, а то и всей программы, выискивать кучу дополнительных файлов с функциями и классами, которыми, скорее всего, уже давным-давно никто не пользовался.
— Не дай Бог, — буркнул Тимур. — Ну, пойду, пока он не начал вонять.
— Удачи, — ехидно подмигнула голова и снова нырнула за перегородку.
Тимур перевел рабочую станцию в спящий режим. В черном дисплее отразилось его лицо: правильный овал, слегка нарушенный торчащими ушами, спокойно поблескивающие светло-серые глаза. Высокий широкогрудый Тимур не был похож на заядлого программиста с постоянной недельной щетиной, сгорбленной спиной и спасательным кругом из жира на поясе.
Оттолкнувшись вместе с креслом от стола, Тимур быстро поднялся на ноги и двинулся по направлению к начальству.
VIII
Поднимаясь по ступенькам со второго этажа на третий, где располагались кабинеты аналитиков и дирекция, Тимур продолжал размышлять, что же могло стать причиной утреннего вызова.
«Time-To-Play Technologies» сделала себе имя на том, что называется «gaming environment» — игровое окружение. Специалисты «TTP» годами разрабатывали математические модели ветра, травы, кустов, деревьев, даже отдельных листочков, камней на дороге, пыли, а также алгоритмы их взаимодействия. Упорная совместная работа математиков, физиков, 3D-моделлеров и программистов компании позволила создать максимально приближенный к реальному виртуальный мир. И дело было не только во внешнем сходстве. В играх, которые выпустила «Time-To-Play Technologies», шли «настоящие» дожди, непрерывно дули ветра, солнце пряталось за тучи и снова выходило из-за них, причем все это не было заранее запрограммировано на конкретное время и место, а происходило по «естественным» причинам, так же, как и в природе.
Тимур специализировался на ботах. Его основная задача состояла в том, чтобы «житель» такого совершенного виртуального мира вел себя реалистично. Однако из-за большого количества различных процессов, которые одновременно моделирует программа (они называются потоками), очень непросто научить бота правильно выбирать дорогу, обходя заболоченные или заросшие кустами места, прятаться с учетом текущей видимости, безошибочно определять «живые» объекты (других ботов или игрока) в среде, где движется практически все, и при этом не забывать о своей главной задаче: атаковать или защищать игрока — единственное по-настоящему мыслящее существо игрового мира. Никогда не знаешь, в каком месте и в какое время потоки пересекутся друг с другом. После того как была разработана базовая концепция «игрового интеллекта» и создано программное ядро, возникли проблемы. Оказалось, что встроить ботов в игру — еще полдела. Намного сложнее отучить их от неадекватных действий в такой сложной реальности, а именно: от расстреливания кучек опавшей листвы, взвеянной налетевшим ветром, петляния между лужами, когда до противника остаются считанные шаги, и тому подобной деятельности.