Выбор разрешения ваших 2D-художественных объектов

CIRO CONTINISIO / UNITY TECHNOLOGIESContributor
Nov 19, 2018|14 Мин
Выбор разрешения ваших 2D-художественных объектов
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

На игровых мероприятиях и в Интернете люди часто задают мне этот вопрос: "Я делаю 2D-игру в Unity для ПК и мобильных устройств: какого разрешения должны быть мои активы?" На этот вопрос нет простого ответа, который бы охватывал все случаи. Прочитайте эту статью в блоге, чтобы лучше понять, как лучше поступить для вашего проекта. В последние годы мы работаем над множеством функций, которые помогают создавать 2D-игры в Unity: Атлас спрайтов, 2D-физика, функция Tilemap для создания прямоугольных, шестиугольных или изометрических миров, Sprite Shape на основе сплайнов, 2D-анимация и многое другое.

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

Примечание: На картинках в этом блоге использовались красивые 2D-активы из магазина Asset Store, в этом блоге мы используем арт художника Микаэля Густафссона.

MСоздание 2D-игры в Unity

Зеленый 2D-мир, открытый в редакторе
Пиксель-арт активы

Если вы пиксельный художник, предупреждаем: большинство советов в этом посте не полностью применимы к вашей ситуации. В пиксель-арт графике у вас есть что-то с очень низким разрешением, и вы хотите увеличить его до 2, 4, 8, а может, и больше, исходного разрешения. Это значит, что один пиксель вашего оригинального рисунка теперь представляет собой квадрат из 2x2, 4x4, 8x8 реальных пикселей на экране. В общем, в пиксель-арте вам не нужно сильно заморачиваться по поводу разрешения экрана, но вы отталкиваетесь от своего рисунка и ощущения, которое хотите передать (олдскул, эпоха NES, 16-битная эра, "современный" пиксель-арт с более высоким разрешением и т. д.), и масштабируете его в несколько раз. В Unity появилось решение Pixel Perfect в виде отдельного пакета, если вы используете встроенный RP, и включенного в универсальный RP и 2D-рендерер. В комплект входит простой компонент для установки на камеру, который выполнит за вас всю сложную работу и обеспечит четкость изображения, выровняв его по сетке реальных мелких пикселей на любом экране. Более подробную информацию о Pixel Perfect вы можете найти в документации.

Масштабирование вниз, а не вверх

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

Рассмотрим такие сценарии: вам может понадобиться распечатать некоторые иллюстрации к игре, или увеличить размер элемента на экране, или создать "HD-версию" игры для последующего использования на 4K-мониторах.

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

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

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

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

Определение разрешения вашей платформы (платформ)

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

В общем, на момент написания этой заметки, если вы публикуете материалы для ПК, то для подавляющего большинства пользователей существует 2 разрешения: в основном "full-HD" (1920x1080 пикселей, часто называется 1080p) и большое количество 1280x720 (часто называется 720p). Небольшой процент людей также имеет 4K-мониторы (3840x2160) или мониторы Retina на компьютерах Mac (максимальное разрешение современного 15-дюймового MacBook Pro составляет 3360 × 2100). Это же сколько пикселей нужно покрыть!

Для телефонов выбор огромен. Некоторые старые устройства могут опускаться до 720 пикселей по вертикали, а некоторые современные - до 4K.

Совет: Unity делает некоторые из этих статистических данных доступными в Operate Dashboard вашего Unity ID. Выберите проект, в котором включена функция Analytics, и вы сможете перейти в раздел Analytics > Market Insights и просмотреть агрегированную статистику. Steam также предлагает подобную услугу на этой странице.

На экранах Retina (торговая марка Apple) и других современных экранах с высоким PDI, хотя фактическое аппаратное разрешение очень высокое (например, 4K), они могут работать с имитацией более низкого разрешения (обычно вдвое меньшего, например, full-HD вместо 4K), но при этом изображения и текст отображаются с использованием вдвое большего количества пикселей, так что они выглядят очень четкими.

Примечание: DPI (dots-per-inch) или PPI (points-per-inch, или pixels-per-inch) - это разные названия, используемые попеременно разными производителями, но в конечном итоге они означают одно и то же: сколько пикселей помещается в один линейный дюйм экрана. Традиционно экраны имели разрешение 72 DPI. Сегодня экраны с высоким DPI обычно составляют 144 DPI, но вы можете найти телефоны, которые могут похвастаться до 400 DPI и более, поскольку на относительно небольших экранах размещается большое количество пикселей. Несколько примеров здесь.

Для этих экранов у вас есть два варианта. Одна из целей - предложить опыт, полностью использующий разрешение 4K. Недостатком является то, что для создания 4K-совместимых ресурсов требуется много дополнительной работы. В этом случае обязательно подчеркните это в своих маркетинговых материалах!!! ("A Beautiful 4K Experience"... и т.д.). Владельцы таких консолей, как PS4 Pro и Xbox One X, совместимых с 4K, будут в восторге от того, что ваша игра использует аппаратное обеспечение на полную мощность.

Или же вы можете "просто" создать архитектуру своей игры, чтобы она покрывала Full-HD. Во втором случае пользователи с мониторами с более высоким DPI не выиграют от увеличения разрешения своих экранов, а просто увидят игру в формате Full-HD. Это не идеальный вариант, но он может подойти, если вы также пытаетесь держать под контролем размер тела.

Итак, итог таков: вам нужно выбрать максимальное разрешение, к которому вы стремитесь (исходя из текущих долей рынка, см. выше), и установить его в качестве цели для всего проекта. Тогда все члены команды смогут принимать решения, зная это.

Измерения в сцене Unity

Как мы уже говорили, Unity измеряет расстояния и размеры в единицах измерения, а не в пикселях. В целом, рекомендуется сопоставлять 1 единицу Unity с 1 метром. Например, средняя модель гуманоида в этом сценарии составляет от 1,7 до 1,8 единиц. Это не обязательно, но это гарантирует, что игры с физикой (как 3D, так и 2D) будут вести себя правильно, потому что физика в Unity настроена на использование 1 единицы для метра. То же самое относится и к 3D-освещению, где параметры света должны соответствовать реальности.

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

Теперь, когда мы рассмотрели устройства, перейдем к камере. У 2D-камер Unity (ортографических) есть параметр Size, который, будучи удвоенным, говорит вам, сколько единиц эта камера обрамляет по вертикальной оси.

Снимок экрана выпадающего редактора. Ортографический выбран с размером 5
Параметр "Размер" в инспекторе ортографической камеры

При размере 5 у нас есть область просмотра размером 10 единиц Unity по вертикали. Горизонтальная ось будет просто следствием этого, поскольку мы не знаем, какое соотношение сторон будет у экрана пользователя. Но это легко просчитать: на среднем ПК или телефоне Android с соотношением сторон 16:9 можно просто сделать:

10 (вертикальный размер) x 16 / 9 = 17,7 (горизонтальный размер)

Таким образом, мы знаем, что при этих настройках мы обрамляем область размером примерно 17,7 на 10 единиц. На компьютерах Mac (которые обычно имеют формат 16:10) он будет иметь размер 16 на 10 (так меньше видимости по горизонтали). На телефоне с соотношением сторон 16:9, расположенном вертикально (так, чтобы получилось 9:16), та же камера покажет только область размером 5,6 на 10 единиц.

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

Введите пиксели на единицу

При импорте графики в виде спрайтов Unity отображает параметр под названием Pixels per Unit (PPU). Теперь, когда мы знаем все о единицах измерения, это должно быть очень понятно. Это выражение того, сколько пикселей из вашего спрайта помещается в единицу сцены Unity при масштабировании объекта GameObject 1,1,1.

Скажем, у меня есть спрайт скалы размером 218 на 175 пикселей, и я установил значение Pixels per Unit равным 100, когда я перетащу этот спрайт в сцену, мой GameObject по умолчанию будет иметь размер 2,18 на 1,75 единиц, занимая примерно пятую часть из 10 единиц по вертикальной оси.

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

Поэтому в качестве тестового разрешения возьмем экран Full-HD. Вертикаль составляет 1080 пикселей, а скала занимает менее пятой части экрана (вы можете видеть, как выцветшие скалы помещаются более чем в 5 раз на изображении выше), это означает, что мы используем 175 пикселей исходной графики для отображения более чем 200 пикселей. Это означает, что у нас будет немного размытый камень.

Чтобы исправить это, у нас есть несколько решений: мы можем уменьшить масштаб скалы примерно в два раза, увеличить кадр камеры до 10,8 (что приведет к уменьшению масштаба) или изменить значение PPU спрайта на 108 (что приведет к тому же эффекту уменьшения скалы на экране). Во всех трех случаях, если мы хотим, чтобы камень был четким, его придется уменьшить.

Откуда взяты размер камеры и значение PPU? Легко! Что касается размера камеры, то если мы импортируем графику на 100 PPU, то нам понадобится камера 10,8, потому что 10,8x100 равно 1080. Это позволяет охватить всю высоту экрана. И наоборот, для расчета правильного PPU, когда размер камеры остается на уровне 5, если мы надеемся покрыть Full-HD экран 10 единицами Unity по вертикали, то мы имеем 1080/10 = 108. Это количество пикселей, которое мы должны запихнуть в один блок, если не будем менять размер камеры.

Установить правило, нарушить правило

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

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

Предварительный просмотр вашей игры

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

Экран редактора с выпадающим меню. Проверяется соотношение сторон в низком разрешении, а также свободный аспект.
Обратите внимание, что при включенном соотношении сторон Low Res Aspect Ratios масштаб по умолчанию равен 2. Это связано с тем, что пиксели необходимо дублировать, чтобы имитировать низкий уровень PDI на экране с высоким уровнем PDI.

Соотношения сторон просто задают определенное соотношение между горизонталью и вертикалью, но при этом они используют текущее разрешение области просмотра Game View, которое, в свою очередь, зависит от вашего экрана. Так что они хороши для настройки пользовательского интерфейса и объектов на экране, но не очень подходят для тестирования искусства. При выборе соотношения сторон будет активен флажок Low Resolution Aspect Ratios, если вы находитесь на экране с высоким PDI. Если поставить галочку, то будет имитироваться стандартное разрешение экрана DPI. Фиксированные разрешения, с другой стороны, заставляют Unity выводить окно именно такого размера. В этот момент вам может понадобиться развернуть Game View или увеличить его, чтобы визуализировать весь превью. В этом контексте ползунок Scale может сделать так, чтобы высокие разрешения поместились в окно Game View, но если вы опускаетесь ниже 1x scale, то на самом деле вы видите не это разрешение, а его передискретизацию. Не забывайте, что вы можете добавить в выпадающий список свои собственные фиксированные разрешения и соотношения сторон:

Gif добавления ярлыка с соотношением сторон 'superwide'

Совет: Не забывайте, что не стоит основывать свои суждения только на редакторе. Время от времени делайте сборку игры (или просто арт!) и смотрите на нее на целевом устройстве или экране.

Несколько заключительных замечаний

Как видите, разрешение вашего изображения, размер камеры и экран - все это взаимосвязано, и не существует одного размера пикселя или PPU, который бы подходил для всех случаев. Изучите целевые платформы, примите решение и сообщите о нем всей команде, составив рекомендации. Тогда все равно создавайте произведения в высоком разрешении, они могут пригодиться позже! Наконец, измените размер до нужного вам разрешения и импортируйте его в Unity. И последнее предложение. Даже если раньше я использовал термин "слегка размытый", как будто это конец света и что-то, что мы абсолютно ДОЛЖНЫ исправить, это не жесткое правило. Возможно, в вашей игре некоторые объекты - иногда - имеют недостаточное разрешение. Особенно если на экране много мелких деталей, возможно, наложение прозрачностей друг на друга, а сверху - туман, дождь или постобработка. Играйте в игру на обычной скорости. Вы действительно замечаете, что они пересэмплируются? Если вы действительно не видите разницы, то, возможно, дополнительная работа, дисковое пространство и обработка, необходимые для рендеринга спрайта в более высоком разрешении , не стоят того. Помните: хорошие игры идут на большие компромиссы!

Дополнительные ресурсы

У нас в блоге есть список советов и рекомендаций по 2D, не пропустите его. Если вы также хотите получить обзор того, что Unity может предложить для 2D, вы можете начать здесь.

Откройте для себя демо-версию Unity 2D, Dragon Crashers в этом блоге

#Unity2DChallenge (Завершено)

Есть ли у вас в планах какой-нибудь удивительный 2D-арт? Вам интересно узнать о наших новых 2D-инструментах? Сделайте что-нибудь замечательное с помощью наших новых инструментов 2D-анимации, Tilemaps, SpriteShape, пакета Pixel Perfect или импортера SVG и примите участие в Unity 2D Challenge! Я один из судей, и мне не терпится увидеть все ваши блестящие идеи.