Молниеносный круг замечательных советов для 2D-игр

SHANTI ZACHARIAH / UNITY TECHNOLOGIESSenior content marketing manager
Feb 9, 2021|12 Мин
Молниеносный круг замечательных советов для 2D-игр
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

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

2D-игра с Unity

Начните работу над 2D-проектами с помощью шаблона 2D
Изображение

Используйте шаблон 2D, чтобы быстро приступить к работе над новым проектом. Шаблон доступен в Unity Hub. Уникальные настройки включают:

  • Сцена по умолчанию, использующая 2D-вид, с камерой, настроенной на ортографическую проекцию и очищенной до сплошного цвета.
  • Редактор по умолчанию установлен в режим 2D, чтобы новые текстуры импортировались как спрайты
  • Глобальное освещение в реальном времени отключено
  • Установка пакетов 2D, включая 2D Animation, 2D Pixel Perfect, 2D PSD Importer и 2D SpriteShape, а также необходимых зависимостей
Изображение

Начиная с версии 2020.2, пункты меню 2D отображаются как меню верхнего уровня для создания GameObjects и Asset. Они включают в себя набор примитивных 2D Sprite для быстрого создания прототипов. Также добавлены меню для новых функций, таких как SpriteShape и Pixel Perfect Camera.

Выберите количество пикселей на единицу измерения для спрайтов
Изображение

Pixels Per Unit (PPU) - важное понятие в 2D-разработке. PPU спрайта определяет, сколько пикселей ширины или высоты изображения спрайта соответствует одной единице расстояния в мировом пространстве.

Задумайтесь о PPU ваших спрайтов как можно раньше. Помимо управления плотностью пикселей, PPU также влияет на то, как спрайты используются режимами рисования Sprite Renderer, а также другими системами, такими как Tilemap. Выбирайте плотность пикселей, соответствующую дизайну вашей игры и целевой платформе, и избегайте излишне больших текстур.

Используйте 2D PSD Importer
Изображение

2D PSD Importer импортирует многослойные файлы Adobe Photoshop PSB в Unity. Это позволяет использовать такие функции, как Mosaic, для автоматического создания Sprite Sheet из импортированных слоев и рига персонажа. Затем Unity собирает спрайты персонажа так, как они были расположены в исходных файлах. Импортер разработан для оптимальной работы с системой 2D Animation и многослойными рабочими процессами для персонажей.

Уменьшите количество перекрывающихся пикселей
Изображение

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

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

Изображение

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

Объединение коллайдеров
Изображение

Если у вас много спрайтов со статическими 2D-коллайдерами, объедините их с помощью компонента Composite 2D Collider. Это обеспечивает лучшую производительность и более плавное столкновение со всей поверхностью. Композитный коллайдер можно использовать с картами плиток; на изображении выше фиолетовые плитки на экране используются в качестве коллайдеров. Вы включаете его, добавляя компонент и устанавливая флажок Composite.

Составной 2D-коллайдер также может быть использован с родительскими GameObjects. Убедитесь, что дочерние коллайдеры включены, установив флажок Used by Composite. Еще один способ оптимизировать коллайдеры - вручную нарисовать простой многоугольник, который будет хорошо сочетаться с вашим GameObjects.

Рендерер плиточных изображений
ImageImage

Каждый рендерер, прикрепленный к GameObjects, например, к спрайту, имеет определенные накладные расходы. Для эффективного отображения множества статичных спрайтов используйте рендерер Tilemap, который обеспечивает более высокую производительность и удобство при создании игры. Вы можете рендерить сотни спрайтов с помощью одного рендерера. Если вам нужно отрисовать много спрайтов, но сортировка не требуется, используйте режим Tilemap Chunk Mode, чтобы снизить потребление процессора и памяти, что важно, если вы нацелены на низкоуровневые устройства. Чтобы использовать его, поместите все статические плитки в одну карту Tilemap и включите режим Chunk Mode.

Убедитесь, что все плитки также находятся в одном Sprite Atlas. Плитки могут отображаться неправильно в режиме просмотра сцены, но они будут правильно отсортированы, когда вы войдете в режим воспроизведения. Один из подходов заключается в том, чтобы разрабатывать уровень в индивидуальном режиме и переключиться на режим Chunk, когда вы будете готовы к публикации.

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

Запекание форм спрайтов для повышения производительности

Sprite Shape - это 2D-инструмент для создания органических форм и уровней. По умолчанию API Sprite Shape позволяет изменять узлы сплайна во время выполнения, что может повлиять на производительность. Если вам не нужны такие изменения во время выполнения, вы можете запечь или кэшировать геометрию сплайна для повышения производительности. Выберите Sprite Shape Controller, включите Edit Spline, а затем Cache Geometry, чтобы запечь сетку. Если вы используете Unity 2019 LTS или более поздние версии и изменяете сплайн во время выполнения, то вы можете получить значительное улучшение производительности, установив пакет Burst. Зайдите в менеджер пакетов и установите Burst версии 1.3 или более поздней.

Быстрое создание произведений искусства с помощью Sprite Shapes
Изображение

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

Повеселитесь с 9-нарезкой спрайтов и плиткой спрайтов

Режимы рисования в Sprite Renderer помогут вам сэкономить на размере ваших активов и сделать процесс создания уровней более увлекательным. С помощью плиточных спрайтов вы можете использовать один и тот же спрайт в разных GameObjects, не растягивая его. Перейдите в редактор спрайтов и переместите желтые ручки, чтобы обвести рамкой часть спрайта, на которую будет накладываться плитка. Примените его, а затем перейдите к GameObjects и измените режим рисования Sprite Renderer на Tile Mode.

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

Используйте режим сортировки по прозрачности

При разработке 2D-игр могут возникнуть ситуации, когда некоторые GameObjects будут находиться в одном и том же слое и порядке сортировки. Вы можете создать множество слоев и логику для перемещения спрайтов, чтобы показывать их в правильном порядке, но это неэффективно. Мы указываем Unity правильный порядок рендеринга спрайта в таких ситуациях с помощью режима сортировки прозрачности в Настройках проекта. Unity сортирует спрайты в порядке, описываемом направлением вектора2 (в этих настройках он определяется осями X и Y). Посмотрите, как менеджер по маркетингу продуктов Unity Эдуардо Ориз и менеджер по продуктам Рус Скаммелл настраивают эту оптимизацию примерно на отметке 9:15 в их выступлении на Unite Now.

Изображение
Начните работать с 2D-анимацией

Создать покадровый анимационный ролик в Unity очень просто. Выберите последовательность спрайтов в окне проекта и перетащите их в вид сцены или в окно иерархии. Анимационный ролик и аниматор будут созданы для вас автоматически.

Если вы хотите добавить анимационные ролики к существующему Аниматору, просто перетащите эти анимационные кадры на GameObject Аниматора. Клип будет добавлен в Аниматор. Удерживайте клавишу Alt или Option во время перетаскивания кадров анимации в иерархию, если вы хотите создать отдельный GameObjects для каждого спрайта.

Покадровая анимация или анимация на основе костей: Какой из них подходит вам?
ImageImage

Unity поддерживает покадровую и костную анимацию. Вот основные различия между этими двумя подходами:

Кадр за кадром

  • Каждый кадр использует уникальный спрайт
  • Для дополнительных анимационных роликов требуется больше спрайтов
  • Частота кадров и скорость обычно постоянны
  • Анимации перехода требуют дополнительных спрайтов
  • Не работает с 2D Inverse Kinematics (2D IK).

Костная основа

  • Каждый кадр анимации использует одни и те же спрайты
  • В каждом анимационном ролике используются одни и те же спрайты
  • Хорошо подходит для переменной скорости анимации
  • Система анимации может создавать переходы для клипов
  • Работает с 2D IK
Повышение производительности 2D-анимации с помощью Burst
Изображение

Установите пакеты Burst/Collections, чтобы оптимизировать производительность 2D-анимации для большого количества костей и сетки Sprite с большим количеством вершин. Анимированная деформация спрайтов во время выполнения также получит прирост производительности. Это работает благодаря тому, что пакет 2D Animation использует компиляцию Burst и низкоуровневые утилиты массивов для ускорения обработки Unity деформации сетки Sprite.

Убедитесь, что вы используете Unity 2020.2, а также 2D Animation 5.0.x. При установке пакета Burst 1.3.3 или более новой версии вы также должны установить Collections, который является пакетом предварительного просмотра.

Изображение
Использование пользовательской тесселяции для 2D-анимации
Изображение

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

Использование 2D-физики в 2D-анимации
Изображение

Добавьте 2D-коллайдеры и 2D-компоненты Rigidbody к персонажам на основе костей, чтобы управлять движением с помощью системы 2D-физики. В приведенном выше примере из доклада Эдуардо и Руса коллайдеры Capsule были добавлены к каждой кости, а также к 2D-компонентам Rigidbody. Затем они были соединены шарнирными соединениями. Вы можете использовать угловые ограничения для каждого сустава, чтобы ограничить диапазон движения, а также переключить, будут ли компоненты Rigidbody, соединенные через сустав, сталкиваться друг с другом.

Сохраните красоту и четкость вашего пиксельного искусства
Изображение

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

2D Camera по умолчанию выражает размер в вертикальных единицах от центра камеры. На приведенном здесь примере мы можем разместить 10 плиток по вертикали:

Изображение

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

В Unity PPU по умолчанию для спрайтов установлен на 100. Когда мы изменим конфигурацию Sprite Asset на 32 PPU нашего проекта, спрайт будет иметь правильный размер.

Изображение

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

Используйте пресеты для согласованных настроек импорта текстур

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

1. Выберите актив с нужной вам конфигурацией

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

3. Сохраните его под именем, которое поможет вам вспомнить, что он делает.

4. Установите его по умолчанию, чтобы все новые импортируемые активы имели такую конфигурацию (вы увидите Preset Asset в представлении проекта).

Изображение

Если вы работаете с пиксельным искусством, убедитесь, что на экране всегда одинаковое количество пикселей и что все эти пиксели имеют одинаковый размер. Сначала перейдите в раздел "Камера" и добавьте Pixel Perfect Camera. Установите в качестве Asset PPU тот, который вы используете в своем пиксель-арте.

Как только вы добавите компонент Pixel Perfect Camera, он возьмет на себя управление камерой в режиме игры, но вы также сможете увидеть изменения в редакторе, если включите функцию Run в режиме редактирования.

Изображение

В вашем проекте персонажи и объекты могут менять свое положение, вращение или размер. По умолчанию они будут иметь сглаженную интерполяцию, но если вы хотите остаться верными ограничениям пиксель-арта, указанным в PPU вашего проекта, включите функцию Upscale Texture. GameObjects будут перемещаться с шагом в один пиксель. При изменении поворота и масштаба также будут соблюдены визуальные ограничения. Узнайте о советах по созданию 8- и 16-битных игр в стиле ретро .

Оставайтесь продуктивными в 2D-редакторе

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

Изображение

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

Спрайт Атлас: Этот ассет упаковывает несколько спрайтов в одну объединенную текстуру. Unity может использовать эту единую текстуру для повышения производительности, выполняя один вызов рисования вместо нескольких вызовов рисования для каждого спрайта, находящегося в одной папке.

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

Изображение

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

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

Узнайте больше ценных советов и рекомендаций по разработке 2D-игр

Посмотрите, как мы расширяем возможности 2D-художников; узнайте, как Odd Bug использовала 2D-освещение для создания настроения в своей игре Tails of Iron; загрузите пример 2D-проекта The Lost Crypt и прочитайте подробное руководство по выбору оптимального разрешения для ваших 2D-активов. Наконец, вы можете посмотреть презентацию Unite Now Эдуардо и Руса здесь.