Вопрос - Ответ (Game Maker)
| |
t111 | Дата: Вторник, 16 Мая 2023, 20:36 | Сообщение # 6081 |
почетный гость
Сейчас нет на сайте
| TLT, нет, не анахронизм. Обращал внимание на разбор этой проблемы. Спрайты с инета в png высокого качества. В общем, вот скрин с IDE, здесь же скрин процедурной генерации облаков (чтоб было видно что дело не в спрайтах):
А вот как в браузере, причем в любом:
Края рваные
Не знаю что за баг, но проблема пока вылечилась переключением в полноэкранный режим f11, а потом возвращением из него, спрайты были норм сразу после этого. Еще буду тестить.
Добавлено (16 Мая 2023, 20:41) ---------------------------------------------
Цитата Game_maker_8 ( ) Опции игры ->Графика ->Gx.Games->размер страницы текстуры выбираешь максимальный-> предварительный просмотр->применить-> ок Должно помочь
Спасибо, применял, но не помогает. В чем дело, не понятно, переводом в полноэкранный режим и обратно решается пока. Баг видимо
как известно, встречают по одежке, а провожают uninstall'ом"
Сообщение отредактировал t111 - Вторник, 16 Мая 2023, 20:42 |
|
| |
TLT | Дата: Среда, 17 Мая 2023, 15:19 | Сообщение # 6082 |
Сейчас нет на сайте
| t111, Это называется "ресэмплирование с помощью фильтра". Если не масштабировать их на целые числа, получается искажение пикселей - это основы. Если размер окна варьируется, то растягивание может приводить к таким проблемам. Масштабирование растрового изображения не создаст образом больше деталей и всегда будет приводить к более размытой версии. При этом окончательный результат можно улучшить с помощью методов повышения резкости, а также он сильно зависит от используемого алгоритма.
Вот пример правильного использования: https://manual.yoyogames.com/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_xscale.htm
Если проблема не меняется изменением настроек и выбора алгоритма Lanczos (лучший, но медленный) или другого используемого варианта, то стоит привести спрайты к стандарту разрешения, уменьшить масштаб в какой-нибудь проге апскейлинга спрайтов - вот тут человек приводит варианты. В том же редакторе конструктора:
Лично мне кажется, что просто криво подключены спрайты, криво обрабатываются через код, либо как-то противоречат настройкам использования элементам интерфейса и т.п. что размеры не согласованы, поэтому конвейер неправильно обрабатывает размеры слоёв конваса. Но это уже нужно выяснять имея проект - автору.
Дао, выраженное словами, не есть истинное Дао.
|
|
| |
Miple252 | Дата: Воскресенье, 13 Августа 2023, 14:57 | Сообщение # 6083 |
был не раз
Сейчас нет на сайте
| Извините за наверное нубский вопрос, но. Я создаю кликер, и при нажатии на объект должен меняться его кадр спрайта, т.е. нажал на объект один раз, он изменился, и в итоге если очень быстро кликать то можно получить анимацию, как это сделать?
Сообщение отредактировал Miple252 - Воскресенье, 13 Августа 2023, 15:01 |
|
| |
AlexanderBekker | Дата: Воскресенье, 13 Августа 2023, 17:54 | Сообщение # 6084 |
BekkerDev Studio
Сейчас нет на сайте
| Цитата Miple252 ( ) Извините за наверное нубский вопрос, но. Я создаю кликер, и при нажатии на объект должен меняться его кадр спрайта, т.е. нажал на объект один раз, он изменился, и в итоге если очень быстро кликать то можно получить анимацию, как это сделать? В Create объекта:
В событии нажатия на объект:
Код image_index = ++image_index % image_number; Или:
Код image_index++; if (image_index >= image_number) image_index = 0;
Разработчик, композитор и издатель инди-игр в Steam. Редактор карт: BekkerDev Level Editor 4 Страница разработчика в Steam Паблик ВК: BekkerDev Studio
|
|
| |
Miple252 | Дата: Воскресенье, 13 Августа 2023, 19:30 | Сообщение # 6085 |
был не раз
Сейчас нет на сайте
| Спасибо! С меня плюсикДобавлено (13 Августа 2023, 19:38) --------------------------------------------- AlexanderBekker, Слушай, не можешь ли подсказать как делать авто сохранение? Просто по гайдам не выходит
|
|
| |
AlexanderBekker | Дата: Воскресенье, 13 Августа 2023, 20:12 | Сообщение # 6086 |
BekkerDev Studio
Сейчас нет на сайте
| Цитата Miple252 ( ) Слушай, не можешь ли подсказать как делать авто сохранение? Просто по гайдам не выходит Я давно уже с Game Maker не работаю. Раньше была возможность сохранять целое состояние игры функцией game_save(). Потом эту возможность вроде как убрали. Как сейчас реализовывают сохранения, я, к сожалению, не знаю. Но в гайдах по-любому это должно освещаться.
Разработчик, композитор и издатель инди-игр в Steam. Редактор карт: BekkerDev Level Editor 4 Страница разработчика в Steam Паблик ВК: BekkerDev Studio
|
|
| |
Miple252 | Дата: Воскресенье, 13 Августа 2023, 20:23 | Сообщение # 6087 |
был не раз
Сейчас нет на сайте
| AlexanderBekker, Ну ладно, спасибо
Добавлено (13 Августа 2023, 20:25) --------------------------------------------- Как сделать сохранение? Идеально если при нажатии на объект будет происходить сохранение/загрузка. Смотрел гайды ничего не получилось, надеюсь на вас. Уже решил самостоятельно.
Сообщение отредактировал Miple252 - Воскресенье, 13 Августа 2023, 23:10 |
|
| |
AlexanderBekker | Дата: Понедельник, 14 Августа 2023, 01:09 | Сообщение # 6088 |
BekkerDev Studio
Сейчас нет на сайте
| Цитата Miple252 ( ) Уже решил самостоятельно. Поделился бы решением. Уверен, другим тоже было бы полезно.
Разработчик, композитор и издатель инди-игр в Steam. Редактор карт: BekkerDev Level Editor 4 Страница разработчика в Steam Паблик ВК: BekkerDev Studio
|
|
| |
Miple252 | Дата: Понедельник, 14 Августа 2023, 15:50 | Сообщение # 6089 |
был не раз
Сейчас нет на сайте
| Как сделать сохранение? Я создаю кликер, и при запуске игры должна происходить загрузка данных, и соответственно сохранение при выключении. Создаём какой либо объект например, ob_load, после чего в событии create прописываем.
Код ini_open("Название файла.ini") // открытие файла переменная = ini_read_real("Секция", "Ключевое слово", значение по умолчанию) //загрузить число переменная = ini_read_string("Секция", "Ключевое слово", значение по умолчанию) //загрузить текст ini_close() // закрытие файла.
Обьясню как работает, ini_open(Название файла.ini), отвечает за открытие файла .ini, ini_read_real отвечает за то под какой раздел и под каким ключевым словом, (например место нахождение мышки), но загружает только числа. В свою же очередь ini_read_string работает так же но с текстом. И в конце, ini_close()(В скобка ничего писать не нужно!) Теперь устанавливаем наш объект на главный рум, и получаем сохранение, ini_open самостоятельно создаст файл если его нету. Что мы получаем, мы получаем рабочую загрузку, НО, что нам загружать если у нас нету сохранения? Так что создадим ещё один объект со спрайтом, например, кнопку выхода, и в событии left pressed пропишим следующий код:
Код ini_open("Названия файла.ini")//Открывает файл. Важно! что бы у файлов были абсолютно одинаковые названия. ini_write_real("Секция", "Ключевое слово", "то что мы записываем, например-xcord", например- x) //сохранить число ini_write_string("Секция", "Ключевое слово", "то что мы записываем, например-ycord", например-y) //сохранить текст ini_close() Воуаля наш код готов, так же, можно сделать отдельные кнопки сохранения и загрузки, и там будет так же, просто как по мне легче сделать авто сохранение, в моём случае(создании кликера, я повесил его на объект на который мы кликаем, но здесь индивидуально). Опишу тот случай если вы делаете на отдельных кнопках, вы поступаете так же, но и загрузку погружаете в left_pressed, или можно сделать это же с помощью нажатия клавиши, здесь так же.
Добавлено (14 Августа 2023, 15:56) --------------------------------------------- Надеюсь кому то помог! Если что то не понятно пишите сюда, отвечу как смогу
Сообщение отредактировал Miple252 - Понедельник, 14 Августа 2023, 15:57 |
|
| |
MagicHero | Дата: Понедельник, 14 Августа 2023, 19:07 | Сообщение # 6090 |
участник
Сейчас нет на сайте
| Miple252, У меня в игре код с сохранением раздулся больше 2000 строк а загрузка вообще больше 7000. И иногда можно сохранять просто в файл, только тут надо знать полный порядок охранения и загрузки. Делается через
Код var file=file_text_open_read("имя_файла.txt");
item_1=file_text_read_real(file); // что то загрузили file_text_write_real(file,item_2); // что то сохранили file_text_writeln(file); // для перехода в новую строку при сохранении file_text_readln(file); // для перехода в новую строку при загрузке
file_text_close(file);
Так можно сохранять хоть тысячи значений, что будет куда удобнее и без лишней инфы насчет названий. Но нужно знать точно порядок данных и при сохранении их все по новой переписывать. И по поводу сохранения в твоем кликере то надеюсь по нажатию на обьект который кликаешь ты не все сохраняешь? Ведь сохранение в ini тем удобно что можно без проблем сохранить только одно нужное значение, например здоровье по кому кликаешь или что его уничтожил.
|
|
| |
Miple252 | Дата: Понедельник, 14 Августа 2023, 19:54 | Сообщение # 6091 |
был не раз
Сейчас нет на сайте
| Цитата MagicHero ( ) var file=file_text_open_read("имя_файла.txt");
item_1=file_text_read_real(file); // что то загрузили file_text_write_real(file,item_2); // что то сохранили file_text_writeln(file); // для перехода в новую строку при сохранении file_text_readln(file); // для перехода в новую строку при загрузке
file_text_close(file);
Верно, я сохраняю только одно, значение монет, сейчас игра на стадии разработки так что возможно измениться. Если честно, я не знал об этом способе, буду знать
Добавлено (14 Августа 2023, 19:58) --------------------------------------------- Хочу добавить, я впервые работаю в game maker, так что для меня то что ты рассказал интересно, так же хотелось бы спросить, можно ли сделать фэйковую загрузку? Если да то как?( я не собираюсь издеваться над игроками, я хочу сделать я ко бы загрузку, перед самой игрой)
Сообщение отредактировал Miple252 - Понедельник, 14 Августа 2023, 20:08 |
|
| |
AlexanderBekker | Дата: Понедельник, 14 Августа 2023, 20:30 | Сообщение # 6092 |
BekkerDev Studio
Сейчас нет на сайте
| Цитата Miple252 ( ) Хочу добавить, я впервые работаю в game maker, так что для меня то что ты рассказал интересно, так же хотелось бы спросить, можно ли сделать фэйковую загрузку? Если да то как?( я не собираюсь издеваться над игроками, я хочу сделать я ко бы загрузку, перед самой игрой) Есть несколько вариантов: 1) Круговой индикатор, где что-либо будет двигаться по окружности (например, шарик); 2) Простая мигающая надпись «Загрузка...» или что-то в этом духе; 3) Тематический фон во время загрузки, который будет отображаться пару секунд; 4) Обычная горизонтальная шкала, наполняющаяся до 100% (по сути, как та же полоска здоровья) с рандомным интервалом;
Чтобы скрасить фейковость загрузки и сделать её полезной, можно во время неё показывать полезные подсказки, игровые фичи и вкратце описывать работу механик. Например: - Прицеливание увеличивает точность и урон вашего оружия - Выполняйте больше заданий торговца, чтобы открыть новые товары - Посадка культур на удобренной почве увеличивает их рост в 2 раза
Разработчик, композитор и издатель инди-игр в Steam. Редактор карт: BekkerDev Level Editor 4 Страница разработчика в Steam Паблик ВК: BekkerDev Studio
Сообщение отредактировал AlexanderBekker - Понедельник, 14 Августа 2023, 20:36 |
|
| |
MagicHero | Дата: Понедельник, 14 Августа 2023, 20:38 | Сообщение # 6093 |
участник
Сейчас нет на сайте
| Miple252, Насчет сохранений то еще можно использовать json но после того как я узнал про ini то даже не стал разбираться с json. Максимум заинтересовался напрямую сохранением в файл т.к. было много значений порядок которых был известен. Насчет фейковой загрузки то можешь просто рисовать через draw GUI на весь экран что захочешь. Главное сделать глубину depth самую низкую т.е. -9999 чтобы картинка была поверх всех и такую глубину больше в игре не использовать. В игре же блокировать все действия пока отображается эта фейковая загрузка.
|
|
| |
Miple252 | Дата: Понедельник, 14 Августа 2023, 20:43 | Сообщение # 6094 |
был не раз
Сейчас нет на сайте
| Меня интересует 3 вариант И я уже нарисовал спрайт
Добавлено (14 Августа 2023, 20:44) --------------------------------------------- Так что жду то как это можно сделать
Добавлено (14 Августа 2023, 20:45) --------------------------------------------- А точнее, я нарисовал анимацию, примерно на 50 кадров, и не особо понимаю что нужно сделать для того что бы всё работало, а также я создаю кликер, так что не уверен что мне будет что сказать игроку,но что нибудь найду
Сообщение отредактировал Miple252 - Понедельник, 14 Августа 2023, 20:47 |
|
| |
mihailsh | Дата: Понедельник, 14 Августа 2023, 23:15 | Сообщение # 6095 |
был не раз
Сейчас нет на сайте
| Цитата Miple252 ( ) Меня интересует 3 вариант И я уже нарисовал спрайт
Сделай пустую комнату, . Комната стартует первой. там будет твоя анимация, по окончанию которой переходишь на комнату меню или куда надо.
Сообщение отредактировал mihailsh - Понедельник, 14 Августа 2023, 23:20 |
|
| |
Miple252 | Дата: Вторник, 15 Августа 2023, 00:49 | Сообщение # 6096 |
был не раз
Сейчас нет на сайте
| mihailsh, А собственно как сделать переход? Добавлено (15 Августа 2023, 00:50) --------------------------------------------- Я по этому поводу знаю, но не знаю как сделать автоматический переход
|
|
| |
mihailsh | Дата: Вторник, 15 Августа 2023, 02:50 | Сообщение # 6097 |
был не раз
Сейчас нет на сайте
| Цитата mihailsh ( ) Я по этому поводу знаю, но не знаю как сделать автоматический переход
либо через событие end animation написать room_goto(нужная комната) либо в step Ловить if (image_index >= image_number - 1) { room_goto() } либо если вручную картинки меняются где-то. там же проверить что последняя и так же влепить переход.
|
|
| |
MagicHero | Дата: Вторник, 15 Августа 2023, 18:54 | Сообщение # 6098 |
участник
Сейчас нет на сайте
| Miple252, Я же выше написал как сделать. Просто выводишь через draw GUI картинку на весь экран с загрузкой. Делаешь это в самом первом обьекте в комнате. В игре же блокировать все действия пока отображается эта фейковая загрузка. Там же можешь через alarm активировать убирание картинки и начало игры. Геморой с промежуточной комнатой по мне дикость, да и там все равно придется в игровой комнате делать какую то картинку также т.к. загрузка игры может длиться больше секунды и все это время игроку будет показана ИГРА но замороженная.
|
|
| |
mihailsh | Дата: Среда, 16 Августа 2023, 00:31 | Сообщение # 6099 |
был не раз
Сейчас нет на сайте
| Цитата MagicHero ( ) Геморой с промежуточной комнатой по мне дикость Наоборот проще. Вообще ничего не надо делать. Нечего блокировать. Один объект, отработал, перешел дальше, да и еще атлас из папяти с этой анимацией слить, если большая, чтобы не занимал место. Позже можно туда же влепить какие-нить предварительные действия.Добавлено (16 Августа 2023, 01:28) ---------------------------------------------
Цитата Miple252 ( ) mihailsh, А собственно как сделать переход
https://youtu.be/hTh5UpFxx1E Можно например так
|
|
| |
MagicHero | Дата: Среда, 16 Августа 2023, 11:00 | Сообщение # 6100 |
участник
Сейчас нет на сайте
| mihailsh, Так проблема в том что игра может реально грузится больше одной секунды и тогда чтобы не видеть тупо замороженную картинку игры придется делать в первом обьекте ИГРОВОЙ комнаты картинку с загрузкой как выше я написал. И дополню не только в первом обькте игровой комнаты но и туже самую картинку показывать в той комнате где нажали кнопку перехода в игровую комнату, т.к. иначе игрок будет опять же видеть замороженную картинку. Поначалу когда в игре ничего нет, естественно все будет происходить моментально но чем больше будет игра, тем больше будет задержка или тупо заморозка игры.
|
|
| |
|