— Молодец, Коул. Не подкопаешься к тебе. А теперь давай, запускай билд, протестим, как весь этот математикс работает на деле, и сразу будем балансить. Чтобы у игрока, не дай бог не возникло ощущение нечестности.
Нервно, покосившись на меня, паренек послушно свернул блок схему и запустил проект.
Остаток дня и почти всю ночь мы пропыхтели над ИИшкой, не вылезая из подвала. Провели симуляции всех возможных игровых ситуаций, исправили ошибки-ошибочки, подкрутили экономику. Так как в временами бот был уж слишком силен и с определенного момента просто отправлял гаргантюа по всем линиям. После чего повторял процедуру раз за разом, пока мы с Коулом не сливали катку, обреченно матюгаясь.
Конечно, можно было не заморачиваться. Можно было сэкономить кучу времени и просто сделать систему волн, как это сделали в свое время ребята из ПопКапа. Но я хотел, чтобы моя интерпретация классики была на голову выше. Чтобы она была бесконечно реиграбельной и генерировала уникальные ситуации в каждом забеге. Поэтому трата времени и сил была полностью обоснованной. Тем более, что этот универсальный планировщик мы сможем использовать и в последующих проектах студии.
— Держи. — Я мягко опустил перед Коулом кружку с дымящимся чайком. — Бахни, чтобы спалось лучше. Все равно на сегодня заканчиваем. Доделали считай ИИшку.
— Спасибо. — Глухо буркнул парень, вбивая последние, отладочные строки кода.
Он послушно взял чашку, сделал большой глоток насыщенного ГАБА-улуна. Посмаковал, недовольно сморщившись.
— Странный вкус какой-то. Как будто аптечный.
— Да, есть такое дело. — Легко согласился я, тоже булькнув во рту напитком из своей кружки. — Это из-за повышенного содержания гамма-аминомасляной кислоты. Особый сорт, отлично снимает стресс и перезагружает нервную систему.
Парень удивленно хмыкнул, сделал еще один большой глоток. Я же тем временем вперил взгляд в монитор.
— Слушай, что это за строчка? Все хотел спросить, пока мы тестили. Какой-то новый тип элементов?
Я ткнул пальцем в давно мозолившую мне глаза конструкцию, выделявшуюся среди привычного синтаксиса C#. Точнее, в один из ее странных элементов:
protected ListIEidosPredicate SpiritualPreconditions = new();
Странное наименование — «Эйдос». От меня не укрылось, что каждый раз, когда на экране появлялся этот элемент, Коул старался как можно быстрее проскочить строку с ним. Видимо, чтобы не привлекать мое внимание. Вот только я все равно заметил. И меня напрягло не столько слово «Эйдос», сколько «Спиритуал» в контексте машинных предусловий.
— Ну, это… своеобразный предикат. — Коул отвел в сторону осоловелые глаза. Его пальцы нервно затеребили край мышки. — Что-то вроде рефлексии для бота. Помогает лучше анализировать не просто действия, а... типа, намерения игрока. Бот думает. Как лучше поддаться в моменте, чтобы игрок почувствовал превосходство… Чтобы все было правдоподобно, понимаешь?
— Хммм… А почему Эйдос? Странный нейминг для логической переменной, не находишь? — Я откинулся в скрипучем кресле, внимательно наблюдая за парнем.
Коул сделал еще один глоток чая, и, клюнув носом, уставился на меня расфокусированным взглядом.
— С древнегреческого это значит «вид», «образ» или «знание суть вещей». Вот и назвал так… Суть поведения. Ничего такого…
Парень широко, до хруста в челюсти зевнул, едва не выронив кружку из ослабевших пальцев. Накренился всем телом вперед, опираясь локтями о стол.
— Что-то меня рубит совсем. — Заплетающимся языком посетовал он, моргая в тщетной попытке прогнать сонливость. — Не думал, что эта твоя гамма-амино… как там ее… так хорошо работает. Я чо- то это… Все.
Я наигранно зевнул в ответ, делая вид, что тоже нахожусь на грани отключки.
— Убойная штука, я же говорил.
Коул промолчал. Несколько минут он посидел, мелко пошатываясь на стуле и глядя стеклянными глазами на мигающую палочку курсора. Затем, окончательно сдавшись, отставил кружку подальше от клавиатуры и упал лбом в прохладную столешницу. Еще через минуту его дыхание выровнялось, стало глубоким и ритмичным. Подвал наполнился мерным посапыванием. Амбиен, снотворное, которое я растолок в ступке и подмешал ему в чай, сработало как надо.
— Прости, пацан. Так будет безопаснее для всех нас. — Тихо пробормотал я.
Сохранив проект, я закрыл его и открыл другой, тот, где не было упоминания духовных элементов. После чего покинул подвал, борясь с зевотой ввалился на кухню.
Там я первым делом запрятал как можно глубже в аптечку блистер Амбиена, в котором не хватало трех мощных таблеток снотворного. Избавившись от улик, достал из холодильника сразу две ледяные банки Монстра. Прошелся до дивана в гостиной. Облегченно упал на мягкие подушки, чувствуя, как расслабляется ноющая поясница. Пшикнул банкой. Сделал жадный глоток приторного энергетика, чтобы хоть как-то прогнать сон. Взглянул на часы.
Половина седьмого утра.
Значит, незваные гости прибудут очень скоро.