Меню

game maker настройки разрешения экрана

Масштабирование в Game Maker

1. Проблема

Тем, кто работает с Game Maker, известно, что GM выделяет в памяти место для не сжатых картинок, не взирая на изначальный формат. То есть будь это хоть jpeg, хоть gif — GM «смотрит» на него как на bmp.

В связи с этим, рано или поздно, большинство разработчиков сталкивается с проблемой масштабирования картинки, так как «большие» изображения занимают много памяти и приводят в конечном итоге к торможению и большому времени загрузки. Значимая доля разработчиков в принципе работает с «маленькой» графикой, либо из-за ностальгии по старым приставкам, либо из-за «выдранных» ресурсов из игр для тех же старых приставок. Так или иначе, все они приходят к вопросу «как вывести на экран увеличенное в 2 (3, 4, 5) раз изображение».

Это меню настроек Game Maker. На картиночке видно, что GM позволяет запускать игру сразу же на полный экран, сделать процентное масштабирование в окне, сохранить исходные размеры даже при отображении в полном экране и так далее. Есть даже галочка «interpolate colors between pixels», которая должна по идее отвечать за включение/выключение сглаживания графики при масштабировании, но на практике это оказывается не так.

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

Проблема заключается в том, что GM сглаживает или не сглаживает картинку неуправляемо, основываясь на «показаниях» видеокарты. Если карта тянет — сглаживание происходит, если нет — обходится без него. Ни на какие «галки» GM при этом не смотрит.

2. Обходные пути

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

Второй путь мог бы стать решением, если бы не одно «но».


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

3. Решение

Суть третьего и единственного на данный момент более менее работающего метода заключается в использовании «поверхностей» (surface).

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

Каждый игровой шаг GM выводит картинку на экран. Фактически, он рисует прямо на экране. Однако можно рисовать вначале на surface, производить над surface какие-то действия, а результат выводить экран.

Читайте также:  настройка велокомпьютера west biking

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

Для этого мы создаем три скрипта:

Затем, при запуске игры создаем постоянный (persistent) и видимый (visible) объект, в котором прописываем наши скрипты:

Событие CREATE screen_init ();
Событие BEGIN STEP screen_begin ();
Событие END STEP screen_end ();
Событие GAME END surface_free (screen);

Запускаем игру и радуемся)

Метод работает, но возможны проблемы из-за разных видеокарт. Я с ними не встречался, однако говорят, что такое бывает.

И еще, не забудьте включить использование вида в настройках комнаты, и сделать нулевой вид видимым по умолчанию. Размеры вида и порта на экран должны быть одинаковыми!

источник

Game maker настройки разрешения экрана

Недавно начал изучать тему создания игр и 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, при увеличении области камеры, доска будет занимать уже пол экрана.
А при увеличении картинки — графика будет пропорционально увеличена на весь экран.

источник

Game maker настройки разрешения экрана

[GMS] Проблема с разрешениями экранов на андроид устройствах

MrForest Дата: Четверг, 25 Июня 2015, 19:03 | Сообщение # 1

Всем привет.
Работаю на GMS 1.4.1567.
При разработки игры на андроид возникла проблема с разрешением экрана.
У меня есть такой код в начальной (пустой) комнате

200?’200px’:»+(this.scrollHeight+5)+’px’);»> global.scr_height = 1;
global.scr_width = 1;

var side_max = max(display_get_height(), display_get_width());
var side_min = min(display_get_height(), display_get_width());

global.scr_height = side_min;
global.scr_width = side_max;

var w = global.scr_width;
var h = global.scr_height;

surface_resize(application_surface, w, h);
display_set_gui_size(w, h);
window_set_size(w, h);

room_set_view(room0, 0, true, 0, 0, w, h, 0, 0, w, h, 0, 0, 0, 0, -1);

Размеры фона 920х909, а спрайта 122х317.
Но все равно на моем телефоне все выглядит каким-то мелким.
Прошу помощи, может что-то в коде не то либо нужно больше размеры брать?

Luxorix Дата: Четверг, 25 Июня 2015, 19:07 | Сообщение # 2

MrForest, а разрешение телефона то какое?
LUXORIX GAMES
MrForest Дата: Четверг, 25 Июня 2015, 19:19 | Сообщение # 3

520х240

Luxorix Дата: Четверг, 25 Июня 2015, 19:32 | Сообщение # 4

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
device_mouse_dbclick_enable(false); // отключаем двойной клик

if os_type = os_android //если андройд проверяем что есть ширина что высота
<
var side_max = max(display_get_height(), display_get_width());
var side_min = min(display_get_height(), display_get_width());

источник

Legacy GM Setting screen resolution

GlitchCrew

Member

In GM8 it was possible to set screen resolution in global game settings like this:
http://imgur.com/pN9oBWX

However in GM:S there is no such option:
http://imgur.com/JhGRJZA

Is there any way to set screen resolution equal to game (room) resolution?
Usual way of setting game resolution equal to screen resolution doesn’t work very good in my case.

Greenhawk

Threatuna Agent

You can set in manually through the room function, i believe. I may be way off here and also i believe you can code the resolution. Check this: https://m.reddit.com/r/gamemaker/comments/372ble/tutorial_in_game_resolution_control/

Sorry i can’t be much of help, i haven’t messed with setting screen resolution.

GlitchCrew

Member

You can set in manually through the room function, i believe. I may be way off here and also i believe you can code the resolution. Check this: https://m.reddit.com/r/gamemaker/comments/372ble/tutorial_in_game_resolution_control/

Sorry i can’t be much of help, i haven’t messed with setting screen resolution.

GlitchCrew

Member

Actually, no. You can’t set the screen resolution in GMS.

There are extensions freely available on the MarketPlace to allow you to do this, but it is generally strongly frowned upon forcing a display resolution change upon the user.

GlitchCrew

Member

Here’s one. I can’t vouch for its reliability etc as I haven’t tried it out.

It’s free though, so no harm in trying I guess.

I still don’t understand why devs decided to remove this feature from GMS. I see nothing wrong with changing screen resolution when a game starts and then changing it back to original when a game ends. Perhaps I should consider switching to GM8.

GlitchCrew

Member

Greenhawk

Threatuna Agent

Yes they will become distorted due to aspect ratio. This will be the same if you force a resolution change also as the aspect ratio will most likely be different also. For example, switching from 1600 X 900 to 1024 X 768. The first is 16:9 and the second is 4:3.

No quick way around this without some real planning.

Nujuat

Guest

I’m not exactly what you’re trying to do, but messing around with views and the application surface might help.

As for changing the aspect ratio — basically change the aspect ratio of the view to the aspect ratio of the screen (or window or whatever). I can go into more depth if you want.

RangerX

Member

Yes in GameMaker Studio its your game that you adapt to different monitors and not the opposite.
And don’t worry there’s a way to make it clean in all situations. It depends what is your need.

The resolution of your game will be the first room’s view size. Else if you don’t use views (which I strongly advise against) your game resolution will be your first room’s size.
Your game need to detect monitor’s size when it boots up and resize the application surface to what makes sense for your game. Either displaying your game the biggest possible while respecting the screen ratio (perfectly doable just with the global settings) or again always having your game «pixel perfect» which requires a bit more work but is again perfectly doable.

источник

Добавить комментарий

Как настроить и установить? © 2020
Все права сохранены © 2020. Информация, опубликованная на сайте, носит исключительно ознакомительный характер и не является рекомендацией к применению. Внимание! Материалы могут содержать информацию, предназначенную для пользователей старше 18 лет. 18+

Adblock
detector