Читать книгу Бот. Атакамська криза - Макс Кідрук - Страница 10

Виклик
VIII

Оглавление

Підіймаючись сходами з другого на третій поверх, де знаходилися кабінети аналітиків та дирекція, Тимур розмірковував, що могло спричинити ранковий виклик.

«Time-To-Play Technologies» зробила собі ім’я на тому, що називається «gaming environment» – ігрове оточення. Спеціалісти «TTP» роками розробляли математичні моделі вітру, трави, кущів, дерев, окремих листочків, дорожнього каміння, навіть пилу, а також алгоритми їхньої взаємодії. Завдяки тривалій співпраці математиків, фізиків, 3D-моделерів та програмістів компанії вдалося створити максимально наближену до дійсності подобу реального світу. Причому мова не тільки про візуалізацію. В іграх, що випустила «Time-To-Play Technologies», йдуть «справжні» дощі, безперестанку дме вітер, сонце ховається і виходить з-за хмар, при цьому дані явища не запрограмовані на конкретний час та місце, вони виникають самі по собі, за тих же умов, що й у природі.

Тимур у «TTP Technologies» спеціалізується на ботах. Його основне завдання полягає в тому, щоби «мешканець» такого досконалого віртуального світу поводився реалістично. Через велике розмаїття процесів, які відбуваються одночасно в ігровому просторі (у програмуванні вони називаються потоками), доволі непросто навчити ботів правильно вибирати дорогу, оминаючи мокрі чи надто зарослі зеленню місця, ховатися з урахуванням поточної видимості, безпомилково ідентифікувати «живі» об’єкти (інших ботів або ж гравця) у середовищі, де рухається практично все, і при цьому не забувати про головне – атакувати чи захищати гравця, єдину по-справжньому мислячу істоту ігрового світу. Ніколи не знаєш, у якому місці і в який час потоки перетнуться між собою. Після того, як низову концепцію нового «ігрового інтелекту» сформулювали і запрограмували ядро, почалися проблеми. Виявилось, вписати ботів у нову модель – ще півсправи. Набагато важче відівчити їх від неадекватних дій у такій складній реальності. Доводилося «відучувати» бійців розстрілювати купки опалого листя, котре випадковий порив вітру подеколи зривав з дерев і ганяв по тривимірній сцені, петляти між калюжами, коли до цілі лишаються лічені кроки, і таке інше.

Відтак створені Тимуром боти не просто носяться сценою, стріляють чи ухиляються від куль, вони взаємодіють з середовищем. Аналізують віртуальний світ. Завдяки цьому гра виходить неповторною. Скільки б разів гравець не проходив один і той самий рівень, йому ніколи не вдасться провести гру однаково.

Вихід у світ першої частини FPS[16] «Stalker» добряче струсонув світову індустрію ігор. В одних тільки Штатах продали понад два мільйони примірників, а чистий прибуток компанії становив 14 мільйонів доларів. Причина такого успіху полягала не тільки в майстерно вимальованому і зв’язному ігровому середовищі. Фанатів комп’ютерних стрілялок підкорили персонажі гри, що якісно відрізнялись від «прямолінійних» ботів у «DOOM 3», «Half-life 2» чи навіть «Unreal ІІ: Awakening». Боти були настільки реалістичними, що часом видавалися… живими. За два роки нікому не відома українська компанія міцно закріпилася на ринку, заграбастала купу замовлень і навіть почала формувати тренди в індустрії. І все це значною мірою завдяки Тимуру.

Крокуючи коридором, Тимур міркував над тим, що могло викликати гнів начальства. Четвертий add-on[17] до «Сталкера» випустили на ринок півроку тому. «Баги»[18] там були, проте стосувалися виключно сюжету гри та текстур на окремих 3D-моделях. Його боти були ні до чого. Нове покоління бійців, над яким він працює зараз, на даний момент перебуває на стадії ескізного проектування. Дай Бог, щоб за два роки їх направили до тестерів.

«Значить, якщо влетить, то точно за старе», – зметикнув хлопець, спинившись перед кабінетом директора з СРР. На мить затримався, прислухаючись. Із-за дверей долітали притишені голоси. Тлустий Мазефака був не сам, перемовляючись з кимось англійською.

Хлопець набрав повітря у легені і постукав.

– Заходьте, – долинуло крізь двері.

Тимур начепив на лице маску безтурботності і переступив поріг.

– О, Тимуре! Вітаю, вітаю! Заходь… Сідай, – директор жестом запропонував йому одне з крісел.

Пузатий був дебелим чоловіком, геть лисим, з відповідним прізвищу півсферичним черевом і задиристою м’ясистою щелепою. Повернувшись до візитера, засмаглого іноземця в піжонському діловому костюмі, що сидів, розкинувшись, на шкіряному дивані по інший бік переговорного стола, він проказав англійською з жахливим акцентом:

– Here is that guy[19], – і недвозначно кивнув на Тимура.

Хлопець стиха привітався і вмостився на стілець, здогадуючись, що перемовини між цими двома велися про нього.

– Okay… I see…[20] – повільно відповів незнайомець. – He’s so young[21].

– Only twenty seven[22].

– That’s… strange[23].

Чоловік сидів, заклавши ногу на коліно, і недбало роздивлявся Тимура. З темних очей віяло холодом і в той же час… незбагненною приреченістю. Хлопець раптом зрозумів, що тирлів не даватимуть. Полегшення ця думка чомусь не принесла.

– Це Оскар Штаєрман, – представив незнайомця директор. Штаєрман був чилійцем з єврейським корінням.

– Тимур Коршак, – хлопець стримано кивнув.

– Nice to meet you, Tymur[24], – у мові Оскара теж проривався ледь вловний іспанський акцент. І жодної нотки, що свідчила б про повагу.

– Пам’ятаєш замовлення трирічної давності від «General Genetics»? – Пузатий крутнувся на кріслі, заговоривши українською. – Ті чудила, що замовляли лише код.

Тимуру не потрібно було мордувати пам’ять, аби пригадати той чудернацький проект. Найбільш незвичайне, але в той же час чи не найлегше завдання за весь час його роботи на «TTP Technologies». «General Genetics», що нібито розробляла комп’ютерну гру в стилі «екшн», замовила ботів, навчених діяти у команді – одним великим роєм, – але (!) при цьому не надала практично ніяких вихідних даних і не представила середовища, в якому мала проходити гра. Замовник потребував лише «сирий» код.

– Шефе, ви мусите розуміти, – нахилившись, зашепотів Тимур, – я не компілював той код. То було просто немислимо! Я ж не можу взяти й скомпілювати окрему процедуру чи вирваний з контексту клас. У нас не було жодного шансу протестувати власні розробки під час реальної гри. Тож, якщо у них…

– Заспокойся, – обірвав його бос, – я добре пам’ятаю ту химерну заявку. До тебе немає жодних претензій. Якраз навпаки: в даній ситуації я цілком на твоєму боці.

– Тоді я не розумію, в чому проблема? І чому вони схаменулись аж зараз? Спливло цілих три роки!

Пузатий знизав плечима:

– Поговори з цим піжоном. Він мені нічого не пояснює. Хоче балакати лише з розробником, цебто з тобою.

– Про що?

– Про те, що його хвилює… І не кіпішуй, – очі Пузатого хитро зблиснули. – Сподіваюсь, нам вдасться витрусити з нього трохи грошенят.

Тимур випростався в кріслі і спробував посміхнутися.

– Хай, Оскаре! – вдруге привітався хлопець і далі діловито заговорив англійською: – Це я писав коди на ваше замовлення три роки тому.

– Так. Я вже знаю.

– То що у вас негаразд?

– У мене все чудово, – говорячи, Штаєрман майже не мінявся на лиці, наче замість шкіри у нього була гумова маска, – але ваші боти… з ними почались проблеми.

– Не сприйміть за банальну відмовку, але в тому немає моєї вини, – пиндючність напомадженого гостя трохи дратувала Тимура. – Згадайте ваше технічне завдання. Та його не було! Я був наче тесля, якого примусили стругати віконні рами, не показавши розмірів вікон.

– Так було потрібно, – мовив Оскар.

– Воля ваша! Але що робити мені? Минуло цілих три роки. За цей час ви навіть не повідомили, чи підійшла вам концепція. Для моїх ботів потрібен специфічний ігровий простір. Цілком імовірно, вони виявились надто складними для вашого математичного ядра.

– Складними? – перепитав гість, якось дивно посміхнувшись. – О, ні. Вони були чудовими. Ідеальними! Вони аналізували все, що відбувалося, вони приймали рішення, вони співпрацювали між собою, діючи, наче справжній загін… Для нас саме це було головне.

Тимур ніяк не міг второпати, чому Штаєрман розповідає про віртуальних бійців у минулому часі. Він наче розказував про живих людей. І це добряче різало вуха.

– І що ж трапилося? Хтось наколобродив, оптимізуючи код?

Оскар стулив рота, аж на щоках проступили жовна, і витріщився у вікно. Коли він повернув обличчя назад, Тимур встиг (уже вдруге) розгледіти в його погляді відблиски безрадісної фатальності і ще чогось такого, чого він геть не очікував узріти в очах пихатого заморського стиляги… Неконтрольований страх?.. Паніка?.. За мить Штаєрман взяв себе в руки, але так і не відповів на запитання.

– Давайте я скажу кілька слів, – встрянув директор. – Ми зараз міняємо концепцію побудови світу, – певна річ, він говорив про віртуальний ігровий простір, тривимірну сцену, та все одно слова прозвучали кострубато й пафосно. Він виглядав неначе Зевс на Олімпі. У найгіршому, якщо можна так висловитися, значенні. – Замість опису поведінки окремих об’єктів, як то дерева, хмарки, струмки чи озера, ми переходимо до агентно-орієнтованого підходу. Якщо раніше хмарка являла собою 3D-модель, що змінювала форму, розмір, колір та прозорість залежно від концентрації вологи, рухалась у визначеному напрямку, зрідка зливаючись з іншими моделями свого типу, то тепер це – величезне скупчення, така собі мережа або рій крихітних агентів, що несуть у собі набір функцій для взаємодії з суміжними агентами. Така краплина-агент може «випаровуватись», «конденсуватись», набувати «кристалічної форми» залежно від зовнішніх умов, а також від стану сусідніх агентів, – попри паскудний характер, директор з розробки «TTP Technologies» був чудовим спеціалістом. Він продовжував: – Уявіть, як розігріта хмара-рій потрапляє в зону холодного повітря. Граничні або поверхневі агенти швидко охолоджуються і перетворюються на вологу – в ігровому світі йде дощ. Під час конденсації з агента-краплини виділяється енергія у вигляді тепла. Якщо повітря досить швидко нагрівається, дощ стихає, а хмара, що втратила частину агентів, суне далі. Якщо ж холодне повітря продовжує надходити, внутрішні агенти також почнуть конденсуватися і злива не припинятиметься, поки хмара не вичерпається. Агенти на землі збиратимуться в калюжі, струмки чи озера, поки не випаруються знов. Отакий безперервний колообіг!

Директор зацікавлено зиркнув на візитера. Оскар Штаєрман лишався незворушним. Його спокій межував з байдужістю. Дмитро Пузатий правив далі:

– Звісно, на початковому етапі написання та налаштування агентів займає купу часу та врешті-решт окупиться сторицею. Агентно-орієнтований підхід знімає чимало обмежень з віртуального світу. Тепер достатньо лиш сформувати рельєф, «загнати» на сцену агенти, що відповідають рідині, повітрю та органічній матерії, задати початкові умови і запустити сонце. У результаті ми отримаємо не просто ігрову сцену, то буде унікальний і неповторний віртуальний світ! – наче для підсилення останніх слів, начальник змахнув руками у повітрі. – До речі, Тимур зараз працює над тим, щоб персонажі гри… кгм… комфортно почувалися у новому світі. Попереднє покоління ботів тут не годиться… Вони розгублюються, тетеріють… словом, ні на що не здатні.

Тимур стримано кивнув на підтвердження.

– Тому, можливо, буде краще, якщо замість переробки застарілих проблемних кодів, ми спробуємо вирішити ваше питання новим…

– Ні, – Оскар Штаєрман обірвав Дмитра. – Не потрібно ніяких нових підходів. Ми хочемо, щоб той, хто створив вихідні коди для ботів три роки тому, розібрався у проблемах. Ви мене чуєте? Для ботів. Крапка.

Ні Тимур, ні його начальник не здогадувалися, що їхній візитер (не будучи фаховим програмером) знає про агентний підхід не менше і може чимало розказати. Особливо про зовнішній прояв і результати. Хоча тоді це вже не мало значення.

Слова чилійця образили Пузатого. Директор роздув ніздрі і нахмурився.

– Що саме за проблеми? – форкнув він.

– Я не спеціаліст, через що, на жаль, не можу розказати всіх подробиць, – ухилився від відповіді замовник. – Просто ваші боти поводяться не так, як нам би хотілося.

– Як це розуміти?! – спалахнув Пузатий. Забувши про терплячість та витримку, що була б доречною у розмовах з клієнтами. – Вони бігають по сцені голяка і кидаються один в одного власними випорожненнями замість того, щоб атакувати гравця?

Тимур прикусив нижню губу. Не через те, що йому не сподобалась шефова метафора. Просто так не розмовляють із замовником.

Штаєрман проігнорував куцохвостий жарт. У кабінеті повисла ніякова мовчанка.

– Може, у вас є відео проходження якої-небудь місії, де використаний мій код? – спитав Тимур (пошук «багів» починається з перегляду записаних тестерами відеороликів). – Це реально допоможе, – його все більше й більше дивувала ця ситуація. Для чого пертися бозна-звідки, якщо ці питання можна вирішити через e-mail чи по «Skype»?

Вперше від початку розмови, іноземець завагався:

– Ви не розумієте, – кошлаті брови злетіли вгору, Оскар подався вперед. – Щоб розібратись, потрібно прибути на місце. Власне, саме для цього я й прилетів до України… Мені потрібен ти, Тимуре.

Хлопець і його бос перезирнулися.

– Я вас правильно зрозумів? Ви хочете повезти Тимура до себе?

– Так. Хочемо «орендувати» вашого спеціаліста. Інакше нічого не вийде.

Такого повороту розмови ніхто не очікував. Ще ніхто й ніколи не приїжджав до «TTP Technologies», щоб забрати спеціаліста у відрядження. Це відгонило чимось старомодним, прямо середньовіччям якимсь: прислати гінця, щоби забрати майстра на роботи. Безглуздя! І знову: навіщо відряджати когось за тридев’ять земель на переговори, коли можна про все домовитися по «електронці»?

Директор насуплено затих. Задумався.

– Ми готові щедро заплатити, – додав чоловік у костюмі.

– Ми – це хто? – ляпнув Тимур. Три роки тому, коли йому довірили проект, який «TTP Technologies» вважала несерйозним, замовником виступала «General Genetics», одначе договір підписувався з фізичною особою, цебто де-юре не мав жодного відношення до згаданої компанії. За роботу справно розплачувались, завжди авансом, причому гроші надходили не з США, а з якоїсь латиноамериканської країни (як не напружував пам’ять, Тимур не міг пригадати, з якої).

– Експериментальний центр «NGF Lab», – пролунала відповідь. – Це… хм-м-м… наукова інституція, що проводить дослідження на замовлення різних незалежних фондів та… кгм… приватних осіб. Інвестиції переважно американські та японські.

– «NGF Lab»? – перепитав Дмитро Віталійович.

– Так.

Пузатий скосив очі на край стола, де лежала Оскарова візитна картка. На ній стояв логотип іншої організації – «General Genetics».

– І куди треба летіти? – озвався Тимур.

На обличчі Оскара не здригнулась жодна жилка. Тільки очі напружились, помінявши колір: карі зіниці стали геть чорними. Мов дно глибоченного похмурого колодязя. Не мигаючи, чилієць проказав:

– Лабораторія знаходиться в пустелі Атакама. Це на півночі Чилі.

– Де?! – Пузатий роззявив рота.

– Чилі, Південна Америка.

Директор пригадав, що три роки тому гроші надходили з чилійського банку, «ABN AMOR Bank Chile», але навіть подумати не міг, що центр розробки знаходиться в пустелі. І саме в ту мить він остаточно осягнув, що компанія «General Genetics», чи «NGF Lab», чи як там вона зветься, продукує що завгодно, але тільки не комп’ютерні стрілялки… Шеф зирнув на Тимура. Хлопець похитав головою з боку в бік і одними губами прошепотів: «Fuck it!»[25]

– Яка, в біса, пустеля, аміґо?! – Пузатий відкинув геть формальності.

– Це довго пояснювати.

– Шановний, може, досить грати в піжмурки? Ви ж не «шутери» розробляєте!

– Ні, не «шутери», – без вагань, вигризаючи очима зіниці співрозмовця, відповів чилієць. – Але нам конче потрібна людина, яка три роки тому згенерувала код.

Дмитро Віталійович подумки намагався підшукати прикладні галузі, де можна було б застосувати алгоритми «gaming AI». Системи штучного інтелекту? Маячня! Уподібнювати синтетичний ігровий інтелект до штучного розуму в повному розумінні, це все одно що ставити на один щабель технологічної складності електрочайник та балістичну ракету. Попри більш ніж двадцятирічний стаж роботи з різноманітним програмним забезпеченням Пузатий не міг придумати, де ще, окрім комп’ютерних ігор, можна застосувати алгоритми керування ботами.

– Пане Штаєрман, – смикаючи краватку, Пузатий забубонів безбарвним офіційним голосом, – у вашому контракті не передбачено відладки. Ви замовляли окремі класи та процедури, а не готовий продукт, а тому ми не…

– П’ятнадцять тисяч за тиждень роботи, Тимуре, – Штаєрман більше не дивився на директора. – Плюс двадцять тисяч преміальних після завершення, звісно, якщо ти здужаєш вирішити проблему, – відчеканив чилієць, а тоді додав: – Я маю на увазі доларів.

Голомозий директор закашлявся. Ледь язика не проковтнув. Тимур був шокований не менше. Озвучена сума сягала рівня зарплат топ-менеджерів у «Microsoft» чи «Google».

– І скільки тижнів? – майже не дихаючи, вимовив хлопець.

– Вісім. Можливо, трохи більше… Десять. – Оскар виклав на стіл якісь папери: – Ось тут контракт. Там усе розписано. І віза чекає на тебе. Потрібен лише твій паспорт.

Тимур більше не вагався.

– На жаль, мушу вам відмовити… У мене весілля у вересні, – він повернув голову до начальника. – Я якраз на днях збирався просити у вас відпустку.

Дмитро Пузатий зітхнув з полегшенням. Чи не вперше він радів, коли його підлеглий відкараскувався від роботи.

– Вважай, ти її отримав.

Оскарові кутики губ вигнулися вгору, що, певно, мало означати посмішку; не міняючи тону, він відкарбував:

– Двадцять тисяч на тиждень. П’ятдесят тисяч – преміальні. Крім того, «NGF Lab» заплатить будь-яку суму для «TTP Technologies», щоби ви відпустили Тимура у відрядження.

Директор зі стратегічного розвитку та розробки ледь не випав зі стільця.

«Щонайменше сто шістдесят кусків, – мигцем порахував Тимур, – це ж нічогенька квартира у Києві! І за якихось два місяці…» То був запаморочливо ласий шматок.

– Я… м-м-м… я мушу переговорити з нареченою… – після тривалих роздумів усе ще сконфужено пробубнів хлопець.

– Чекатиму відповідь до завтрашнього ранку. Не пізніше.

– Так швидко…

– У мене немає вибору.

– Окей. Але навіть якщо я погоджусь, – зважуючи кожне слово, сказав Тимур, – ви мусите розуміти, що привести код до ладу буде складно.

– Чому? – спитав Штаєрман, а Тимур подумав, що гість не має аніякого стосунку до програмування.

– Ви сказали, що наші боти поводяться не зовсім так, як вам хотілося б.

– Правильно.

– Для того, щоб це визначити, ви мусили скомпілювати мій код і запустити його на виконання.

Оскар кивнув.

– Ви не могли скомпілювати код, не вставивши його у тіло основної програми, – розвивав думку хлопець. – Я писав лише розрізнені шматки, причому не DLL-бібліотеки[26], а окремі класи та процедури. Це значить, створений код потрібно було доопрацьовувати… ну, підганяти під основний ігровий модуль.

– Авжеж. З цим упорались наші програмісти. І в чому справа?

– Мені доведеться розбиратися в їхніх виправленнях, потім шпортатися у вашому коді і дивитися, як він співвідноситься з моїм. Справа в тому, що рішення вашої проблеми може й не існувати… не існувати взагалі.

Лице чилійця і далі лишалося інертним, проте пальці правої руки нервово теребили запонку на лівому рукаві.

– Рішення існує, – заявив Штаєрман. – Особисто я не маю сумнівів. Тому що на перших порах усе працювало дуже добре.

– А потім почало працювати погано? – саркастично хмикнув Тимур. Код програми – це не металева болванка, що може стертися чи спрацюватися. Він або функціонує, або ні.

– Я не сказав «погано». Я сказав «не так, як треба».

Останній вислів мав би насторожити програмера. Проте цифра у 160 000 USD просто висадила йому мізки. Витримавши паузу, хлопець проказав:

– Добре… Я подумаю, – у скронях гуло, наче його огріли сковорідкою.

– Відповідь потрібна до завтрашнього ранку, – ще раз засвідчив ультиматум Оскар.

«Їм таки справді припекло», – подумки відзначив Тимур.

– Ввечері я зателефоную до Дмитра Віталійовича і повідомлю своє рішення.

– Чудово. Я чекатиму, – холодно процідив чилієць.

Тимур підвівся.

– Ти точно цього хочеш? – Пузатий перейшов на українську. – Готовий скасувати весілля? Я б тобі яйця відрізав на місці нареченої.

– Я не знаю, – знизав плечима програміст. Тимур був збентежений. У голові клекотало, мов у казані. – Така сума… Треба все обмізкувати.

Виходячи з кабінету, хлопець востаннє зиркнув на директора. Пузатий зрозумів усе без слів і ствердно кивнув.

– Не переймайся, – чітко вимовив він, – я негайно віддам розпорядження. Дівчата з юридичного відділу передивляться контракт, і якщо там є хоч один пункт, через який вони можуть тебе дрюкнути або не заплатити бабки, я пошлю цього нахабу в дупу.

– Дякую.

– А тепер шуруй звідціля. І думай. Але ні, краще не думай, а порадься з майбутньою дружиною. Затямив, салабоне?

– Так, шефе.

І Тимур причинив за собою двері.

16

FPS (First Person Shooter, з англ. «стрілялка від першої особи») – різновид комп’ютерних ігор, в яких гравець бачить світ очима свого персонажа.

17

Продовження (доповнення) комп’ютерної гри, переважно кілька нових рівнів, що надходять у продажу через якийсь час після виходу основного дистрибутива.

18

«Баг» (від англ. bug – жучок) – сленгова назва помилки у коді програми.

19

Це той хлопець (англ.).

20

Добре… Я бачу… (англ.)

21

Він такий молодий (англ.).

22

Тільки двадцять сім (англ.).

23

Це… дивно (англ.).

24

Радий познайомитись, Тимуре (англ.).

25

До сраки це! (англ. груб.)

26

DLL (англ. Dynamic-link Library – бібліотека, що підключається динамічно) – динамічна бібліотека WINDOWS, як правило, файл з розширенням *.dll, який зберігає в собі скомпільований код (функції, процедури, класи), таблиці та ресурси. Перевага DLL в тому, що код із такої бібліотеки може одночасно (і неодноразово) використовуватись різними додатками (програмами), що запущені в системі.

Бот. Атакамська криза

Подняться наверх