Страница произведения
Войти
Зарегистрироваться
Страница произведения

Эпизод 40: Стиль злого программиста


Автор:
Жанр:
Опубликован:
11.01.2015 — 11.01.2015
 
↓ Содержание ↓
↑ Свернуть ↑
  Следующая глава
 
 

Бета-тестеры

Стиль злого программиста

Редактор пространства

16 июня, 13:22 реального времени

— Берегись! — завопил Махмуд, заметив, что метрах в двух от земли засветилось пятно переходного тамбура.

Мак-Мэд проворно отскочил в сторону как раз в тот момент, когда из тамбура выкатился обшарпанный погрузчик с грудой ящиков. Задумчиво покрутив колесами, он со страшным грохотом рухнул вниз.

— Ксен, не дрова ведь грузишь! — возмущенно заметил Банзай.

Сидящий за рычагами погрузчика программист высунулся из кабины:

— Ну знаешь, если бы вы потрудились выучить пару команд и реестр идентификаторов, мне бы не пришлось изображать из себя грузчика!

— Нет уж, хватит, — сурово отрезал Банзай. — Кеша вот попробовал — еле откачали.

— Так то Кеша, — уныло буркнул Ксенобайт.

В том, что горемычный дизайнер снова умудрился чего-то напутать, ничего удивительного не было. Но вот последствия очень впечатлили всю компанию.

Задача была, в принципе, несложной: подключиться к одной из библиотек, куда Ксенобайт заранее сложил нарисованные Кешей модели, текстуры и прочий скарб, выбрать там нужную штуковину и установить ее в пространстве игры. Для удобства Ксенобайт даже сделал что-то вроде визуального интерфейса: здоровенный ангар со стеллажами, на которых лежали ящики. На каждом ящике было изображение содержимого или, на худой конец, ярлычок с текстовым описанием.

По мнению Ксенобайта, решительно все было сделано для удобства пользователя. Мелисса, правда, тут же рекомендовала оформить все в виде каталога, по которому нужную модель можно будет просто заказать, но пока они с Ксенобайтом спорили о теории интерфейсов, Кеша умудрился напортачить там, где никто не ждал. Как ему это удалось, осталось загадкой, но дизайнер завис где-то между редактором пространства и библиотекой, в области кода, ну никак не предусматривающей визуализации.

Ксенобайт потом утешал Кешу, что оказаться посреди выполняемого кода не так уж и плохо. Лучше, конечно, вляпаться в какой-нибудь архив, там даже по-своему красиво, но главное — все стоит на месте и можно спокойно обмозговать сложившуюся ситуацию. Даже если при этом тебя самого заархивирует. Это как йога: с непривычки действует на нервы, но со временем перестаешь замечать, что твоя левая ступня торчит у тебя из-за уха.

Вообще, затруднительно описать, что испытывает человек в виртуалке, вылетая по каким-либо причинам из зоны визуализации. Десятки предохранителей и фильтров обычно отключают пользователя прежде, чем с ним произойдет что-то уж совсем странное. Но уж если не повезет, то бедолага получает по полной программе: поток полной чепухи по всем каналам восприятия. Кеша провел в мире математической абстракции две минуты и четырнадцать секунд, но за это время, по его словам, насмотрелся такого, что волосы на голове встают дыбом. Мало того, под впечатлением пережитого он залез в вирт-редактор и нарисовал несколько "пейзажей", пытаясь передать свои впечатления. Надо сказать — получилось. Тестеры, глянув на эти абстрактные инсталляции, делали теперь все, чтобы не оказаться в схожей ситуации.

В результате доставкой объектов (а вернее, их экземпляров) из библиотек в игровое пространство занимался лично Ксенобайт. Программист, более других привычный к подобным казусам, ворчал, но не очень громко, прекрасно понимая, что в случае чего Мелисса моментально найдет ему еще какое-нибудь занятие.

Некоторые модели и даже целые сцены приходилось не возить из библиотек, уже подключенных к движку игры, а напрямую конвертировать из вирт-редактора, чтобы потом, собрав локацию, упаковать ее в новую библиотеку. Тут снова чуть не произошел конфуз, когда Ксенобайт — случайно — едва не упаковал локацию вместе с Мелиссой, Внучкой и Кешей.

Так или иначе, работа продвигалась. Тестеры начерно сотворили материк, после чего приступили к знакомой со времен Енотограда работе: обустройству локаций. Правда, на этот раз им приходилось возводить не бетонные коробки, а бамбуковые хижины, пагоды и усадьбы в абстрактно-восточном стиле, а вместо руин и свалок создавать парки и сады камней.

Впрочем, все это было лишь разминкой, небольшими тестовыми локациями, пока окончательно утверждались эскизы и сценарий стартовой местности игры. А пока Банзай решил занять всю компанию не менее важным, чем строительство, делом.

— Где выгружать?

— Я не знаю... Ну, давай вон на той полянке.

— Ладно.

Ксенобайт крутанул баранку погрузчика. Башня из напоминающих гробы ящиков качнулась и опасно накренилась. Не обращая внимания на сердитые вопли Банзая, программист бесцеремонно свалил ящики в кучу на указанной полянке.

— Ксен, ну ты совсем озверел, — поморщился Мак-Мэд. — Просто натуральный грузчик... А если сломается что-нибудь?

— Да что им сделается, — равнодушно махнул рукой Ксенобайт.

— И где теперь какой?

— А какая разница?

— Тоже правильно. Ладно, вскрывайте!

Махмуд, ворча, подошел к одному из ящиков и, примерившись, ловко вогнал под крышку ломик-активатор. Индикатор распаковки пробежался до ста процентов, после чего крышка отлетела в сторону. В похожем на гроб ящике лежало что-то очень похожее на труп, что, в общем-то, неожиданностью не было.

Кеша любил рисовать вирт-пространства. Еще больше он любил смотреть, как нарисованное им оживает в игровых мирах. И как никто другой он знал, что между этими двумя точками лежит целая куча тяжелой работы.

Полбеды, когда речь идет о какой-нибудь детали пейзажа, желательно статичной: например, куске стены. Гораздо сложнее разобраться, к примеру, с монстром, который должен не просто сидеть на полянке, а двигаться, атаковать, обороняться, бегать, прыгать, а порой — еще плавать и летать.

Патологически конфликтующий со всяким программированием Кеша сравнительно легко мог нарисовать достаточно сложную анимацию, просто выстраивая кадр за кадром. Но анимация персонажей для вирт-игр — штука более замысловатая. Ведь монстр должен не просто разыгрывать перед зрителем заранее определенное представление, а реагировать на поведение игрока, желательно — без видимых перескоков с одной анимации на другую.

— Ну, давайте, что ли, оживляйте покойничка, — вздохнул Банзай. — Внучка, ты готова?

— Всегда готова! — весело сообщила Внучка, оглядывая поляну через видоискатель неизменной камеры.

— Хорошо. Значит, так, я все равно буду делать захват движений, но постарайся снимать буквально все, даже если оно тебе покажется не сильно интересным, ладно?

— Нет проблем, я тут вокруг еще несколько стационарных грабберов поставила, так что будет даже с нескольких ракурсов.

— Умничка. Мак, готов?

Вместо ответа Мак-Мэд медленно растаял в воздухе. Зато "покойничек" в ящике вдруг вздрогнул, с театральным всхлипом втянул в себя воздух, утробно замычал и, вытянув вверх руки со скрюченными пальцами, сел.

— Хорош комедию ломать, вылезай, — равнодушно буркнул Банзай.

Мак-Мэд в новом теле пожал плечами и вылез из ящика. Выглядел он, что ни говори, жутковато: модель автоматически подстроилась под его габариты, но кожа еще не была текстурирована и покрашена. Гладкая, матовая, больше похожая на пластик, нежели на что-то живое, она имела пепельно-серый цвет без оттенков по всей поверхности, отчего лицо и правда напоминало физиономию свежего утопленника с бескровными губами. Мало того, широкие штаны имели тот же цвет и текстуру, отчего казалось, что они растут прямо из бедер модели. Впрочем, так оно, строго говоря, и было. Мак-Мэд потянул шеей, передернул плечами и пару раз подпрыгнул, привыкая к модели.

— Ну что ж, — проговорил наконец стрелок, — запускайте болванчика!

Ксенобайт пошевелил пальцами, вызывая панель управления. Воздух в двух метрах от Мак-Мэда вдруг подернулся рябью, сгустился, и через миг там, точно отражение в зеркале, появилось еще одно тело.

Раунд 01: Мак-Мэд против имитатора

16 июня, 13:43 реального времени

Мак-Мэд слегка поклонился своему доппельгангеру. Тот, немного подумав, повторил его движение. Покончив с формальностями, стрелок встал в стойку и, подойдя к двойнику, медленно обозначил простой и прямолинейный удар рукой в корпус. Выждав пару секунд, он отошел назад, а Ксенобайт что-то перещелкнул на своей виртуальной панели. Двойник Мак-Мэда, точно запаздывающее отражение в зеркале, встал в стойку и попытался нанести удар.

— Банзай, а что они делают? — спросила Внучка.

— А, это интересная штука, — хмыкнул старик. — Наработка базы движений. Понимаешь...

— Погоди, я сейчас камеру поудобнее поставлю... Вот, говори.

— Хм... Ну да. Так вот, понимаешь, давно было замечено, что чуть ли не единственный способ сделать движения персонажа естественными — это просто оцифровать движения настоящего человека. Во всех остальных случаях получается не кино, а мультик, если ты понимаешь, о чем я. Как видишь, сейчас двойник-имитатор попросту повторяет движения Мак-Мэда.

— Здорово, — вздохнула Внучка. — А Мак что, какими-то единоборствами занимался, да? Он на самом деле какой-то там черный пояс? Я всегда это подозревала!

— Знаешь, — вздохнул Банзай, — я подозреваю, что все мальчишки в детстве если и не ходили в какую-нибудь секцию, то, во всяком случае, смотрели боевики со всякими рукомашествами. Так что не делай поспешных выводов.

— Значит, в игре двойник будет просто копировать движения Мак-Мэда?

— Все не так просто, — покачал головой Банзай. — Двойник сейчас не просто копирует. Он учится. Мак делает какое-то движение, допустим, наносит удар. Имитатор пытается ударить его так же и смотрит, как реагирует оператор. Запоминает. И, если в следующий раз оператор нанесет такой удар, постарается скопировать его же реакцию.

— То есть Мак-Мэд как бы сам его учит?

— Точно. Так и называется: "анимация путем обучения".

Мак-Мэд со своим двойником уже разыгрывали довольно сложные пассажи из всякого рода блоков, ударов, уклонений и перемещений. Но последнее слово каждый раз, понятное дело, оставалось за Мак-Мэдом.

— Скукота... — уныло вздохнул Ксенобайт.

— А по-моему, очень интересно, — не согласилась Внучка.

— Такой способ имеет ряд недостатков, — тактично заметил Банзай. — Один из которых — действительно утомительный процесс сбора базы данных движений.

— Которым, — снова не выдержал Ксенобайт, — должны заниматься профессиональные спортсмены. Или каскадеры. Или кто-нибудь еще, кто рубит фишку. В крайнем случае берут и покупают уже готовую базу, с сертификатом соответствия от ассоциации единоборств.

— Да ну, это скучно, — поморщилась Внучка. — Кому понравится, если во всех играх противники будут вести себя одинаково?

— Во-во, нам примерно такую задачу и поставили, — кивнул Ксенобайт. — Мол, не забывайте, все игры "Самары Софт" несут свою специфику, они должны быть не похожи на другие игры того же жанра. От нас, видите ли, ожидают, что мы сочиним какие-нибудь новые, более реалистичные виды единоборств...

— Ну и сочиним! — оптимистично заявила Внучка.

Программист только безнадежно махнул рукой и демонстративно зевнул.

— В любом случае, — поспешил переключить на себя внимание Внучки Банзай, — все это, так сказать, лишь набор сырого материала, кирпичиков, из которых позднее придется строить... О, смотри-ка! Интересный момент! Мак-Мэд стал пропускать удары! Можно переводить тактический симулятор на новый режим: обозначить обоим противникам запас здоровья.

Ксенобайт еще раз душераздирающе зевнул и пошевелил пальцами, нажимая какие-то кнопки и передвигая регуляторы на виртуальной панели управления.

— Давай, Мак! Ты его сделаешь! — завопил Махмуд, подражая болельщикам на боях без правил. — Порви его, как Тузик грелку! Я на тебя поставил, парень...

Ксенобайт навострил уши и быстро произнес:

— Десятку на имитатора!

Махмуд прекратил дурачиться и удивленно глянул на программиста:

— Не понял?

— Ставлю десятку на имитатора! — ухмыляясь, повторил Ксенобайт.

— Ксен, на этом этапе все шансы не в твою пользу, — с сожалением покачал головой Махмуд. — Это будет даже не интересно. Ты плохо Мак-Мэда знаешь, если думаешь, что он уже выдохся. Могу поспорить, у него в запасе еще есть пара грязных... А, черт, и что, жульничать не будешь?!

Программист демонстративно скрестил пальцы и заверил:

— Честное двоичное, не думал даже!

— Даже так... Ладно, по рукам.

Мак-Мэд, прекрасно слышавший весь диалог, только неодобрительно покачал головой.

Ксенобайт, картинно хрустнув пальцами, вызвал две дополнительные панели инструментов и два терминальных окна с какими-то данными. Расположив все это хозяйство поудобнее, он быстро прошелся пальцами по панелям.

На этот раз двойник Мак-Мэда взял инициативу на себя. Перейдя в стойку, он стал осторожно подкрадываться к стоящему неподвижно стрелку. Тот стоял неподвижно, но явно не пропускал ни одного движения противника. На секунду они замерли друг напротив друга. Ксенобайт продолжал нажимать какие-то клавиши и двигать регуляторы на своих панелях, и двойник вдруг стремительно перешел в атаку.

— Знаешь, Банзай, — неуверенно проговорила Внучка, — Ксенобайт все-таки жульничает. Я не знаю, как и в чем, но просто косичками это чую!

— Конечно, жульничает, — удивленно откликнулся Банзай. — Но — честно жульничает.

— Это как?! — удивленно моргнула Внучка.

— Да смысл был бы иначе спорить? Ситуация была стабильная: при старых условиях выигрывал тот, кто придумает что-то новенькое. Правда, процесс как раз начинал выходить к насыщению: с одной стороны, Мак-Мэд стал ошибаться, с другой — с каждым разом ему все трудней придумывать новые трюки. Но уж поверь, момент, когда бот его задавит, еще очень далек.

— На что же надеялся Ксенобайт?

— Как всегда, в основном на себя. Я ведь тебе недаром говорил: все, что сейчас происходит, — лишь подготовительный этап. Поведением бота управляет тактический анализатор. Он решает, стоит ли нападать или обороняться, какую часть тела прикрывать или куда нанести удар. В зависимости от задачи — подбирает движение из базы. И это только основа. Сложные анализаторы следят за каждым движением противника, пытаются предугадать его намерения, замечают, если ты теряешь равновесие или попадаешь в невыгодное положение. В общем — как с шахматами. Чтобы обыграть новичка, много не надо, но против гроссмейстера нужно строить фактически отдельный компьютер.

Внучка вздохнула: Банзай явно увлекся одной из любимых тем.

— Знаешь, какое-то время назад были даже проекты виртуальных тренировок по рукопашному бою. Ничего, правда, путного из этого не вышло, хоть пополам тресни, а рефлексы, наработанные в виртуалке, на реальном ринге гроша не стоят. Хотя ходили слухи, что...

— Банзай, мы отвлеклись. Все-таки что делает Ксенобайт?

— А, ну да... В общем, он на ходу пытается настроить скрипты управления. Вводит вручную все те параметры, обсчитывать которые в реальном времени у простого компьютера кишка тонка. Напрямую управлять телом он не может, да и не хочет, зато пытается повлиять на ход поединка через скрипт.

 
↓ Содержание ↓
↑ Свернуть ↑
  Следующая глава



Иные расы и виды существ 11 списков
Ангелы (Произведений: 91)
Оборотни (Произведений: 181)
Орки, гоблины, гномы, назгулы, тролли (Произведений: 41)
Эльфы, эльфы-полукровки, дроу (Произведений: 230)
Привидения, призраки, полтергейсты, духи (Произведений: 74)
Боги, полубоги, божественные сущности (Произведений: 165)
Вампиры (Произведений: 241)
Демоны (Произведений: 265)
Драконы (Произведений: 164)
Особенная раса, вид (созданные автором) (Произведений: 122)
Редкие расы (но не авторские) (Произведений: 107)
Профессии, занятия, стили жизни 8 списков
Внутренний мир человека. Мысли и жизнь 4 списка
Миры фэнтези и фантастики: каноны, апокрифы, смешение жанров 7 списков
О взаимоотношениях 7 списков
Герои 13 списков
Земля 6 списков
Альтернативная история (Произведений: 213)
Аномальные зоны (Произведений: 73)
Городские истории (Произведений: 306)
Исторические фантазии (Произведений: 98)
Постапокалиптика (Произведений: 104)
Стилизации и этнические мотивы (Произведений: 130)
Попадалово 5 списков
Противостояние 9 списков
О чувствах 3 списка
Следующее поколение 4 списка
Детское фэнтези (Произведений: 39)
Для самых маленьких (Произведений: 34)
О животных (Произведений: 48)
Поучительные сказки, притчи (Произведений: 82)
Закрыть
Закрыть
Закрыть
↑ Вверх