A macro is, as the name implies, something that can hold
a constant value (real, or boolean) or a string, or an expression.
This is different to a variable in that it can't be changed once
defined, although it is global in scope as all instances in all
rooms can use it, and it will always be the same value
unless you use a GML function as the value. There are a number of
built-in constants within GameMaker: Studio, like the
vk_ ones for the keyboard or the c_ ones that
hold different colours, but you can also define your own constants
and function macros to be used in your games too.
To define macros you chose Define Macro from the drop down
Resources menu at the top of the main window (or click on
the resource tree icons, as explained below) and the following
window will open: The main part of this window is
take up with the list of macros, and will start off empty, ready
for you to create your own. To do this you would click on the
button marked Add at the bottom left of the window, which
will then create a new, empty, macro with the Name section
highlighted. You must give all your macros a name, and as with all
things in GameMaker: Studio this name must be unique and it
is recommended that you distinguish it in some way from other
variables, for example, by using all capitals, or by using a suffix
or prefix. Note, that you cannot use any symbols except the
under-bar (_) and the macro cannot start with a number.
Once you have named your new macro you must give it a value. This
value can be numeric, a function or a string. For a string it
must be wrapped in quotes ("") and if it is a function, it
cannot make reference to anything in the game (the current room,
instances, or scripts etc...) as the macros are initialised
before everything else, but it can however use resources
like sprites and objects.
When you have defined a few macros you can use the buttons at the
bottom of the window to change them around and add, insert or
delete them. Add will add one at the end of the list,
Insert will insert the next macro above the current one, and
delete will delete the current one. You may also press Clear
to clear the whole list of macros, which will open a prompt to ask
if you are sure you really want to do that before deleting the
whole list. beside these button are two labelled Up and
Down which simply move the macros up and down the list, and
beside those is the sort button which will put the macros
into alphabetical order, with the ones starting with "A" at the
top.
Finally, there are two buttons marked Load and Save.
With these, you can load into your project macros that you have
previously defined in an external editor, or that you have saved
from a previous game. If you have already defined macros when you
load some from a file, the new ones will be appended on at the end
of the list. A saved macro list is stored in a simple
*.txt file and can easily be edited and added to by any
application that reads these files (Notepad++, for example). You
can even pre-define your own text file with a set of macros to be
loaded into GameMaker: Studio as the format is simply:
NAME = VALUE
.
It is worth noting that when using an expression in a macro, if this contains a function then no constant value can be created for it, and it will be evaluated every time the macro is called. For example, you could have the following macro:
myran : irandom(100)
Now every time you call the macro myran it will return a different random number. If the expression can be evaluated to a single value or string, then the macro will function like a constant, for example:
mynumb : "10"
myname : "Hamish"
myconst : mynumb + myname
As you can see in the above example the last macro is an
expression using the previously created two macros. This will be
evaluated once on startup and a constant value returned for it.
Macro are included as part of the resource tree on the
left of the GameMaker: Studio IDE. When you create a new
game, you will have two sets of macros - All Configurations
and Default. Macro created in "All Configurations" will be
available to you no matter what configuration you have chosen (see
the section on Configurations
for more information), and you can then add configuration-specific
ones to any other lists that you will have, with each new
configuration creating a new macros list.