Multi-Room / World Editor

F207

Member
Hey all,

I'm having a problem with the seemingly huge shortcomings of hte GMS2 room editor and I'm hoping someone knows of a solution. My problems that if i'm trying to make a metroidvania style game, I really really need to be able to see a view in the IDE of all the rooms "stitched" together.
Unity allowed for this with it's multi-scene editing feature, and it's super useful to be able to easily see that all the spacing has been done correctly in rooms that are adjacent to each other in the game world.
Hopefully that's clear what the problem is, and does anyone know of a solution to this? I tried searching for some kind of external asset/tool but couldn't find anything.
 
A

Andrew R. C. Beck

Guest
Hey there! Would it not be possible to open seperate room editors in the overall worksheet? :) If so that could help fix your problem my friend! :D I have not used GMS2 a whole lot though so could easily be wrong :/
 

F207

Member
Hey there! Would it not be possible to open seperate room editors in the overall worksheet? :) If so that could help fix your problem my friend! :D I have not used GMS2 a whole lot though so could easily be wrong :/
Hello! I'm not sure I understand your suggestion completely? Do you mean having multiple tabs open in the IDE for separate rooms? That helps but doesn't quite solve the problem I think.

So imagine I have two rooms adjacent to each other, and I travel from the right room to the left room and we assume that the "Y" position of the character never changed in the world space. Now while in the left room the character travels 200 pixels upwards, and then straight towards and through a different door/portal/whatever back into the right room. So now the character is back in the right room, and should be that same 200 pixels above the floor. But I could have accidentally put this second entry point into the right room in such a place that the character is only 150 pixels above the floor, and that wouldn't make sense and clearly by wrong if the game is supposed to be one large structure.

If the room editor view of all rooms could be stitched together this would be easily avoidable. I hope that all made sense!
 

Yal

🐧 *penguin noises*
GMC Elder
YellowAfterLife did an extension that seems to allow for this: https://yellowafterlife.itch.io/gmroompack

I personally would say that the GM method to achieve this is to make coordinates in each room fully independent, and instead figure out a system that allows you to place the player in the right spot based on what door they used to leave the previous room. For instance, being able to label each door with a string and placing the player adjacent to the door with the right label. (That system is used in my Monster Collector RPG engine).

Another method is to keep track of the "world coordinates" (typically in world-map cells instead of pixels) separately from the room coordinates, and pick the door the closest to the new world coordinates that also matches the direction you exited the previous room. This is how my SoulsVania engine handles things. The benefit of measuring player progress in grid cells is that you can use some of that data to keep track of where they've been for the map system. (Again, my SoulsVania engine does that - and in fact the map data is used to define which rooms are tied together in the first place, and then being used as the player progression map is more of an afterthought!)


In Gun Princess Zero I used an even simpler system. The player object was placed so that its x coordinate was aligned to the up/down doors, and its y coordinate to the left/right doors, and then I would set either the x or y coordinate to the matching screen edge based on what direction you switched rooms. The drawback was that if a room had doors both up/down or both left/right, they had to be at the same coordinate, but it was a small price to pay for the simplicity to implement it.
 

F207

Member
YellowAfterLife did an extension that seems to allow for this: https://yellowafterlife.itch.io/gmroompack

I personally would say that the GM method to achieve this is to make coordinates in each room fully independent, and instead figure out a system that allows you to place the player in the right spot based on what door they used to leave the previous room. For instance, being able to label each door with a string and placing the player adjacent to the door with the right label. (That system is used in my Monster Collector RPG engine).

Another method is to keep track of the "world coordinates" (typically in world-map cells instead of pixels) separately from the room coordinates, and pick the door the closest to the new world coordinates that also matches the direction you exited the previous room. This is how my SoulsVania engine handles things. The benefit of measuring player progress in grid cells is that you can use some of that data to keep track of where they've been for the map system. (Again, my SoulsVania engine does that - and in fact the map data is used to define which rooms are tied together in the first place, and then being used as the player progression map is more of an afterthought!)


In Gun Princess Zero I used an even simpler system. The player object was placed so that its x coordinate was aligned to the up/down doors, and its y coordinate to the left/right doors, and then I would set either the x or y coordinate to the matching screen edge based on what direction you switched rooms. The drawback was that if a room had doors both up/down or both left/right, they had to be at the same coordinate, but it was a small price to pay for the simplicity to implement it.
Thanks for the suggestions! Although we might be thinking of different problems. Getting my character to appear in the right location after a room transition is not the problem. My issue really starts at the level design phase before any run-time considerations. So using your SoulsVania map picture from your previous post I can maybe paint a better example.

Imagine there was an exit at the bottom right of room 14, which goes into a room that spans very far to the right and then angles upwards to a straight vertical climb to room 25. I would want to ensure that this room is the correct "real" size, so that the player travels the same distance as if they had gone through rooms 15,16,17 etc...etc... So I'd like to be able have some kind of "world map" type thing in the IDE / room editor. Unity has a multi-scene view which allows for exactly this, but I know of nothing like it for gamemaker.
 

Yal

🐧 *penguin noises*
GMC Elder
Oh. If you're thinking about that problem, let me answer with another question. Does keeping the world dimensions 100% consistent down to an atomic level add anything to your game?

Players usually won't notice small discrepancies, and might even enjoy if you cut out dead space that doesn't add anything other than travel time. If you can be flexible with room dimensions, you also have more freedom to design levels - if you don't think a long corridor followed by a long vertical climb would be the most fun level, you can shorten them a bit. If you need to have a massive boss room but it would be 1 screen wider than the map would allow, you could just go "screw it" and add it in anyway, instead of being forced to make the encounter less epic to make it fit in with the levels designed already. And so on.
 
Top