There are a few ways to spawn/despawn full rooms in Unity. Given that this was a jam originally we took the simply road and made them all into prefabs, provided each room with a reference to each prefab that could spawn from it and the appropriate anchor points. The Trigger zones then call on the current Room to spawn/despawn them accordingly.
Similar things can be done by treating rooms as seperate scenes and spawnnign them additively, but this does not work as neatly with having several copies of them and a few other thigns we do.
I'm allways happy to see different solutions for implementing non-eucledian levels. Will take a look at the ones you mentioned for sure =)
Using similar mechanics in 2D is something I've always wanted to do but havn't gotten around to yet. I think this could be especially fun for sidescrollers, where having branching paths (other than having a bunch of background doors) can be a challenge.
- radow
BTW I think I forgot to mention - there is one way to do non-euclidean geometry in a 2D sidescroller without the visibility shadows that I did: if an entire screenful matches on the two ends of the portal, i.e. if overlaps are one screen away from the respective portal from which they are entered, then this can be done by transparently teleporting, as nothing on the screen would change during this.
A game that does this technique is none other than the original Super Mario Bros. in some of the castle levels (those where going a wrong path transparently brings you back to the start of the level). However in there the teleporting was not entirely transparent - they didn't clone some firebars to the destination side of the portal. This would have had an easy fix, of course; however due to how spawning works, it might have been tricky to put the "new" firebars in the same angle as the "old" ones, so this may be why they didn't.