23/01/2019

Разработка боевой системы Breach

Меня зовут Шон Букок, я инженер в QC Games, мы делаем Breach — Action RPG с видом от третьего лица со скоростной боевкой. Она вышла в раннем доступе в январе 2019. В Breach каждый игрок может создать своего персонажа, выбирая из десятков классов. Затем они отправляются на ряд миссий по всему земному шару в одиночном режиме либо в кооперативе, а также играют PvP. У персонажей есть умения, охватывающие весь спектр возможностей от лечения напарников до замедления времени или установки смертельных ловушек для игроков в качестве Сокрытого Демона.

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


То, что получилось, образовало в итоге набор централизованных систем, который позволял дизайнерам и художникам QC Games создавать умения от простой ближней атаки до ультимативной классовой. Инферно — ульта для грядущего неанонсированного класса — позволяет игроку направлять поток огня на несчастного противника. Несмотря на всю грозность, Инферно обладает теми же фундаментальными блоками, что и все умения в Breach, начиная с Ассетов Данных Умений.

Unreal Engine предоставляет легкий способ разработки шаблонов для данных, названный Ассетами Данных, где дизайнеры могут создавать копии для работы в Unreal Editor. Ассет Данных Умений — центральный узел, где сходится вся информация об умениях в Breach: ее название в интерфейсе; ее описание; какие иконки к ней относятся; как ИИ может ее использовать и так далее.

Постоянный Геймлайн

Ability data — место, где можно не только придумать умение, но также и понять, как оно будет работать. Возвращаясь к описанию Инферно, можно заметить слово "поток", которое указывает на одну из ключевых систем в Breach при разработке умений — Геймлайн. Это таймлайн игровых событий для всего: от воспроизведения анимаций до изменения вида материалов на персонаже или нанесения урона.

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

К счастью, Unreal предоставляет легкий способ создавать редакторы для нескольких наборов данных, подобных Геймлайну Breach. Используя основу интерфейса Unreal Slate, мы построили редактор, где цвета строк обозначают разные виды задач, которые Геймлайн может выполнять. Путем простого перетаскивания, дизайнеры могут легко менять тайминг эффектов, добавлять новые, там же просматривать изменения. Если вы использовали iMovie или любой видеоредактор, в разработке умений Breach вы будете себя чувствовать, как дома.

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

Задавая правильные вопросы

Инферно — одно из многих умений в Breach, которое может использоваться как в воздухе, так и на земле. То есть имеет примерно одинаковый вид в обоих случаях, но есть разница в представлении. Анимация должна учитывать, когда игрок активирует умение — стоя на земле или находясь в воздухе. Также должно учитываться, что при активации в прыжке игрок зависает в воздухе. Мы могли накодить что-нибудь отдельно для обоих случаев, но знали, что другие абилки могут потребовать информацию также о значении здоровья персонажа или каком-либо “баффе” (про себя мы зовем их Модификаторами), об их активности.

Система для подобных вопросов Breach называется Условия, она комбинирована с таргетингом персонажей (например, это Я на земле или ТЫ?), что позволяет добавить логику “if this, do that” по всей игре. Условия и таргетированая система, которую они используют — универсальны, годятся для произвольной комбинации к любой логике, которая может понадобиться дизайнерам. Для Инферно интеграция системы Условия с Геймлайном позволяет использовать один набор задач, если условия выполняются и другой — если нет.

Почувствуй горение

С инструментарием Геймлайна у нас появилась основа для построения цепи команд выполнения умений, а с Условиями появляется еще и способ проигрывать правильные анимации и эффекты. Но что касается огня в умении Инферно? Для него мы разработали другой инструмент: AOE ((area of effect) сокр. “зона поражения”) агенты. Умения с зоной поражения распространены в RPG играх, как и в Breach. Наши AOE агенты (что-либо, что можно поместить на уровень — агент на языке Unreal) поддерживают определенное количество полезных особенностей для имплементации умений: формы (примитивные, например, коробки, и особые — из импортированных мешей), описывающие область AOE, опции, определяющие как и с каким тактом AOE накладывает эффект, а также способы изменять форму AOE время от времени.

Для Инферно мы используем AOE с собственной формой, которая прикрепляется к персонажу и двигается вместе с прицелом. Дизайнеры составили Условия, согласно которым Инферно применимо только к уязвимым противникам. Эффекты — урон и горение, которые могут усилить будущие классовые умения — созданы с помощью другой ключевой части конструкции Breach — Game Effects. В то время, как модели Геймлайнов случаются с определенным промежутком времени, Game Effects работает с моментальными изменениями. Как и Условия, Game Effects использует те же таргетинговые системы универсальных агентов, ее можно добавить в любую систему, требующую определенных изменений. Инферно использует Game Effects на скрипте C++ для вычисления урона и отделения дебаффа горения.

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

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

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

Breach сейчас в раннем доступе в Steam.

Оригинальный материал в блоге unrealengine.com

Recent Posts

Создание ассетов с твердой поверхностью в реальном времени с помощью UE4

18/06/2019
Разработка ассета с твердой поверхностью с использованием трассировки лучей: методы, материалы и параметры расчета освещения.

Wargaming Nexus — партнер конкурса от Epic Games и Disgusting Men

17/06/2019
Победитель специальной номинации Multiplayer PvP Competitive получит контракт на прототипирование до $100,000.

Сommandlets: разработка и применение

13/06/2019
Коммандлеты удобно использовать для автоматизации обработки ассетов или проведения определенных операций в уровнях. Мы покажем, как создать коммандлет в плагине.