a7s1h1
Активный участник
Репутация: 27
Offline
Пол:
API: Game Maker 8.0 Pro
Сообщений: 457
|
|
« : Апрель 19, 2011, 13:09:12 » |
|
Ситуация следующая: игра уже почти сделана. Количество спрайтов - более 200. Не все их них сохранились в виде файлов png (т.е. теперь они есть только в проекте gmk). Некоторые из тех, что есть в виде файлов png, менял в самом редакторе. При всё при этом, экспортируя ресурсы, обнаружил, что фоны и спрайты занимают 90% веса exeшника игры. Поэтому решил вынести их вовне. Вопрос таков: Возможно ли, учитывая всё изложенное выше, экспортировать ресурсы, а потом использовать этот файл как внешний для загрузки ресурсов из него в самом начале игры? Если нет, то как тогда лучше поступить? а то, если единственным выходом будет прописывать загрузку ресурса для каждого объекта, уже не говоря о повторном рисовании и правке некоторых изображений, то лучше уже пусть игра весит 10 метров, но сохраню неделю-другую)
|
|
|
Записан
|
|
|
|
Dva_Kota
|
|
« Ответ #1 : Апрель 19, 2011, 13:17:59 » |
|
Экспортировать можно: открываешь спрайт, нажимаешь там кнопку "редактировать" и там в меню выбираешь "сохранить как PNG файл..." А вот загрузку ресурсов и назначение спрайтов для объектов нужно будет вручную делать.
|
|
|
Записан
|
|
|
|
a7s1h1
Активный участник
Репутация: 27
Offline
Пол:
API: Game Maker 8.0 Pro
Сообщений: 457
|
|
« Ответ #2 : Апрель 19, 2011, 14:52:52 » |
|
экспорт пофайльно удался, спасибо)
насчёт второго - печально, но что, если сделать так?: 1. сохраняю спрайты как файлы png 2. удаляю все спрайты, вместо них создаю новые пустые, с теми же именами. 3. в начале игры ставлю объект-контроллер, который загружает все спрайты из файлов png, заменяя ими пустые. Это первый вопрос.
2.Насколько я понимаю, после того, как все спрайты будут таким образом заменены, менять в отдельных объектах уже ничего не надо, так как в коде я ссылаюсь на название спрайта. Правильно?
3. если всё это провернуть подобным образом, как быть с маской и центром спрайта? Тоже прописывать в коде?(
|
|
|
Записан
|
|
|
|
Dva_Kota
|
|
« Ответ #3 : Апрель 19, 2011, 15:24:13 » |
|
Почти правильно - просто удаляешь спрайты из проекта и НЕ заменяешь их пустыми. Там просто не будет спрайтов вообще. Но это нужно делать перед созданием ехе файла - так удобнее расставлять объекты в комнате (и перед удалением обязательно сделай резервную копию проекта).
пока не спеши удалять спрайты и прописывать коды для назначения спрайтов объектам, вполне возможно что тебе вообще не нужно будет это делать - у меня появилась идея как сделать автоназначение спрайтов объектам (из папки). Сейчас пытаюсь это сделать. Если получится выложу пример и напишу как делать.
Маска назначается при загрузке спрайта (точная или не точная), размер и форму маски можно выбрать сразу после загрузки спрайта функцией sprite_collision_mask()
|
|
|
Записан
|
|
|
|
a7s1h1
Активный участник
Репутация: 27
Offline
Пол:
API: Game Maker 8.0 Pro
Сообщений: 457
|
|
« Ответ #4 : Апрель 19, 2011, 15:52:19 » |
|
ок. буду ждать. только ты напиши, даже если не получится. я так понимаю, мне пока продолжать делать всё в прежнем режиме. а потом просто сотру спрайти и т.д... Так?
|
|
|
Записан
|
|
|
|
Dva_Kota
|
|
« Ответ #5 : Апрель 19, 2011, 17:37:09 » |
|
Да, все правильно делаешь как и раньше а потом, в самом конце удалишь спрайты (луче всего в проекте сделать для спрайтов папку и все спрайты хранить в ней, а потом сразу папку удалить - чтобы по одному спрайту не удалять). Вот написал статью и сделал пример. Код универсальный и совсем не большой: "Автоматическая загрузка спрайтов из папки"
|
|
|
Записан
|
|
|
|
a7s1h1
Активный участник
Репутация: 27
Offline
Пол:
API: Game Maker 8.0 Pro
Сообщений: 457
|
|
« Ответ #6 : Апрель 20, 2011, 09:30:51 » |
|
подскажи ещё, пожалуйста, как мне лучше загружать фоны из внешнего файла? (со спрайтами разберусь позже (по твоей статье), а вот фонов всего десяток - с ними хочу расправиться уже сейчас.)
|
|
|
Записан
|
|
|
|
|
a7s1h1
Активный участник
Репутация: 27
Offline
Пол:
API: Game Maker 8.0 Pro
Сообщений: 457
|
|
« Ответ #8 : Апрель 20, 2011, 12:57:27 » |
|
Статья хорошая, но не мой случай) Там написано: "По этому бэкграунд должен назначаться каким-то объектом, который будет для каждой комнаты свой, или одним объектом, который будет назначать бэкграунд в зависимости от комнаты. " У меня в игре комнат больше 300, я замучаюсь в каждую ставить контроллер или в один - прописывать все комнаты кодом. Можно ли в данном случае сделать так, как я сначала собирался со спрайтами?: 1. сохранить фоны в png 2. стереть все фоны из проекта 3. создать фоны с теми же именами, но пустые 4. при старте заменяю фоны из файла с помощью background_replace_background
|
|
|
Записан
|
|
|
|
Dva_Kota
|
|
« Ответ #9 : Апрель 20, 2011, 13:09:53 » |
|
Да, думаю так получится (но нужно проверить). Напиши потом получилось или нет.
|
|
|
Записан
|
|
|
|
a7s1h1
Активный участник
Репутация: 27
Offline
Пол:
API: Game Maker 8.0 Pro
Сообщений: 457
|
|
« Ответ #10 : Апрель 20, 2011, 13:16:38 » |
|
получилось. все фоны сделал пустыми, в game start вставил замену из файла. Правда, попробовал только с 1 фоном. Но, думаю, там всё должно быть нормально, ведь свойств у них никаких нет, как у спрайтов (типа маски и т.д., которые сбрасываются при загрузке нового). Один недостаток: без конкретных фонов не видно, как тот или иной объект будет смотреться на определённом фоне. Так что вынесу все фоны перед готовностью.
|
|
|
Записан
|
|
|
|
Dva_Kota
|
|
« Ответ #11 : Апрель 20, 2011, 13:32:31 » |
|
Так что вынесу все фоны перед готовностью.
Ну да, я про это и говорил (как и со спрайтами)
|
|
|
Записан
|
|
|
|
|