Что следует иметь в виду при создании 2D-игр для нескольких разрешений?

27

Я делаю 2D (Android) игру. Android-устройства сильно различаются по разрешению экрана; что я должен иметь в виду при создании игры?

  • Нужно ли сохранять большие версии всех изображений и уменьшать их в зависимости от разрешения (не тратит ли это место)?
  • Хорошо ли масштабируются растровые шрифты или мне нужно использовать что-то еще?
  • Что-нибудь еще я забыл?
ashes999
источник

Ответы:

26

Я являюсь разработчиком чрезвычайно портативной мобильной игры, которая работает на всем: от ПК до телевизоров, и даже от Black & White Amazon Kindle (Smiles HD - http://smileshd.com - больше устройств и платформ, чем вы видите там) ,

Лучший способ, который я нашел для поддержки любого устройства, - это выбрать базовое разрешение, а затем увеличить (или уменьшить) до текущего экрана. Если вы хотите обмануть, вы можете соответствовать новому разрешению экрана, но в идеале вы должны сохранять такое же соотношение сторон. Подгонка игры, сделанной для дисплея 4: 3, выглядит отвратительно на 16: 9, но установка 16: 9 на 16:10, никто не может заметить. Вы заметите, что я имею в виду экраны по соотношению сторон, а не по размерам, что особенно полезно в эпоху абсолютно случайных размеров ЖК-дисплея.

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

http://en.wikipedia.org/wiki/Safe_area

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

Кроме того, создание статических изображений больше, чем то, что увидит ваш обычный пользователь. Более широкий, чем широкоформатный (16: 9), и более квадратный, чем стандартное разрешение (4: 3). Снова вернемся в безопасные для заголовков области, поместите важную информацию в безопасную область, немного увеличьте масштаб, чтобы ваша безопасная область касалась одного из краев экрана, и оставьте немного места для устройств, которые немного больше.

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

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

http://www.smileshd.com/press/iPad/png/UI01.png

Если вы действительно хотите получить фантазию, вы можете поддерживать как высокую, так и широкую ориентацию. Некоторые устройства сообщают, что их разрешения экрана выше, чем широкие (например, iPhone), поэтому вам, возможно, придется что-то делать для этих устройств, даже если они просто поворачивают все ваши координаты.

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

Широкий: http://www.smileshd.com/press/iPad/jpg/SmilesHD01.jpg

Высокий: http://www.smileshd.com/press/iPad/jpg/SmilesHD02.jpg

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

Нужно ли сохранять большие версии всех изображений и уменьшать их в зависимости от разрешения (не тратит ли это место)?

Ну, вы можете либо «тратить пространство» и поддерживать более широкий спектр устройств в одной сборке, либо «тратить свое время», и вам придется создавать МНОГИЕ сборки и изменять размеры иллюстраций для многих устройств.

В лучшем случае вы должны создавать свои изображения с более высоким разрешением, чем конечный размер на телевидении 1080p (1920x1080). 2048x2048 должен быть обычного размера в исходной иллюстрации. Либо так, либо рассмотрите возможность использования векторных инструментов, таких как Flash и Adobe Illustrator.

Я настоятельно рекомендую создать автоматизированный процесс для изменения размера вашего произведения. Большинство современных мобильных устройств, включая планшеты, имеют разрешение не более 720p (1280x720) ... по крайней мере, ненамного. Приходите в следующем году, мы просто не знаем, будет ли это больше правдой (iPad 3?).

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

Хорошо ли масштабируются растровые шрифты или мне нужно использовать что-то еще?

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

http://en.wikipedia.org/wiki/Mipmapping

В любом случае, я надеюсь, что это поможет. Желаем удачи в вашем проекте.

Майк Каспрзак
источник
2

В общем, каждая создаваемая вами текстура должна быть либо 256x256, либо 512x512. Если вы также нацеливаетесь на планшеты (Galaxy Tab, Honecomb, iPad), то 512x512 не будет заполнять весь экран, поэтому вы можете включить более крупные версии тех художественных ресурсов, которые должны заполнить экран. Apple включает собственный суффикс изображения "@ 2x" для решения этого вопроса.

Простое решение, которое я использовал сам, - просто создать свою игру для экрана 320x480 (iPhone). Пусть это удвоится естественным образом для iPhone 2 (640 x 960), и тогда единственный другой случай, с которым вам действительно придется обращаться по-другому, - это тот факт, что некоторые устройства Android имеют более высокий экран - поэтому просто поместите буфер сверху и снизу (в портретном режиме) Режим).

Короче говоря - создайте свою игру для одного нейтрального размера экрана, а затем охватите исключения, основанные на

Мистер Стрендж
источник
2
Я думаю, что вы пропустили мой Androidтег. Во всяком случае, буфер отстой; Лучше, если ваша игра действительно масштабируется и выглядит красиво.
ashes999
1

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

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

По моему опыту, растровые шрифты не очень хорошо масштабируются. Это может сильно зависеть от стиля шрифта, который вы используете, но в целом пересчет растрового изображения шрифта дает очень плохие результаты. Растровые шрифты работают лучше всего, когда для выборки текстур не задан мультисэмплинг (GL_NEAREST и без mipmaps), и он отображается так, что он отображает пиксель за пикселем на экран. Вы можете рассмотреть возможность использования серии визуализаций одного и того же шрифта с разными размерами и убедиться, что шрифт всегда отображается в масштабе == 1 в вашей игре; это даст вам некоторые ограниченные возможности при выборе размера шрифта для использования в конкретном сценарии.

notlesh
источник
1

Android предоставляет некоторую помощь для этого ...

Вы можете указать «альтернативные ресурсы» для таких элементов, как ваша графика.
Посмотрите раздел «Предоставление альтернативных ресурсов» по ​​этой ссылке: http://developer.android.com/guide/topics/resources/providing-resources.html Вы сможете найти примеры в примерах SDK или через Google.

Кроме того, Google предоставляет эмулятор Android, который вы получаете вместе с SDK. Вы можете определить несколько виртуальных устройств с различными конфигурациями для тестирования вашего кода. Вот ссылка на дополнительную информацию: http://developer.android.com/guide/developing/devices/emulator.html

Удачи, амб

AMB
источник
0

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

Диего
источник