Designing Games with GameMaker
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.
Alternative versions
Also available in: None
Download helpfile