Советы по поддержке нескольких экранов в 2D OpenGL игре? - PullRequest
5 голосов
/ 11 апреля 2011

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

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

Включают ли разработчики 2 копии каждого ресурса (средней и высокой плотности) или ресурсы высокой плотности просто уменьшены для устройств с меньшей плотностью?

Используются ли в ваших вычислениях независимые от плотности пиксели?

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Включают ли разработчики по 2 копии каждого ресурса (средней и высокой плотности) или ресурсы высокой плотности просто уменьшаются для устройств с меньшей плотностью?

Это один из способов справиться с ситуацией,Я видел следующее:

  1. Включайте растровые изображения для каждого разрешения, которое вы хотите поддерживать
  2. Включайте растровые изображения для самого высокого разрешения, которое вы хотите поддерживать, и уменьшайте масштаб для других разрешений.
    • Если вы используете лист мозаики (то есть несколько небольших растровых изображений в большем растровом изображении), вам нужно быть осторожным с билинейной фильтрацией, то есть с смешением краевых пикселей с соседними активами.Если это произойдет, вы получите линии / артефакты в ваших активах.Здесь обсуждается: http://developer.anscamobile.com/forum/2011/06/03/lines-between-my-tiles относительно этой проблемы.
  3. Используйте векторную графику для самого высокого разрешения, которое вы хотите поддерживать.

При использовании метода 2. или 3. Вот как я с этим справляюсь:

  • Создание ресурсов с размером экрана 960 x 1600.
  • 480 x 800 - масштаб в два раза
  • 320 x 400 - масштаб на одну треть

Это дает мне значение плотности экрана, которое мне нужно для будущих вычислений.

Я предпочитаю метод 3.

В настоящее время я работаю над изометрическим движком 2d игры, который загружает ресурсы .svg с диска, а затем "рисует их в растровое изображение" во время«погрузочная» часть сцены.Благодаря этому я получаю преимущества небольшого размера на диске (.svg) и более высокой производительности (растровые изображения) во время запуска моей игры.

Рабочий процесс выглядит следующим образом:

  1. Разобрать необходимый игровой ресурс для уровня
  2. Загрузить связанный ресурс .svg с диска
  3. Изобразить содержимое .svg в растровое изображение
  4. Выбросить загруженный файл .svg
  5. Повторите для всех активов
  6. Начальный уровень

Используются ли в ваших вычислениях независимые от плотности пиксели?

Да,Я использую его следующим образом:

sprite.x = new_x_position * screen_density;
0 голосов
/ 19 апреля 2011

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

...