For now (prototyping), GM's built in crap will be fine haha. But yeah, I'd love to hear more about how you did it just in case I take this project further in the furture! Thanks a lot!
Alright it's a little more complicated than I remembered so I'll try to simplify.
First, we used a persistent player character. Each room had a start that she would be spawned at if she didn't already exist so we could test a later room without having to play from the start.
When she collides with our exit objects, we set some global transition variables that let us do custom transitions (transition_steps and transition_kind) before calling room_goto(). Example: transition_kind = global.transitionDown;
global.transitionDown is a globally defined transition ID we set up during game initialization, starting at 22 because, I believe, the numbers before that are reserved for built in transitions.
Example:
global.transitionDown = 25;
transition_define(global.transitionDown, "scr_transitionDown");
"scr_transitionDown" is a script that gets called every frame during a transition. We used it to draw the two rooms (the one you're leaving and the one you're going to) scrolling while moving our player character in slight parallax to the scrollrate of the rooms and keeping our HUD static. It was pretty basic, like this:
var previousRoomImage, nextRoomImage, width, height, transitionFraction;
previousRoomImage = argument0;
nextRoomImage = argument1;
width = argument2;
height = argument3;
transitionFraction = argument4;
draw_surface_part(previousRoomImage, 0, 0, 640, 600, 0, -600 * transitionFraction);
draw_surface_part(nextRoomImage, 0, 0, 640, 600, 0, 600 - 600 * transitionFraction);
draw_sprite(spr_princess, 1, global.preTransitionX + (global.transitionX - global.preTransitionX) * transitionFraction - global.leftBorder,
global.preTransitionY + (global.transitionY - global.preTransitionY) * transitionFraction - global.topBorder);
scr_drawSidebar(640, 0, true, true);
In hindsight, the literal screen sizes were probably bad
. Oh well.
And of course we had four transitions depending on the direction you left the screen. Hope this helps.