Загрузите наш новый образец 2D-проекта: Затерянный склеп

Мы испытали наши новые 2D-инструменты на практике, чтобы создать демо-версию двухмерного сайдскроллера. В этом посте мы покажем, как эти интегрированные 2D-инструменты помогут вам создавать высококлассные визуальные эффекты с помощью Unity.
Высококвалифицированные команды уже много лет создают великолепные 2D-игры с помощью Unity, но мы хотели дать возможность всем, от отдельных художников до больших команд, иметь в своем распоряжении еще больше 2D-инструментов для создания великолепно выглядящих игр. И многие из них будут готовы к производству в Unity 2019.3, которая сейчас доступна в бета-версии.
Мы создали Lost Crypt, используя полный набор 2D-инструментов. Эта живая сцена включает в себя анимацию, световые эффекты, органический рельеф, шейдеры и постобработку, и все это сделано в 2D. В нем показано, как команды и проекты любого размера, ориентированные на любую платформу, теперь могут быстрее добиваться более интересных и красивых результатов.
Lost Crypt будет отлично работать на любом настольном компьютере, а также мы внедрили экранное управление с новой системой Input System на случай, если вы захотите запустить игру на iOS или Android-устройстве. В наших тестах он работал со скоростью 30 кадров в секунду на обычных устройствах, таких как iPhone 6S.
После загрузки Lost Crypt из магазина Asset Store мы рекомендуем вам начать с пустого Нового проекта и выбрать 2D, а затем импортировать проект из My Assets в Менеджере пакетов или нажав My Assets на странице вашего магазина Asset Store. Проект включает в себя все необходимые 2D-пакеты. Затем он перезапишет настройки проекта, изменив параметры рендеринга на 2D Renderer в Universal Render Pipeline.

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

Персонаж был разработан в Photoshop и импортирован непосредственно с помощью 2D PSD Importer. Откройте файл Sara.psb в редакторе Sprite Editor, чтобы увидеть настройки персонажа и его оснастку. Если вы откроете файл в Photoshop, то увидите, как мы сохранили разные части и названия слоев.

Одной из функций, доступных в Universal Render Pipeline, является новый материал Sprite-Lit. По сравнению с обычным материалом Sprite-Default, этот позволяет спрайтам реагировать на 2D-освещение.
Мы импортировали карты нормалей персонажа в Sprite Editor, используя выпадающее меню Secondary Textures. Вы можете добавлять карты нормалей и масок к 2D-анимационным персонажам, обычным спрайтам, тайлмапам и фигурам спрайтов.

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

После того как мы смоделировали персонажа, мы создали различные анимации с помощью инструмента Animation и Animator для управления этими состояниями. Вы можете увидеть, как работает инструмент, в этом докладе с GDC 2019.
Хвост персонажа - это отдельный дочерний GameObject, который управляется 2D-физикой. Он реалистично реагирует на движения, потому что каждая кость хвоста имеет компонент Hinge Joint 2D с некоторыми ограничениями. Это позволяет ее волосам свободно двигаться, не завиваясь слишком сильно и не реагируя на движения персонажа.

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

Мы управляли освещением в сцене с помощью простых скриптов, которые хранят значение градиента Color (цвет света от дневного к ночному), а освещение и материалы меняют цвет в зависимости от параметра Time в родительском GameObjects. С помощью такой установки вы можете визуально контролировать, как сочетаются между собой различные источники света.

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

С помощью 2D Sprite Shape вы можете генерировать рельеф и коллайдеры аналогично тому, как это делается в векторном приложении для рисования. Вы можете настроить кисти (Sprite Shape Profiles) и начать творить, не беспокоясь о том, что придется настраивать множество спрайтов или коллайдеров по мере итерации окружения.
Lost Crypt также использует некоторые дополнительные возможности Sprite Shape, например скрипт NodeAttach, чтобы прикрепить элементы к сплайну, чтобы они следовали за ним. В этой демонстрации скалы используют этот скрипт и ConformingSpline в слое с цветами, чтобы следовать форме сплайна травы. Вы можете использовать эту функцию для игрового процесса или для декоративных элементов, как мы сделали в слое с травой на переднем плане.
Tilemaps - это, пожалуй, один из самых необходимых 2D-инструментов, не только для экономии места в памяти за счет небольших фрагментов графики, которые можно "облицевать" и повторить, но и потому, что это очень важно для дизайна уровней.

В Lost Crypt мы использовали 2D Tilemap Editor (доступный через Package Manager) для воссоздания интерьера склепа, где он использует некоторые дополнительные инструменты Tilemap extra (доступные на GitHub), чтобы сделать процесс проектирования уровня более эффективным. Например, мы использовали Rule Tile- тип плитки, который позволяет рисовать плитки, как кисти. Он автоматически выбирает нужную плитку, основываясь на соседних плитках или торцах.

Некоторые распространенные элементы в играх - эффекты огня, поэтому мы добавили их в Lost Crypt. Мы начали с создания факелов для GameObjects с помощью системы частиц и шейдерной графики для 2D и использовали узел Sprite-Lit Master для выходного шейдера. Мы сделали анимацию огня в традиционном листе спрайтов, который система частиц использует для воспроизведения анимации.

Шейдер, который мы сделали для пламени, использует цвет оттенка HDR, чтобы увеличить интенсивность свечения вокруг объекта с помощью постобработки Volume. Родительский GameObject содержит несколько частиц искр и несколько лампочек, освещающих альков.
Еще один распространенный вариант использования шейдеров - отражения и преломления (например, воды, льда, зеркал или мониторов, отображающих другую область уровня), которые довольно часто встречаются в играх.

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


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

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

Стили наложения света - это набор свойств в 2D Renderer, которые описывают, как свет должен влиять на спрайты. Например, вы можете создать стиль наложения, который будет влиять только на определенный канал. Когда вы добавляете в сцену свет, использующий этот стиль наложения, он будет воздействовать только на те области спрайта, которые указаны в информации канала карты масок.
В примере ниже параметрический свет использует наш стиль наложения Direct Lighting, который воздействует только на области, указанные в канале R карты масок этого спрайта.

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

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

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

Упыри также имеют небольшую анимацию, которая сменяет одну графику на другую. Для этого мы создали карту Mask с разной графикой в каждом канале: R - для одного вида, G - для другого вида, а B - для эффекта Френеля.

Для окончательной полировки мы добавили несколько эффектов постобработки, включенных в Universal Render Pipeline. Например, мы создали пустой GameObject и прикрепили к нему компонент Volume. В Lost Crypt мы используем bloom, баланс белого и виньетку, но есть и множество других эффектов, которые можно использовать в 2D-проектах, например размытие движения, цветокоррекция и эффект зернистости пленки.

Мы надеемся, что демонстрация Lost Crypt поможет вам понять, как можно использовать наш интегрированный набор 2D-инструментов для подобных задач. Если у вас есть вопросы о Lost Crypt, вы можете связаться с нами на форуме.
Если у вас есть конкретные вопросы по нашим 2D-инструментам, обратитесь к специальным темам в разделе 2D на форуме и в разделе "Бета-версии и экспериментальные функции".

Хотите побывать за кулисами Lost Crypt в режиме реального времени? Запишитесь на оживленный вебинар, на котором специалист по глобальному контенту Энди Тач расскажет, как мы использовали 2D-свет, шейдеры и постобработку в игре Lost Crypt. Команда 2D из R&D также присоединится к нам, чтобы ответить на ваши вопросы о наборе 2D-инструментов или о самом проекте.
Количество мест ограничено, поэтому не забудьте поскорее зарегистрироваться и добавить напоминание в календарь.
