— Пам’ятаєш замовлення трирічної давності від «General Genetics»? — Пузатий крутнувся на кріслі, заговоривши українською. — Ті чудила, що замовляли лише код.
Тимуру не потрібно було мордувати пам’ять, аби пригадати той чудернацький проект. Найбільш незвичайне, але в той же час чи не найлегше завдання за весь час його роботи на «TTP Technologies». «General Genetics», що нібито розробляла комп’ютерну гру в стилі «екшн», замовила ботів, навчених діяти у команді — одним великим роєм, — але (!) при цьому не надала практично ніяких вихідних даних і не представила середовища, в якому мала проходити гра. Замовник потребував лише «сирий» код.
— Шефе, ви мусите розуміти, — нахилившись, зашепотів Тимур, — я не компілював той код. То було просто немислимо! Я ж не можу взяти й скомпілювати окрему процедуру чи вирваний з контексту клас. У нас не було жодного шансу протестувати власні розробки під час реальної гри. Тож, якщо у них…
— Заспокойся, — обірвав його бос, — я добре пам’ятаю ту химерну заявку. До тебе немає жодних претензій. Якраз навпаки: в даній ситуації я цілком на твоєму боці.
— Тоді я не розумію, в чому проблема? І чому вони схаменулись аж зараз? Спливло цілих три роки!
Пузатий знизав плечима:
— Поговори з цим піжоном. Він мені нічого не пояснює. Хоче балакати лише з розробником, цебто з тобою.
— Про що?
— Про те, що його хвилює… І не кіпішуй, — очі Пузатого хитро зблиснули. — Сподіваюсь, нам вдасться витрусити з нього трохи грошенят.
Тимур випростався в кріслі і спробував посміхнутися.
— Хай, Оскаре! — вдруге привітався хлопець і далі діловито заговорив англійською: — Це я писав коди на ваше замовлення три роки тому.
— Так. Я вже знаю.
— То що у вас негаразд?
— У мене все чудово, — говорячи, Штаєрман майже не мінявся на лиці, наче замість шкіри у нього була гумова маска, — але ваші боти… з ними почались проблеми.
— Не сприйміть за банальну відмовку, але в тому немає моєї вини, — пиндючність напомадженого гостя трохи дратувала Тимура. — Згадайте ваше технічне завдання. Та його не було! Я був наче тесля, якого примусили стругати віконні рами, не показавши розмірів вікон.
— Так було потрібно, — мовив Оскар.
— Воля ваша! Але що робити мені? Минуло цілих три роки. За цей час ви навіть не повідомили, чи підійшла вам концепція. Для моїх ботів потрібен специфічний ігровий простір. Цілком імовірно, вони виявились надто складними для вашого математичного ядра.
— Складними? — перепитав гість, якось дивно посміхнувшись. — О, ні. Вони були чудовими. Ідеальними! Вони аналізували все, що відбувалося, вони приймали рішення, вони співпрацювали між собою, діючи, наче справжній загін… Для нас саме це було головне.
Тимур ніяк не міг второпати, чому Штаєрман розповідає про віртуальних бійців у минулому часі. Він наче розказував про живих людей. І це добряче різало вуха.
— І що ж трапилося? Хтось наколобродив, оптимізуючи код?
Оскар стулив рота, аж на щоках проступили жовна, і витріщився у вікно. Коли він повернув обличчя назад, Тимур встиг (уже вдруге) розгледіти в його погляді відблиски безрадісної фатальності і ще чогось такого, чого він геть не очікував узріти в очах пихатого заморського стиляги… Неконтрольований страх?.. Паніка?.. За мить Штаєрман взяв себе в руки, але так і не відповів на запитання.
— Давайте я скажу кілька слів, — встрянув директор. — Ми зараз міняємо концепцію побудови світу, — певна річ, він говорив про віртуальний ігровий простір, тривимірну сцену, та все одно слова прозвучали кострубато й пафосно. Він виглядав неначе Зевс на Олімпі. У найгіршому, якщо можна так висловитися, значенні. — Замість опису поведінки окремих об’єктів, як то дерева, хмарки, струмки чи озера, ми переходимо до агентно-орієнтованого підходу. Якщо раніше хмарка являла собою 3D-модель, що змінювала форму, розмір, колір та прозорість залежно від концентрації вологи, рухалась у визначеному напрямку, зрідка зливаючись з іншими моделями свого типу, то тепер це — величезне скупчення, така собі мережа або рій крихітних агентів, що несуть у собі набір функцій для взаємодії з суміжними агентами. Така краплина-агент може «випаровуватись», «конденсуватись», набувати «кристалічної форми» залежно від зовнішніх умов, а також від стану сусідніх агентів, — попри паскудний характер, директор з розробки «TTP Technologies» був чудовим спеціалістом. Він продовжував: — Уявіть, як розігріта хмара-рій потрапляє в зону холодного повітря. Граничні або поверхневі агенти швидко охолоджуються і перетворюються на вологу — в ігровому світі йде дощ. Під час конденсації з агента-краплини виділяється енергія у вигляді тепла. Якщо повітря досить швидко нагрівається, дощ стихає, а хмара, що втратила частину агентів, суне далі. Якщо ж холодне повітря продовжує надходити, внутрішні агенти також почнуть конденсуватися і злива не припинятиметься, поки хмара не вичерпається. Агенти на землі збиратимуться в калюжі, струмки чи озера, поки не випаруються знов. Отакий безперервний колообіг!
Директор зацікавлено зиркнув на візитера. Оскар Штаєрман лишався незворушним. Його спокій межував з байдужістю. Дмитро Пузатий правив далі:
— Звісно, на початковому етапі написання та налаштування агентів займає купу часу та врешті-решт окупиться сторицею. Агентно-орієнтований підхід знімає чимало обмежень з віртуального світу. Тепер достатньо лиш сформувати рельєф, «загнати» на сцену агенти, що відповідають рідині, повітрю та органічній матерії, задати початкові умови і запустити сонце. У результаті ми отримаємо не просто ігрову сцену, то буде унікальний і неповторний віртуальний світ! — наче для підсилення останніх слів, начальник змахнув руками у повітрі. — До речі, Тимур зараз працює над тим, щоб персонажі гри… кгм… комфортно почувалися у новому світі. Попереднє покоління ботів тут не годиться… Вони розгублюються, тетеріють… словом, ні на що не здатні.
Тимур стримано кивнув на підтвердження.
— Тому, можливо, буде краще, якщо замість переробки застарілих проблемних кодів, ми спробуємо вирішити ваше питання новим…
— Ні, — Оскар Штаєрман обірвав Дмитра. — Не потрібно ніяких нових підходів. Ми хочемо, щоб той, хто створив вихідні коди для ботів три роки тому, розібрався у проблемах. Ви мене чуєте? Для ботів. Крапка.
Ні Тимур, ні його начальник не здогадувалися, що їхній візитер (не будучи фаховим програмером) знає про агентний підхід не менше і може чимало розказати. Особливо про зовнішній прояв і результати. Хоча тоді це вже не мало значення.
Слова чилійця образили Пузатого. Директор роздув ніздрі і нахмурився.
— Що саме за проблеми? — форкнув він.
— Я не спеціаліст, через що, на жаль, не можу розказати всіх подробиць, — ухилився від відповіді замовник. — Просто ваші боти поводяться не так, як нам би хотілося.
— Як це розуміти?! — спалахнув Пузатий. Забувши про терплячість та витримку, що була б доречною у розмовах з клієнтами. — Вони бігають по сцені голяка і кидаються один в одного власними випорожненнями замість того, щоб атакувати гравця?
Тимур прикусив нижню губу. Не через те, що йому не сподобалась шефова метафора. Просто так не розмовляють із замовником.
Штаєрман проігнорував куцохвостий жарт. У кабінеті повисла ніякова мовчанка.
— Може, у вас є відео проходження якої-небудь місії, де використаний мій код? — спитав Тимур (пошук «багів» починається з перегляду записаних тестерами відеороликів). — Це реально допоможе, — його все більше й більше дивувала ця ситуація. Для чого пертися бозна-звідки, якщо ці питання можна вирішити через e-mail чи по «Skype»?
Вперше від початку розмови, іноземець завагався:
— Ви не розумієте, — кошлаті брови злетіли вгору, Оскар подався вперед. — Щоб розібратись, потрібно прибути на місце. Власне, саме для цього я й прилетів до України… Мені потрібен ти, Тимуре.
Хлопець і його бос перезирнулися.
— Я вас правильно зрозумів? Ви хочете повезти Тимура до себе?
— Так. Хочемо «орендувати» вашого спеціаліста. Інакше нічого не вийде.