Понедельник, 23 Декабря 2024, 09:10

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Вопросы про разрешение экрана
useruserДата: Вторник, 05 Сентября 2017, 13:35 | Сообщение # 1
был не раз
Сейчас нет на сайте
Недавно начал изучать тему создания игр и Game Maker Studio 2.0.
Вопрос такой - как сделать игру под разные разрешения экрана? Планирую сделать игру в полноэкранном режиме.
Посмотрел кучу видео по этой теме и так и не нашел ответа на свой вопрос. Может что то и не понял.

Все ниже моё представление о графике и ИМХО. Возможно и неверное.
-------
Давайте разберем проблему разрешения экрана на примере игры - шахматы.
Игрок видит всю доску и фигуры на доске. Т.е. всю комнату, говоря языком Game Maker Studio.
Пусть мы нарисовали графику (растровая) для разрешения экрана 1024х768. Выглядит отлично.
Что нам теперь важно, с точки зрения графики? Две вещи - положение графики (картинок объектов) и их пропорциональность.

То есть - если у пользователя разрешение экрана не 1024х768, а 800х600 (рассмотрим простой пример с соотношением сторон 1.3) то мы должны как то уменьшить всю нашу картинку. Доску, фигуры и т.д.
И тут вопрос - как правильно это делать?

Хорошо, мы уменьшили нашу картинку. Пропорции и положение сохранено, но графика стала хуже.
Уже не видно части линий и изгибов. Объективно - уменьшение растровой графики вызовет её ухудшение.
Мы потеряем часть пикселей при уменьшении.
А вот при пропорциональном увеличении произойдет дублирование пикселей (при равном соотношении сторон) и качество графики должно остаться прежним.

Несмотря на это мы видим, что в большинстве игр то же окно авторизации (как и другие объекты) намного больше на разрешении 800х600 и меньше на 1024х768. Т.е. окно не изменяет свой размер.
Выходит окно имеет постоянный размер и только меняет позицию - всегда по центру экрана. Т.е. при запуске игры идет расчет положения объектов в зависимости от разрешения экрана?
Например в игре Warcraft 3. При низком разрешении мы увидим большие здания, юнитов и немного карты вокруг.
При высоком - мы увидим нормальные здания, юнитов и большой участок карты вокруг.
Наверно на плазменной панели на пол стены мы увидим пол карты - если игра это позволяет.

Но вернёмся к нашей игре - шахматы.
Мы хотим сделать наилучшую графику на всех разрешениях. Уменьшать - плохо.
Как сделать хорошую графику на низком разрешении?
В принципе мы можем изменить область камеры. Не показывать что за доской, а сфокусировать камеру на доске (viewport).
Тогда будет не очень удобно - часть доски может быть не видна. Но цель мы достигнем.

А если нам нужно сделать хорошую графику на высоком разрешении?
Мы можем увеличивать картинку или увеличивать область камеры. Если у нас за доской ещё что то есть.
То есть если на 1024х768 доска занимала весь экран, то на 1920х1080, при увеличении области камеры, доска будет занимать уже пол экрана.
А при увеличении картинки - графика будет пропорционально увеличена на весь экран.

Но не всегда разрешения экрана пропорциональны (1.3). Например 1024х768 (1.3) и 1366х768 (1.7).
И тогда будет искажение графики либо черные полосы на экране.
И как тут быть?
На примере шахмат. Мы уже не можем пропорционально увеличить картинку. Не хватает ширины экрана.
И тут мы получим черную полосу справа - около 342 пикселя.
Но мы можем сделать огромную комнату, изменять области камеры.
Но тогда будет около 342 пикселей справа. А при больших разрешениях - куча свободного места.
Положение графики нарушено. То, что раньше было в правом углу теперь на 342 пикселя левее. Т.к. игра разрабатывалась под ширину экрана 1024, а у нас 1366.
Значит нужно менять положение объектов, если это возможно. Т.е. производить расчет положения объекта относительно разрешения экрана.
Картинка всегда должна быть в правом нижнем углу? Значит её координата х = ширина экрана-ширина картинки.
Неужели нужен такой расчет?
---
Вот такие мысли.
TLTДата: Вторник, 05 Сентября 2017, 17:47 | Сообщение # 2
Сейчас нет на сайте
Используй для объектов координаты от центра, например. Относительные координаты от объектов.

Дао, выраженное словами, не есть истинное Дао.
Space_wormДата: Среда, 20 Сентября 2017, 23:02 | Сообщение # 3
уже был
Сейчас нет на сайте
Цитата useruser ()
Значит нужно менять положение объектов, если это возможно. Т.е. производить расчет положения объекта относительно разрешения экрана.
Картинка всегда должна быть в правом нижнем углу? Значит её координата х = ширина экрана-ширина картинки.

Возможно уже поздний вечер, но я ни черта не понял.

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

а) подгоняешь свой вид под размеры окна, а если это невозможно

б) таки да, "черные полосы" по бокам - единственный оставшийся выход. Только необязательно делать именно черные полосы, можно же графически приятно оформить лишнее пространство.

Если английского не боишься, зацени этот видос:

https://www.youtube.com/watch?v=jCl6zT0eQLU&list=PLXkVsacazW2qvdnKNzgBLkUwlgi3FU-VO
n0th1ngДата: Четверг, 21 Сентября 2017, 05:22 | Сообщение # 4
был не раз
Сейчас нет на сайте
Варианты:
1. Виртуальное разрешение. Игру делаешь в одном разрешении и масштабируешь в зависимости от разрешения дисплея игрока. Не знаю, умеет ли такое GM.
2. Координаты делаешь в зависимости от разрешения экрана.
3. Вручную для каждого разрешения.
-Чтобы не было черных полос, фон игры делаешь максимально широким чтобы влезало 16:9, но чтоб в 4:3 по бокам в "ушах" не было ничего полезного. Или наоборот: делаешь фон в 4:3, но так чтобы сверху и снизу тоже не было ничего при обрезании в 16:9. В GUI делаешь привязку по углам или прописываешь вручную координаты для каждого разрешения(как в PVZ, там в зависимости от соотношения сторон меняется положение меню выбора - сверху или слева).
-Увеличение игрового поля при увеличении разрешения - это плохо. При любом разрешении игроки должны видеть примерно одинаковую картинку. Искажений пропорций не должно быть, круг не должен становится овалом.
-В уменьшении картинки не все так плохо, линия в 1 пиксель при уменьшении в 2 раза смешается с соседними пикселями и все равно будет виден. А при увеличении не будет тупое дублирование пикселей(если только не делать это специально), а будет интерполяция пикселей. Если совсем плохо будет, можно использовать разные ассеты для разных разрешений.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг