Как создать массив данных в Game Maker Studio 1.4.9?
Пытаюсь понять как работать с гамаком, местами это похоже на юнити, а местами на Stencyl,
что очень забавно.
Хочется понять как создать список какого-нибудь класса? (возможно класс это объект, я пока не совсем понял структуру) чтобы перезагрузка уровня не удалила и не сбросила его (типа глобально)
И чтобы эти объекты не торчали на уровне.
- 25 февраля 2020, 11:41
- 01
Ты имеешь в виду список экземпляров объекта.
Сделай объект персистентным - галочку поставь Persistent в окне объекта слева.
А ты и не ставь их на уровень - ставь их в координаты типа -100500, -100500. Ещё есть флаг visible.
А если их много нужно, то они так и будут все торчать на -100500 координате?
А в чем проблема? Ты не представляешь в скольких играх куча объектов висит где-то на окраинах игрового мира.
Будучи художником, я бы тоже подумал что это может быть чревато. И в каком-то смысле он прав - выше я написал, в каком.
У меня так раньше всегда было, и я пытался от этого избавиться, и меня немного пугает тот факт, что оказывается я нормально делал игры, а мне всегда казалось что неправильно)
если они работают правильно значит и сделаны правильно х)
Правильно и достаточно долго.
что ты подразумеваешь под
?
Дольше чем у юзера (его компьютера) возникнут проблемы.
Да, так и будут. Другое дело если у них есть события коллизий друг с другом - тогда они будут на это реагировать, да и вообще жить за экраном, но в этом изначально нет никакого смысла - персистентные комнаты сохраняют положение и состояние объектов автоматически.
Танцуй от геймдев-задачи, слишком много общих вопросов задаёшь.
Говори - хочу чтоб враги оставались в предыдущей комнате, когда я пришёл в следующую; чтобы когда вернулся в первую, они были ровно в тех же положениях и с теми же хитпоинтами. Эту задачу решает персистентность комнат.
Или - хочу чтобы враги респаунились каждый раз в комнате с одинаковыми хитпоинтами в одинаковых (возможно немного варьируемых) местах; но чтобы был такой враг, который меня преследует по другим комнатам. Эту задачу решает персистентность объекта - в данном случае, того врага который должен уметь преследовать.
А сейчас непонятно, зачем тебе "просто хранить просто объекты с переменными". Для баз данных предметов нужно действительно писать базы данных, по принципе как Хейзер привёл, но там переусложнено - можно же просто взять Эксель-таблицу, в неё прописать все предметы и характеристики, и сделать чтоб игра читала CSV-файл, благо это просто файл из строк разделенных точками с запятой.
Распиши свои задачи, полностью, все. Тогда будет ясно что тебе нужно.
Окей! Хотя мне хотелось бы разобраться что можно, а что нельзя в гейм мейкере, сразу.
У меня несколько задач:
1) как раз это нужно запоминать всех врагов в локациях на подобии метроидвании,
но чтобы у врагов сбрасывались координаты, но не сбрасывался HP,
в принципе я понял, пошёл гуглить персистентность
2) вторая задача, она как бы не относится к текущей теме, но я просто дошёл до этого места:
как сделать комнаты по типу метроида, самый простой вариант
PS вообще я вначале хотел сделать карту мира с передвижениями по ней неписей и отрядов, как в Mount n Blade, и во время боя там другая комната, но при возвращении мы бы вернулись на карту мира, но я решил забить на эту идею, пока-что наверное сложно на первый раз в качестве эксперимента
я бы не стал "заморачиваться" с комнатами и просто рисовал бы бой по верх всего отключая взаимодействие мыши с тем что не на кране боя.
А как рисовать поверх? У объектов гейм мейкера есть SetOrder (порядок отрисовки спрайтов) как у Unity, или ось Z?
есть depth можно в объекте на прямую указать а можно собственно в коде.
У каждого экземпляра любого объекта есть переменная depth. При создании объекта присваивается depth объекта, но можно динамически менять эту глубину в процессе игры, у разных экземпляров независимо друг от друга. По сути, это и есть ось Z.
лол
прим. Это будет влиять только на последовательность событий рисования, а не на весь экземпляр. На событие Step переменная depth не влияет. Последовательность Step'ов зависит от значения id экземпляра в GMS1 и от значения object_index объекта (грубо, от положения в дереве ресурсов) и уже во вторую очередь от id экземпляра в GMS2.
Не совсем понял, чей вопрос ты здесь пытался решить, и каким именно способом. Алекс вроде такого не спрашивал, и не похоже что ему понадобится менять порядок событий, только порядок отрисовки.
Да и так можно, просто всё со временем, поэтапно. Вообще ты описал такое как было сделано, например, Дрейком в конкурсной игре "Галактические Лорды", 6 лет назад: https://gamin.me/posts/12085
Там 7 основных карт с двигающимися юнитами, а каждый бой между юнитами проходит на отдельном экране, плюс ещё есть совсем внешняя карта кампании, но с ней всё совсем тривиально - это как экран выбора боссов в Мегамене.
Делай маленькие шаги и сделаешь то что требуется. Тише едешь - дальше будешь.
Попробую сделать игру в духе Hero Core,

скрестив с ещё пару играми, типа Guardian Legends и Comix Zone.
Я давно думаю над подобной игрой и делал небольшую заготовку на Tic-80:
Честно говоря на этом скриншоте не видно никакой игры - просто фон и персонаж. Для шмапа не хватает выстрелов. Но картинка классная, тут ничего не скажешь, рисовать-то ты умеешь хорошо.
https://www.dropbox.com/s/fc3p9qfcx2m56jy/Alexsample.gm81?dl=0 - оно?
О, спасибо, Ксит! Надо потестить)
Не знаю пока что это, но мне пока тупо не хватает материала для обучения.
В том же Construct 2 вместе с редактором поставлялись и примеры, а в гейм мейкере походу нет.
есть но, в общем есть...
Да вот же они в ГМС1, прям при запуске надо вкладку открыть и всё. Работает и в ГМС1 и 2.
В проекте что я скинул есть один баг - нельзя зайти в комнату 33. Но это потому что я прописал условие неправильно, а суть того что ты хотел там показана во всех остальных комнатах - игрок ходит по разным комнатам, враги возвращаются на места, их хитпоинты сохраняются.
я пытался нажать на Tutorial, и там мне просто пишут ошибку и какую-то ссылку,

но я пока не пытался вводить её, ибо она слишком длинная и не скопировать, текст не выделяется, надо бы ввести вручную потом, может там будут все примеры, я хз)
https://help.yoyogames.com/hc/en-us/articles/217571368
Я помню что сам когда-то их там качал. Вот ссылка сейчас прямая с той страницы:
http://store.yoyogames.com/downloads/gm-studio/StudioAllDemosTutorials.zip
Кроме Туториалов там в архиве есть ещё и Демо. Так что мало не будет. Другое дело что там местами код не самый адекватный, но я не могу одновременно писать реальные проекты и заниматься просветительской деятельностью. Будут проблемы - спрашивай.
О, Спасибо) То что нужно!
Спасибо, Ксит) С этим примером много чего понял, как оно тут устроено. Да и другие уроки посмотрел.
Правда не понял как кодом исправить тот твой баг, но если просто добавить один пустой уровень, то баг исчезает.
Рад что помогло, обращайся. По багу простейший способ - скопировать то что в цикле while, чтоб ещё один раз после цикла while выполнилось. Там нужно на самом деле переприсвоить переменную, но мне щас неудобно это смотреть, а в релиз этот код явно не идёт.
с постоянными вещами нужно кстати осторожным быть, была у меня проблема когда игра всякую дич делала из-за постоянного объекта в постоянной комнате...
Это профилируется в дебаггере, если что. Или там тоже дичь была?
не знаю о чём ты, я имел в виду например дублирование постоянного объекта... и это может создавать самые разные проблемы... из за этого пришлось убирать постоянность у комнаты а пол написанного кода переделывать... с тех пор стараюсь не пользоваться комнатами х)
Ну, тут изначально непонятно какую задачу ты решал и как тут могла пригодиться двойная персистентность. Прежде чем что-то делать, стоит это обосновать.