Кинематограф
Мы продолжаем работать над видео сообщениями и некоторыми сценами разговоров для кампании SQ42. Вычищаем и редактируем требуемые анимации, а также устанавливаем их и делаем для них освещение. Также мы экспериментируем с установками света, основанными на камере/персонаже, поскольку мы столкнулись с ситуацией, что некоторые диалоги будут проходить в очень тёмных условиях коридоров/ниш, или в других неконтролируемых ситуациях, где мы хотим применять более кинематографический мягкий свет для сцены.
Также мы завершили 10 отдельных сегментов передачи «Галактический Тур» для Юбилейного прямого эфира с выставки (Anniversary LiveStream). Которую проводил уже знакомы персонаж по лору Джакс Макклири [Jax McCleary], посетивший Выставку кораблей Межгалактическое Аэрокосмическое Экспо 2946 года [Intergalactic Aerospace Expo]. Для Джакса была использована модифицированная голова персонажа уровня Тир2 и, поскольку сроки поджимали, имел лишь некоторые основные готовые анимации для тела и лица. Для Экспо, мы построили бывшую воздушную базу Флота и ангары, которые превратили в залы выставки. Различные производители кораблей обзавелись трехмерными версиями своих логотипов, включая Drake, Aegis, Anvil и RSI.
Визуальные эффекты (VFX)
В течение прошлого месяца Франкфуртская студия визуальных эффектов работала в основном над полировкой эффектов для выпуска обновления 2.6.0. Это включало в себя полные проходы по визуальным эффектам окружений на нескольких уровнях, а также несколько специально созданных эффектов для аспекта игры FPS, вроде нескольких новых вариантов попадания крови, когда игрока подстрелили, появления эффектов на экране при получении игроком урона, которые активируются через графический поток и при новом взрыве осколочной гранаты МК4.
Команда по контролю качества (QA)
Основной задачей тестеров в Германии в ноябре было тестирование Star Marine, Squadron 42, а также новые возможности, касающиеся движка. Крис Спик и Глен Книли [Chris Speak] и [Glenn Kneale] потратили большую часть месяца на точечное тестирование и регрессию Star Marine, Глен одновременно с этим тестирует Squadron 42 и принимает участие во запланированных встречах по-поводу ИИ. Мы также участвовали во множестве игровых тестов, не один и два, а бывало, по три и четыре раза за день. Тесты проводились как внутри одной студии, так и с участием людей из других студий в Англии, Техасе и ЛА. Крис также работал над созданием различных тестовых уровней для команды разработчиков, чтобы они использовали их для своих собственных проверок нововведений. Мелисса Эстрада работала с Крисом Болте, тестируя его недавно разработанную встроенную страницу накопления для сборок наших разработчиков игры, чтобы создавать более полные дампы сбоев для наших инженеров. Эти дампы ядра обеспечат инженеров намного большим количеством информации, что облегчит задачу по поиску и устранению редко проявляющихся ошибок, устранение которых является обязательной составляющей для улучшения общего игрового процесса. Крис Болте сделал этот процесс более простым, так что любой в отделе QA сможет создать эти дампы ядра, касающиеся определенного сбоя, когда кто-то их запросит. Мелисса, вместе с Паскалем Мюллером [Pascal Muller], также тестировала и изучала планетарный редактор от Саши Хоба [Sascha Hoba]. Это делалось для того, чтобы сформулировать новый список проверок, который будет специально проверять функциональность ядра планетарного редактора, чтобы убедиться в его готовности для использования художниками по окружениям.
Художественное оформление сред
В этом месяце команда пополнилась парой человек, так что старшие сотрудники посвящают их в наши внутренние процессы. Действующая команда в первую очередь работает над задачами, касающимися процедурных планет: определяют и создают на заказ экосистемы, типа каньонов и шахтных карьеров, повышают качество смешивания материалов поверхности, чтобы добиться большей детализации, работают над инструментами, которые позволят сделать рабочий процесс более эффективным. Они также работали над различными мегаструктурами для уровня SQ42, включая моделирование, UV картирование и создают префабы компонентов, чтобы их могли размещать дизайнеры.
Техническое искусство
Как и многие другие отделы, наш — весь месяц занимался обновлением 2.6 и работал над Squadron 42. Команда трудилась с дизайнерами и обновила большое количество анимаций для FPS модуля, особенно были улучшены выбор, отмена и перезарядка. Они обновили и реэкспортировали многочисленные типы вооружений и гаджетов, чтобы они соответствовали новой левой позе захвата, которая пока работает через окружение IK. Также мы завершили нашу производственную линейку новых вооружений, которая дает возможность нашему отделу моделирования тестировать их вооружение, находящееся в процессе разработки, прямо в игре. Это позволяет им быстро посмотреть и обнаружить любые потенциальные проблемы с оружием, которые могут возникнут в процессе.
Инженерия
Команда по движку может очень много написать, что является хорошим признаком, так что давайте начнем говорить о высокотехнологичных штуках. Мы выполнили некоторые основные улучшения Физики, системы Шейдеров, Texture Array Streaming, анимации куклы и Поверхностей/Экосистем. Один из инструментов позволил художникам делать дыры в поверхности планет для более реалистичной установки крупных построек, которые применяются в посадочных зонах. Также мы переключились на использование многопоточного распределителя памяти, который не только повышает эффективность, но и унифицирует её использование в рамках движка, игры инструментов и редактора.
Мы улучшили системы окклюзии на основе перепроецирования [reprojection based occlusion systems] вычистив созданный ранее код и сконвертировав его в чистые инструкции SSE2 SIMD (позволит нам позже выбрать лучший вариант SIMD, который поддерживается процессором пользователя). Делая так, мы также исправили некоторые проблемы с алиасингом внутри кода окклюзии, в результате чего движение будет более плавным за счет равномерной генерации кадров. Затем мы уделили время массивной очистке нашего переходного кода для Зон (Zone). Со временем, эта часть стала слишком сложной, но мы справились и снова снизили его уровень запутанности, что сделало наши переходы между зонами более стабильными. До обновления, код клиента содержал кусок, который выяснял есть ли у объекта измененные зоны, что было очень хрупким процессом. Теперь код очень точный, так что все объекты меняют зоны в виде автоматической операции. В дополнение, всё это также связано с физикой, что должно устранить случаи (или как минимум сильно уменьшить частоту их появления), когда игроки телепортировались в космос во время входа/выхода из корабля.
Также мы улучшили функциональность нашего низкоуровневого перераспределения памяти; мы смогли выполнить это в виде некоторых слоев в пределах одной системы, делая код более удобоваримым. Делая эту чистку, мы изменили менеджеры нашей ключевой системы, до этого мы использовали собственный менеджер (allocator) для мелких распределений, а менеджер операционной системы — для глобальных случаев. Проблемой было то, что этому подходу уже несколько лет. На практике — это означает, что менеджер ОС теперь может справляться и с мелкими распределениями, как наш собственный, но вместо того, чтобы пользоваться только им, мы решили использовать менеджер JeMalloc. Это системный менеджер, который применялся в ОС FreeBSD и поддерживается Facebook. JeMalloc соответствует более современному дизайну, и поэтому он очень хорошо масштабируется вместе со множественными потоками, что очень важно для нас и будет более важным по мере того, как мы будем делать всё больше и больше кода многопоточным.
Мы также продолжили работу над нашей системой Зон (Area). Зоны — это специальные допущения, использующиеся инженерами игры, чтобы придать комнатам, или зонам некоторый специфический контекст. Движок может сообщать, когда сущности прибывают или покидают такую зону. Мы сейчас расширили эту систему, чтобы отслеживать статус наложения всех сущностей в пределах всех зон. Чтобы внедрить это таким способом, с учётом наших громадных масштабов (в количестве сущностей и зон), мы переместили старую систему прямо в систему зон, что позволяет нам повторно использовать пространственную информацию в намного более эффективном алгоритме.
Вооружения
На протяжении прошлого месяца, художники по ручному оружию полировали вооружения и гаджеты для ближайших выпусков, построили прототипы для широкого диапазона новых орудий от Кастак Армс [Kastak Arms], и уделили некоторое время созданию модульных металлических прицелов для семейства вооружений P8. Мы завершили первый художественный прогон новой переделанной лазерной винтовки ATT-4, и начали такой же процесс для снайперской винтовки Arrowhead. Команда по корабельному вооружению занялась новым диапазоном корабельного вооружения, основанным на обновлённом стиле изготовителя Найтбридж Армс [Knightbridge Arms], который будет включать в себя более модульный дизайн.
Проектирование уровней
Эта команда работала над локациями, которые требуются для обновления 3.0. Это включает в себя создание архетипов космической станции и варианты спутников, а также нескольких наземных форпостов. Мы также стараемся поддерживать команду художников в работе над большими планетарными посадочными зонами, а также в продвижении реализации модульной системы наших локаций. Спутники и наземные форпосты были красиво оформлены и переданы команде художников.
Системное проектирование
В этом месяце команда по системному дизайну была занята подготовкой полезной документации для Squadron 42, которая относится к фундаментальной работе кинематографических сцен и взаимодействий игрока. Добавляли фоновые разговоры между персонажами ИИ и, в общем плане, делали ИИ более живыми и естественными в их среде. В тоже время, мы работали над завершением видов карьеры Охотник за головами и Наёмник для обновления 3.0, и разбивку этих карьер на системы компонентов. Мы также добились прогресса в навыках ИИ и системой их параметров, которая должна обеспечить каждого персонажа-бота своей индивидуальностью, личностью, личными потребностями и желаниями. Боты будут менять свои приоритеты поведения Категоризации, в основном, отталкиваясь от своих параметров и навыков. К примеру, если боту было велено ремонтировать ваш корабль, он не будет это делать, если он хочет в туалет, или если он очень устал. Это также подталкивает игроков к найму экипажа для своих кораблей, состоящего из ботов, у которых большое разнообразие навыков для различных ситуаций, и к сбору команд, основанных на том, как эти парни дополняют друг друга в рамках выполнения конкретной задачи.
Искусственный интеллект
В прошлом месяце мы добились значительного прогресса в разработке искусственного интеллекта. В начале месяца мы завершили первый прогон по функциям и обратным вызовам миссий [Mission Functions и Mission Callbacks]. Миссия в категоризации сперва начнет с функции Init и закончит с UnInit, что позволит проектировщикам как подготовить, так и очистить их логику. Давайте представим, что мы создаем новую тестовую миссию, где мы хотим, чтобы на мостике возник капитан Уайт, функция Init будет чем-то похожим.
Функции для миссий могут вызываться как кодом ботов (как Init выше), так и динамически создаваться проектировщиками, и они могут быть представлены в виде локальных функций миссии. Как вы видите, в системе на картинке персонаж Капитан Уайт теперь хранится в переменной «CaptainWhite», это разновидность NPC, которая несет в себе информацию о том, какой код игры может обращаться к системе Миссий за за элементом, который там хранится. Переменная NPC, к примеру, вызывает систему миссий когда меняется состояние здоровья NPC, когда NPC умирает, когда он вылечивается и т.д. Если мы хотим реагировать на различные ситуации, в которых здоровье Капитана Уайта изменилось, тогда мы можем добавить обратный вызов миссии, как показано на следующем изображении.
Чем больше обратных вызовов, которые создаются игровым кодом, тем на большее число ситуаций может реагировать дизайнер и создать свою собственную логику. Также система Subsumption миссий (в основе лежит Категоризация) позволяет программистам игры определить любой тип в коде игры, что позволяет легко расширить систему без необходимости модифицирования ключевого кода. Обратные вызовы также могут быть указаны в качестве глобальных, к примеру, мы можем создать специфическую логику, когда любой NPC умирает во время миссии. Это то, что мы называем «Глобальные обратные вызовы»
Мы также сделали новые улучшения боевого типа поведения в модуле Subsumption. Бой — это слишком сложный элемент для поведения NPC, поскольку он требует большой координации между персонажами и специфического анализа. Мы создали новую боевую активность (основанную на работе, которую мы завершили в предыдущие месяцы), так что есть дизайнеры, которые могут это применить в любом случае, например, когда враг обнаружен персонажем NPC. Первая реакция в боевых условиях — это что-то, что случается когда NPC думает, что он увидел что-то опасное: его поведение изменится, на основе того, насколько он уверен в том, что это действительно представляет для него опасность. К примеру, NPC, который видит игрока на большом расстоянии, не будет немедленно реагировать на угрозу, он попытается посмотреть в направлении игрока и понять, может ли он быть угрозой, и если так, то он может обратиться ко второму участнику его группы и вместе начать атаковать врага. Это то утверждение, что позволяет игроку решить что-то на основе его приближения, он почти обнаружен, но по-прежнему может пытаться скрываться, приблизиться под другим углом, или, к примеру, попытаться убить врага прежде, чем он сообщит своим друзьям.
Для боевой и мирной среды мы представили “Эмоциональную составляющую”, чтобы дать NPC способность контролировать лицевые анимации на основе эмоции. Мы также работали над улучшением потоков анимации, чтобы была возможность правильно смешивать состояния и чтобы это выглядело у персонажа более естественно во время игры. Также мы проделали некоторую работу над наземными турелями, чтобы они могли легко управляться искусственным интеллектом и правильно себя вести. В дополнение ко всему, выше сказанному, также мы добились прогресса в улучшении стабильности и исправлении существующих ошибок.