As you know, GameMaker is completely event driven, and that all
actions happen as the result of certain events that are triggered
in a specific order or by a specific occurrence within the game.
There are a number of different events, each one with a specific
task or timing and some of them are even split into separate "sub"
events. Normally these events are run by GameMaker: Studio
when it detects an in-game trigger, or every game tick (as is the
case with the step and draw events), but you can also apply an
event to an instance in the current room from within a piece of
code.
The following functions exist that deal with generating events:
There are also a number of read only variables that can be used with the functions listed above which are particularly useful for debugging: