Advanced settings
There were two aspects in the settings tab that we have not
yet discussed. First of all, there is a checkbox labeled
Persistent. Normally, when you leave a room and return to
the same room later, the room is reset to its initial settings.
This is fine if you have a number of levels in your game but it is
normally not what you want in for example an RPG. Here the room
should be the way you left it the last time. Checking the box
labeled Persistent will do exactly that. The room status
will be remembered and when you return to it later, it will be
exactly the same as you left it. Only when you restart the game
will the room be reset. Actually, there is one exception to this.
If you marked certain objects as being persistent, instances of
this object will not stay in the room but move to the next room.
Secondly, there is a button labeled Creation code. Here
you can type in a piece of code in GML (see later) that is executed
when the room is created. This is useful to fill in certain
variables for the room, create certain instances, etc. It is
important to understand what exactly happens when you move to a
particular room in the game.
- First, in the current room (if any) all instances get a
room-end event. Next the non-persistent instances are removed (no
destroy event is generated!).
- Next, for the new room the persistent instances from the
previous room are added.
- All new instances are created and their creation events are
executed (if the room is not persistent or has not been visited
before).
- When this is the first room, for all instances the game-start
event is generated.
- Now the room creation code is executed.
- Finally, all instances get a room-start event.
So, for example, the room-start events can use variables set by
the creation code for the room and in the creation code you can
refer to the instances (both new ones and persistent ones) in the
room.
There is one further option. In the pop-up menu when you right
click on an instance with the <Ctrl> key you can now indicate
some creation code for the specific instance. This code is executed
when the room is started, just before the creation event of the
instance is executed. This is very useful to e.g. set certain
parameters that are specific to the instance.