I guess that Minmay's method should be easier for a GM newbie, although it does require more work. But sometimes we need to get started with easier yet more tedious stuff, in order to understand basic concepts of a program we're using. I'm not saying that this is the case for everyone though. (I've never used multiple rooms or views).
Now, I might sound like an idiot, but the best way to design levels is to design your own level editor. It will be hard and tedious and will require lots of testing, but it will reward you afterwards. Most people frown upon the idea of literally abandoning their game for creating a level editor like the one of Knytt Stories, but seriously, after finishing the editor, it's all peanuts from there on.
What's the catch? Only 1 room is needed, at the size of 1 screen
You can eg create a screen in the editor and save it as
room07_06.txt (this is not the time to discuss about encryption). The screen to the right will be named
room08_06.txt . So, in this singular room in Game Maker, when the hero entity touches the right edge of the screen, all instances currently in
room[7,6](except those you need to keep) will be destroyed, the
roomx variable will be increased by 1, and the data from
room08_06.txt will be loaded. If the screens are not bloated with objects, transition is practically instant.
Also, Game Maker allows on-the-fly execution of string variables, so in the level editor you can add objects with the following structure:
Object ID
X-coord
Y-coord
Code to execute upon creation
Code to execute upon death
Conversation to execute upon getting close
etc...
...and let's say that, while the level editor is running, you set
Code to execute upon creation for a particular instance as this:
code_start="show_message("I am ready");In the Game (not the level editor, but the game file you make in Game Maker) , you should add the following line in the Object's Create Event:
execute_string(code_start);And so, in the game screen, for example, you can have 10 identical instances of an object (eg a cave stalactite), and you want only 2 of them to fall while the player approaches. In the editor, you set the
"code to execute when player approaches" to an "entity_fall()" script or just a variable or true or false or whatever will be interpreted in the game engine into a command to drop those specific stalactites. Voila! This technique smoothly blends level design with game events and object behavior.
Sorry for poorly elaborating on a quite "difficult for beginners" concept. If anyone needs more info, we could continue this conversation.
PS I have used this method in a game I'm working right now, and it does work smoothly. So let's not focus on whether it works or not.