↓ Содержание ↓
↑ Свернуть ↑
| Следующая глава |
Бета-тестеры
Стиль злого программиста
Редактор пространства
16 июня, 13:22 реального времени
— Берегись! — завопил Махмуд, заметив, что метрах в двух от земли засветилось пятно переходного тамбура.
Мак-Мэд проворно отскочил в сторону как раз в тот момент, когда из тамбура выкатился обшарпанный погрузчик с грудой ящиков. Задумчиво покрутив колесами, он со страшным грохотом рухнул вниз.
— Ксен, не дрова ведь грузишь! — возмущенно заметил Банзай.
Сидящий за рычагами погрузчика программист высунулся из кабины:
— Ну знаешь, если бы вы потрудились выучить пару команд и реестр идентификаторов, мне бы не пришлось изображать из себя грузчика!
— Нет уж, хватит, — сурово отрезал Банзай. — Кеша вот попробовал — еле откачали.
— Так то Кеша, — уныло буркнул Ксенобайт.
В том, что горемычный дизайнер снова умудрился чего-то напутать, ничего удивительного не было. Но вот последствия очень впечатлили всю компанию.
Задача была, в принципе, несложной: подключиться к одной из библиотек, куда Ксенобайт заранее сложил нарисованные Кешей модели, текстуры и прочий скарб, выбрать там нужную штуковину и установить ее в пространстве игры. Для удобства Ксенобайт даже сделал что-то вроде визуального интерфейса: здоровенный ангар со стеллажами, на которых лежали ящики. На каждом ящике было изображение содержимого или, на худой конец, ярлычок с текстовым описанием.
По мнению Ксенобайта, решительно все было сделано для удобства пользователя. Мелисса, правда, тут же рекомендовала оформить все в виде каталога, по которому нужную модель можно будет просто заказать, но пока они с Ксенобайтом спорили о теории интерфейсов, Кеша умудрился напортачить там, где никто не ждал. Как ему это удалось, осталось загадкой, но дизайнер завис где-то между редактором пространства и библиотекой, в области кода, ну никак не предусматривающей визуализации.
Ксенобайт потом утешал Кешу, что оказаться посреди выполняемого кода не так уж и плохо. Лучше, конечно, вляпаться в какой-нибудь архив, там даже по-своему красиво, но главное — все стоит на месте и можно спокойно обмозговать сложившуюся ситуацию. Даже если при этом тебя самого заархивирует. Это как йога: с непривычки действует на нервы, но со временем перестаешь замечать, что твоя левая ступня торчит у тебя из-за уха.
Вообще, затруднительно описать, что испытывает человек в виртуалке, вылетая по каким-либо причинам из зоны визуализации. Десятки предохранителей и фильтров обычно отключают пользователя прежде, чем с ним произойдет что-то уж совсем странное. Но уж если не повезет, то бедолага получает по полной программе: поток полной чепухи по всем каналам восприятия. Кеша провел в мире математической абстракции две минуты и четырнадцать секунд, но за это время, по его словам, насмотрелся такого, что волосы на голове встают дыбом. Мало того, под впечатлением пережитого он залез в вирт-редактор и нарисовал несколько "пейзажей", пытаясь передать свои впечатления. Надо сказать — получилось. Тестеры, глянув на эти абстрактные инсталляции, делали теперь все, чтобы не оказаться в схожей ситуации.
В результате доставкой объектов (а вернее, их экземпляров) из библиотек в игровое пространство занимался лично Ксенобайт. Программист, более других привычный к подобным казусам, ворчал, но не очень громко, прекрасно понимая, что в случае чего Мелисса моментально найдет ему еще какое-нибудь занятие.
Некоторые модели и даже целые сцены приходилось не возить из библиотек, уже подключенных к движку игры, а напрямую конвертировать из вирт-редактора, чтобы потом, собрав локацию, упаковать ее в новую библиотеку. Тут снова чуть не произошел конфуз, когда Ксенобайт — случайно — едва не упаковал локацию вместе с Мелиссой, Внучкой и Кешей.
Так или иначе, работа продвигалась. Тестеры начерно сотворили материк, после чего приступили к знакомой со времен Енотограда работе: обустройству локаций. Правда, на этот раз им приходилось возводить не бетонные коробки, а бамбуковые хижины, пагоды и усадьбы в абстрактно-восточном стиле, а вместо руин и свалок создавать парки и сады камней.
Впрочем, все это было лишь разминкой, небольшими тестовыми локациями, пока окончательно утверждались эскизы и сценарий стартовой местности игры. А пока Банзай решил занять всю компанию не менее важным, чем строительство, делом.
— Где выгружать?
— Я не знаю... Ну, давай вон на той полянке.
— Ладно.
Ксенобайт крутанул баранку погрузчика. Башня из напоминающих гробы ящиков качнулась и опасно накренилась. Не обращая внимания на сердитые вопли Банзая, программист бесцеремонно свалил ящики в кучу на указанной полянке.
— Ксен, ну ты совсем озверел, — поморщился Мак-Мэд. — Просто натуральный грузчик... А если сломается что-нибудь?
— Да что им сделается, — равнодушно махнул рукой Ксенобайт.
— И где теперь какой?
— А какая разница?
— Тоже правильно. Ладно, вскрывайте!
Махмуд, ворча, подошел к одному из ящиков и, примерившись, ловко вогнал под крышку ломик-активатор. Индикатор распаковки пробежался до ста процентов, после чего крышка отлетела в сторону. В похожем на гроб ящике лежало что-то очень похожее на труп, что, в общем-то, неожиданностью не было.
Кеша любил рисовать вирт-пространства. Еще больше он любил смотреть, как нарисованное им оживает в игровых мирах. И как никто другой он знал, что между этими двумя точками лежит целая куча тяжелой работы.
Полбеды, когда речь идет о какой-нибудь детали пейзажа, желательно статичной: например, куске стены. Гораздо сложнее разобраться, к примеру, с монстром, который должен не просто сидеть на полянке, а двигаться, атаковать, обороняться, бегать, прыгать, а порой — еще плавать и летать.
Патологически конфликтующий со всяким программированием Кеша сравнительно легко мог нарисовать достаточно сложную анимацию, просто выстраивая кадр за кадром. Но анимация персонажей для вирт-игр — штука более замысловатая. Ведь монстр должен не просто разыгрывать перед зрителем заранее определенное представление, а реагировать на поведение игрока, желательно — без видимых перескоков с одной анимации на другую.
— Ну, давайте, что ли, оживляйте покойничка, — вздохнул Банзай. — Внучка, ты готова?
— Всегда готова! — весело сообщила Внучка, оглядывая поляну через видоискатель неизменной камеры.
— Хорошо. Значит, так, я все равно буду делать захват движений, но постарайся снимать буквально все, даже если оно тебе покажется не сильно интересным, ладно?
— Нет проблем, я тут вокруг еще несколько стационарных грабберов поставила, так что будет даже с нескольких ракурсов.
— Умничка. Мак, готов?
Вместо ответа Мак-Мэд медленно растаял в воздухе. Зато "покойничек" в ящике вдруг вздрогнул, с театральным всхлипом втянул в себя воздух, утробно замычал и, вытянув вверх руки со скрюченными пальцами, сел.
— Хорош комедию ломать, вылезай, — равнодушно буркнул Банзай.
Мак-Мэд в новом теле пожал плечами и вылез из ящика. Выглядел он, что ни говори, жутковато: модель автоматически подстроилась под его габариты, но кожа еще не была текстурирована и покрашена. Гладкая, матовая, больше похожая на пластик, нежели на что-то живое, она имела пепельно-серый цвет без оттенков по всей поверхности, отчего лицо и правда напоминало физиономию свежего утопленника с бескровными губами. Мало того, широкие штаны имели тот же цвет и текстуру, отчего казалось, что они растут прямо из бедер модели. Впрочем, так оно, строго говоря, и было. Мак-Мэд потянул шеей, передернул плечами и пару раз подпрыгнул, привыкая к модели.
— Ну что ж, — проговорил наконец стрелок, — запускайте болванчика!
Ксенобайт пошевелил пальцами, вызывая панель управления. Воздух в двух метрах от Мак-Мэда вдруг подернулся рябью, сгустился, и через миг там, точно отражение в зеркале, появилось еще одно тело.
Раунд 01: Мак-Мэд против имитатора
16 июня, 13:43 реального времени
Мак-Мэд слегка поклонился своему доппельгангеру. Тот, немного подумав, повторил его движение. Покончив с формальностями, стрелок встал в стойку и, подойдя к двойнику, медленно обозначил простой и прямолинейный удар рукой в корпус. Выждав пару секунд, он отошел назад, а Ксенобайт что-то перещелкнул на своей виртуальной панели. Двойник Мак-Мэда, точно запаздывающее отражение в зеркале, встал в стойку и попытался нанести удар.
— Банзай, а что они делают? — спросила Внучка.
— А, это интересная штука, — хмыкнул старик. — Наработка базы движений. Понимаешь...
— Погоди, я сейчас камеру поудобнее поставлю... Вот, говори.
— Хм... Ну да. Так вот, понимаешь, давно было замечено, что чуть ли не единственный способ сделать движения персонажа естественными — это просто оцифровать движения настоящего человека. Во всех остальных случаях получается не кино, а мультик, если ты понимаешь, о чем я. Как видишь, сейчас двойник-имитатор попросту повторяет движения Мак-Мэда.
— Здорово, — вздохнула Внучка. — А Мак что, какими-то единоборствами занимался, да? Он на самом деле какой-то там черный пояс? Я всегда это подозревала!
— Знаешь, — вздохнул Банзай, — я подозреваю, что все мальчишки в детстве если и не ходили в какую-нибудь секцию, то, во всяком случае, смотрели боевики со всякими рукомашествами. Так что не делай поспешных выводов.
— Значит, в игре двойник будет просто копировать движения Мак-Мэда?
— Все не так просто, — покачал головой Банзай. — Двойник сейчас не просто копирует. Он учится. Мак делает какое-то движение, допустим, наносит удар. Имитатор пытается ударить его так же и смотрит, как реагирует оператор. Запоминает. И, если в следующий раз оператор нанесет такой удар, постарается скопировать его же реакцию.
— То есть Мак-Мэд как бы сам его учит?
— Точно. Так и называется: "анимация путем обучения".
Мак-Мэд со своим двойником уже разыгрывали довольно сложные пассажи из всякого рода блоков, ударов, уклонений и перемещений. Но последнее слово каждый раз, понятное дело, оставалось за Мак-Мэдом.
— Скукота... — уныло вздохнул Ксенобайт.
— А по-моему, очень интересно, — не согласилась Внучка.
— Такой способ имеет ряд недостатков, — тактично заметил Банзай. — Один из которых — действительно утомительный процесс сбора базы данных движений.
— Которым, — снова не выдержал Ксенобайт, — должны заниматься профессиональные спортсмены. Или каскадеры. Или кто-нибудь еще, кто рубит фишку. В крайнем случае берут и покупают уже готовую базу, с сертификатом соответствия от ассоциации единоборств.
— Да ну, это скучно, — поморщилась Внучка. — Кому понравится, если во всех играх противники будут вести себя одинаково?
— Во-во, нам примерно такую задачу и поставили, — кивнул Ксенобайт. — Мол, не забывайте, все игры "Самары Софт" несут свою специфику, они должны быть не похожи на другие игры того же жанра. От нас, видите ли, ожидают, что мы сочиним какие-нибудь новые, более реалистичные виды единоборств...
— Ну и сочиним! — оптимистично заявила Внучка.
Программист только безнадежно махнул рукой и демонстративно зевнул.
— В любом случае, — поспешил переключить на себя внимание Внучки Банзай, — все это, так сказать, лишь набор сырого материала, кирпичиков, из которых позднее придется строить... О, смотри-ка! Интересный момент! Мак-Мэд стал пропускать удары! Можно переводить тактический симулятор на новый режим: обозначить обоим противникам запас здоровья.
Ксенобайт еще раз душераздирающе зевнул и пошевелил пальцами, нажимая какие-то кнопки и передвигая регуляторы на виртуальной панели управления.
— Давай, Мак! Ты его сделаешь! — завопил Махмуд, подражая болельщикам на боях без правил. — Порви его, как Тузик грелку! Я на тебя поставил, парень...
Ксенобайт навострил уши и быстро произнес:
— Десятку на имитатора!
Махмуд прекратил дурачиться и удивленно глянул на программиста:
— Не понял?
— Ставлю десятку на имитатора! — ухмыляясь, повторил Ксенобайт.
— Ксен, на этом этапе все шансы не в твою пользу, — с сожалением покачал головой Махмуд. — Это будет даже не интересно. Ты плохо Мак-Мэда знаешь, если думаешь, что он уже выдохся. Могу поспорить, у него в запасе еще есть пара грязных... А, черт, и что, жульничать не будешь?!
Программист демонстративно скрестил пальцы и заверил:
— Честное двоичное, не думал даже!
— Даже так... Ладно, по рукам.
Мак-Мэд, прекрасно слышавший весь диалог, только неодобрительно покачал головой.
Ксенобайт, картинно хрустнув пальцами, вызвал две дополнительные панели инструментов и два терминальных окна с какими-то данными. Расположив все это хозяйство поудобнее, он быстро прошелся пальцами по панелям.
На этот раз двойник Мак-Мэда взял инициативу на себя. Перейдя в стойку, он стал осторожно подкрадываться к стоящему неподвижно стрелку. Тот стоял неподвижно, но явно не пропускал ни одного движения противника. На секунду они замерли друг напротив друга. Ксенобайт продолжал нажимать какие-то клавиши и двигать регуляторы на своих панелях, и двойник вдруг стремительно перешел в атаку.
— Знаешь, Банзай, — неуверенно проговорила Внучка, — Ксенобайт все-таки жульничает. Я не знаю, как и в чем, но просто косичками это чую!
— Конечно, жульничает, — удивленно откликнулся Банзай. — Но — честно жульничает.
— Это как?! — удивленно моргнула Внучка.
— Да смысл был бы иначе спорить? Ситуация была стабильная: при старых условиях выигрывал тот, кто придумает что-то новенькое. Правда, процесс как раз начинал выходить к насыщению: с одной стороны, Мак-Мэд стал ошибаться, с другой — с каждым разом ему все трудней придумывать новые трюки. Но уж поверь, момент, когда бот его задавит, еще очень далек.
— На что же надеялся Ксенобайт?
— Как всегда, в основном на себя. Я ведь тебе недаром говорил: все, что сейчас происходит, — лишь подготовительный этап. Поведением бота управляет тактический анализатор. Он решает, стоит ли нападать или обороняться, какую часть тела прикрывать или куда нанести удар. В зависимости от задачи — подбирает движение из базы. И это только основа. Сложные анализаторы следят за каждым движением противника, пытаются предугадать его намерения, замечают, если ты теряешь равновесие или попадаешь в невыгодное положение. В общем — как с шахматами. Чтобы обыграть новичка, много не надо, но против гроссмейстера нужно строить фактически отдельный компьютер.
Внучка вздохнула: Банзай явно увлекся одной из любимых тем.
— Знаешь, какое-то время назад были даже проекты виртуальных тренировок по рукопашному бою. Ничего, правда, путного из этого не вышло, хоть пополам тресни, а рефлексы, наработанные в виртуалке, на реальном ринге гроша не стоят. Хотя ходили слухи, что...
— Банзай, мы отвлеклись. Все-таки что делает Ксенобайт?
— А, ну да... В общем, он на ходу пытается настроить скрипты управления. Вводит вручную все те параметры, обсчитывать которые в реальном времени у простого компьютера кишка тонка. Напрямую управлять телом он не может, да и не хочет, зато пытается повлиять на ход поединка через скрипт.
↓ Содержание ↓
↑ Свернуть ↑
| Следующая глава |