How would you create a simple rpg-style house you can enter in solar2d?

Say you have a character that moves around a map, and when he moves to a trigger point the map changes to the inside of a bounded room. How would you ideally tackle this in solar2d? I’m not looking for the code, just the approach. I am struggling with the answer. I’ll list some seemingly ‘not ideal’ methods:

  1. Blank-Page-approach: Make every system yourself. Create a moving character; create two map-images using ‘some paint program’, subdivide the maps into blocks to create matrices for tilemaps if the maps pan across more than a single screen of space; create some collision function and manually align them to the positions of the objects onscreen or predetermined coordinates (mbe include a map-grid-image to make the aligning easier ingame) so the player stays within the appropriate bounds; create a switch that changes the maps when player collides with ‘door’ and create a state machine for the gameloop so anything only occuring in the house is not running outside the house.

  2. Scene-approach: Same as 1, but instead of dividing everything via a state-machine/switch in the gameloop put outside-house and inside-house into separate scenes.
    …But don’t you have to rewrite most of the game logic between scenes? Not ideal, right? Okay, put scene logic into included files and just include the ones u need each scene. More ideal, but you’ll need to format all your code and have a long list of redeclared locals in each scene when you need specific relations kept intact in the included code bits…sounds time consuming and messy tho.

  3. Box-2d-approach: Same as 1 and mbe 2, but instead of your own collisions you use collision functions inhouse. Those one-liners of “if collision_func(obj1,obj2) then stuff” will be rewritten and scattered into pieces that are placed across 2 to 4 places in your document, confusing…and probably more so with the scene system in use.

  4. Use tiled: Same as 3, but you use the tiled as a helper program to get the box2d collisions done via this dedicated map editor. This is still the same as 3 and you are stuck working that way, but applying where the bounds are is potentially easier.

How about checking this?