Почему пиксели в Game Maker искажаются?
Делаю свою первую мини игру на Гейм Мейкере GMS 1,
насколько я понял не легко сделать pixelperfect на гамаке с динамическим окном,
и решил вначале потренироваться, вроде всё сделал правильно,
использовал функцию
surface_resize(application_surface, x, y);
здесь Source Demo
Но почему-то часть пикселей пилообразно искажаются:
- 30 апреля 2020, 09:30
- 01
Пиксель-perfect с масштабирование достигается только если вьюпорт так же меняется в игре. Все эти шаманста с сурфэйсами не сработают. В лучшем случае - у тебя будет мыло, в среднем - укрупнённые пиксели разного размера, в худшем - то что в посте.
На своей практике я прописываю зависимость размера вида в игре от ширины окна/монитора так чтобы оно было кратно пикселям, т.е х2, х3, х4. Там всё достаточно просто на самом деле. Но это не всегда получается в играх сделать, особенно если игра поделена на комнаты - там можно сделать как в Gato Roboto, т.е. сделать вид внутри вида и внутренний вид масшатибировать по х1, х2, х3 которые влезают в окно игры.
Я пока мало знаю про движок, мне например не понравилось, что надо отдельно каждый раз при создании нового уровня менять вьюпорт и размер экрана, это странно, это реально странно!
Но в целом я так и сделал, проверяю скриптом, какой размер дисплея, и если можно то увеличиваем в x2, x3, x4 и более раз, хотя в то же время, я всё таки работал с surface, но теперь понял как решить проблему, добавил в последние две строки round.
Мне начинает нравится концепция скриптинга в GM, ибо это очень похоже на JS, который я на юнити осваивал.
Да, в GMS слабая типизация, примерно как в JS, нов JS структуры данных гибче, правда есть подвохи с замыканиями, которые на ES5 только через жопу решаются.
В 2.3 студии вообще полноценный JSON завезли с объявлением своих функций в переменных. Пока эксперименталка, через пару месяцев должна будет выйти. Ну и там ещё много клёвых фич такие как кривые анимации, группировки ассетов как угодно а не по типу. Нормальное гнездование аксессоров для дата-структур. В общем, виден рост дивжка. Причём именно в сторону общепринятого профессионального инструмента.
А насчёт комнат - в GMS2 их вообще наследовать можно. Я не совсем понял что ты имеешь в виду под создание уровня. Если в самой IDE то вот как раз наследование поможет- - делаешь комнату-темплейт со всеми настройками и слоями а потом наследуешь от неё другие комнаты, заполняя объектами. Для вьюпорта лучше завести объект view_handler и сделать ему persistent, в событии "room start" (а лучше step) делать подгонку вьюпортов под экран/окно
У меня первый гамак, по каким-то причинам он стал для меня бесплатным, я так и не понял. То ли я давно в акцию какую-то попал, то ли GMS 1 бесплатный. Я не уверен. Но точно кряки никакие не юзал, мне и юнити хватало, а тут установил демку GMS1, и она оказывается бесплатная (хотя я вспомнил что давно заводил аккаунт гамака и на мой аккаунт тут оказывается есть лицензия, что странно), ну грех не пользоваться, раз дают)
Про 2.3 видел в твиттере, много фич перечисляют) может позже куплю вторую студию, если понравится первая, но пока всё нравится в целом, кроме того что надо на каждую комнату отдельно менять разрешение экрана)
Ну если тебе первая студия нравится, то вторую ты вообще полюбишь, т.к. там очень много фич сделано для белых людей. И с комнатами работать стало удобнее и слоии появились и редактор спрайтов стал пиздатый. В общем, много полезностей. Правда часть функций устарело и с камерой так себе работает.
Если захочешь проект с первой студии портировать то там проблем никаких не будет - он сам все полифилы создаст.
А что, в Юнити не так?
Плюс я тебе уже приводил скрипт которым можно задать вьюпорты автоматически. Ты если не пользуешься ответами на свои вопросы, зачем вообще спрашиваешь? Делай уже свой юнитевский проект или нормально на ГМ переключись, совмещать их нереально.
И насчёт "динамического окна" - никому в реальном мире эта фича не нужна кроме ленивых офисных работников. Люди платят за полноэкранные игры, а на консолях, как и на мобилках (а это уже большая часть рынка игр) окон нет вовсе. Если тебе нужны деньги, не занимайся ерундой. Хотя, думаю, тебе это уже очень много раз в жизни говорили, и мои слова тут по барабану.
Я хоть задавал вопросы, но пока сам не начну руками код вводить, то не смогу их запомнить,
сейчас полез в гейм мейкер уже кодить, и теперь некоторые вещи стали уже более понятнее,
но всё ещё есть и много вопросов.
Все ответы я скриню, чтоб потом можно было поднять инфу, но может где что потерял или запутался в своих скринах, ибо их уже не мало, пока практики не было, инфа сложно приживается, но теперь же уже первый код написал, какой никакой, концепцию начинаю понимать по тихой. Спасибо Ксит за ту инфу, всё равно много что пригодилось, хоть я и ещё тот разгильдяй и кое-что походу потерял. :3
Ну всё же мне кажется для Windows приложений это актуально, ведь во всех играх на Game Maker (на винде) делают дополнительные кнопки в опциях по увеличению размера экрана, множители: x2 x3 x4,
так зачем эти кнопки вообще, если можно просто сделать свободное окно и в зависимости от того как сильно его увеличил, такой множитель и получил, естественно в целых числах, чтоб были красивые пиксели, заодно и за пределами игрового окна не будет видно часть рабочего стола, потому-что окно будет растянуто на весь экран, хоть и в оконном режиме.
В целом согласен, что за переделами винды это не будет нужно, но на винде норм, мне нравится играть в маленькие инди игры и эмуляторы не в полноэкранном режиме.
Ни в одной моей игре этого нет, а в других это есть далеко не везде.
Моё дело тебе сказать, на чём ты можешь заработать, а не что тебе нравится. Это разные вещи.
Походу Views сохраняется для всех уровней, это хорошо, я просто вначале не понял, думал для каждого уровня отдельно надо менять цифры)
Всё, я наконец-то разобрался. Доделал полноценный автоматический множитель экрана в зависимости от размера окна. Просто вначале не учёл, что надо ещё отдельно нажимать галочку на включение Enable the use of Views, иначе всё разрешение окна зависело от разрешения уровня. Теперь можно и игру начать делать :3

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