Вокруг Вселенной - выносливость и система состояния игрока (полный перевод, видео+текст).

Вокруг Вселенной - выносливость и система состояния игрока (полный перевод, видео+текст).

Хоть и с большим опозданием, но выкладываю полный перевод последнего выпуска Around the Verse. На выходных было не до этого, впредь буду стараться выкладывать в субботу, в крайнем случае в воскресенье.

Видео:

Текст:

Сэнди Гардинер - Вице-президент по маркетингу | Джереми Ли - Старший художник по концептам:

Скрытый текст

СГ: Привет, и добро пожаловать на очередной эпизод Вокруг Вселенной – нашего еженедельного взгляда на продолжающуюся разработку Star Citizen. Я – Сэнди Гардинер.

ДЛ: А я – Джереми Ли

СГ: Рада, что ты сегодня здесь. В этом эпизоде мы взглянем на новую систему выносливости и узнаем, как различные действия будут влиять на вашего внутриигрового аватара.

ДЛ: Но перед этим давайте уделим внимание важнейшей части работы в наших офисах – Альфе 3.0

СГ: А это значит, что самое время проверить, как идут дела у Эрика Кайрона Дэвиса и остальной команды, в новом Burndown.

Эрик Кайрон Дэвис - Директор студии и глава разработки в США:

Скрытый текст

С возвращением к Burndown, нашему еженедельному шоу, посвященному проблемам, мешающим релизу Star Citizen Alpha 3.0. Прошлую неделю мы завершили с 94 обязательными к исправлению ошибками, которые были приоритизированы как 9 блокеров, 62 критические, 21 с высоким приоритетом и две со средним. Давайте сверимся с командой, чтобы понять, каков прогресс.

Мэттью Вэбстер - Помощник продюсера:

Скрытый текст

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

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

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

С другой стороны, может быть и действительно плохой день, когда вроде есть какой-то прогресс, разработчики вносят еще несколько исправлений и передают для тестирования в QA. А QA тестируют и говорят: «Чтож, это не работает. Проблема вот с этим. И там одна. И там еще одна».

Или если взять определенную проблему – да что угодно – с которой ты вроде разбираешься и передаешь в QA, а они буквально проваливаются в кроличью нору и начинают думать: «так, если это не работает, то что будет, если мы сделаем этак… И что случится, если я сделаю так. А что случится тут, там, с этим, с тем…» И в конечном итоге из-за обнаружения этого одного изначального бага может выявиться еще 6-7.

Бэн Перри - Ведущий программист по графике:

Скрытый текст

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

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

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

В конечном итоге мы просто придумали небольшой фикс. Мда. Фактически просто проверяем, получается ли там 0. Если получается, то мы просто используем совершенно другой вектор, который не совсем верен, но не различим визуально. Та-да, работает!

Роберт Гейзер - Младший технический дизайнер:

Скрытый текст

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

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

Макс Хонг - Младший инженер по игровым механикам:

Скрытый текст

Для 3.0 мы переделываем турели на всех кораблях. Даже не только на кораблях, например, вы также могли видеть турель на ровере. И ради турелей мы дали дизайнерам возможность определять мертвые и активные зоны и контролировать, как быстро турель будет поворачивать. А недавно мы добавили возможность вращения турели еще во время посадки в нее, чтобы можно было быстрее начать стрелять по врагам или другим пилотам.

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

Тобиас Йоханссон - Дизайнер уровней:

Скрытый текст

У нас в Jira (*софт для багтрекинга) есть заявка о баге, когда ты рандомно умираешь при посещении наших аутпостов на лунах. Это происходило во всех аутпостах, так что нам пришлось открывать редактор, как вы можете видеть здесь, и выяснить, в чем заключалась проблема.

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

И вот мы получили сообщение о баге, обнаружили это, и думаем: «окей, они не соединены, мы должны это исправить».

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

Так что нам пришлось использовать инструмент кастомных форм, который есть в Lumberyard, и просто сделать эти формы, чтобы они немного выступали в районе дверей так, чтобы контейнеры касались друг друга, но не выступали наружу, так что вы уже не сможете стоять снаружи и дышать.

Эрик Кайрон Дэвис - Директор студии и глава разработки в США:

Скрытый текст

На момент съемок мы сократили общее количество обязательных к исправлению ошибок на 18, что оставляет 76 ошибок, мешающих релизу. В то же время мы проверили 773 новых обновления для билда 3.0. А также на этой неделе мы решили, какой помощи мы ожидаем от первой волны внешних тестеров, какого фидбека, и что продолжим полировать и исправлять.

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

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

Сэнди Гардинер - Вице-президент по маркетингу | Джереми Ли - Старший художник по концептам:

Скрытый текст

СГ: Для более детального взгляда на то, какие баги мы устраняем, проверяйте наш график разработки 3.0, который мы еженедельно обновляем на сайте.

ДЛ: А теперь время для разговора о выносливости. Команда разработчиков усердно трудилась над системой выносливости, которая учитывает множество факторов, чтобы обеспечить больше реализма.

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

ДЛ: Или хуже, если у вас не хватает выносливости для побега в случае ухудшения ситуации. Создание системы, требующей от игроков стратегического мышления о собственных перемещениях, было одной из многих задач команды.

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

Дэн Трафин - Ведущий системный дизайнер:

Скрытый текст

Система состояния игрока зародилась в виде гораздо меньшего элемента, когда мы хотели определить, как дышать в космосе и как происходит удушение, как все это работает. Изначальная реализация была довольно поверхностной, служившей для того, чтобы мы могли выпустить альфу 2.0. Мы расставили некоторые смертельные триггеры снаружи воздушных шлюзов, чтобы предотвратить выход людей наружу в футболке. Очевидно, люди умудрились проделать и это из-за лазеек в стенах, и люди просто бороздили космос в футболке. Не самый лучший расклад.

В конечном итоге мы начали серьезную работу над этой системой, но требовался выход еще многих вещей до того, как эта система смогла бы полностью функционировать. Основная из них – система помещений. Эта система определяет пространство каждой комнаты, каков там состав атмосферы, как воздух перемещается из комнаты в комнату. Другой проблемой была реакция на открытие и закрытие дверей. Изначально они не поддерживали эту систему. Так что нам пришлось переделать все двери, все шлюзы, все подъемники, так что теперь при открытии дверей газы действительно могут перемещаться из комнаты в комнату.

Кристиан Нечифор - Пограммист геймплея:

Скрытый текст

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

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

Дэн Трафин - Ведущий системный дизайнер:

Скрытый текст

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

И мы стараемся сделать так, чтобы игрок не мог все время носить свой шлем. Ношение шлема должно быть довольно затратным, и это привнесет множество интересный геймплейных возможностей в Star Citizen, когда вам придется бежать к шкафчику со скафандром и быстро одевать его, потому что на вашем корабле разгерметизация и у вас нет другого выбора. Вы либо оденете костюм, либо умрете.

Кристиан Нечифор - Пограммист геймплея:

Скрытый текст

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

Дэн Трафин - Ведущий системный дизайнер:

Скрытый текст

Любое действие игрока потребляет выносливость. Если вы бежите, прыгаете, приседаете, преодолеваете препятствия, то это потребляет выносливость. Даже если ничего не делать, выносливость потребляется, но очень незначительно в сравнении с прочими действиями.

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

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

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

Скажем, если вы просто провисите в космосе пару часов, то у вас может закончиться кислород, при этом за десять минут бега вы также можете израсходовать весь запас, так как будете потреблять гораздо больше.

Кристиан Нечифор - Пограммист геймплея:

Скрытый текст

Действия игрока – второй источник потребления выносливости. Действие включает тип, необходимую выносливость, стоимость и две точки, когда код игры как бы говорит «Окей, тут действие начинается, а тут заканчивается». Но этот код доступен только тогда, когда текущая выносливость превышает минимально необходимую.

Потребление также можно рассчитать разными способами. Есть постоянное потребление, как для прыжка или перепрыгивания препятствия. Есть продолжительное, как для бега или задержки дыхания. А есть постоянное потребление, которое зависит от выполняемых в данный момент действий.

И все это отлично работало, пока мы не добавили в эту солянку вес снаряжения. Прыжок в тяжелой броне с рельсовой пушкой за спиной на Юпитере гораздо более затратен, чем прыжок в легкой броне на Луне. Так что теперь все действия имеют различную стоимость, и дизайнеры не могли верно отрегулировать потребление действий для игрока. Мы решили это путем учета оставшейся выносливости вместо текущей. То есть вместо «вам нужно 20% выносливости для прыжка» говорим «прыжку не разрешено понизить выносливость ниже 10%».

Чтобы отображать состояние игрока, мы используем комбинацию эффектов. Проблема в том, что, когда несколько состояний используют эффекты, например, дыхание при низком здоровье и выносливости, все эти состояния изменяют яркость. Так что нам нужно было сделать так, чтобы каждый эффект был заметен, но при этом не переборщить в случае, если они одновременны. Так что мы внедрили центральный компонент, который управляет правилами. В новой реализации, например, сила всех модификаторов контрастности после первого уменьшена на 50%, а в совокупности они не могут превысить определенного значения.

Система баффов в игре уже давненько, но у нас не было причин для ее активного использования. Бафф – это набор данных, содержащий тип положительного эффекта, его значение, а иногда лимит времени. Их назначение заключается в возможности изменять что угодно в состоянии игрока, используя простой интерфейс.

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

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

Дэн Трафин - Ведущий системный дизайнер:

Скрытый текст

Одна из важнейший для нас вещей – то, чтобы игрок понимал, что с ним происходит. Простого наличия выносливости недостаточно. Игроку постоянно нужно поглядывать на экран состояния персонажа. Нам пришлось внедрить множество небольших трюков, чтобы игрок понимал «Оу, я сбил дыхание. Мне стоит передохнуть и восстановить его» или «Ой, мой кислородный баллон закончился!»

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

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

Филип Пирс-Смолвуд - Дизайнер звука:

Скрытый текст

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

Я плотно работал с Эваном Брауном, один из наших программистов по звуку, и вместе мы начали разработку это системы, чтобы происходящее с состоянием игрока отражалось в звуке, дабы игрок слышал, что происходит с персонажем.

Звуковой компонент руководит анимацией дыхания. Аудио синхронизировано с фактической анимацией дыхания, а также с МобиГлассом, где вы видите монитор сердечного ритма. Так что сердечный ритм и частота дыхания тоже будут синхронизированы, все это управляется одной системой.

Первым шагом для меня было изучение того, какие стили дыхания нам понадобятся, а также их различные скорости и характеристики. Так что я решил, что лучше всего будет записать самого себя, а не привлекать других, так как я не знал, получится ли все.

Первым делом я задал карту темпов. Я решил записать себя с разными вдохами в минуту. Мы начали с 20 вдохов в минуту, а затем я увеличивал частоту шагами в пять вдохов. Так что получился разброс между 20 и 190 вдохами в минуту. В действительном времени разброс идет от трехсекундного вдоха и трехсекундного выдоха до вдоха и выдоха в три десятых секунды. Что реально очень быстро. Было весело все это записывать.

Плюс записи под карту темпов заключается в том, что ты получаешь множество вариаций и кучу готовых элементов очень быстро. С другой стороны, я не понимал, что дышать очень быстро без реальной необходимости окажется очень трудно. Я чуть не отключился пару раз на самой высокой скорости. Хорошо, что этого не произошло.

Когда я получил достаточно материала, я его собрал в единое целое. Я разделил все вдохи и все выдохи для каждой определенной скорости и повыдергивал их из Рипера (*Reaper - программа для записи и обработки аудио), получив раздельные элементы.

Система состояния игрока на стороне аудио состоит из трех основных частей. Есть стиль дыхания, т.е. разные варианты дыхания. Затем есть хрипы и голосовые эффекты. А еще есть поддержка звуковых эффектов, которые относятся к скафандру, вроде сигналов тревоги или звуков интерфейса.

На данный момент у нас есть 13 стилей дыхания. Скорее всего их количество увеличится. Сейчас они разделены на два типа. У нас есть тип дыхания для FPS (когда мы просто бегаем) и есть тип для пилотирования, так как это две разные ситуации, в которых используются разные стили дыхания.

Так что в FPS у вас будет нормальное дыхание, восстановляющееся, дыхание при кислородном голодании, при получении урона и травме. Но когда вы управляете кораблем, мы используем специальные стили дыхания. Один из них называется AGSM, т.е. маневр против перегрузки, также известный как техника Хикка, которую пилоты используют, чтобы оставаться в сознании при высоких перегрузках. Это помогает поддерживать высокое кровяное давление в голове или что-то в этом духе. Так что если вы выполняете маневр при действительно высокой перегрузке, вы начнете слышать «Хик!». Я пересмотрел кучу показательных материалов о стрессе и перегрузках, которым подвергаются пилоты, и это жесть.

В общем игра использует раздельные триггеры вдохов и выдохов, что замечательно. Уровень точности просто прекрасный. Система состояния игрока в тандеме с аудио компонентом передают точные значения, связанные с выносливостью, кислородом, здоровьем, даже составом атмосферы в помещении. Все это загружается в аудио компонент, который я контролирую через Data Forge. Тут я могу контролировать тип дыхания, стили дыхания и все условные переходы. Таким образом я могу устанавливать, какой стиль дыхания проигрывается в определенный момент и как он соотносится с параметрами, поступающими от системы состояния игрока.

Конечный звук находится в Wwise, софте, который мы используем для работы со звуком. Сейчас там 13 разных стилей дыхания, которые раскиданы по собственным отдельным веткам микшера. Внутри такого микшера есть контейнер, который содержит вдохи, и есть контейнер, в котором выдохи. Их можно задействовать независимо, один за другим. В совокупности каждый содержит диапазон случайных контейнеров от 20 вдохов в минуту до 190. И когда контейнер отзывается на RTPC, параметр управления в реальном времени, который берет значения из системы состояния игрока и аудио компонента, выбирается скорость дыхания для воспроизведения. Затем игра вызывает триггер проигрывания, что-то вроде «Проиграй вдох» или «Проиграй вдох при восстановлении дыхания». Это извлекается из Wwise и получается то, что вы можете слышать в игре.

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

Нужно все синхронизировать. Не может быть вдоха и выдоха, а анимация выдоха и вдоха.

Гордон Мак-Лин - Программист:

Скрытый текст

Я работал над генерируемой анимацией дыхания, т.е. движением рук и груди игрока согласно дыхания. И в основном фокусировался над синхронизацией со звуком, чтобы усталость игрока отображалась в игре.

Сама по себе система довольно сложная на стороне бэк-енда, есть множество переменных и куча различных состояний и уровней. Но с точки зрения игрока мы стараемся сделать ее как можно более простой и легкой в понимании. Ибо очевидно, что все ради обратной связи с игроками, чтобы они могли видеть «Ох, я устал. Ого, я истощен. Нужно притормозить. Я должен прекратить изматывать себя», и нужно передавать эту информацию легко и непринужденно, при этом сохраняя комплексность системы на стороне бэк-енда, поддерживая продвинутую систему.

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

Очевидно, что при нормальном уровне выносливости все это будет практически незаметно. В этом и весь смысл системы дыхания. Если вы живете в обычном режиме, то и не замечаете своего дыхания. Как только вы достаточно измотались, вы сразу же заметите это. Вы будете знать, что задыхаетесь, ваши руки трясет, ваша грудь потяжелела, и что вы измотаны.

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

Но нам пришлось обратиться к генерации в реальном времени. И то, как мы это сделали, заключается в передаче данных кривой прямо из Maya, софта для работы с анимацией, мы вводим эти данные в DataForge при помощи скрипта, который был написан Робом Ховсом, а затем эти данные считываются игроком и могут быть проиграны. Мы можем регулировать скорость на ходу, фактически звук указывается нам: «это продолжительность следующего вдоха», а для нас это означает продолжительность анимации.

Все это также завязано с системой поз при прицеливании. В Lamberyard есть позы прицеливания, которые накладываются на игрока, и определяют точку прицеливания. Что-то вроде последнего слоя анимации. И этот слой направляет ствол в точку, куда смотрит игрок: если он смотрит прямо, то оружие направляется прямо, если вниз - то вниз. И, очевидно, все это различается для разного оружия. Есть разные точки опоры и так далее.

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

Дэн Трафин - Ведущий системный дизайнер:

Скрытый текст

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

Кристиан Нечифор - Пограммист геймплея:

Скрытый текст

Текущая симуляция перегрузок, по крайней мере одна из рабочих версий, очень точная и реалистичная. Она доходит до симуляции реальной адаптации человека к эффектам перегрузки. Однако, в будущем нам нужна более универсальная симуляция, работающая с любым контекстом, а не только с игроком-человеком, управляющим кораблем. Нам нужно, чтобы все было настолько просто, чтобы работало с любыми объектами. Например, мы хотим, чтобы незакрепленный груз падал при ускорении корабля.

Наше новое решение учитывает накопленную скорость объекта и все физическое окружение, в котором он находится. Так что мы берем линейную и угловую скорость объекта, трансформируем их в родительское пространство, добавляя к родительским скоростям, затем снова и снова до тех пор, пока не останется родительских объектов. Затем мы можем отслеживать любые изменения в совокупных скоростях. Любые изменения скорости означают ускорение, а ускорение приводит к перегрузкам.

Дэн Трафин - Ведущий системный дизайнер:

Скрытый текст

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

Эван Браун - Старший программист аудио:

Скрытый текст

Оказалось, что каждая идея о том, как игрок реагирует на перегрузки, усталость, то, как совершает действия вроде прыжков и преодоления преград, все это взаимосвязано. А еще есть хрипы и прочие звуки в диалогах, которым нужно взаимодействовать с дыханием, так что все это стало довольно сложным.

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

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

Я подготовил систему, используя наш стандартный интерфейс разработки, DataForge. И мы начали с того, что выглядит как табло с номером и параметрами для разных диапазонов скорости дыхания и объема легких, который понадобится для потребления достаточного количества кислорода для восстановления выносливости, что и является основной задачей дыхания. Согласно количеству кислорода в атмосфере или помещении мы рассчитываем, сколько выносливости может восстановиться.

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

Тогда я создал новую штуку, которую мы называем типом дыхания. Это график потока, собирающий звуки с различными точками перехода. Точка перехода сама по себе является набором условий, при которых график пойдет определенным путем к определенному стилю. Мы расширили его таким количеством параметров, вроде проверок уровня здоровья и выносливости, или перегрузок или других условий, при которых теряешь сознание, что ему приходится распадаться на столько разных стилей, звук становится реалистичным, у нас кажется 14 разных стилей, что дает игроку чувство реалистичности происходящего.

Зейн Биен - Креативный директор по глобальному интерфейсу:

Скрытый текст

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

Если вы выйдете через шлюз, то ваш кислородный баллон больше не будет заполняться. Или если вы на планете с недостаточным количеством кислорода или низким атмосферным давлением, то стоит ожидать, что ваш баллон не будет восполняться так же быстро, как при обычной атмосфере.

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

Эти экраны на вашем МобиГлассе также будут показывать то же, что и на визоре. Очевидно, что это довольно важная информация, которую вы захотите иметь перед глазами большую часть веремени, а потому она есть и на ХУДе. Но в мобигласс доступна и дополнительная информация.

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

Дэн Трафин - Ведущий системный дизайнер:

Скрытый текст

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

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

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

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

Нужно, чтобы все это ощущалось по-настоящему, чтобы вам нужно было иметь в виду все мелочи, происходящие вокруг. Нужно понимать, что комната может быть разгерметизирована. Вот почему мы даем игрокам инструменты вроде МобиГласс, где они могут все проверить и сказать «Ох, тут одна десятая ядовитого газа, тут не достаточно давления, а тут слишком много кислорода». И у вас может случится гипоксия, если будете дышать там слишком долго. Так что игрокам придется быть осторожными. Мы предоставим инструменты для опознания окружения, но самим игрокам придется все проверять и принимать тактические решения и выбирать на основании того, можно ли там выжить или нет.

Сэнди Гардинер - Вице-президент по маркетингу | Джереми Ли - Старший художник по концептам:

Скрытый текст

ДЛ: Как вы увидели, выносливость – далеко не единственный компонент системы состояния игрока. Совмещая выносливость с этими другими факторами, вроде здоровья и силы G, ваш аватар будет ощущаться как настоящий человек, а не просто персонаж игры.

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

ДЛ: Чтож, на сегодня это все. Спасибо нашим подписчикам, благодаря вам мы можем создавать все наши шоу и постоянно давать новую информацию сообществу. Сентябрьское украшение для подписчиков будет доступно в пятницу, так что следите за этим.

СГ: Очень классно. И наконец, огромное спасибо всем бекерам за поддержку.

До следующей недели и увидимся во вселенной!

Admin administrator