Блог ☯

вторник, 2 мая 2017 г.

Учим GameMaker - The Alarm Events

The Alarm Events в Game Maker - это одно из многих событий, которые могут запустить (триггернуть - triggered) выполнение кода или каких-то действий.

"Alarm" переводиться с английского как сигнал тревоги, аварийная сигнализация, сирена. Так-же это слово означает будильник (alarm clock). Довольно близкое слово по значению - таймер (timer), да и по сути дела Alarm в гейм мейкер работает именно как таймер.

Вы можете использовать до 12 (начиная с 0) событий аларма в Game Maker любых версий, вообще The Alarm Events - это классическая функция гейм мейкер и вряд-ли её что-то заменит в ближайшее время. Есть она и в GameMaker Studio 2.

Учим GameMaker - The Alarm Events

Многим из вас функция уже давно знакома

Ну а если немного уйти в сторону, как вообще этот аларм-то работает?

Что-то происходит (например, создаётся объект) и там вы пишите: alarm[0]=150

По сути дела The Alarm Events являются одномерным массивом. Читайте:


То есть, простая переменная, но таких переменных может быть 12. Как и все массивы (arrays), аларм начинается с нуля.

Что будет делать alarm[0]=150 при создании объекта?

Запускается как-бы счётчик - таймер, обратный отсчёт. 150 это не секунды, а число тиков.

Если вам нужно больше информации по тикам (шагам - steps), можете почитать:


Если скорость комнаты у нас например 30 (это и будет FPS = 30), тогда 1 секунда будет равна 30 тикам. Как следствие alarm[0]=150 сработает через 5 секунд.

Как он сработает? Ну вот вы и выбираете в событиях данный alarm, нулевой. И там пишите то, что будет происходить когда пройдёт 5 секунд.

Например, можно уничтожить объект, или допустим создать там пулю, или новых врагов (спавн). Вариантов много, вы можете сделать что угодно когда сработает таймер, любое действие, можете запустить любой код.

По сути дела Alarm, как и все события (events), это способ запуска определённого кода и какого-то действия. Представьте триггер, спусковой крючок или импульс.

Аларм - это довольно удобный способ запускать события. Способ не единственный, включить и запустить что-то через Х времени, но способ базовый и основной.

С помощью аларма можно создавать простые циклы, можно сделать так, чтобы что-то повторялось каждые Х секунд. Для этого в момент, когда срабатывает первый аларм (который мы например запустили при создании объекта - create) мы запускаем тот-же аларм еще раз. Так цикл замыкается и данный объект будет постоянно делать что-то через каждые Х секунд.

Примерно так я спавнил монстров в своей игре Space Rush.



Но вообще для таких циклов the alarm events в GameMaker используется далеко не всегда.

Другое применение событию аларм в гейм мейкер для меня было в том, что я делал с помощью этого простые счётчики времени. Для некоторых игр мне нужно было считать дни, месяцы и годы. Делалось это тем-же циклом.

Записывал вот такое в alarm[0]:

alarm[0]=30 // Запускаем аларм еще раз, замыкаем цикл
time_d += 1 // +1 день
if time_d = 30{ // +1 месяц
time_d = 1
time_m += 1
if time_m = 13{ // +1 год
time_m = 1
time_y += 1
}

Наверное можно делать как-то еще, но я делал так.

Так-же не забывайте что аларм это таки число, и его можно брать для всяких дел.

Допустим у нас маг может колдовать заклинание каждые 10 секунд, если fps = 30, это будет alarm[x] = 300. Так вот, когда вы заклинание использовали, запустился этот самый аларм.

Но мы можем взять и сделать визуальное отображение того, сколько секунд (кд -  cooldown) у нас есть до возможности сколдовать это еще раз.

Либо мы просто пишем это через текст:

draw_text(x,y,string("CD MAGIC: ")+string(alarm[x])+string(" sec."))

Либо мы можем сделать это с помощью хелсбара. Читайте:

Как сделать хелсбар? Полоска хипов в game maker - draw_healthbar

Как видите применений событию аларм (The Alarm Events) в гейм мейкер полно, штука довольно простая и многие с ней быстро разбираются и так.

Ну а есть альтернативы аларму? Как это всё можно сделать по-другому?

Как вариант - с помощью step. Вы создаёте новую переменную и просто в step прибавляете к ней значение. К примеру time+=1 в степ, будет прибавлять 30 в секунду.

По сути дела аларм сам по себе именно так и работает, он тоже считает каждый шаг/тик, а не каждую секунду. Только в аларм идёт обратный отсчёт. Говорят что через аларм такие таймеры делать лучше, чем через step, вообще люди не советуют часто использовать step, это затратно для компьютера, нужно много раз производить расчёты.

Вот и всё, надеюсь вы узнали что-то новое для себя про The Alarm Events в Game Maker.

Если да, заходите иногда в мой блог, вступайте в паблик ВК Econ Dude, ну и подписывайтесь на ютуб канал. Все мои статьи по созданию игр вы можете найти вот тут: