Синхронизация

Хорошие игры требуют осторожную синхронизацию определённых событий. К счастью Game Maker предоставляет Вам эту возможность. Вы убедитесь, что события случаются в постоянном темпе. Этот показатель определяется определением комнаты. Но Вы можете изменить это, используя глобальную переменную room_speed. Так, например, Вы можете медленно увеличить скорость игры, делая её более трудной, добавляя ту же небольшую сумму (подобно 0.001) в room_speed в каждом шаге. Если Ваша машина медленна, ускорение игры не может быть достигнуто таким образом. Это может быть проверено при использовании переменной fps, которая постоянно проверяет фактическое количество фреймов в секунду. Наконец, для некоторой расширенной синхронизации, Вы можете использовать переменную current_time, которая предоставляет количество миллисекунд с тех пор, когда компьютер был включен. Вот общий сбор доступных переменных (только первая может быть изменена):

room_speed Текущая скорость комнаты (шагов за секунду).
fps* Количество фреймов, которые "отрисовываются" в секунду.
current_time* Количество миллисекунд, которые прошли с тех пор, как система была запущена.
current_year* Текущий год.
current_month* Текущий месяц.
current_day* Текущий день.
current_weekday* Текущий день недели (1=воскресенье, ..., 7=суббота).
current_hour* Текущий час.
current_minute* Текущая минута.
current_second* Текущая секунда.

Иногда Вы можете захотеть приостановить игру. Для этого, используйте функцию sleep.

sleep(numb) "Заморживает" игру на numb миллисекунд.

Вы уже должны знать, что каждый образец объекта имеет 12 таймеров, которые Вы можете установить. Чтобы изменить значения (или получить значения) другого таймера, используйте следующие переменные:

alarm[0..11] Значение для указанного таймера. (Не забудьте, что таймер будет вести отсчёт только в том случае, если событие таймера для объекта содержит действия!)

Мы рассматриваем это для комплекса вопросов по синхронизации. Вы можете также использовать ресурс тайм-лайна. Каждый образец объекта может связать с собой ресурс тайм-лайна. Следующие переменные имеют дело именно с этим:

timeline_index Идентификатор тайм-лайна, связанный с текущим объеком. Если переменная равняется -1, то объект не будет использовать тайм-лайны.
timeline_position Содержит текущую позицию установленного тайм-лайна Вы можете изменить это, чтобы пропустить определённые части или чтобы их повторить.
timeline_speed Скорость шага тайм-лайна. (По умолчанию, за один шаг позиция тайм-лайна увеличивается на единицу.) Если значение больше чем 1, то несколько моментов могут случиться в течение одного и того же такта. Они будут все выполнены в правильном порядке, так что никакие действия не будут пропущены.