top of page

Как создаются визуальные эффекты для игр


Основные задачи художников визуальных эффектов

Если говорить только о визуальных эффектах, то их можно разделить на два основных типа задач: геймплейные эффекты и природные эффекты (или эффекты окружений). Принцип их разделения зависит от конкретного проекта. Например в такой игре, как Castlevania (жанра hack'n'slash), 90% визуальных эффектов состояло в умениях персонажа и магии, сильно влиявших на геймплей. Такие задачи требуют серьёзного понимания механик игры и постоянного общения с командой дизайнеров, с которой нужно постоянно договариваться. Для примера давайте возьмём огнемёт. Дизайнеры геймплея подбирают область урона атаки, а затем вам необходимо создать эффект поверх отладочного цилиндра. Постепенно уменьшающийся огонь не полностью соответствует области урона, и дизайнеры начинают на это жаловаться. Вот один из примеров «конфликтов» между двумя дисциплинами, потому что если придерживаться строгих правил, огонь не будет похож на огонь. Поэтому приходится искать альтернативы и убеждать дизайнеров, что игрок не заметит, что небольшой исчезающий огонь не нанёс никакого урона. Среди прочих жанров, геймплейные эффекты более «важны» в файтингах и RPG. Существуют и другие игровые жанры, например, шутеры (в особенности это касается реалистичных), в которых природные эффекты так же важны, как и геймплейные. В этом случае художник, ответственный за природные эффекты, становится практически художником по окружениям и в основном сотрудничает с этой командой. Примерами природных эффектов являются водопады, туман, дождь и т.д. Больше всего природных эффектов я создал в Gears of War 4, где мы работали над многопользовательскими картами и должны были заботиться о влиянии эффектов на производительность, потому что от игры требовалось работать в 1080p при 60 fps.

Реалистичные эффекты

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

  • Огонь, дым, взрывы: Fume FX, Phoenix FD, Maya fluids и т.д.

  • Жидкости: Phoenix FD, RealFlow, Blender и т.д.

  • Разрушения, симуляции твёрдых тел: Rayfire, MassFX и т.д.

И для всего вышеперечисленного: Houdini. Ребята из SideFX создают потрясающий продукт, особенно последний релиз, приблизивший их удивительное ПО к разработке игр. Благодаря своим широким возможностям Houdini становится стандартом игровой индустрии, по крайней мере, для самых реалистичных проектов. Если удастся упростить кривую обучения, то программой будет пользоваться больше людей, так же, как случилось какое-то время назад с пакетом Allegorithmic. Но всё это ПО в основном сосредоточено на создании готовых ресурсов (текстур, сеток, анимаций), которые мы затем используем в нашей игре. Мы получаем высококачественные результаты, но без возможности каких-либо вариаций. Готовая текстура взрыва всегда выглядит и ощущается одинаково. И здесь начинаются настоящие проблемы, мы должны достичь этого качества в реальном времени. Постепенно мы подходим к этому, компании усовершенствуют техники реального времени и уже видим это на примере физики реального времени, симуляции жидкостей и сложных шейдеров, таких как интерполяция кадров векторами движения компании Guerrilla (Anatomy of a Nuke) или raymarching в реальном времени, реализованный для огня и дыма в Uncharted 4 (объёмный шейдер с Siggraph 2015).

Эффекты частиц

Хороший способ понять, как работают эффекты частиц в реальном времени — проанализировать работу машины для попкорна:

  1. Во-первых, нужно решить, сколько попкорна нам нужно. Это будет нашим spawnrate (количеством создаваемых частиц).

  2. Ядра кукурузы представляют собой точки, в которых будут расположены частицы

  3. Раскрывшееся зерно будет рендером частицы. Мы можем выбрать, будет он сеткой (3D) или спрайтом (традиционной плоскостью из двух треугольников)

  4. После раскрытия зерна попкорн взлетает и со временем падает. Это символизирует начальную скорость плюс гравитацию (динамику).

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

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

  • Создать многослойную магическую атаку, разрушающую куб.

  • Эффект должен состоять из: упреждения, атаки и воздействия с последующим разрушением куба.

  • Все текстуры должны быть изготовлены самостоятельно.

  • Использовать однокадровые текстуры и/или максимум один анимированный флипбук (flipbook).

С учётом этих ограничений, первое, что я делаю — создаю библиотеку справочных материалов (видео, фотографии, Pinterest и т.д). Некоторые художники, рисующие лучше, чем я, предпочитают работать с раскадровками, рисунками или пейнтоверами, но для меня гораздо быстрее собрать материалы и мысленно объединить всё вместе. После того, как я определюсь с общим видом эффекта, я выделяю основной элемент. То есть лучи. Я решил, что буду использовать ту же технику, которую применял для создания эффекта дыма телепорта в Castlevania LoS2.

3ds Max

Пространственные лучи

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

============


Похожие посты

Смотреть все
bottom of page