Game Maker - создание игр | HellRoom Games
Апрель 30, 2025, 13:09:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Расширенное рисование фона и изменение разрешения игры  (Прочитано 3673 раз)
0 Пользователей и 1 Гость смотрят эту тему.
PitManKeks
Посетитель
**

Репутация: 11
Offline Offline

Пол: Мужской
Награды:
За постоянность! [50 дней на форуме]
API: Game Maker 8.0 Pro
Деятельность: Всё и сразу
Сообщений: 48


Error 404, I'm not found


« : Сентябрь 07, 2020, 10:52:21 »

Многие знают, что в ОС Windows есть возможность установки режима отображения для фона рабочего стола... Почему бы не сделать такое же в игре? Особенно это пригодится если игра должна подстраиваться под разрешение монитора.

Для этого я написал сей небольшой скрипт, который необходимо вызвать в событии Draw объекта, который занимается отрисовкой:
Цитата: Скрипт
//argument0 - имя фона
//argument1 - режим (заполнение, растягивание, в центре, замощение/плитка)


if(argument1 = "filling")
{
    if
(background_get_width(argument0) / room_width > background_get_height(argument0) / room_height)
    {
        
size = room_height / background_get_height(argument0)    
    }
    else
    {

        size = room_width / background_get_width(argument0)
    }
    
draw_background_ext(argument0,
    (room_width - background_get_width(argument0) * size) / 2,
    (room_height - background_get_height(argument0) * size) / 2,
    size, size, 0, c_white, 1)
}
else if
(argument1 = "stretching")
{
    horizontal_size = room_width / background_get_width(argument0)
    vertical_size = room_height / background_get_height(argument0)
    draw_background_ext(argument0, 0, 0, horizontal_size, vertical_size, 0, c_white, 1)
}
else if
(argument1 = "center")
{
    draw_background_ext(argument0,
    (room_width - background_get_width(argument0)) / 2,
    (room_height - background_get_height(argument0)) / 2,
    1, 1, 0, c_white, 1)
}
else if
(argument1 = "pave")
{
    horizontal_count = ceil(room_width / background_get_width(argument0))
    vertical_count = ceil(room_height / background_get_height(argument0))
    for(i = 0; i < horizontal_count; i += 1)
    {
        for
(j = 0; j < vertical_count; j += 1)
        {
            draw_background_ext(argument0, i * background_get_width(argument0),
            j * background_get_height(argument0), 1, 1, 0, c_white, 1)
        }
    }
}


Так же добавлю сюда то что позволяет менять разрешение игры (вернее подгонит размер комнаты под разрешение монитора, для работы с видами нужно немного изменить код)
Создаём комнату загрузки, в ней должен быть объект, в Create которого вызовем скрипт:
Цитата: Скрипт
//argument0 - имя комнаты для самого игрового процесса. Если этих комнат несколько и они меняются - надо вызвать скрипт для каждой

room_set_width(argument0, display_get_width())       //set resolution
room_set_height(argument0, display_get_height())    //width x height

После чего преходим в нужную комнату командой room_goto(имя_комнаты) или room_goto_next().
« Последнее редактирование: Сентябрь 10, 2020, 23:56:09 от PitManKeks » Записан

Изменить мир легко... Но вначале нужно запросить разрешение от СИСТЕМА на изменение этого файла
Я в ВК, Группа в ВК, Группа помощи Game Maker'нутым на голову
Fur
Абы-какой
GM Pro user
*

Репутация: 463
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]Третье место на HellRoom Jam #9 [Flucoldache]За лояльность! [+300 репутации]Настоящий игродел!Боже мой, посмотрите на эту медальку! Первое место на HellRoom Jam #6
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673


Лисяток тебе.


« Ответ #1 : Сентябрь 11, 2020, 11:37:21 »

Сколько ты потратил, чтоб сделать код нечитабельным на тёмной теме?
Записан

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

Hyperflex
SilentPhil
Norland
GM Pro user
*

Репутация: 479
Offline Offline

Пол: Мужской
Награды:
Первое место на HellRoom Jam #7 [Hell in Your Fridge]500 сообщений!За постоянность! [50 дней на форуме]За лояльность! [+150 репутации]Настоящий игродел!Второе место на HellRoom Jam #6 [По следам Артакса]...
API: GameMaker Studio 2
Деятельность: GML, Pixel Art
Сообщений: 1363



WWW
« Ответ #2 : Сентябрь 11, 2020, 11:50:00 »

http://forum.hellroom.ru/index.php?topic=24899.0
Записан

         
Да, на них можно кликать.
PitManKeks
Посетитель
**

Репутация: 11
Offline Offline

Пол: Мужской
Награды:
За постоянность! [50 дней на форуме]
API: Game Maker 8.0 Pro
Деятельность: Всё и сразу
Сообщений: 48


Error 404, I'm not found


« Ответ #3 : Сентябрь 11, 2020, 18:17:59 »

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

SilentPhil, спасибо! Честно, спасибо, поставлю как только будет возможность. Сейчас возможности нет, потому что сижу на Oper'е и не могу в ней найти возможность подключения JS скриптов.

Fur, много времени убил...
Записан

Изменить мир легко... Но вначале нужно запросить разрешение от СИСТЕМА на изменение этого файла
Я в ВК, Группа в ВК, Группа помощи Game Maker'нутым на голову
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.157 секунд. Запросов: 29.