| Жизненный цикл игрового объекта |
|
Bercut
| Дата: Воскресенье, 22.01.2012, 06:09 | Сообщение # 1 |
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
|
Доброго времени! И снова здравствуйте! Не хотел создавать новую тему, но подходящей не нашёл Как сказано в справке и вычитано на буржуйских форумах, все игровые объекты управляются событиями. Вообщем, к делу. Сабж. Представляю вашему вниманию схему жизненного цикла игрового объекта: Если, что не понятно или нужны какие-то изменения или добавления - обращайтесь, милости прошу. Спасибо за внимание! З.Ы.: Новичкам крайне полезно
Fast, like fire!
|
| |
| | |
|
Ang3L
| Дата: Воскресенье, 22.01.2012, 15:11 | Сообщение # 2 |
Каждый 5й пост мой
Группа: Админы
Сообщений: 2677
Статус: Offline
|
Bercut, мало инфы - это раз. Добавить бы описаний, пояснений, предположений, советов и т.д. Во-вторых, лично у меня используется упрощённая схема. Только Create, Step и Draw. И нетрудно догадаться что за чем следует.
P.S.: Конечно, схема полезная и обязательна к изучению всем незнающим порядок вычисления. Хотя исторически сложилось что во всех движках идет единоразово Create (Init), потом циклично идут Step (Update) и Draw (Render). Все остальное уже идет дополнительно и может быть сделано по разному.
Blogpost
|
| |
| | |
|
Bercut
| Дата: Воскресенье, 05.02.2012, 23:23 | Сообщение # 3 |
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
|
Да, конечно добавлю некие пояснения, например, что объекты вызываются последовательно в цикле, сначала step, а потом draw. Что пользовательские и событие создания/удаления срабатывают сразу, сразу в текущие событие. Например в событии шага вызывается функция удаления данного объекта, то этот объект удаляется именно в событии шага, а потом, если ещё существуют объекты в массиве, то переходит к другому и вызывает у него событие шага. Добавлено (05.02.2012, 23:23) --------------------------------------------- Внимание, внимание! Мы знаем, что у нас есть объекты, которые имеют поле id, оно уникально. Так вот, все эти игровые объекты хранятся в специальном массиве. Каждый фрейм (frame - игровая единица времени), можно назвать его главным игровым циклом, вызывает ПОСЛЕДОВАТЕЛЬНО для каждого объекта те самые события. Сначала идёт событие CREATE (Вызывается единожды (но можно вызвать сколько угодно раз, потому что это всего лишь функция, об этом объясню позже)). Если в этом событии в каком либо объекте мы создадим объекты, то система для них вызовет тоже событие CREATE и добавит их в список. САМОЕ ИНТЕРЕСНОЕ: На каком событии мы создадим объект, такое и произойдёт. Пример: oбъект: Button событие: Draw код: Code instance_create(0, 0, Shape) Объект Shape будет добавлен в системный список объектов, потом у него произойдёт событие создания, а потом событие рисования, ададада, не событие шага и не остальные события, а именно рисования, потому что общий системный цикл сейчас вызывает именно событие рисования. То есть что получается? : Все эти события всего лишь функции, которые вызывает система. З.Ы.: Если всё понятно, могу рассказать про генерацию событий.
Fast, like fire!
Сообщение отредактировал Bercut - Воскресенье, 05.02.2012, 23:23 |
| |
| | |
|
DeatHSoul
| Дата: Воскресенье, 05.02.2012, 23:58 | Сообщение # 4 |
Сказал что-то
Группа: Проверенные
Сообщений: 53
Статус: Offline
|
Интересно наблюдать за тем, как кажущаяся очевидной для тебя вещь оказывается открытием для кого-то другого. Впрочем, это хорошо, открытия всегда приносят приятные впечатления. Я вот долго бился, пока мне дошло, что событие step вызывается в порядке object_index, а не id.
|
| |
| | |
|
Qvant
| Дата: Понедельник, 06.02.2012, 00:09 | Сообщение # 5 |
Сказал что-то
Группа: Пользователь
Сообщений: 97
Статус: Offline
|
На практике надо проверять а не в теории : Для ГМ-ШТМЛ в exe выполняется: show_message("Create") show_message("Draw") show_message("Step") даже если убрать Create , то первое рисование всегда срабатывает быстрей шага ! не ждали а для html show_message("Create") show_message("Step") show_message("Draw")
|
| |
| | |
|
Ang3L
| Дата: Понедельник, 06.02.2012, 22:31 | Сообщение # 6 |
Каждый 5й пост мой
Группа: Админы
Сообщений: 2677
Статус: Offline
|
Quote (Bercut) Все эти события всего лишь функции, которые вызывает система. Ну что-то вроде того. Вот моя интерпретация. На самом деле, события это функций, но вызываются они специфичным способом. Можете прочитать про Callback-функций, но они могут подпортить вам много нервных клеток, я предупредил.  Там используются сложные схемы указателей для гибкой настройки.
Blogpost
|
| |
| |
|
|